NB. transparency - demo alpha channel opacity NB. NB. 02/06/2010 Oleg Kobchenko require 'gl2 media/platimg' coinsert 'jgl2' Shl=: 33 b. And=: 17 b. toRGB=: [: |: 256 256 256 #: ] frRGB=: 256 256 256 #. |: Mask=: 3 : 0 'B F O'=. y 'bR bG bB'=. toRGB B 'fR fG fB'=. toRGB F R1=. <. (fR*O) + bR*(1-O) G1=. <. (fG*O) + bG*(1-O) B1=. <. (fB*O) + bB*(1-O) frRGB R1,G1,:B1 ) F=: 0 : 0 pc f;pn "Transparency Demo"; xywh 4 4 256 256;cc g isigraph rightmove bottommove; pas 4 4;pcenter; rem form end; ) ALPHA=: _1 NB. make 0 _1 to allow 1-bit alpha f_run=: 3 : 0 D=. ,readimg jpath'~addons/media/platimg/test/bubble2.png' if. ALPHA e.~{.D do. ImgO=: 0.6 * ({.D) ~: D else. ImgO=: 255 %~ _24 Shl D end. ImgC=: 16bffffff And D 'ImgW ImgH'=: 128 128 POS=: ? 10#,:512 512 - ImgW,ImgH VEL=: 26 * 0.5 - ? (#POS)#,:0 0 sys_timer_z_=: timer_base_ wd F HWND=: wd 'qhwndp' wd 'pshow;' wd 'timer 33' ) f_close=: 3 : 0 wd 'timer 0' erase<'sys_timer_z_' wd'pclose' ) PlaceImg=: 3 : 0 'X Y'=. y B=. (#ImgO){.,glqpixels X,Y,ImgW,ImgH C=. Mask B;ImgC;ImgO glpixels X,Y,ImgW,ImgH,C ) timer=: 3 : 0 wd 'psel ',HWND 'w h'=. (ImgW,ImgH) -~ _2{.0 ".wd'qchildxywhx g' DIR=. _1 + 0.5 * 0.5 - ? (#POS)#,:0 0 VEL=: VEL * DIR ^ ((VEL<0)*.POS < 0) +. ((VEL>0)*.POS >"1 w,h) POS=: POS + VEL wd 'setinvalid g' ) f_g_paint=: 3 : 0 glpen 1 0 [ glbrush ] glrgb 220 220 220 glrect 128 128,~"1]128*,/ (((2|[)+2*]),[)"0/&i./2 1*8 PlaceImg"1 POS ) f_run''