%PDF- %PDF-
Direktori : /www/varak.cloud/img.varak.cloud/img/foto-old/KOKOS04/Další/gs/gs6.50/lib/ |
Current File : /www/varak.cloud/img.varak.cloud/img/foto-old/KOKOS04/Další/gs/gs6.50/lib/gs_dscp.ps |
% Copyright (C) 2000 Artifex Software Inc. All rights reserved. % % This file is part of AFPL Ghostscript. % % AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author or % distributor accepts any responsibility for the consequences of using it, or % for whether it serves any particular purpose or works at all, unless he or % she says so in writing. Refer to the Aladdin Free Public License (the % "License") for full details. % % Every copy of AFPL Ghostscript must include a copy of the License, normally % in a plain ASCII text file named PUBLIC. The License grants you the right % to copy, modify and redistribute AFPL Ghostscript, but only under certain % conditions described in the License. Among other things, the License % requires that the copyright notice and this notice be preserved on all % copies. % $Id: gs_dscp.ps,v 1.2.2.1 2000/11/09 23:47:04 rayjj Exp $ % Postscript interface routines to DSC parser /send_orientation { % <orientation> send_orienation - << /Orientation 2 index >> setpagedevice pop } bind def % This dictionary contains local handlers for DSC comments. See header in zdscpars.c % <dsc_dict> handler <dsc_dict> /DSCparseprocs mark /Orientation { dup /Orientation get send_orientation } bind /PageOrientation { dup /PageOrientation .knownget { send_orientation } { dup /Orientation .knownget { send_orientation } if } ifelse } bind /Page { dup /Orientation .knownget { send_orientation } if } bind /NOP { } bind .dicttomark readonly def % This procedure is called whenever a DSC comment is found by the interpreter /do_parse_dsc false def /parse_dsc { % <file> <DSC string> [<prev proc>] % parse_dsc - % Run any previously installed parser. 0 get dup null eq { pop } { 3 copy exec pop } ifelse % Check whether this parser is disabled. do_parse_dsc { dsc_dict exch % <file> <dict> <string> .parse_dsc_comments % <file> <dict> <name> //DSCparseprocs exch .knownget { exec % execute any local handler } if } if pop pop % remove file, dict } bind def % Check whether the currently installed parser is the one defined in this file. /.using_parse_dsc { % - .using_parse_dsc <proc> <using?> currentuserparams /ProcessDSCComment get dup null eq { pop {{//null} //parse_dsc exec} } if dup length 3 eq { dup dup length 1 sub get /parse_dsc load eq } { false } ifelse } bind def % Establish a binding for dsc_dict. userdict /dsc_dict null put % - dsc_init - /dsc_init { % Initialize DSC parser currentglobal true setglobal /dsc_dict 50 dict store % Size must be large enough for all DSC values dsc_dict .initialize_dsc_parser .using_parse_dsc { % Already using this parser. pop } { % Encapsulate the previous parser. We know it is in global VM: % allocate the new one in global VM as well. 1 array astore /parse_dsc load /exec load 3 array astore cvx readonly << /ProcessDSCComment 3 -1 roll >> setuserparams } ifelse /do_parse_dsc true store setglobal } bind def % Enable the DSC parser defined in this file. % - enable_dsc - /enable_dsc { dsc_init } bind def % Disable the DSC parser defined in this file. % - disable_dsc - /disable_dsc { % There might be another parser installed: if so, restore it. % (If it has encapsulated our parser, we can't.) .using_parse_dsc { % Restore the parser we encapsulated. 0 get 0 get currentglobal true setglobal exch << /ProcessDSCComment 3 -1 roll >> exch setglobal setuserparams } { pop } ifelse % If we couldn't restore the old parser, at least disable ours. /do_parse_dsc false store } bind def