aboutsummaryrefslogtreecommitdiff
path: root/src/hex-paper.ps.j2
diff options
context:
space:
mode:
authorElena ``of Valhalla'' Grandi <valhalla@trueelena.org>2017-06-24 17:22:10 +0200
committerElena ``of Valhalla'' Grandi <valhalla@trueelena.org>2017-06-24 17:22:10 +0200
commitb04623c377ca2f44f5e12e6eb23c2f4af80e3ae5 (patch)
tree1edbcbc90b63ee9f1c5595efea633511a0f72539 /src/hex-paper.ps.j2
parentac4cffa883f0a100a4868302e55acdddaeb845e5 (diff)
Converted hex-paper to template
Diffstat (limited to 'src/hex-paper.ps.j2')
-rw-r--r--src/hex-paper.ps.j2184
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