summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlgs/lib/viewrgb.ps
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlgs/lib/viewrgb.ps')
-rwxr-xr-xMaster/tlpkg/tlgs/lib/viewrgb.ps146
1 files changed, 146 insertions, 0 deletions
diff --git a/Master/tlpkg/tlgs/lib/viewrgb.ps b/Master/tlpkg/tlgs/lib/viewrgb.ps
new file mode 100755
index 00000000000..5e3fc529fa9
--- /dev/null
+++ b/Master/tlpkg/tlgs/lib/viewrgb.ps
@@ -0,0 +1,146 @@
+% Copyright (C) 2009 Artifex Software, Inc. 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 that
+% license. Refer to licensing information at http://www.artifex.com/
+% or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
+% San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
+
+% $Id: viewrgb.ps 9517 2009-03-02 19:47:28Z giles $
+
+% viewrgb.ps
+% Display a raw RGB file created by -sDEVICE=bitrgb.
+% If SCALE is defined, maps input pixels to output pixels with that scale;
+% if SCALE is undefined, scales the image to fit the page.
+% If BITS is defined, it is the number of bits per sample (1,2,8,12).
+% NB: BITS=1 (corresponding to -dGrayValues=16) is not supported.
+% if BITS is undefined, its default value is 1.
+
+/viewrgb { % <filename> <width> viewrgb -
+ 20 dict begin
+ /w exch def
+ /fname exch def
+ /bpc /BITS where { pop BITS } { 1 } ifelse def
+ /f fname (r) file def
+ mark fname status pop pop pop /flen exch def cleartomark
+ /h flen
+ w [ 0 4 8 0 0 0 0 0 24 ] bpc get
+ dup 0 eq {
+ (*** -dBITS=) print bpc =print ( is not supported. ***) = flush
+ quit
+ } if
+ mul 7 add 8 idiv idiv def
+ QUIET not { (Dimensions: ) print [w h] == flush } if
+ % Set up scaling.
+ /SCALE where {
+ pop
+ % Map pixels SCALE-for-1. Assume orthogonal transformation.
+ SCALE 1 0 dtransform add abs div
+ SCALE 0 1 dtransform add abs div
+ } {
+ % Scale the image (uniformly) to fit the page.
+ clippath pathbbox pop pop translate
+ pathbbox 3 -1 roll sub h div
+ 3 1 roll exch sub w div .min dup
+ } ifelse scale
+ bpc 1 eq {
+ [ /Indexed /DeviceRGB 15 <
+ 000000
+ 0000FF
+ 00FF00
+ 00FFFF
+ FF0000
+ FF00FF
+ FFFF00
+ FFFFFF
+ 000000
+ 0000FF
+ 00FF00
+ 00FFFF
+ FF0000
+ FF00FF
+ FFFF00
+ FFFFFF
+ >
+ ] setcolorspace
+ /BPC 4 def % change to 4 bit indexed
+ } {
+ bpc 2 eq {
+ [ /Indexed /DeviceRGB 255 <
+ 000000 000055 0000AA 0000FF
+ 005500 005555 0055AA 0055FF
+ 00AA00 00AA55 00AAAA 00AAFF
+ 00FF00 00FF55 00FFAA 00FFFF
+ 550000 550055 5500AA 5500FF
+ 555500 555555 5555AA 5555FF
+ 55AA00 55AA55 55AAAA 55AAFF
+ 55FF00 55FF55 55FFAA 55FFFF
+ AA0000 AA0055 AA00AA AA00FF
+ AA5500 AA5555 AA55AA AA55FF
+ AAAA00 AAAA55 AAAAAA AAAAFF
+ AAFF00 AAFF55 AAFFAA AAFFFF
+ FF0000 FF0055 FF00AA FF00FF
+ FF5500 FF5555 FF55AA FF55FF
+ FFAA00 FFAA55 FFAAAA FFAAFF
+ FFFF00 FFFF55 FFFFAA FFFFFF
+
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000
+ >
+ ] setcolorspace
+ /BPC 8 def % change to 4 bit indexed
+ } {
+ /DeviceRGB setcolorspace
+ /BPC bpc def
+ }
+ ifelse
+ }
+ ifelse
+ << /ImageType 1
+ /Width w
+ /Height h
+ /BitsPerComponent BPC
+ /ImageMatrix [1 0 0 -1 0 h]
+ /DataSource f
+ /MultipleDataSources false
+ bpc 4 lt { /Decode [ 0 [ 0 15 255 ] bpc get ] } { /Decode [ 0 1 0 1 0 1 ] } ifelse
+ >> image
+ showpage
+ f closefile
+ end
+} bind def
+
+% If the program was invoked from the command line, run it now.
+[ shellarguments {
+ counttomark 2 eq {
+ cvi viewrgb
+ } {
+ cleartomark
+ (\nUsage: gs -- viewrgb.ps filename.rgb width\n) print
+ ( e.g.: gs -- viewrgb.ps my.rgb 2550\n) print flush
+ ( -dSCALE=### sets specific scaling \(default = 1.0\)) = flush
+ ( -dBITS=# sets the BitsPerComponent \(1, 2, 8, 12] \(default = 1\)) = flush
+ } ifelse
+} {
+ pop
+} ifelse