%!PS-Adobe-1.0 %%Title: iso-paper by Elena of Valhalla %%Pages:1 %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: a4 %%CreationDate: 2011/05/25 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%EndComments %%BeginProlog % Copyright (C) 2011 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 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 /SideLen 5 mm def % spacing between lines /StrongStep 4 def % number of thin lines between strong ones % line width and color for thin lines /LineSizeThin 0.5 def /LineColoThin { 0.8 0.8 0.8 } def % line width and color for strong lines /LineSizeStro 0.5 def /LineColoStro { 0.6 0.6 0.6 } def % line width and color for border /LineSizeBord 0.5 def /LineColoBord { 0.6 0.6 0.6 } def /BackColo { 1.0 1.0 1.0 } def % 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) % Default is A4 paper ( BoundingBox: 0 0 596 842 ) /PageWidth 210 mm def /PageHeight 297 mm def % alternate page sizes (with BoundingBox values) may be % A3 paper ( BoundingBox: 0 0 842 1192) %/PageWidth 297 mm def %/PageHeight 420 mm def % Letter paper ( BoundingBox: 0 0 612 792) %/PageWidth 8.5 inch def %/PageHeight 11 inch def % landscape A4 paper ( BoundingBox: 0 0 842 596 ) - print it with % lp -o landscape iso-paper.ps %/PageWidth 297 mm def %/PageHeight 210 mm def % white margins /BorderTop 10 mm def /BorderBottom 10 mm def /BorderLeft 10 mm def /BorderRight 10 mm def % ------ Advanced settings % translation of the starting point of the pattern /PattTrasX 00 mm def /PattTrasY 00 mm def % ------ Behaviour % Whether to print a line around the margins (1) or not (0) /WillPrintBorder 1 def % From here on you shouldn't worry about changing or configuring anything % ------ Variables ------------------------------------------------------------ /Sin 30 sin def /Cos 30 cos def /AreaHeight PageHeight BorderTop sub BorderBottom sub def /AreaWidth PageWidth BorderLeft sub BorderRight sub def /DiaHor AreaHeight Sin mul Cos div def % number of diagonal lines /DiaNum AreaWidth SideLen div AreaHeight SideLen Sin mul div 2 mul add def /HorNum AreaHeight SideLen Sin mul div def % starting vert and hor line num /DiaSta PattTrasX SideLen div cvi neg AreaHeight SideLen Sin mul div sub cvi def /HorSta PattTrasY SideLen Sin mul div cvi neg def % ending vert and hor line num /DiaEnd DiaNum DiaSta add def /HorEnd DiaNum HorSta 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 %%EndProlog %%Page: 1 1 % set printing area UsedArea clip % print background BackColo setrgbcolor UsedArea fill % print diagonal thin line pattern newpath DiaSta 1 DiaEnd { %for dup SideLen mul BorderLeft add PattTrasX add PattTrasY Cos div add BorderBottom moveto DiaHor neg AreaHeight rlineto SideLen mul BorderLeft add PattTrasX add BorderBottom moveto DiaHor AreaHeight rlineto } for LineSizeThin setlinewidth LineColoThin setrgbcolor stroke % print diagonal strong line pattern newpath DiaSta 1 DiaEnd { %for dup StrongStep mod 0 eq { %if dup SideLen mul BorderLeft add PattTrasX add PattTrasY Cos div add BorderBottom moveto DiaHor neg AreaHeight rlineto SideLen mul BorderLeft add PattTrasX add BorderBottom moveto DiaHor AreaHeight rlineto } if } for LineSizeStro setlinewidth LineColoStro setrgbcolor stroke % print horizontal thin line pattern newpath HorSta 1 HorEnd { %for SideLen Cos mul mul BorderBottom add PattTrasY add BorderLeft exch moveto AreaWidth 0 rlineto } for LineSizeThin setlinewidth LineColoThin setrgbcolor stroke % print horizontal strong line pattern newpath HorSta 1 HorEnd { %for dup StrongStep mod 0 eq { %if SideLen Cos mul mul BorderBottom add PattTrasY add BorderLeft exch moveto AreaWidth 0 rlineto } if } for LineSizeStro setlinewidth LineColoStro setrgbcolor stroke % print border (if WillPrintBorder is not 0 ) WillPrintBorder 0 ne { LineSizeBord setlinewidth LineColoBord setrgbcolor UsedArea stroke } if showpage %%Trailer