⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psdrv.pcd

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 PCD
字号:
:CMT. This driver definition is used for a PostScript printer.

:CMT. Definition file                 Driver name
:CMT. ------------------------------------------------------
:CMT. PSDRV                           psdrv

:CMT. Corresponding device
:CMT. definition file                 Device name
:CMT. ------------------------------------------------------
:CMT. PS                              ps
:CMT.eoc

:DRIVER
   defined_name = 'psdrv'
   member_name  = 'PSDRV'
   rec_spec     = '(t:79)'
   fill_char    = ' '

:INIT
   place=start
   :value.
      %image('%!PS-Adobe-2.0')%recordbreak()
      %image('%%Creator:  WATCOM GML ')
      %image(%wgml_header())%recordbreak()
      %image('%%Title: WATCOM GML')%recordbreak()
      %image('%%CreationDate: ')
      %image(%time())
      %image(' ')
      %image(%date())%recordbreak()
      %image('%%Pages: (atend)')%recordbreak()
      %image('%%BoundingBox: 0 0 ')
      %image(%decimal(%page_width()))
      %image(' ')
      %image(%decimal(%page_depth()))%recordbreak()
      %image('%%EndComments')%recordbreak()
      %image('/Courier findfont')%recordbreak()
      %image('  dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall')%recordbreak()
      %image('  CharStrings dup length dict begin {def} forall currentdict end')%recordbreak()
      %image('  /CharStrings exch def')%recordbreak()
      %image('  CharStrings /underscore')%recordbreak()
      %image('  {pop')%recordbreak()
      %image('     currentdict /FontInfo get /UnderlineThickness get .50 mul setlinewidth')%recordbreak()
      %image('     currentdict /FontBBox get 2 get pop 600 dup')%recordbreak()
      %image('     0 setcharwidth')%recordbreak()
      %image('     newpath 0 0 moveto')%recordbreak()
      %image('     dup .15 mul 0 rmoveto .75 mul 0 rlineto stroke')%recordbreak()
      %image('  }bind put')%recordbreak()
      %image('currentdict end')%recordbreak()
      %image('/Courier exch definefont pop')%recordbreak()
      %image('/@uline {')%recordbreak()
      %image('   currentpoint exch /@underx exch def')%recordbreak()
      %image('   currentfont /FontInfo get dup')%recordbreak()
      %image('   /UnderlineThickness get 0')%recordbreak()
      %image('   currentfont /FontMatrix get transform pop')
      %recordbreak()
      %image('   /@underthick exch def')%recordbreak()
      %image('   /UnderlinePosition get 0')%recordbreak()
      %image('   currentfont /FontMatrix get transform pop')
      %recordbreak()
      %image('   add @underthick sub')%recordbreak()
      %image('   /@undery exch def } def')%recordbreak()
      %image('/@euline {')%recordbreak()
      %image('   currentpoint exch dup')%recordbreak()
      %image('   @underx @undery moveto')%recordbreak()
      %image('   @underx sub 0 rlineto')%recordbreak()
      %image('   @underthick setlinewidth stroke')%recordbreak()
      %image('   exch moveto } def')%recordbreak()
      %image('/graphhead {')%recordbreak()
      %image('   /@scale exch def')%recordbreak()
      %image('   /@yoff exch def')%recordbreak()
      %image('   /@xoff exch def')%recordbreak()
      %image('   /@depth exch def')%recordbreak()
      %image('   /@width exch def')%recordbreak()
      %image('   /@y exch def')%recordbreak()
      %image('   /@x exch def')%recordbreak()
      %image('   1 setlinewidth /@clw currentlinewidth def')%recordbreak()
      %image('   @x @clw 2 div sub @y @clw 2 div add moveto')%recordbreak()
      %image('   0 @depth neg @clw sub rlineto')%recordbreak()
      %image('   @width @clw add 0 rlineto')%recordbreak()
      %image('   0 @depth @clw add rlineto')%recordbreak()
      %image('   closepath clip newpath')%recordbreak()
      %image('   @x @xoff sub dup @y @yoff add @depth add moveto')%recordbreak()
      %image('   @y @yoff add translate')%recordbreak()
      %image('   10 @scale mul 72 div dup scale')%recordbreak()
