home *** CD-ROM | disk | FTP | other *** search
- rem Basic2D Showcase
-
- rem Standard Setup Code for all examples
- sync on : sync rate 0
- set text font "arial" : set text size 16
- set text to bold : set text transparent
-
- rem Nice backdrop
- load bitmap "parchment.jpg"
-
- rem Produce Title
- ink rgb(0,0,0),0 : center text (screen width()/2)+1,7,"2D Graphics Support"
- ink rgb(255,255,255),0 : center text screen width()/2,6,"2D Graphics Support"
-
- rem Create an array to hold pixeldatas
- bitsperpixel=bitmap depth()/8
- workA = make memory(640*480*bitsperpixel)
- fill memory workA, 0, 640*480*bitsperpixel
-
- rem Create Art Space
- set current bitmap 0
- box 48,48,640-48,450-48,rgb(255,255,0),rgb(255,200,255),rgb(255,255,200),rgb(200,255,255)
- lock pixels
- pitch=get pixels pitch() : ptr=get pixels pointer()
- workAptr=workA : linesize=640*bitsperpixel
- for y=0 to 479
- copy memory workAptr, ptr, linesize : inc workAptr,640*bitsperpixel : inc ptr,pitch
- next y
- unlock pixels
-
- rem Main loop
- do
-
- rem Draw to Memory
- mx=mousex() : my=mousey()
- focus=16*(1+size)
- if mx>focus and mx<640-focus and my>focus and my<479-focus
- for focus=1 to 16*(1+size)
- for y=my-focus to my+focus
- penwidth=focus-abs(y-my)
- for x=mx-penwidth to mx+penwidth
- workptr=workA+(x*bitsperpixel)+(y*640*bitsperpixel)
- col = *workptr
- colb = col && %1111111111111111
- if bitsperpixel=2
- cr = (col && %11111000000000000000000000000000)>>27
- cg = (col && %00000111111000000000000000000000)>>21
- cb = (col && %00000000000111110000000000000000)>>16
- dec cr
- dec cg
- dec cb
- endif
- if bitsperpixel=4
- cr = rgbr(col) - 1
- cg = rgbg(col) - 1
- cb = rgbb(col) - 1
- endif
- if nocap=0
- if cr<0 then cr=0
- if cg<0 then cg=0
- if cb<0 then cb=0
- endif
- if bitsperpixel=2
- col = (cr<<27)+(cg<<21)+(cb<<16)
- *workptr = col+colb
- endif
- if bitsperpixel=4
- col = rgb(cr,cg,cb)
- *workptr = col
- endif
- next x
- next y
- next focus
- endif
-
- rem Draw Memory to screen
- workAptr=workA+(640*48*bitsperpixel)
- ymax=450-48
- lock pixels
- linesize=(640-48-48)*bitsperpixel
- pitch=get pixels pitch()
- ptr=get pixels pointer()+(48*pitch)
- for y=48 to ymax
- copy memory ptr+(48*bitsperpixel), workAptr+(48*bitsperpixel), linesize
- inc workAptr,640*bitsperpixel
- inc ptr,pitch
- next y
- unlock pixels
-
- rem Show Buttons
- over=0
- for but=1 to 3
- for high=0 to 1
- if high=0 then ink rgb(20,20,20),0 : bx=-1 : by=-1
- if high=1 then ink rgb(100,200,100),0 : bx=0 : by=0
- if high=1 and mousey()>420 and mousey()<460
- if but=1 and abs(mousex()-170)<50 then ink rgb(255,255,255),0 : over=1
- if but=2 and abs(mousex()-320)<50 then ink rgb(255,255,255),0 : over=2
- if but=3 and abs(mousex()-470)<50 then ink rgb(255,255,255),0 : over=3
- endif
- if but=1 then but$="SIZE"
- if but=2 then but$="PLASMA"
- if but=3 then but$="EXIT"
- center text 320+bx+((but-2)*150),420+by,but$
- next high
- next but
-
- rem Controls
- if mouseclick()=1
- if once=0
- once=1
- if over=1 then size=size+1
- if over=2 then nocap=1-nocap
- if size=3 then size=0
- if over=3 then delete memory workA : end
- endif
- else
- once=0
- endif
-
- rem Update screen
- sync
-
- rem End loop
- loop
-
- rem Free memory
- delete memory workA
- delete memory workB
-