ftp.nice.ch/pub/next/unix/calendars/remind.3.0.13.N.bs.tar.gz#/remind-3.0.13/rem2ps.h

This is rem2ps.h in view mode; [Download] [Up]

/***************************************************************/
/*                                                             */
/*  REM2PS.H                                                   */
/*                                                             */
/*  Define the PostScript prologue                             */
/*                                                             */
/*  This file is part of REMIND.                               */
/*  Copyright (C) 1992, 1993, 1994 by David F. Skoll           */
/*                                                             */
/***************************************************************/

char *PSProlog1[] =
{
   "% This file was produced by Remind and Rem2PS, written by",
   "% David F. Skoll.",
   "/ISOLatin1Encoding where { pop save true }{ false } ifelse",
   "  /ISOLatin1Encoding [ StandardEncoding 0 45 getinterval aload pop /minus",
   "    StandardEncoding 46 98 getinterval aload pop /dotlessi /grave /acute",
   "    /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring",
   "    /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent",
   "    /sterling /currency /yen /brokenbar /section /dieresis /copyright",
   "    /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron",
   "    /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph",
   "    /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright",
   "    /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute",
   "    /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute",
   "    /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth",
   "    /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply",
   "    /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn",
   "    /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae",
   "    /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute",
   "    /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex",
   "    /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex",
   "    /udieresis /yacute /thorn /ydieresis ] def",
   "{ restore } if",
   "",
   "/reencodeISO { %def",
   "    findfont dup length dict begin",
   "    { 1 index /FID ne { def }{ pop pop } ifelse } forall",
   "    /Encoding ISOLatin1Encoding def",
   "    currentdict end definefont pop",
   "} bind def",
   "/copyFont { %def",
   "    findfont dup length dict begin",
   "    { 1 index /FID ne { def } { pop pop } ifelse } forall",
   "    currentdict end definefont pop",
   "} bind def",
   "",
   "% L - Draw a line",
   "/L {",
   "   newpath moveto lineto stroke",
   "} bind def",
   "% string1 string2 strcat string",
   "% Function: Concatenates two strings together.",
   "/strcat {",
   "         2 copy length exch length add",
   "         string dup",
   "         4 2 roll",
   "         2 index 0 3 index",
   "         putinterval",
   "         exch length exch putinterval",
   "} bind def",
   "% string doheading",
   "/doheading",
   "{",
   "   /monthyr exch def",
   "",
   "   /TitleFont findfont",
   "   TitleSize scalefont setfont",
   "   monthyr stringwidth",
   "   /hgt exch def",
   "   2 div MaxX MinX add 2 div exch sub /x exch def",
   "   MaxY Border sub TitleSize sub /y exch def",
   "   newpath x y moveto monthyr show",
   "   newpath x y moveto monthyr false charpath flattenpath pathbbox",
   "   pop pop Border sub /y exch def pop",
   "   MinX y MaxX y L",
   "   /topy y def",
   "   /HeadFont findfont HeadSize scalefont setfont",
   "% Do the days of the week",
   "   MaxX MinX sub 7 div /xincr exch def",
   "   /x MinX def",
   NULL
};
char *PSProlog2[] =
{
   "  {",
   "     HeadSize x y HeadSize 2 mul sub x xincr add y CenterText",
   "     x xincr add /x exch def",
   "  } forall",
   "  y HeadSize 2 mul sub /y exch def",
   "  MinX y MaxX y L",
   "  /ytop y def /ymin y def",
   "}",
   "def",
   "/CenterText",
   "{",
   "   /maxy exch def",
   "   /maxx exch def",
   "   /miny exch def",
   "   /minx exch def",
   "   /sz exch def",
   "   /str exch def",
   "   str stringwidth pop",
   "   2 div maxx minx add 2 div exch sub",
   "   sz 2 div maxy miny add 2 div exch sub",
   "   moveto str show",
   "} def",
   "% Variables:",
   "% curline - a string holding the current line",
   "% y - current y pos",
   "% yincr - increment to next line",
   "% xleft - left margin",
   "% width - max width.",
   "% EnterOneWord - given a word, enter it into the box.",
   "% string EnterOneWord",
   "/EnterOneWord {",
   "   { EnterOneWordAux",
   "     {exit} if }",
   "   loop",
   "} bind def",
   "% EnterOneWordAux - if the word fits, enter it into box and return true.",
   "% If it doesn't fit, put as much as will fit and return the string and false.",
   "/EnterOneWordAux {",
   "   /word exch def",
   "   /tmpline curline word strcat def",
   "   tmpline stringwidth pop width gt",
   "   {MoveToNewLine}",
   "   {/curline tmpline ( ) strcat def /word () def}",
   "   ifelse",
   "   word () eq",
   "   {true}",
   "   {word false}",
   "   ifelse",
   "} bind def",
   "% MoveToNewLine - move to a new line, resetting word as appropriate",
   "/MoveToNewLine {",
   "   curline () ne",
   "   {newpath xleft y moveto curline show /curline () def /y y yincr add def}   ",
   "   {ChopWord}",
   "   ifelse",
   "} bind def",
   "% ChopWord - word won't fit.  Chop it and find biggest piece that will fit",
   "/ChopWord {",
   "   /curline () def",
   "   /len word length def",
   "   /Fcount len 1 sub def",
   "",
   "   {",
   "     word 0 Fcount getinterval stringwidth pop width le",
   "     {exit} if",
   "     /Fcount Fcount 1 sub def",
   "   } loop",
   "% Got the count.  Display it and reset word",
   "   newpath xleft y moveto word 0 Fcount getinterval show",
   "   /y y yincr add def",
   "   /word word Fcount len Fcount sub getinterval def",
   "} bind def",
   "/FinishFormatting {",
   "   word () ne",
   "   {newpath xleft y moveto word show /word () def",
   "    /curline () def /y y yincr add def}",
   "   {curline () ne",
   "     {newpath xleft y moveto curline show /word () def",
   "      /curline () def /y y yincr add def} if}",
   "   ifelse",
   "} bind def",
   "% FillBoxWithText - fill a box with text",
   "% text-array xleft width yincr y FillBoxWithText new-y",
   "% Returns the new Y-coordinate.",
   "/FillBoxWithText {",
   "   /y exch def",
   "   /yincr exch def",
   "   /width exch def",
   "   /xleft exch def",
   "   /curline () def",
   "   {EnterOneWord} forall",
   "   FinishFormatting",
   "   y",
   "} bind def",
   "% Variables for calendar boxes:",
   "% ytop - current top position",
   "% ymin - minimum y reached for current row",
   "% border ytop xleft width textarray daynum DoCalBox ybot",
   "% Do the entries for one calendar box.  Returns lowest Y-coordinate reached",
   "/DoCalBox {",
   "   /daynum exch def",
   "   /textarr exch def",
   "   /wid exch def",
   "   /xl exch def",
   "   /yt exch def",
   "   /border exch def",
   "% Do the day number",
   "   /DayFont findfont DaySize scalefont setfont",
   "   xl wid add border sub daynum stringwidth pop sub",
   "   yt border sub DaySize sub moveto daynum show",
   "% Do the text entries.  Precharge the stack with current y pos.",
   "   /ycur yt border sub DaySize sub DaySize sub 2 add def",
   "   /EntryFont findfont EntrySize scalefont setfont",
   "   ycur",
   "   textarr",
   "   { exch 2 sub /ycur exch def xl border add wid border sub border sub EntrySize 2 add neg",
   "     ycur FillBoxWithText }",
   "    forall",
   "} bind def",
   "2 setlinecap",
   "% Define a default PreCal procedure",
   "/PreCal { pop pop } bind def",
   NULL
};

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.