%image(' /restore {systemdict /restore get exec} bind def } def')%recordbreak()
      %image('/plfdef {')%recordbreak()
      %image('   /@fgmlname exch def')%recordbreak()
      %image('   /@fdefname exch def')%recordbreak()
      %image('   /@fptsiz exch def')%recordbreak()
      %image('   /@fname exch def')%recordbreak()
      %image('   /@bf @fname')
      %image(' findfont @fptsiz 1000 mul 72 div')
      %image(' scalefont def')%recordbreak()
      %image('   /@nf @bf maxlength dict def')%recordbreak()
      %image('   @bf { exch dup /FID ne { exch @nf 3 1 roll put }')
      %image(' { pop pop }')%recordbreak()
      %image('   ifelse} forall ')%recordbreak()
      %image('   @nf /FontName @fdefname')
      %image(' put')%recordbreak()
      %image('   @fdefname')
      %image(' @nf definefont pop')%recordbreak()
      %image('   @fgmlname @fdefname /findfont cvx /setfont cvx ')
      %image('3 array astore cvx def')
      %image(' } def')%recordbreak()
      %image('/sd { exch currentpoint exch pop moveto shwd } def')
      %recordbreak()
      %image('/shwd {show} def')%recordbreak()
      %image('/am {moveto} def')%recordbreak()
   :evalue.
   :fontvalue.
      %image('/')%image(%font_outname1())%image(' ')
      %image(%decimal(%div(%font_height(),100)))%image('.')
      %image(%decimal(%remainder(%font_height(),100)))%image(' ')
      %image('/@ft')%image(%decimal(%font_number()))%image(' ')
      %image('/@fs')%image(%decimal(%font_number()))
      %image(' plfdef')%recordbreak()
   :efontvalue.
:eINIT.

:INIT
   place=document
   :value.
      %image('/draft{save exch dup () eq {pop (DRAFT)}if')
      %image(' /drt exch def')%recordbreak()
      %image('   /rm ')
      %image(%decimal(%getnumsymbol('$pagerm')))
      %image(' dup 0 le {pop 7000}if def')%recordbreak()
      %image('   /pd ')
      %image(%decimal(%getnumsymbol('$paged')))
      %image(' dup 0 le {pop 9660}if def')%recordbreak()
      %image('   .95 setgray /Helvetica-Bold findfont')%recordbreak()
      %image('   rm rm mul pd pd mul add sqrt')%recordbreak()
      %image('   .75 mul drt length 2 add div')%recordbreak()
      %image('   scalefont setfont')%recordbreak()
      %image('   ')
      %image(%decimal(%page_depth()))
      %image(' newpath 0 0 moveto (X) true')
      %image(' charpath flattenpath pathbbox')%recordbreak()
      %image('   3 -1 roll sub 3 1 roll exch sub rm add')
      %image(' 2 div 3 1 roll pd add')%recordbreak()
      %image('   2 div sub moveto 45 rotate drt')
      %image(' stringwidth pop dup 1.25 mul')%recordbreak()
      %image('   2 div neg 0 rmoveto .25 mul drt length')
      %image(' div 0 drt ashow')%recordbreak()
      %image('   restore}bind def')%recordbreak()
      %image('%%EndProlog')%recordbreak()
      %image('%%Page: #1 1')%recordbreak()
      %image('.072 .072 scale' )%recordbreak()
      %image('2 setlinecap')%recordbreak()
      %ifeqs(%lower(%getstrsymbol('$draft')),'yes')
          %image('(')
          %image(%getstrsymbol('$drtext'))%image(') draft')%recordbreak()
      %endif()
   :evalue
:eINIT.

:CMT. The following sequence forces out the last page.  The recordbreak
:CMT. ensures that these last control characters are sent to the
:CMT. output device.
:FINISH
   place=end
   :value.
      %recordbreak()
      %image('showpage')%recordbreak()
      %image('%%Trailer')%recordbreak()
      %image('%%Pages: ')%image(%decimal(%pages()))%recordbreak()
   :evalue.
