home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / www / afc / afc-dir / bebox_all.lha / bebox_Examples.lha / Examples / BeBox_Example1.e < prev   
Text File  |  1998-04-20  |  3KB  |  134 lines

  1. /*
  2.  
  3.   $VER: BeBox Example 1.10 - (C)Copyright Amiga Foundation Classes
  4.  
  5.   Written By:   Fabio Rotondo
  6.  
  7.   This example just shows some features of the BeBox class.
  8.  
  9.   Please, note the "mydraw" function.
  10.  
  11.   V1.00 - Initial Release
  12.  
  13.   V1.10 - Added ResourceTracker support.
  14.  
  15. */
  16.  
  17. MODULE 'afc/explain_exception', 'afc/bebox',
  18.        'afc/resourceTracker',
  19.        'intuition/intuition', 'intuition/screens'
  20.  
  21. PROC main() HANDLE
  22.   DEF bb=NIL:PTR TO bebox
  23.   DEF scr=NIL:PTR TO screen
  24.   DEF win=NIL:PTR TO window
  25.   DEF rt=NIL:PTR TO resourceTracker
  26.  
  27.   NEW rt.resourceTracker()
  28.  
  29.   NEW bb.bebox(NIL, rt)    -> Class initialization
  30.  
  31.  
  32.  
  33.   IF (scr:=LockPubScreen('Workbench'))=NIL THEN Raise("scr")
  34.  
  35.   IF (win:=OpenWindowTagList(NIL,
  36.                   [WA_LEFT,    0,
  37.                    WA_TOP,     0,
  38.                    WA_WIDTH, scr.width,
  39.                    WA_HEIGHT, scr.height,
  40.                    WA_FLAGS, WFLG_BORDERLESS OR WFLG_BACKDROP OR WFLG_NOCAREREFRESH,
  41. ->                   WA_CUSTOMSCREEN, scr,
  42.                    0,0]))=NIL THEN Raise("win")
  43.  
  44.  
  45.   bb.setattrs([BEBOX_POSX,    10,
  46.                BEBOX_POSY,    10,
  47.                BEBOX_WIDTH,  100,
  48.                BEBOX_HEIGHT, 100,
  49.                BEBOX_RPORT,  scr.rastport,
  50.                BEBOX_MAXX,   scr.width-1,
  51.                BEBOX_MAXY,   scr.height-1,
  52.                BEBOX_USEREL, TRUE,
  53.                BEBOX_DRAW,   {mydraw},
  54.                0,0])
  55.  
  56.  
  57.  
  58.  
  59.   bb.draw() -> The first draw on the window.
  60.  
  61.   LOOP
  62.  
  63.     REPEAT
  64.       Delay(3)
  65.       IF Mouse()=2 THEN Raise("HALT")
  66.     UNTIL (Mouse()=1 AND bb.check(MouseX(win), MouseY(win)))
  67.  
  68.     WHILE (Mouse()=1)
  69.       bb.setattrs([BEBOX_POSX, MouseX(win), BEBOX_POSY, MouseY(win), 0,0])
  70.       bb.draw()
  71.     ENDWHILE
  72.  
  73.   ENDLOOP
  74.  
  75.   bb.draw(FALSE)
  76.  
  77. /*
  78.   bb.setattrs([BEBOX_MAXX,   100,
  79.                BEBOX_MAXY,   100,
  80.                BEBOX_WIDTH,   80,
  81.                BEBOX_HEIGHT,  10,
  82.                BEBOX_POSX,    50,
  83.                BEBOX_POSY,     0,
  84.                NIL, NIL])
  85. */
  86.  
  87. EXCEPT DO
  88.   END bb
  89.   END rt
  90.   IF win THEN CloseWindow(win)
  91.   IF scr THEN UnlockPubScreen (NIL, scr)
  92.  
  93.   IF exception<>"HALT" THEN explain_exception()
  94. ENDPROC
  95.  
  96. PROC mydraw(data:PTR TO bebox_data, mode)
  97.   SetDrMd(data.rp, 2)
  98.  
  99.   IF mode THEN IF (data.oldx=data.x) AND (data.oldy = data.y) THEN RETURN
  100.  
  101.   IF data.oldx<>-1
  102.     Move(data.rp, data.oldx, data.oldy)
  103.     SetAPen(data.rp, data.oldcol)
  104.  
  105.     Draw(data.rp, data.oldx + data.oldw, data.oldy)
  106.     Draw(data.rp, data.oldx + data.oldw, data.oldy + data.oldh)
  107.     Draw(data.rp, data.oldx, data.oldy + data.oldh)
  108.     Draw(data.rp, data.oldx, data.oldy)
  109.  
  110.     Draw(data.rp, data.oldx + data.oldw, data.oldy + data.oldh)
  111.     Move(data.rp, data.oldx + data.oldw, data.oldy)
  112.     Draw(data.rp, data.oldx, data.oldy + data.oldh)
  113.     data.oldx:=-1
  114.   ENDIF
  115.  
  116.   IF mode
  117.     Move(data.rp, data.x, data.y)
  118.     SetAPen(data.rp, data.col)
  119.     Draw(data.rp, data.x + data.w, data.y)
  120.     Draw(data.rp, data.x + data.w, data.y + data.h)
  121.     Draw(data.rp, data.x, data.y + data.h)
  122.     Draw(data.rp, data.x, data.y)
  123.  
  124.     Draw(data.rp, data.x + data.w, data.y + data.h)
  125.     Move(data.rp, data.x + data.w, data.y)
  126.     Draw(data.rp, data.x, data.y + data.h)
  127.  
  128.   ENDIF
  129.  
  130.   SetDrMd(data.rp, 0)
  131.  
  132. ENDPROC
  133.  
  134.