Add dist/ release build (LabelPrinter.exe + conf with bundled GhostScript and SumatraPDF)
This commit is contained in:
176
dist/conf/ghostscript/lib/viewjpeg.ps
vendored
Normal file
176
dist/conf/ghostscript/lib/viewjpeg.ps
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
%! viewjpeg.ps Copyright (C) 1994 Thomas Merz <tm@pdflib.com>
|
||||
%
|
||||
% 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., 39 Mesa Street, Suite 108A, San Francisco,
|
||||
% CA 94129, USA.
|
||||
|
||||
% View JPEG files with Ghostscript
|
||||
%
|
||||
% This PostScript code relies on level 2 features.
|
||||
%
|
||||
% Only JPEG baseline, extended sequential, and progressive files
|
||||
% are supported. Note that Adobe PostScript level 2 does not include
|
||||
% progressive-JPEG support. Ghostscript with IJG JPEG v6 or later
|
||||
% will decode progressive JPEG, but only if you edit gsjmorec.h to
|
||||
% enable that feature.
|
||||
%
|
||||
% Author's address:
|
||||
% ------------------------------+
|
||||
% {(pstack exec quit) = flush } | Thomas Merz, Munich
|
||||
% pstack exec quit | voice +49/89/29160728
|
||||
% ------------------------------+ tm@muc.de http://www.muc.de/~tm/
|
||||
%
|
||||
% Updated by L. Peter Deutsch 20-May-1997:
|
||||
% move the usage example to the beginning
|
||||
% Updates by Tom Lane 6-Sep-1995
|
||||
|
||||
% Usage example:
|
||||
% (jpeg-6/testimg.jpg) viewJPEG
|
||||
% From version 9.50 you must supply permissions for this program
|
||||
% to read the input file(s) either by using -dNOSAFER or by
|
||||
% supplying --permit-file-read=<filename>
|
||||
|
||||
/languagelevel where {pop languagelevel 2 lt}{true} ifelse {
|
||||
(JPEG needs PostScript Level 2!\n) print flush stop
|
||||
} if
|
||||
|
||||
/JPEGdict 20 dict def
|
||||
JPEGdict begin
|
||||
|
||||
/NoParamMarkers [ % JPEG markers without additional parameters
|
||||
16#D0 16#D1 16#D2 16#D3 16#D4 16#D5 16#D6 16#D7 16#D8 16#01
|
||||
] def
|
||||
|
||||
/NotSupportedMarkers [ % JPEG markers not supported by PostScript level 2
|
||||
16#C3 16#C5 16#C6 16#C7 16#C8 16#C9 16#CA 16#CB 16#CD 16#CE 16#CF
|
||||
] def
|
||||
|
||||
% Names of color spaces
|
||||
/ColorSpaceNames << /1 /DeviceGray /3 /DeviceRGB /4 /DeviceCMYK >> def
|
||||
|
||||
% read one byte from file F
|
||||
% - ==> int --or-- stop context
|
||||
/NextByte {
|
||||
F read not { (Read error in ViewJPEG!\n) print flush stop } if
|
||||
} bind def
|
||||
|
||||
/SkipSegment { % read two bytes and skip that much data
|
||||
NextByte 8 bitshift NextByte add 2 sub { NextByte pop } repeat
|
||||
} bind def
|
||||
|
||||
% read width, height, and # of components from JPEG markers
|
||||
% and store in dict
|
||||
/readJPEGmarkers { % - ==> dict --or-- stop context
|
||||
5 dict begin
|
||||
|
||||
{ % loop: read JPEG marker segments until we find SOFn marker or EOF
|
||||
NextByte
|
||||
16#FF eq { % found marker
|
||||
/markertype NextByte def
|
||||
% Is it S0F0=baseline, SOF1=extended sequential, SOF2=progressive ?
|
||||
markertype dup 16#C0 ge exch 16#C2 le and {
|
||||
NextByte pop NextByte pop % segment length
|
||||
% Ghostscript and Adobe PS accept only data precision 8
|
||||
NextByte 8 ne {
|
||||
(Error: not 8 bits per component!\n) print flush stop
|
||||
} if
|
||||
|
||||
% Read crucial image parameters
|
||||
/height NextByte 8 bitshift NextByte add def
|
||||
/width NextByte 8 bitshift NextByte add def
|
||||
/colors NextByte def
|
||||
|
||||
VJPGDEBUG { currentdict { exch == == } forall flush } if
|
||||
exit
|
||||
} if
|
||||
|
||||
% detect several segment types which are not compatible with PS
|
||||
NotSupportedMarkers {
|
||||
markertype eq {
|
||||
(Marker ) print markertype ==
|
||||
(not supported!\n) print flush stop
|
||||
} if
|
||||
} forall
|
||||
|
||||
% Skip segment if marker has parameters associated with it
|
||||
true NoParamMarkers { markertype eq {pop false exit} if } forall
|
||||
{ SkipSegment } if
|
||||
} if
|
||||
} loop
|
||||
|
||||
currentdict dup /markertype undef
|
||||
end
|
||||
} bind def
|
||||
|
||||
end % JPEGdict
|
||||
|
||||
% read image parameters from JPEG file and display the image
|
||||
/viewJPEG { % <file|string> ==> -
|
||||
save
|
||||
JPEGdict begin
|
||||
/saved exch def
|
||||
/scratch 1 string def
|
||||
dup type /stringtype eq { (r) file } if
|
||||
/F exch def
|
||||
|
||||
readJPEGmarkers begin
|
||||
F 0 setfileposition % reset file pointer
|
||||
|
||||
% We use the whole clipping area for the image (at least in one dimension)
|
||||
gsave clippath pathbbox grestore
|
||||
/ury exch def /urx exch def
|
||||
/lly exch def /llx exch def
|
||||
|
||||
llx lly translate
|
||||
width height scale
|
||||
|
||||
% use whole width or height, whichever is appropriate
|
||||
urx llx sub width div ury lly sub height div
|
||||
2 copy gt { exch } if pop % min
|
||||
dup scale
|
||||
ColorSpaceNames colors scratch cvs get setcolorspace
|
||||
|
||||
% prepare image dictionary
|
||||
<< /ImageType 1
|
||||
/Width width
|
||||
/Height height
|
||||
/ImageMatrix [ width 0 0 height neg 0 height ]
|
||||
/BitsPerComponent 8
|
||||
% If 4-component (CMYK), assume data is inverted per Adobe Photoshop
|
||||
colors 4 eq {
|
||||
/Decode [ colors { 1 0 } repeat ]
|
||||
} {
|
||||
/Decode [ colors { 0 1 } repeat ]
|
||||
} ifelse
|
||||
/DataSource F /DCTDecode filter
|
||||
>> image
|
||||
|
||||
end % image parameter dictionary
|
||||
|
||||
saved end restore
|
||||
} bind def
|
||||
|
||||
% This lets you do stuff on the command line like:
|
||||
% gs -sDEVICE=pdfwrite -o stuff%03d.pdf viewjpeg.ps -c "(image.jpg) << /PageSize 2 index viewJPEGgetsize 2 array astore /HWResolution [ 72 72 ] >> setpagedevice viewJPEG"
|
||||
% so the output size matches the original image.
|
||||
/viewJPEGgetsize { % <file|string> ==> width height
|
||||
save
|
||||
JPEGdict begin
|
||||
/saved exch def
|
||||
/scratch 1 string def
|
||||
dup type /stringtype eq { (r) file } if
|
||||
/F exch def
|
||||
readJPEGmarkers begin
|
||||
F 0 setfileposition % reset file pointer
|
||||
width height
|
||||
saved end restore
|
||||
} bind def
|
||||
Reference in New Issue
Block a user