View file File name : dmp_init.ps Content :%! % Copyright (C) 1989, 1992, 1993 Aladdin Enterprises. All rights reserved. % % This file is part of Ghostscript. % % Ghostscript is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY. No author or distributor accepts responsibility % to anyone for the consequences of using it or for whether it serves any % particular purpose or works at all, unless he says so in writing. Refer % to the Ghostscript General Public License for full details. % % Everyone is granted permission to copy, modify and redistribute % Ghostscript, but only under the conditions described in the Ghostscript % General Public License. A copy of this license is supposed to have been % given to you along with Ghostscript so you can know your rights and % responsibilities. It should be in a file named COPYING. Among other % things, the copyright notice and this notice must be preserved on all % copies. % dmp_init.ps % Initialization file for `dmprt' device driver. % % Written initial version by... ASAYAMA Kazunori 1993 Nov. % Modified for Ghostscript 4.03 by ... ASAYAMA Kazunori 1997 May. %%%%% check version %%%%% 201 % version of this initialization file. /dmprt finddevice { /DmprtParams gsgetdeviceprop /Version get } stopped { pop pop 0 } if 2 copy ne { (\ndmprt: driver version\() print dup 0 eq {pop (unknown) print }{==only}ifelse (\) does not match dmp_init.ps version\() print ==only (\).\n) print flush 1 .quit } { pop pop } ifelse %%%%% BODY %%%%% 40 dict begin % .WorkDict .UserParams % .DmprtDevice % .GetDmprtParam .SetDmprtParam % .DmprtParams .Xdpi .Ydpi .Xdot .Ydot % % in cm mm pt bp dot % BeginMode EndMode % .ModeDataBase .CurrentMode % BeginConfig EndConfig % BeginPrinterProps EndPrinterProps /.WorkDict currentdict def /.ModeDataBase 10 dict def /.dicttomark { counttomark 2 idiv dup dict begin { def } repeat pop currentdict end } bind def %%%%% utilities for user customization. %%%%% /in { } bind def /cm { 2.54 div } bind def /mm { 25.4 div } bind def /pt { 72.27 div } bind def /bp { 72.0 div } bind def /dot { [ exch truncate cvi ] } bind def % the database of user customizations. (not implemented yet.) /BeginMode { % <name> -> <name> mark mark } bind def /EndMode { % <name> mark <item1> <value1> ... <itemN> <valueN> -> -- .dicttomark .ModeDataBase dup dup maxlength exch length eq { % Expand capacity of database dictionaly. dup maxlength 10 add dict copy dup /.ModeDataBase exch def } if 3 1 roll put } bind def % these procedures are undocumented in the user's manual. % these are used in order to specify the propaties directly. /BeginPrinterProps { [ } bind def /EndPrinterProps { ] /printer exch } bind def %%%%% run the user customization file. %%%%% /BeginConfig mark def /EndConfig { .dicttomark /.UserParams exch def } bind def systemdict /DMPCONFIG 2 copy known { get run } % -sDMPCONFIG=<filename> { pop pop (dmp_site.ps) findlibfile { closefile run } if } ifelse %%%%% refer database %%%%% /.UsedMode .ModeDataBase length dict def /.ExpandUserParams { % <dict> -> <param1> <value1> ... <paramN> <valueN> /.InheritMode null def { 1 index /inherit eq { exch pop dup .UsedMode exch known { % check recursive reference. /.ExpandUserParams /rangecheck signalerror } if /.InheritMode exch def } if } forall .InheritMode type /nametype eq { .UsedMode .InheritMode true put .ModeDataBase .InheritMode get .ExpandUserParams } if } bind def systemdict /DMPMODE 2 copy known {get .ModeDataBase exch get} {pop pop .UserParams} ifelse mark exch .ExpandUserParams .dicttomark /.UserParams exch def %%%%% Local variables and procedures. %%%%% /.DmprtDevice /dmprt finddevice def /.SetDmprtParam { % <key> <value> -> -- .DmprtParams 3 1 roll put } bind def /.SetLocalParam { .LocalParams 3 1 roll put } bind def /.GetDmprtParam { % <key> -> <value> .DmprtParams exch get } bind def /.GetUserParam { % <key> <default-value> -> <value> .UserParams 3 -1 roll 2 copy known {get exch pop}{pop pop} ifelse } bind def /.SetUserParam { % <prop-name> <key> <default-value> -> -- .GetUserParam .SetDmprtParam } bind def %%%%% dviprt proparties %%%%% mark .UserParams /printer 2 copy known { get dup type /dicttype ne { mark /FileName 3 -1 roll .dicttomark } if } { pop pop % Default printer is `ESC/P 24 pins'. mark /Name (ESC/P 24 pins) /Transpose true /Reverse false /NonMoving false /Encoding (Null) /HDpi 180 /VDpi 180 /Pins 24 /MinimalUnit 1 /MaximalUnit 180 /Constant 1 /BitImageMode (\007\0333\030\033?Z\047) /NormalMode (\004\015\014\0332) /SendBitImage (\002\033Z\002\001\200) /SkipSpaces (\002\033\\\002\001\200) /LineFeed (\002\015\012) /FormFeed (\002\015\014) /AfterBitImage () /BitRowHeader () .dicttomark } ifelse /DviprtParams exch .DmprtDevice putdeviceprops getdeviceprops .dicttomark /.DmprtParams exch def .DmprtParams /DviprtParams get /.DviprtParams exch def .DmprtParams /DmprtParams get /.LocalParams exch def % calcurate resolutions and define operators converting % from user-coordination to device-coordination(count by dots). /resolution [ .DviprtParams dup /HDpi get exch /VDpi get ] .GetUserParam {} forall /.Ydpi exch def /.Xdpi exch def /.Xdot { dup type /arraytype eq { 0 get } { .Xdpi mul truncate cvi } ifelse } bind def /.Ydot { dup type /arraytype eq { 0 get } { .Ydpi mul truncate cvi } ifelse } bind def %%%%% Standard Ghostscript device propaties. %%%%% /HWSize % default is A4. /defaultsize [8.3 11.7] .GetUserParam [ exch dup 0 get .Xdot exch 1 get .Ydot ] .SetDmprtParam %%%%% dmprt device propaties. %%%%% /MaxSize /maxsize [0.0 0.0] .GetUserParam [ exch dup 0 get .Xdot exch 1 get .Ydot ] .SetLocalParam /Margins /margin [0.0 0.0 0.0 0.0] .GetUserParam [ exch dup 0 get .Xdot exch dup 1 get .Ydot exch dup 2 get .Xdot exch 3 get .Ydot ] .SetLocalParam /Verbose QUIET {false} {/verbose false .GetUserParam} ifelse .SetLocalParam /Debug /debug false .GetUserParam .SetLocalParam %%%%% Page device propaties. %%%%% %%%%% See PostScript Reference Manual 2nd edition. %%%%% /HWResolution [ .Xdpi .Ydpi ] .SetDmprtParam /Offsets /offset [0.0 0.0] .GetUserParam [ exch dup 0 get .Xdot exch 1 get .Ydot ] .SetLocalParam %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% mark .DmprtParams {} forall .DmprtDevice putdeviceprops pop end %%%%%%%%%%%%%%%%%%%%%%%%%%%% End of file %%%%%%%%%%%%%%%%%%%%%%%%%%%