diff options
Diffstat (limited to 'Master/tlpkg/tlgs/lib/viewmiff.ps')
-rw-r--r--[-rwxr-xr-x] | Master/tlpkg/tlgs/lib/viewmiff.ps | 248 |
1 files changed, 124 insertions, 124 deletions
diff --git a/Master/tlpkg/tlgs/lib/viewmiff.ps b/Master/tlpkg/tlgs/lib/viewmiff.ps index cdc42c474ab..19b47bb95af 100755..100644 --- a/Master/tlpkg/tlgs/lib/viewmiff.ps +++ b/Master/tlpkg/tlgs/lib/viewmiff.ps @@ -1,124 +1,124 @@ -% Copyright (C) 1998 Aladdin Enterprises. All rights reserved.
-%
-% This software is provided AS-IS with no warranty, either express or
-% implied.
-%
-% This software is distributed under license and may not be copied,
-% modified or distributed except as expressly authorized under the terms
-% of the license contained in the file LICENSE in this distribution.
-%
-% For more information about licensing, please refer to
-% http://www.ghostscript.com/licensing/. For information on
-% commercial licensing, go to http://www.artifex.com/licensing/ or
-% contact Artifex Software, Inc., 101 Lucas Valley Road #110,
-% San Rafael, CA 94903, U.S.A., +1(415)492-9861.
-
-% $Id: viewmiff.ps 6300 2005-12-28 19:56:24Z giles $
-% viewmiff.ps
-% Display a MIFF file. You would think the 'display' command would do this,
-% but many versions of 'display' either core-dump or require unacceptably
-% large amounts of memory.
-
-% Recognize MIFF keywords.
-/miffwords mark
- /class { cvn /class exch def }
- /colors { cvi /colors exch def }
- /columns { cvi /Width exch def }
- /compression { cvn /compression exch def }
- /depth { cvi /depth exch def }
- /packets { cvi /packets exch def }
- /rows { cvi /Height exch def }
-.dicttomark readonly def
-
-% Recognize MIFF image classes.
-/miffclasses mark
- /DirectClass {
- /DeviceRGB setcolorspace
- /BitsPerComponent depth def
- /Decode [ 0 1 0 1 0 1 ] def
- }
- /PseudoClass {
- [ /Indexed
- % The MIFF documentation lies about the size of pixels
- % for this case: the pixel size is determined only by
- % the number of colors, and is not affected by the image
- % depth. Specifically, if there are 256 or fewer colors
- % but the depth (of color map entries) is 16, each pixel
- % is still only 1 byte, not 2.
- currentdict /colors known {
- /DeviceRGB colors 1 sub
- /BitsPerComponent colors 256 le { 8 } { 16 } ifelse def
- colors 3 mul string depth 8 eq {
- f exch readstring pop
- } {
- % 16-bit color map entries: take only the high-order byte.
- 0 1 2 index length 1 sub {
- f read pop 2 index 3 1 roll put f read pop pop
- } for
- } ifelse
- } {
- /colors 256 def
- /DeviceGray 255
- 256 string 0 1 255 { 1 index exch dup put } for
- } ifelse
- ] setcolorspace
- /Decode [ 0 1 BitsPerComponent bitshift 1 sub ] def
- }
-.dicttomark readonly def
-
-% Recognize MIFF compression methods.
-/rlstring 768 string def
-/rlread {
- % packets is not reliable -- disregard it.
- dup rlstring 0 3 getinterval readstring {
- pop read pop 3 mul 3 3 2 index {
- rlstring exch rlstring 0 3 getinterval putinterval
- } for
- rlstring 0 3 -1 roll 3 add getinterval
- } {
- pop pop ()
- } ifelse
-} bind def
-/miffcompress mark
- /Uncompressed { f }
- /RunLengthEncoded { { f rlread } }
- /Zip { [ f /FlateDecode filter cvlit /rlread cvx ] cvx }
-.dicttomark readonly def
-
-% Read a MIFF file and display the image.
-/viewmiff { % <filename> viewmiff -
- 50 dict begin
- /fname 1 index def
- /f exch (r) file def
- % Set defaults.
- /ImageType 1 def
- /class /DirectClass def
- /compression /Uncompressed def
- /depth 8 def
- /packets 16#7fffffff def
- % Read and parse the header.
- { f token pop
- dup (:) eq { pop exit } if
- dup type /nametype eq {
- .namestring (=) search {
- exch pop miffwords exch .knownget { exec } { pop } ifelse
- } {
- pop % who knows?
- } ifelse
- } {
- pop % probably a comment in braces
- } ifelse
- } loop
- % Read and display the image.
- miffclasses class get exec
- /DataSource miffcompress compression get exec def
- /ImageMatrix [Width 0 0 Height neg 0 Height] def
- currentpagedevice /PageSize get
- dup 0 get exch 1 get scale
- gsave 0.8 setgray 0 0 1 1 rectfill grestore % provide background
- currentdict image
- showpage
- % Clean up.
- f closefile
- end
-} bind def
+% Copyright (C) 1998 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id: viewmiff.ps 6300 2005-12-28 19:56:24Z giles $ +% viewmiff.ps +% Display a MIFF file. You would think the 'display' command would do this, +% but many versions of 'display' either core-dump or require unacceptably +% large amounts of memory. + +% Recognize MIFF keywords. +/miffwords mark + /class { cvn /class exch def } + /colors { cvi /colors exch def } + /columns { cvi /Width exch def } + /compression { cvn /compression exch def } + /depth { cvi /depth exch def } + /packets { cvi /packets exch def } + /rows { cvi /Height exch def } +.dicttomark readonly def + +% Recognize MIFF image classes. +/miffclasses mark + /DirectClass { + /DeviceRGB setcolorspace + /BitsPerComponent depth def + /Decode [ 0 1 0 1 0 1 ] def + } + /PseudoClass { + [ /Indexed + % The MIFF documentation lies about the size of pixels + % for this case: the pixel size is determined only by + % the number of colors, and is not affected by the image + % depth. Specifically, if there are 256 or fewer colors + % but the depth (of color map entries) is 16, each pixel + % is still only 1 byte, not 2. + currentdict /colors known { + /DeviceRGB colors 1 sub + /BitsPerComponent colors 256 le { 8 } { 16 } ifelse def + colors 3 mul string depth 8 eq { + f exch readstring pop + } { + % 16-bit color map entries: take only the high-order byte. + 0 1 2 index length 1 sub { + f read pop 2 index 3 1 roll put f read pop pop + } for + } ifelse + } { + /colors 256 def + /DeviceGray 255 + 256 string 0 1 255 { 1 index exch dup put } for + } ifelse + ] setcolorspace + /Decode [ 0 1 BitsPerComponent bitshift 1 sub ] def + } +.dicttomark readonly def + +% Recognize MIFF compression methods. +/rlstring 768 string def +/rlread { + % packets is not reliable -- disregard it. + dup rlstring 0 3 getinterval readstring { + pop read pop 3 mul 3 3 2 index { + rlstring exch rlstring 0 3 getinterval putinterval + } for + rlstring 0 3 -1 roll 3 add getinterval + } { + pop pop () + } ifelse +} bind def +/miffcompress mark + /Uncompressed { f } + /RunLengthEncoded { { f rlread } } + /Zip { [ f /FlateDecode filter cvlit /rlread cvx ] cvx } +.dicttomark readonly def + +% Read a MIFF file and display the image. +/viewmiff { % <filename> viewmiff - + 50 dict begin + /fname 1 index def + /f exch (r) file def + % Set defaults. + /ImageType 1 def + /class /DirectClass def + /compression /Uncompressed def + /depth 8 def + /packets 16#7fffffff def + % Read and parse the header. + { f token pop + dup (:) eq { pop exit } if + dup type /nametype eq { + .namestring (=) search { + exch pop miffwords exch .knownget { exec } { pop } ifelse + } { + pop % who knows? + } ifelse + } { + pop % probably a comment in braces + } ifelse + } loop + % Read and display the image. + miffclasses class get exec + /DataSource miffcompress compression get exec def + /ImageMatrix [Width 0 0 Height neg 0 Height] def + currentpagedevice /PageSize get + dup 0 get exch 1 get scale + gsave 0.8 setgray 0 0 1 1 rectfill grestore % provide background + currentdict image + showpage + % Clean up. + f closefile + end +} bind def |