MODULE 'cybergraphics', 'libraries/cybergraphics',
       'intuition/screens', 'intuition/intuition',
       'afc/truebitmap', 'afc/explain_exception'


PROC main() HANDLE
  DEF scr=NIL:PTR TO screen
  DEF win=NIL:PTR TO window
  DEF tbm:PTR TO truebitmap
  DEF pix:PTR TO rgb32
  DEF id
  DEF x, y, r=0, b=0

  IF (cybergfxbase:=OpenLibrary('cybergraphics.library', 0))=NIL THEN Raise("lib")

  IF (id:=BestCModeIDTagList([CYBRBIDTG_Depth,           24,
                          CYBRBIDTG_NominalWidth,  320,
                          CYBRBIDTG_NominalHeight, 256,
                          0,0]))=0 THEN Raise("scid")

  IF (scr:=LockPubScreen(NIL))=NIL THEN Raise("scr")

  IF (win:=OpenWindowTagList(NIL, [WA_WIDTH,  100,
                                   WA_HEIGHT, 100,
                                   WA_TITLE,  'Cyber 24Bitmap',
                                   NIL, NIL]))=NIL THEN Raise("win")

  NEW tbm.truebitmap()
  NEW pix

  tbm.alloc(50,50)

  FOR y:=0 TO 50
    FOR x:=0 TO 50
      tbm.writePixelDirect(x, y, r, 0,0)
      r++
    ENDFOR
    r:=b++
  ENDFOR

  WritePixelArray(tbm.addr(), 0,0, tbm.bytesperrow(), win.rport, 20, 20, 50,50, RECTFMT_ARGB)

  REPEAT
    Delay(5)
  UNTIL Mouse()

EXCEPT DO
  IF win THEN CloseWindow(win)
  IF scr THEN UnlockPubScreen(NIL, scr)
  IF cybergfxbase THEN CloseLibrary(cybergfxbase)
  END tbm
  END pix
ENDPROC

