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