henesyinit from p9fce6d0435 years agoHistory
219 lines · 6.2 KB · Text
RawDownload
%    Copyright (C) 1990, 1991, 1993, 1994 Aladdin Enterprises.  All rights reserved.% % This file is part of Aladdin Ghostscript.% % Aladdin 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 Ghostscript Free Public% License (the "License") for full details.% % Every copy of Aladdin 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 Aladdin 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. % Initialization file for analogs of Display PostScript functions% that are also included in Level 2.% When this is run, systemdict is still writable,% but (almost) everything defined here goes into level2dict. level2dict begin % ------ Virtual memory ------ % /currentshared /.currentglobal load def/scheck /.gcheck load def%****** FOLLOWING IS WRONG ******/shareddict currentdict /globaldict .knownget not { 20 dict } if def % Global and LocalFontDirectory must remain in systemdict% even if we temporarily exit Level 2 mode. end				% level2dictsystemdict begin /SharedFontDirectory FontDirectory .gcheck { .currentglobal false .setglobal   /LocalFontDirectory FontDirectory dup maxlength dict copy def   .setglobal FontDirectory } { /LocalFontDirectory FontDirectory def   50 dict }ifelse def end				% systemdictlevel2dict begin % setshared must rebind FontDirectory to the appropriate one of% Local or SharedFontDirectory. /.setglobal { .setglobal   //systemdict /FontDirectory .currentglobal    { //SharedFontDirectory }    { //systemdict /LocalFontDirectory get }	% can't embed ref to local VM   ifelse .forceput } .bind odef		% must bind .forceput and .setglobal			% even if NOBIND in effect/setshared /.setglobal load def.currentglobal setshared % ------ Fonts ------ % /selectfont { exch findfont exch   dup type /arraytype eq { makefont } { scalefont } ifelse   setfont } odef% Undefinefont has to take local/global VM into account./undefinefont { FontDirectory 1 index undef   .currentglobal    {		% Current mode is global; delete from local directory too.      systemdict /LocalFontDirectory .knownget       { exch undef }       { pop }      ifelse    }    {		% Current mode is local; if there was a shadowed global		% definition, copy it into the local directory.      systemdict /SharedFontDirectory .knownget       { 1 index .knownget	  { FontDirectory 3 1 roll put }	  { pop }	 ifelse       }      if    }   ifelse } odef % If we load a font into global VM within an inner save, the restore% will delete it from FontDirectory but not from SharedFontDirectory.% We have to handle this by making restore copy missing entries from% SharedFontDirectory to FontDirectory.  Since this could slow down restore% considerably, we define a new operator .dictcopynew for this purpose./restore { restore   //SharedFontDirectory //systemdict /LocalFontDirectory get .dictcopynew pop } bind odef % ------ Halftones ------ % /.makestackdict	{ { counttomark -1 roll } forall .dicttomark	} bind def/currenthalftone	{ mark .currenthalftone	   { { exch pop }		% halftone	     { /HalftoneType 1		% screen		{ /Frequency /Angle /SpotFunction }	       .makestackdict	     }	     { /HalftoneType 2		% colorscreen		{ /RedFrequency /RedAngle /RedSpotFunction		  /GreenFrequency /GreenAngle /GreenSpotFunction		  /BlueFrequency /BlueAngle /BlueSpotFunction		  /GrayFrequency /GrayAngle /GraySpotFunction		}	       .makestackdict	     }	   }	  exch get exec	} odef% Define sethalftone so it converts all other types to type 5./.sethalftoneRGBV	% <dict> <type> <keys> <keysRGBV>	{ 4 -1 roll exch { 1 index exch get exch } forall 15 1 roll	  14 -2 roll mark 15 1 roll { /Gray /Blue /Green /Red }	   {		% stack: v0 v1 v2 type keys comp	     mark	     2 index 0 get 8 -1 roll	     4 index 1 get 9 -1 roll	     6 index 2 get 10 -1 roll			% stack: type keys comp mark k0 v0 k1 v1 k2 v2	     /HalftoneType 10 index .dicttomark	     counttomark 2 roll	   }	  forall pop pop	  /Default 1 index .dicttomark .sethalftone5	} bind def/sethalftone	{ dup /HalftoneType get 1 sub	   {  { mark /Default 2 index .dicttomark .sethalftone5 }	      { 1 { /Frequency /Angle /SpotFunction }		{ /RedFrequency /RedAngle /RedSpotFunction		  /GreenFrequency /GreenAngle /GreenSpotFunction		  /BlueFrequency /BlueAngle /BlueSpotFunction		  /GrayFrequency /GrayAngle /GraySpotFunction		} .sethalftoneRGBV	      }	      { mark /Default 2 index .dicttomark .sethalftone5 }	      { 3 { /Width /Height /Thresholds }		{ /RedWidth /RedHeight /RedThresholds		  /GreenWidth /GreenHeight /GreenThresholds		  /BlueWidth /BlueHeight /BlueThresholds		  /GrayWidth /GrayHeight /GrayThresholds		} .sethalftoneRGBV	      }	      { dup .sethalftone5 }	   } exch get exec	} odef% Redefine setscreen to recognize halftone dictionaries./setscreen	{ dup type /dicttype eq	   { sethalftone pop pop }	   { //setscreen }	  ifelse	} odef % ------ User objects ------ % /.localarray where { pop } { /.localarray	{ currentglobal false setglobal	  exch array exch setglobal	} bind def }ifelse/defineuserobject	{ userdict /UserObjects known	   { 1 index userdict /UserObjects get length ge	      { 1 index 1 add .localarray userdict /UserObjects get		1 index copy pop		userdict /UserObjects 3 -1 roll put	      }	     if	   }	   { userdict /UserObjects 3 index 1 add .localarray put	   }	  ifelse	  userdict /UserObjects get 3 1 roll put	} odef/execuserobject	{ userdict /UserObjects get exch get exec	} odef/undefineuserobject	{ userdict /UserObjects get exch null put	} odef % ------ User paths ------ % /upath	{ [ exch {/ucache cvx} if pathbbox /setbbox cvx	  {/moveto cvx} {/lineto cvx} {/curveto cvx} {/closepath cvx}	  pathforall ] cvx	} odef % Dummy definitions for cache control operators /ucachestatus	{ mark 0 0 0 0 0 } odef/setucacheparams	{ cleartomark } odef end				% level2dict

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t