home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Basic / MAXONB32.DMS / in.adf / Beispiele_1.3 / Examples / ABC.bas < prev    next >
Encoding:
BASIC Source File  |  1994-04-14  |  2.1 KB  |  77 lines

  1. DEFINT a-z
  2.  
  3. REM $INCLUDE Graphics.bh
  4. REM $INCLUDE Exec.bc
  5.  
  6. LIBRARY OPEN "graphics.library", LIBRARY_MINIMUM&
  7.  
  8. CONST length% = 40, skew% = 15, xstart% = 260, ystart% = 110
  9. fb$ = "HiSoft BASIC 2"
  10.  
  11. '
  12. 'SafeSetOutlinePen, a backwards (<V39 graphics) compatible SetOutlinePen
  13. '
  14. SUB SafeSetOutlinePen(BYVAL w&, BYVAL c)
  15.     STATIC junk&
  16.  
  17.     IF PEEKW(LIBRARY("graphics.library") + lib_Version) >= 39 THEN
  18.         junk& = SetOutlinePen&(w&, c)
  19.     ELSE
  20.         POKEB w& + AOlPen, c
  21.         POKEW w& + RastPortFlags, PEEKW(w& + RastPortFlags) OR AREAOUTLINE&
  22.     END IF
  23. END SUB
  24.  
  25. REM Sub-program to draw a 3-D box with a letter
  26. SUB draw_box(BYVAL rp&, BYVAL x, BYVAL y, ch$)
  27. STATIC ch_x, ch_y, junk&
  28.  
  29. REM Draw outline of a box
  30.     SetAPen rp&, 0    ' set foreground pen to background color
  31.     junk& = AreaMove(rp&, x, y)
  32.     junk& = AreaDraw(rp&, x + skew, y - skew)
  33.     junk& = AreaDraw(rp&, x + length + skew, y - skew)
  34.     junk& = AreaDraw(rp&, x + length + skew, y + length - skew)
  35.     junk& = AreaDraw(rp&, x + length, y + length)
  36.     junk& = AreaDraw(rp&, x, y + length)
  37.     junk& = AreaEnd(rp&)
  38.  
  39. REM Now draw 3 lines to complete 3-D box
  40.     SetAPen rp&, 1    ' select standard pen
  41.     Move rp&, x, y
  42.     Draw rp&, x + length, y
  43.     Draw rp&, x + length + skew, y - skew
  44.  
  45.     Move rp&, x + length, y + length
  46.     Draw rp&, x + length, y
  47.     
  48. REM Draw the letter text, centred in the box
  49.     ch_x = TextLength&(rp&, SADD(ch$), LEN(ch$))
  50.     ch_y = PEEKW(rp& + TxHeight)
  51.     Move rp&, x + (length - ch_x) / 2, y + (length + ch_y) / 2
  52.     Text rp&, SADD(ch$), LEN(ch$)
  53. END SUB
  54.  
  55. REM The main program
  56.  
  57. 'force the BASIC runtime library to initialise TmpRas & AreaInfo in the default
  58. 'window's RastPort (!)
  59. AREAFILL
  60.  
  61. SafeSetOutlinePen WINDOW(8), 1    'set the outline pen color
  62.  
  63. draw_box WINDOW(8), xstart, ystart, "B"
  64. draw_box WINDOW(8), xstart + 7 * length / 6, ystart, "C"
  65. draw_box WINDOW(8), xstart + 7 * length / 12, ystart - 7 * length / 6, "A"
  66.  
  67. fb_width = TextLength&(WINDOW(8), SADD(fb$), LEN(fb$))
  68. fb_height = PEEKW(WINDOW(8) + TxHeight)
  69. fb_x = xstart + (13 * length \ 6 + skew - fb_width) \ 2
  70. fb_y = ystart + length + fb_height * 3 \ 2
  71.  
  72. REM Display picture title
  73. Move WINDOW(8), fb_x, fb_y
  74. Text WINDOW(8), SADD(fb$), LEN(fb$)
  75.  
  76. END
  77.