home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / utilsu / vert / vr3a / vprint.opl < prev    next >
Text File  |  1994-01-31  |  3KB  |  182 lines

  1. PROC vPRINT:(sp%)
  2. LOCAL p%,y%,last%,c%,n%,c$(1),ix%,iy%,lin%(1),pos%,wid%,sav%
  3. ONERR abort
  4. last%=$20
  5. y%=gHeight
  6. p%=0
  7. PokeB ADDR(c$),1
  8. n%=0:WHILE n%<PEEKB(sp%)
  9.     n%=n%+1
  10.     c%=PEEKB(sp%+n%)
  11.     IF last%=$20 OR last%=%-
  12.         IF vMODE%>=3
  13.             IF last%=c% AND last%=$20
  14.                 CONTINUE
  15.             ENDIF
  16.             y%=gY
  17.             p%=n%
  18.         ENDIF
  19.     ENDIF
  20.     if c%<$20
  21.         pos%=1
  22.         wid%=0
  23.     else
  24.         POKEB ADDR(c$)+1,c%
  25.         wid%=gTWIDTH(c$)
  26.         last%=c%
  27.         pos%=PEEKB(ADDR(vMAP&())+c%)
  28.     endif
  29.     IF pos%=0
  30.         vN%=MIN(vN%+1,100)
  31.         POKEB ADDR(vMAP&())+c%,vN%
  32.         pos%=vN%
  33.         sav%=gIDENTITY
  34.         gUSE vTMP%
  35.         gAT 0,vINFO%(1)-vINFO%(2)
  36.         gPRINTB c$,vINFO%(3),2
  37.         gUSE vBIT%
  38.         iy%=0:DO
  39.             lin%(1)=0
  40.             gPEEKLINE vTMP%,0,iy%,lin%(),wid%
  41.             lin%(1)=lin%(1) AND $7fff
  42.             ix%=0:DO
  43.                 IF (lin%(1) AND 1) =1
  44.                     gAT iy%,((pos%-1)*vINFO%(3)+wid%-ix%-1)
  45.                     gLINEBY 0,0
  46.                 ENDIF
  47.                 lin%(1)=lin%(1)/2
  48.                 ix%=ix%+1
  49.             UNTIL ix%=wid% OR lin%(1)=0
  50.             iy%=iy%+1
  51.         UNTIL iy%=vINFO%(1)
  52.         gUSE sav%
  53.     ENDIF
  54.     IF gY<wid%
  55.         IF vMODE% =1
  56.             n%=PEEKB(sp%)
  57.             CONTINUE
  58.         ELSEIF vMODE%>=3 AND y%<>gHEIGHT
  59.             gSCROLL vINFO%(1)+1,gHEIGHT-y%,gX,gY,vINFO%(1),y%-gY
  60.             gAT gX+vINFO%(1)+1,gHEIGHT-(y%-gY)
  61.             IF gX>gWIDTH-vINFO%(1)
  62.                 gFILL vINFO%(1),gHEIGHT-gY,1
  63.                 n%=p%-1
  64.                 vPAGE:(1)
  65.                 CONTINUE
  66.             ENDIF
  67.         ELSE
  68.             gAT gX+vINFO%(1)+1,gHEIGHT
  69.         ENDIF
  70.         y%=gHeight
  71.         IF gX>gWIDTH-vINFO%(1)
  72.             vPAGE:(1)
  73.         ENDIF
  74.     ENDIF
  75.     gMOVE 0,-wid%
  76.     gCOPY vBIT%,0,vINFO%(3)*(pos%-1),vINFO%(1),wid%,3
  77. ENDWH
  78. IF vMODE% <>4
  79.     gAT gX+vINFO%(1),gHEIGHT
  80.     IF gX>gWIDTH-vINFO%(1)
  81.         vPAGE:(1)
  82.     ENDIF
  83. ELSEIF n%=0
  84.     gAT gX+(1+vINFO%(1)),gHEIGHT-gTWIDTH("  ") 
  85.     IF gX>gWIDTH-vINFO%(1)
  86.         vPAGE:(1)
  87.     ENDIF
  88. ELSEif last%<>%-
  89.     gMOVE 0,-gTWIDTH(" ")
  90. ENDIF
  91. abort::
  92. ENDP
  93.  
  94. PROC vPAGE:(sw%)
  95. LOCAL k%,a$(5)
  96. ONERR abort
  97. k%=sw%
  98. IF sw%=1 and gRANK=1
  99.     gUSE vWID%(2)
  100.     k%=0
  101. ELSEIF sw%<>0
  102.     DO
  103.         k%=2
  104.         k%=@%(vHDLR$):
  105.     UNTIL k%<>0
  106. ENDIF
  107. abort::
  108. IF k%=0
  109.     gCLS
  110.     gAT 0,gHEIGHT
  111. ELSEIF k%=1
  112.     vSWITCH:
  113.     gUSE vWID%(2)
  114.     gCLS
  115.     gAT 0,gHEIGHT
  116. ELSEIF k%=2
  117.     gUSE vWID%(1)
  118.     gCLS
  119.     gAT 0,gHEIGHT
  120.     ONERR OFF
  121.     RAISE -114
  122. ENDIF
  123. ENDP
  124.  
  125. PROC vSWITCH:
  126. LOCAL tmp%
  127.     tmp%=vWID%(1)
  128.     vWID%(1)=vWID%(2)
  129.     vWID%(2)=tmp%
  130.     gORDER vWID%(1),1
  131. ENDP
  132.  
  133. PROC vFONT:(fid%,style%)
  134. LOCAL i%(32),w%,h%
  135. gUSE 1
  136. w%=gWIDTH
  137. h%=gHEIGHT
  138. gFONT fid%
  139. gSTYLE style%
  140. gINFO i%()
  141. vINFO%(1)=i%(3)
  142. vINFO%(2)=i%(4)
  143. vINFO%(3)=i%(7)
  144. if vWID%(1)<>0 and vWID%(1) <> 1
  145.     gUSE vWID%(1)
  146.     if w%<>gWIDTH OR h%<>gHEIGHT
  147.         gCLOSE vWID%(1)
  148.         vWID%(1)=gCREATE(0,0,w%,h%,1)
  149.     endif
  150.     gFONT fid%
  151.     gSTYLE style%
  152. elseif vWID%(2)<>0 and vWID%(2) <> 1
  153.     gUSE vWID%(2)
  154.     if w%<>gWIDTH OR h%<>gHEIGHT
  155.         gCLOSE vWID%(2)
  156.         vWID%(2)=gCREATE(0,0,w%,h%,1)
  157.     endif
  158.     gFONT fid%
  159.     gSTYLE style%
  160. elseif vWID%(2)=0
  161.     vWID%(1)=1
  162.     vWID%(2)=gCREATE(0,0,w%,h%,1)
  163.     gFONT fid%
  164.     gSTYLE style%
  165. endif
  166. vN%=64:WHILE vN%>0
  167.     vMAP&(vN%)=0
  168.     vN%=vN%-1
  169. ENDWH
  170. IF vBIT%<>0 : gCLOSE vBIT% : ENDIF
  171. vBIT%=gCREATEBIT(vINFO%(1),100*vINFO%(3))
  172. gCLS
  173. IF vTMP%<>0 : gCLOSE vTMP% : ENDIF
  174. vTMP%=gCREATEBIT(vINFO%(3),vINFO%(1))
  175. gFONT fid%
  176. gSTYLE style%
  177. gCLS
  178. gORDER vWID%(1),1
  179. gUSE vWID%(1)
  180. ENDP
  181.  
  182.