diff options
author | Elena ``of Valhalla'' Grandi <valhalla@trueelena.org> | 2017-06-24 17:22:10 +0200 |
---|---|---|
committer | Elena ``of Valhalla'' Grandi <valhalla@trueelena.org> | 2017-06-24 17:22:10 +0200 |
commit | b04623c377ca2f44f5e12e6eb23c2f4af80e3ae5 (patch) | |
tree | 1edbcbc90b63ee9f1c5595efea633511a0f72539 /src/hex-paper.ps.j2 | |
parent | ac4cffa883f0a100a4868302e55acdddaeb845e5 (diff) |
Converted hex-paper to template
Diffstat (limited to 'src/hex-paper.ps.j2')
-rw-r--r-- | src/hex-paper.ps.j2 | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/src/hex-paper.ps.j2 b/src/hex-paper.ps.j2 new file mode 100644 index 0000000..a60f81f --- /dev/null +++ b/src/hex-paper.ps.j2 @@ -0,0 +1,184 @@ +%!PS-Adobe-1.0 +%%Title: hex-paper - part of rpgTools by Elena of Valhalla +%%Pages: 1 +%%BoundingBox: {{ bounding_box }} +%%DocumentPaperSizes: {{ paper_name }} +%%CreationDate: 2004/10/04 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%EndComments +%%BeginProlog +% Copyright (C) 2004 Elena Grandi +% All rights reserved. +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions are met: +% +% * Redistributions of source code must retain the above copyright +% notice, this list of conditions and the following disclaimer. +% * Redistributions in binary form must reproduce the above copyright +% notice, this list of conditions and the following disclaimer in the +% documentation and/or other materials provided with the distribution. +% * Neither the name of the <organization> nor the +% names of its contributors may be used to endorse or promote products +% derived from this software without specific prior written permission. +% +% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY +% DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +% (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +% ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +% (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +% SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +% ------ Usage ---------------------------------------------------------------- + +% To use this file either send it to a postscript printer, or use your +% favourite postscript interpreter to visualize and print it. + +% You can customize the result by changing the values in the Settings +% section below (see the comments for details) + +% ------ sizes ---------------------------------------------------------------- +% This will allow you to give measurements in inches or millimiters +% do not change +/inch {72 mul} def +/mm {0.03937 inch mul} def + +% ------ Settings ------------------------------------------------------------- + +% ------ Basic settings + +/HexSide {{ hex_side }} def % lenght of hexagon side (or "radius") + +/LineSize {{ thin_line_size }} def % lines width +/LineColo {{ thin_line_color }} def % rgb triplet of line color +/FillColo {{ fill_color }} def % rgb triplet of hexagon color +/BackColo {{ background_color }} def % rgb triplet of background color + +% page size: if you change this, you should change the BoundingBox +% in line 4 accordingly (you CAN'T use mm or inch over there) +/PageWidth {{ page_width }} def +/PageHeight {{ page_height }} def + +% white margins +/BorderTop {{ margin_top }} def +/BorderBottom {{ margin_bottom }} def +/BorderLeft {{ margin_left }} def +/BorderRight {{ margin_right }} def + +% ------ Advanced settings + +% spacing between consecutive hexes (hor and vert) +/HexSpaceX {{ x_spacing }} def +/HexSpaceY {{ y_spacing }} def +{% if uniform_spacing %} +% uniform spacing, overrides the setting for y spacing +/HexSpaceY HexSpaceX 3 sqrt 0.5 mul mul def +{% endif %} + +% translation of the starting point of the pattern +/PattTrasX {{ x_trasl }} def +/PattTrasY {{ y_trasl }} def + +% ------ Behaviour + +% Whether to print a line around the margins (1) or not (0) +/WillPrintBorder {{ 1 if border else 0 }} def + +% From here on you shouldn't worry about changing or configuring anything +% ------ Variables ------------------------------------------------------------ + +% Spacing between hexagons +/HexSpacingX HexSide 3 sqrt mul HexSpaceX add def +/RowSpacingY HexSide 1.5 mul HexSpaceY add def +/ColSpacingX HexSide 3 sqrt 0.5 mul mul HexSpaceX 2 div add def + +% x y movements to get oblique sides +/HexSideX HexSide 3 sqrt 0.5 mul mul def +/HexSideY HexSide 2 div def + +% number of hexagons in a row and of rows in a page +/HexRowNum PageWidth HexSpacingX div 2 add def +/HexColNum PageHeight RowSpacingY div 2 add def + +% starting hexagon number in a row and row number in a page +/HexRowSta PattTrasX HexSpacingX div cvi neg 1 sub def +/HexColSta PattTrasY RowSpacingY div cvi neg 1 sub def + +% ending hexagon number in a row and row number in a page +/HexRowEnd HexRowSta HexRowNum add def +/HexColEnd HexColSta HexColNum add def + +% ------ Procedures ----------------------------------------------------------- + +% Describes the printable area (does NOT print anything) +/UsedArea { + newpath + BorderLeft BorderBottom moveto + BorderLeft PageHeight BorderTop sub lineto + PageWidth BorderRight sub PageHeight BorderTop sub lineto + PageWidth BorderRight sub BorderBottom lineto + closepath +} def + +% Prints an hexagon in the given position +% x y = cohordinates of bottom point of left side +/PrintHex { %stk: x y + newpath + moveto + 0 HexSide rlineto + HexSideX HexSideY rlineto + HexSideX HexSideY neg rlineto + 0 HexSide neg rlineto + HexSideX neg HexSideY neg rlineto + HexSideX neg HexSideY rlineto + closepath + gsave + FillColo setrgbcolor + fill + grestore + LineColo setrgbcolor + LineSize setlinewidth + stroke +} def + +% Prints a row in the given position +% x y = cohordinates of first hexagon in the row +/PrintRow { %stk: x y + /RowY exch def + /RowX exch def + HexRowSta 1 HexRowEnd { + HexSpacingX mul RowX add RowY PrintHex + } for +} def + +%%EndProlog +%%Page: 1 + +% set printing area +UsedArea clip + +% print background +BackColo setrgbcolor +UsedArea fill + +% print hex pattern +HexColSta 2 HexColEnd { + /rownum exch def + PattTrasX RowSpacingY rownum mul PattTrasY add PrintRow + PattTrasX ColSpacingX add RowSpacingY rownum mul PattTrasY add RowSpacingY add PrintRow +} for + +% print border (if WillPrintBorder is not 0 ) +WillPrintBorder 0 ne { + LineSize setlinewidth + LineColo setrgbcolor + UsedArea stroke +} if + +showpage +%%Trailer |