:eFINISH.

:NEWLINE
   advance=0
   :value.
      %image( '' )
   :evalue.
:eNEWLINE.

:CMT.Starting a new line is handled by the absolute addressing feature
:CMT.of PostScript. The following command sequence will cause
:CMT.no additional action to be taken when a new line is to be started.
:NEWLINE
   advance=1
   :value.
      %recordbreak()
   :evalue.
:eNEWLINE.

:NEWPAGE
   :value.
      %recordbreak()
      %image('showpage')%recordbreak()
      %image('%%Page: #')%image(%decimal(%add(%pages(),1)))
      %image(' ')%image(%decimal(%add(%pages(),1)))
      %recordbreak()
      %image('.072 .072 scale' )%recordbreak()
      %image('2 setlinecap')%recordbreak()
      %ifeqs(%lower(%getstrsymbol('$draft')),'yes')
          %image('(')
          %image(%getstrsymbol('$drtext'))%image(') draft ')
      %endif()
      %image('@fs')%image(%decimal(%font_number()))%recordbreak()
   :evalue.
:eNEWPAGE.

:FONTSTYLE
   type='uline'
   :lineproc
      pass=1
      :startvalue.
         %textpass()
      :estartvalue.
      :firstword.
         %dotab()
         %image('@uline')
         %recordbreak()
      :efirstword.
      :endvalue.
         %dotab()
         %image('@euline')
         %recordbreak()
      :eendvalue.
   :elineproc.
:eFONTSTYLE.

:FONTSTYLE
   type='uscore'
   :lineproc
      pass=1
      :startvalue.
         %textpass()
      :estartvalue.
      :startword.
         %dotab()
         %image('@uline')
         %recordbreak()
      :estartword.
      :endword.
         %dotab()
         %image('@euline')
         %recordbreak()
      :eendword.
   :elineproc.
:eFONTSTYLE.

:FONTSTYLE
   type='bold'
   :lineproc
      pass=1
      :startvalue.
         %textpass()
      :estartvalue.
   :elineproc.
   :lineproc
      pass=2
      :startvalue.
         %textpass()
      :estartvalue.
   :elineproc.
:eFONTSTYLE.

:FONTSTYLE
   type='ulbold'
   :lineproc
      pass=1
      :startvalue.
         %textpass()
      :estartvalue.
      :firstword.
         %dotab()
         %image('@uline')
         %recordbreak()
      :efirstword.
      :endvalue.
         %dotab()
         %image('@euline')
         %recordbreak()
      :eendvalue.
   :elineproc.
   :lineproc
      pass=2
      :startvalue.
         %textpass()
      :estartvalue.
   :elineproc.
:eFONTSTYLE.

:FONTSTYLE
   type='usbold'
   :lineproc
      pass=1
      :startvalue.
         %textpass()
      :estartvalue.
      :startword.
         %dotab()
         %image('@uline')
         %recordbreak()
      :estartword.
      :endword.
         %dotab()
         %image('@euline')
         %recordbreak()
      :eendword.
   :elineproc.
   :lineproc
      pass=2
      :startvalue.
         %textpass()
      :estartvalue.
   :elineproc.
:eFONTSTYLE.

:FONTSTYLE
   type='shade'
   :lineproc
      pass=1
      :startvalue.
         %recordbreak()
         %dotab()%image(' shade')
         %recordbreak()
      :estartvalue.
   :elineproc.
:eFONTSTYLE.

:CMT. This control character sequence is sent to the printer when
:CMT. WGML wants to start printing with a different font.  The
:CMT. font_number is the font ID assigned to the new font at
:CMT. initialization time.
:FONTSWITCH
   type='PS font switch'
   :startvalue.
      %recordbreak()%image('@fs')%image(%decimal(%font_number()))%image(' ')
   :estartvalue.
:eFONTSWITCH.

