home *** CD-ROM | disk | FTP | other *** search
/ The Best of the Best / _.img / 01171 / wpress.bas < prev    next >
BASIC Source File  |  1990-12-22  |  6KB  |  270 lines

  1.  
  2. Dim Menu$(5), L$(100)
  3.  
  4. Subroutine iMoveTo%
  5.   i% = Instr%(Line$,"X=")
  6.   if i% = 0 Then Return 1
  7.   m$ = mid$(Line$,i%+2,12)
  8.   x% = val%(m$)
  9.   i% = Instr%(Line$,"Y=")
  10.   if i% = 0 Then Return 1
  11.   m$ = mid$(Line$,i%+2,12)
  12.   y% = val%(m$)
  13.   MoveTo x%+x0%, y%+y0%, device%
  14.   Return 0
  15. EndSub
  16.  
  17. Subroutine iLineTo%
  18.   i% = Instr%(Line$,"X=")
  19.   if i% = 0 Then Return 1
  20.   m$ = mid$(Line$,i%+2,12)
  21.   x% = val%(m$)
  22.   i% = Instr%(Line$,"Y=")
  23.   if i% = 0 Then Return 1
  24.   m$ = mid$(Line$,i%+2,12)
  25.   y% = val%(m$)
  26.   LineTo x%+x0%, y%+y0%, device%
  27.   Return 0
  28. EndSub
  29.  
  30. Subroutine iText%
  31.   a$ = Right$(Line$,len%(Line$)-3)
  32.   If device% = 1 Then Print a$;
  33.   If device% = 2 Then LPrint a$;
  34.   Return 0
  35. Endsub
  36.  
  37. Subroutine iFont%
  38.   i% = instr%(Line$,"FF=")
  39.   If i% = 0 Then Return 1
  40.   m$ = mid$(Line$,i%+3,12)
  41.   FF% = val%(m$) 
  42.   i% = instr%(Line$,"H=")
  43.   If i% = 0 Then Return 1
  44.   m$ = mid$(Line$,i%+2,12)
  45.   h% = val%(m$) 
  46.   i% = instr%(Line$,"W=")
  47.   If i% = 0 Then Return 1
  48.   m$ = mid$(Line$,i%+2,12)
  49.   w% = val%(m$) 
  50.   i% = instr%(Line$,"WEI=")
  51.   m$ = mid$(Line$,i%+4,12)
  52.   wei% = val%(m$) 
  53.   If i% = 0 Then wei% = 400
  54.   i% = instr%(Line$,"STY=")
  55.   m$ = mid$(Line$,i%+4,12)
  56.   style% = val%(m$) 
  57.   If i% = 0 Then style% = 400
  58.   Font h%, w%, wei%, style%, FF%, device%
  59.   Return 0
  60. EndSub
  61.  
  62. Subroutine iArc%(flag%)
  63.   i% = instr%(Line$,"R=")
  64.   if i% = 0 Then Return 1
  65.   m$ = mid$(Line$,i%+2,12)
  66.   r% = val%(m$) 
  67.   i% = instr%(Line$,"BEG=")
  68.   m$ = mid$(Line$,i%+4,12)
  69.   begin% = val%(m$) 
  70.   if i% = 0 Then begin% = 0
  71.   i% = instr%(Line$,"END=")
  72.   m$ = mid$(Line$,i%+4,12)
  73.   end% = val%(m$) 
  74.   if i% = 0 Then end% = 360
  75.   If Flag% Then
  76.     Pie r%, begin%, end%, device%
  77.   Else 
  78.     Arc r%, begin%, end%, device%
  79.   Endif
  80.   Return 0
  81. Endsub
  82.  
  83. Subroutine iBar%()
  84.   i% = instr%(Line$,"DX=")
  85.   if i% = 0 Then Return 1
  86.   m$ = mid$(Line$,i%+3,12)
  87.   dx% = val%(m$) 
  88.   i% = instr%(Line$,"DY=")
  89.   if i% = 0 Then Return 1
  90.   m$ = mid$(Line$,i%+3,12)
  91.   dy% = val%(m$)
  92.   Rect dx%, dy%, device%
  93.   Return 0
  94. Endsub 
  95.  
  96. Subroutine iRect%
  97.   i% = instr%(Line$,"DX=")
  98.   if i% = 0 Then Return 1
  99.   m$ = mid$(Line$,i%+3,12)
  100.   dx% = val%(m$) 
  101.   i% = instr%(Line$,"DY=")
  102.   if i% = 0 Then Return 1
  103.   m$ = mid$(Line$,i%+3,12)
  104.   dy% = val%(m$)
  105.   LineTo x%+x0%+dx%, y%+y0%, device%
  106.   LineTo x%+x0%+dx%, y%+y0%+dy%, device%
  107.   LineTo x%+x0%, y%+y0%+dy%, device%
  108.   LineTo x%+x0%, y%+y0%, device%
  109.   Return 0
  110. Endsub 
  111.  
  112. Subroutine iStyle%
  113.   i% = instr%(Line$,"PEN=")
  114.   m$ = mid$(Line$,i%+4,12)
  115.   pen% = val%(m$)
  116.   if i% = 0 Then pen% = 0
  117.   i% = instr%(Line$,"BACK=")
  118.   m$ = mid$(Line$,i%+5,12)
  119.   back% = val%(m$)
  120.   if i% = 0 Then back% = 0
  121.   i% = instr%(Line$,"W=")
  122.   m$ = mid$(Line$,i%+2,12)
  123.   w% = val%(m$)
  124.   if i% = 0 Then w% = 1
  125.   Style pen%, back%, w%, device%
  126.   Return 0
  127. Endsub
  128.  
  129. Subroutine iCounter%
  130.   Counter% = Counter% + 1
  131.   Print Counter%
  132.   Lprint Counter%
  133.   Return 0
  134. EndSub
  135.  
  136. Subroutine iBitmap%
  137.   a$ = Right$(Line$,len%(Line$)-3)
  138.   Bitmap a$, device%
  139.   Return 0
  140. Endsub
  141.  
  142. Subroutine iWieder%(onoff%)
  143.   If onoff% = 0 Then
  144.     If inx% < nx% Then
  145.       x0% = x0% + ddx%
  146.       inx% = inx% + 1 
  147.       iline% = ilinew%
  148.     Elseif iny% < ny% Then
  149.       x0% = 0 : inx% = 1
  150.       y0% = y0% + ddy%
  151.       iny% = iny% + 1 
  152.       iline% = ilinew%
  153.     Else
  154.       ddx%=0 : ddy%=0
  155.       nx%=0 : ny%=0
  156.       x0%=0 : y0%=0
  157.     Endif
  158.   Else
  159.     i% = instr%(Line$,"NX=")
  160.     m$ = mid$(Line$,i%+3,12)
  161.     nx% = val%(m$)
  162.     if i% = 0 Then nx% = 0
  163.     i% = instr%(Line$,"NY=")
  164.     m$ = mid$(Line$,i%+3,12)
  165.     ny% = val%(m$)
  166.     if i% = 0 Then ny% = 0
  167.     i% = instr%(Line$,"DX=")
  168.     m$ = mid$(Line$,i%+3,12)
  169.     ddx% = val%(m$)
  170.     if i% = 0 Then ddx% = 0
  171.     i% = instr%(Line$,"DY=")
  172.     m$ = mid$(Line$,i%+3,12)
  173.     ddy% = val%(m$)
  174.     if i% = 0 Then ddy% = 0
  175.     ilinew% = iline%
  176.     inx% = 1 : iny% = 1
  177.   Endif
  178.   Return 0
  179. Endsub
  180.  
  181. Subroutine IntpretLine
  182.   a$ = Ucase$(Left$(Line$,2))
  183.   If a$ <> "TX" Then Line$ = Ucase$(Line$)
  184.   If a$ = "MO" Then
  185.     err% = iMoveTo%()
  186.   Elseif a$ = "LI" Then
  187.     err% = iLineTo%()
  188.   Elseif a$ = "TX" Then
  189.     err% = iText%()
  190.   Elseif a$ = "FO" Then
  191.     err% = iFont%()
  192.   Elseif a$ = "BM" Then
  193.     err% = iBitmap%()
  194.   Elseif a$ = "AC" Then
  195.     err% = iArc%(0)
  196.   Elseif a$ = "PI" Then
  197.     err% = iArc%(1)
  198.   Elseif a$ = "BR" Then
  199.     err% = iBar%()
  200.   Elseif a$ = "RE" Then
  201.     err% = iRect%()
  202.   Elseif a$ = "ST" Then
  203.     err% = iStyle%()
  204.   Elseif a$ = "CT" Then
  205.     err% = iCounter%()
  206.   Elseif a$ = "WH" Then
  207.     err% = iWieder%(1)
  208.   Elseif a$ = "WE" Then
  209.     err% = iWieder%(0)
  210.   Else 
  211.     MessageBox a$, "Falsches Kommando", 0, antwort%
  212.   Endif
  213.   If err% Then MessageBox Line$, "Syntax-Error", 0, antwort%
  214. Endsub
  215.  
  216. Subroutine Press()
  217.   Mapmode 2, device%
  218.   Trace on
  219.   iline% = 1
  220.   Open "I", #1, File$
  221.   While 1
  222.     Line Input #1, L$(iline%)
  223.     If Error%() Then Break
  224.     iline% = iline% + 1
  225.   Wend
  226.   Close #1
  227.   imax% = iline%
  228.   iline% = 1
  229.   While iline% < imax%
  230.     Line$ = L$(iline%) 
  231.     iline% = iline% + 1
  232.     If Left$(Line$,1) <> "'" Then Gosub IntpretLine()
  233.   Wend
  234. Endsub 
  235.  
  236. Rem *** Hauptprogramm ***
  237.  
  238. Menu$(1) = "S&cript"
  239. Menu$(2) = "&Show"
  240. Menu$(3) = "&Print"
  241. Menu$(4) = "&Exit"
  242. Menu$(5) = ""
  243. Menu menu$
  244.  
  245. Size 10,10, 560,300      
  246. File$ = "order.prs"
  247. 'Exec "notepad.exe", " "+File$, 7
  248.  
  249. _1000:
  250.   Files "\win","*.prs", File$
  251.   If File$ <> "" Then
  252.     Cursor 2
  253.     Stop "notepad.exe"
  254.     Exec "notepad.exe", " "+File$, 7
  255.     Cursor 0
  256.     Cls
  257.   Endif
  258. _2000:
  259.   cls
  260.   x%=0 : y%=0 : x0%=0 : y0%=0
  261.   device% = 1 : Gosub Press()
  262. _3000:
  263.   x%=0 : y%=0 : x0%=0 : y0%=0
  264.   device% = 2 : Gosub Press()
  265.   Lprint chr$(12)
  266.   Cls
  267. _4000:
  268.   Stop "notepad.exe"
  269.   Stop
  270.