blob: afa9b9e1a0ec4cde309a580e6dd096d84c9b25bb [file] [log] [blame]
%! PS-Adobe-2.0
%% for GhostScript 2.0
%% Program for reading a .ps file and writing out a PPM file.
%% Original version by Phillip Conrad - Perfect Byte, Inc.
%% Modified 06/26/90 for a color file
%% Modified on 08/02/90 for using the CORRECT color map.
%% Modified by L. Peter Deutsch -- Aladdin Enterprises -- 08/02/90
%% Modified by L. Peter Deutsch -- Aladdin Enterprises -- 08/25/90 --
%% converted from a one-shot program to a utility package,
%% designed to be used from an interactive terminal.
%% Modified by Henry Minsky 11/03/90
%% for each showpage, it writes out a ppm file with name filename.ppm.N
%% where N increments each showpage, starting at 1
%% Modified by L. Peter Deutsch 11/07/90
%% to use filename.ppm for the first page, renamed to filename.1ppm
%% with subsequent pages .2ppm, etc. if more than one page.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%% Define the directory for holding the PPM information
/ppmdict 30 dict def
ppmdict begin
/Horz_dpi 72 def % defaults to screen density
/Vert_dpi 72 def
/OutFilePrefix () def % default to null (current directory)
/Palette1 [1 1 1 rgbcolor 0 0 0 rgbcolor] def
/Palette8
[
%========== Here we define all 256 color entries as color objects. ======
%========== Colors were taken from the W Xindows default colors. ======
0.000 0.000 0.000 rgbcolor
1.000 1.000 1.000 rgbcolor
0.659 0.659 0.659 rgbcolor
0.922 0.922 0.922 rgbcolor
0.361 0.361 0.361 rgbcolor
0.216 0.216 0.216 rgbcolor
0.373 0.573 0.620 rgbcolor
0.522 0.800 0.867 rgbcolor
0.204 0.314 0.341 rgbcolor
0.122 0.188 0.204 rgbcolor
0.447 0.620 0.996 rgbcolor
0.627 0.867 1.000 rgbcolor
0.247 0.341 0.549 rgbcolor
0.149 0.204 0.329 rgbcolor
0.380 0.525 0.847 rgbcolor
0.184 0.184 0.392 rgbcolor
1.000 1.000 0.000 rgbcolor
0.690 0.886 1.000 rgbcolor
1.000 0.000 0.000 rgbcolor
0.502 0.502 0.502 rgbcolor
0.937 0.875 0.518 rgbcolor
0.333 0.996 0.333 rgbcolor
0.996 0.000 0.000 rgbcolor
0.400 0.996 0.341 rgbcolor
0.996 0.596 0.478 rgbcolor
0.996 0.792 0.443 rgbcolor
0.996 0.996 0.996 rgbcolor
0.996 0.553 0.486 rgbcolor
0.996 0.663 0.467 rgbcolor
0.996 0.769 0.447 rgbcolor
0.996 0.722 0.459 rgbcolor
0.996 0.576 0.482 rgbcolor
0.996 0.584 0.478 rgbcolor
0.996 0.710 0.459 rgbcolor
0.596 0.996 0.365 rgbcolor
0.996 0.545 0.490 rgbcolor
0.996 0.651 0.467 rgbcolor
0.996 0.698 0.463 rgbcolor
0.996 0.686 0.463 rgbcolor
0.996 0.745 0.455 rgbcolor
0.996 0.514 0.494 rgbcolor
0.996 0.988 0.416 rgbcolor
0.996 0.047 0.604 rgbcolor
0.996 0.012 0.314 rgbcolor
0.996 0.031 0.710 rgbcolor
0.404 0.082 0.996 rgbcolor
0.996 0.984 0.247 rgbcolor
0.996 0.329 0.294 rgbcolor
0.000 0.753 0.000 rgbcolor
0.125 0.753 0.000 rgbcolor
0.251 0.753 0.000 rgbcolor
0.376 0.753 0.000 rgbcolor
0.502 0.753 0.000 rgbcolor
0.627 0.753 0.000 rgbcolor
0.753 0.753 0.000 rgbcolor
0.878 0.753 0.000 rgbcolor
0.000 0.878 0.000 rgbcolor
0.125 0.878 0.000 rgbcolor
0.251 0.878 0.000 rgbcolor
0.376 0.878 0.000 rgbcolor
0.502 0.878 0.000 rgbcolor
0.627 0.878 0.000 rgbcolor
0.753 0.878 0.000 rgbcolor
0.878 0.878 0.000 rgbcolor
0.000 0.000 0.251 rgbcolor
0.125 0.000 0.251 rgbcolor
0.251 0.000 0.251 rgbcolor
0.376 0.000 0.251 rgbcolor
0.502 0.000 0.251 rgbcolor
0.627 0.000 0.251 rgbcolor
0.753 0.000 0.251 rgbcolor
0.878 0.000 0.251 rgbcolor
0.000 0.125 0.251 rgbcolor
0.125 0.125 0.251 rgbcolor
0.251 0.125 0.251 rgbcolor
0.376 0.125 0.251 rgbcolor
0.502 0.125 0.251 rgbcolor
0.627 0.125 0.251 rgbcolor
0.753 0.125 0.251 rgbcolor
0.878 0.125 0.251 rgbcolor
0.000 0.251 0.251 rgbcolor
0.125 0.251 0.251 rgbcolor
0.251 0.251 0.251 rgbcolor
0.376 0.251 0.251 rgbcolor
0.502 0.251 0.251 rgbcolor
0.627 0.251 0.251 rgbcolor
0.753 0.251 0.251 rgbcolor
0.878 0.251 0.251 rgbcolor
0.000 0.376 0.251 rgbcolor
0.125 0.376 0.251 rgbcolor
0.251 0.376 0.251 rgbcolor
0.376 0.376 0.251 rgbcolor
0.502 0.376 0.251 rgbcolor
0.627 0.376 0.251 rgbcolor
0.753 0.376 0.251 rgbcolor
0.878 0.376 0.251 rgbcolor
0.000 0.502 0.251 rgbcolor
0.125 0.502 0.251 rgbcolor
0.251 0.502 0.251 rgbcolor
0.376 0.502 0.251 rgbcolor
0.502 0.502 0.251 rgbcolor
0.627 0.502 0.251 rgbcolor
0.753 0.502 0.251 rgbcolor
0.878 0.502 0.251 rgbcolor
0.000 0.627 0.251 rgbcolor
0.125 0.627 0.251 rgbcolor
0.251 0.627 0.251 rgbcolor
0.376 0.627 0.251 rgbcolor
0.502 0.627 0.251 rgbcolor
0.627 0.627 0.251 rgbcolor
0.753 0.627 0.251 rgbcolor
0.878 0.627 0.251 rgbcolor
0.000 0.753 0.251 rgbcolor
0.125 0.753 0.251 rgbcolor
0.251 0.753 0.251 rgbcolor
0.376 0.753 0.251 rgbcolor
0.502 0.753 0.251 rgbcolor
0.627 0.753 0.251 rgbcolor
0.753 0.753 0.251 rgbcolor
0.878 0.753 0.251 rgbcolor
0.000 0.878 0.251 rgbcolor
0.125 0.878 0.251 rgbcolor
0.251 0.878 0.251 rgbcolor
0.376 0.878 0.251 rgbcolor
0.502 0.878 0.251 rgbcolor
0.627 0.878 0.251 rgbcolor
0.753 0.878 0.251 rgbcolor
0.878 0.878 0.251 rgbcolor
0.000 0.000 0.502 rgbcolor
0.125 0.000 0.502 rgbcolor
0.251 0.000 0.502 rgbcolor
0.376 0.000 0.502 rgbcolor
0.502 0.000 0.502 rgbcolor
0.627 0.000 0.502 rgbcolor
0.753 0.000 0.502 rgbcolor
0.878 0.000 0.502 rgbcolor
0.000 0.125 0.502 rgbcolor
0.125 0.125 0.502 rgbcolor
0.251 0.125 0.502 rgbcolor
0.376 0.125 0.502 rgbcolor
0.502 0.125 0.502 rgbcolor
0.627 0.125 0.502 rgbcolor
0.753 0.125 0.502 rgbcolor
0.878 0.125 0.502 rgbcolor
0.000 0.251 0.502 rgbcolor
0.125 0.251 0.502 rgbcolor
0.251 0.251 0.502 rgbcolor
0.376 0.251 0.502 rgbcolor
0.502 0.251 0.502 rgbcolor
0.627 0.251 0.502 rgbcolor
0.753 0.251 0.502 rgbcolor
0.878 0.251 0.502 rgbcolor
0.000 0.376 0.502 rgbcolor
0.125 0.376 0.502 rgbcolor
0.251 0.376 0.502 rgbcolor
0.376 0.376 0.502 rgbcolor
0.502 0.376 0.502 rgbcolor
0.627 0.376 0.502 rgbcolor
0.753 0.376 0.502 rgbcolor
0.878 0.376 0.502 rgbcolor
0.000 0.502 0.502 rgbcolor
0.125 0.502 0.502 rgbcolor
0.251 0.502 0.502 rgbcolor
0.376 0.502 0.502 rgbcolor
0.502 0.502 0.502 rgbcolor
0.627 0.502 0.502 rgbcolor
0.753 0.502 0.502 rgbcolor
0.878 0.502 0.502 rgbcolor
0.000 0.627 0.502 rgbcolor
0.125 0.627 0.502 rgbcolor
0.251 0.627 0.502 rgbcolor
0.376 0.627 0.502 rgbcolor
0.502 0.627 0.502 rgbcolor
0.627 0.627 0.502 rgbcolor
0.753 0.627 0.502 rgbcolor
0.878 0.627 0.502 rgbcolor
0.000 0.753 0.502 rgbcolor
0.125 0.753 0.502 rgbcolor
0.251 0.753 0.502 rgbcolor
0.376 0.753 0.502 rgbcolor
0.502 0.753 0.502 rgbcolor
0.627 0.753 0.502 rgbcolor
0.753 0.753 0.502 rgbcolor
0.878 0.753 0.502 rgbcolor
0.000 0.878 0.502 rgbcolor
0.125 0.878 0.502 rgbcolor
0.251 0.878 0.502 rgbcolor
0.376 0.878 0.502 rgbcolor
0.502 0.878 0.502 rgbcolor
0.627 0.878 0.502 rgbcolor
0.753 0.878 0.502 rgbcolor
0.878 0.878 0.502 rgbcolor
0.000 0.000 0.753 rgbcolor
0.125 0.000 0.753 rgbcolor
0.251 0.000 0.753 rgbcolor
0.376 0.000 0.753 rgbcolor
0.502 0.000 0.753 rgbcolor
0.627 0.000 0.753 rgbcolor
0.753 0.000 0.753 rgbcolor
0.878 0.000 0.753 rgbcolor
0.000 0.125 0.753 rgbcolor
0.125 0.125 0.753 rgbcolor
0.251 0.125 0.753 rgbcolor
0.376 0.125 0.753 rgbcolor
0.502 0.125 0.753 rgbcolor
0.627 0.125 0.753 rgbcolor
0.753 0.125 0.753 rgbcolor
0.878 0.125 0.753 rgbcolor
0.000 0.251 0.753 rgbcolor
0.125 0.251 0.753 rgbcolor
0.251 0.251 0.753 rgbcolor
0.376 0.251 0.753 rgbcolor
0.502 0.251 0.753 rgbcolor
0.627 0.251 0.753 rgbcolor
0.753 0.251 0.753 rgbcolor
0.878 0.251 0.753 rgbcolor
0.000 0.376 0.753 rgbcolor
0.125 0.376 0.753 rgbcolor
0.251 0.376 0.753 rgbcolor
0.376 0.376 0.753 rgbcolor
0.502 0.376 0.753 rgbcolor
0.627 0.376 0.753 rgbcolor
0.753 0.376 0.753 rgbcolor
0.878 0.376 0.753 rgbcolor
0.000 0.502 0.753 rgbcolor
0.125 0.502 0.753 rgbcolor
0.251 0.502 0.753 rgbcolor
0.376 0.502 0.753 rgbcolor
0.502 0.502 0.753 rgbcolor
0.627 0.502 0.753 rgbcolor
0.753 0.502 0.753 rgbcolor
0.878 0.502 0.753 rgbcolor
0.000 0.627 0.753 rgbcolor
0.125 0.627 0.753 rgbcolor
0.251 0.627 0.753 rgbcolor
0.376 0.627 0.753 rgbcolor
0.502 0.627 0.753 rgbcolor
0.627 0.627 0.753 rgbcolor
0.753 0.627 0.753 rgbcolor
0.878 0.627 0.753 rgbcolor
0.000 0.753 0.753 rgbcolor
0.125 0.753 0.753 rgbcolor
0.251 0.753 0.753 rgbcolor
0.376 0.753 0.753 rgbcolor
0.502 0.753 0.753 rgbcolor
0.627 0.753 0.753 rgbcolor
0.753 0.753 0.753 rgbcolor
0.878 0.753 0.753 rgbcolor
0.000 0.878 0.753 rgbcolor
0.125 0.878 0.753 rgbcolor
0.251 0.878 0.753 rgbcolor
0.376 0.878 0.753 rgbcolor
0.502 0.878 0.753 rgbcolor
0.627 0.878 0.753 rgbcolor
0.753 0.878 0.753 rgbcolor
0.878 0.878 0.753 rgbcolor
] def
% Redefine copypage and showpage appropriately
/copypage
{ ppmdict begin
/PageCount PageCount 1 add def
OutFilePrefix FileName concatstrings
PageCount 1 eq
{ (.ppm) concatstrings % first page
}
{ PageCount 2 eq
{ % second page, rename first
dup dup (.ppm) concatstrings
exch (.1ppm) concatstrings
(Renaming ) print 1 index print ( to ) print
dup print (\n) print
flush
renamefile
} if
(.) PageCount (xxxxxx) cvs concatstrings
(ppm) concatstrings concatstrings
} ifelse
/FileNameOut exch def
FileNameOut (w) file
/FileDescOut exch def
(Writing ) print FileNameOut print (\n) print
flush
FileDescOut Device writeppmfile
FileDescOut closefile
/WrotePage true def
end
} userdict begin def end
/showpage
{ copypage erasepage initgraphics
} userdict begin def end
/Convert % the main procedure
% <filename> <palette> Convert -
{ /Palette exch def
/FileName exch def
/PageCount 0 def
/ScaleX Horz_dpi 72 div def
/ScaleY Vert_dpi 72 div def
/Width 85 Horz_dpi mul 5 add 10 div cvi def % add 5 to round up!
/Height 11 Vert_dpi mul def
FileName (.ps) concatstrings
/FileNameIn exch def % file name with extension
[ScaleX 0.0 0.0 ScaleY neg 0.0 Height]
Width Height Palette makeimagedevice
/Device exch def
Device setdevice
/WrotePage false def
% For running the file, remove ppmdict from the dict stack
FileNameIn end run % ppmdict
ppmdict begin
WrotePage not { showpage } if % make sure the page got written
end % ppmdict
} def
end % ppmdict
%%%%%% Define the user-callable procedures
/ppmsetdensity
{ ppmdict begin
/Vert_dpi exch def
/Horz_dpi exch def
end
} def
/ppmsetprefix
{ ppmdict begin
/OutFilePrefix exch def
end
} def
/ppm1run
{ ppmdict begin Palette1 Convert
} def
/ppm8run
{ ppmdict begin Palette8 Convert
} def
/ppm24run
{ ppmdict begin null Convert
} def
%%%%%% Display instructions for the user.
(Usage: (file) ppmNrun\n) print
( converts file.ps to file.ppm (single page),\n) print
( or file.1ppm, file.2ppm, ... (multi page).\n) print
( N is # of bits per pixel (1, 8, or 24).\n) print
(Examples: (golfer) ppm1run ..or.. (escher) ppm8run\n) print
(Optional commands you can give first:\n) print
( horiz_DPI vert_DPI ppmsetdensity\n) print
( (dirname/) ppmsetprefix\n) print
flush