:FONTSWITCH
   type='Shade font switch'
   :startvalue.
      %recordbreak()
   :estartvalue.
:eFONTSWITCH.

:CMT. The (0,0) position for the PostScript printer is at the
:CMT. bottom left corner of the page.
:PAGEADDRESS
   x_positive = yes
   y_positive = no
:ePAGEADDRESS.

:CMT. The following sequence specifies the
:CMT. absolute amount in the X direction with the current Y value.
:HTAB.
   :value.
      %image(%decimal(%x_address()))
      %image( ' ' )
   :evalue.
:eHTAB.

:CMT. The following sequence specifies the mechanism to move to a
:CMT. specific position on the page.  Horizontal and vertical space
:CMT. units are each 1/1000 inch wide.
:ABSOLUTEADDRESS
   :value.
      %image(%decimal(%x_address()))%image(' ')
      %image(%decimal(%y_address()))%image(' am ')
   :evalue.
:eABSOLUTEADDRESS.

:CMT. Specify the mechanism to print a horizontal line.  Assumes that
:CMT. the starting point is the current position.  Horizontal movement
:CMT. is based on 1/1000 inch increments.
:HLINE
   thickness=10
   :value.
      %recordbreak()
      %text(%decimal(%divide(%thickness(),2)))
      %text(' ')
      %text(%decimal(%divide(%thickness(),2)))
      %text(' rmoveto ')
      %recordbreak()
      %text(%decimal(%subtract(%x_size(),%thickness())))%text(' 0 rlineto ')
      %text(%decimal(%thickness()))
      %text(' setlinewidth currentpoint stroke moveto')
      %recordbreak()
      %text('-')
      %text(%decimal(%divide(%thickness(),2)))
      %text(' -')
      %text(%decimal(%divide(%thickness(),2)))
      %text(' rmoveto ')
      %recordbreak()
   :evalue.
:eHLINE.

:CMT. Specify the mechanism to print a vertical line.
:VLINE
   thickness=10
   :value.
      %recordbreak()
      %text(%decimal(%divide(%thickness(),2)))
      %text(' ')
      %text(%decimal(%divide(%thickness(),2)))
      %text(' rmoveto')%recordbreak()
      %text('0 ')%text(%decimal(%subtract(%y_size(),%thickness())))
      %text(' rlineto ')
      %text(%decimal(%thickness()))
      %text(' setlinewidth currentpoint stroke moveto')
      %recordbreak()
      %text(' -')
      %text(%decimal(%divide(%thickness(),2)))
      %text(' -')
      %text(%decimal(%subtract(%y_size(),%divide(%thickness(),2))))
      %text(' rmoveto')
      %recordbreak()
   :evalue.
:eVLINE.

:CMT. Specify the mechanism to print a box.  Assumes that the
:CMT. starting point is the current position.  Horizontal movement
:CMT. is based on 1/1000 inch increments.
:DBOX
   thickness=10
   :value.
      %recordbreak()
      %text(%decimal(%divide(%thickness(),2)))
      %text(' ')
      %text(%decimal(%divide(%thickness(),2)))
      %text(' rmoveto')%recordbreak()
      %text('0 ')%text(%decimal(%subtract(%y_size(),%thickness())))
      %text(' rlineto ')%recordbreak()
      %text(%decimal(%subtract(%x_size(),%thickness())))
      %text(' 0 rlineto ')%recordbreak()
      %text('0 -')%text(%decimal(%subtract(%y_size(),%thickness())))
      %text(' rlineto ')%recordbreak()
      %text('-')%text(%decimal(%subtract(%x_size(),%thickness())))
      %text(' 0 rlineto ')%recordbreak()
      %text('closepath ')
      %text(%decimal(%thickness()))
      %text(' setlinewidth currentpoint stroke moveto')
      %recordbreak()
      %text(%decimal(%subtract(%x_size(),%divide(%thickness(),2))))
      %text(' -')%text(%decimal(%divide(%thickness(),2)))
      %text(' rmoveto')
      %recordbreak()
   :evalue.
:eDBOX.

:eDRIVER.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -