type statetype tool as long fcolor as long bcolor as long end type type layertype ihandle as long blendmode as long filter as long end type dim shared layers(0) as layertype dim shared state as statetype dim shared mouseclicked as integer dim shared mousedown as integer screen _newimage(640,480,32) redim pal(0) as _unsigned long dim as integer ch1,ch2,ch3,bt loadpalette "slso8",pal() do line (0,0)-(_width-1,_height-1),backgroundcolor1,bf while _mouseinput:wend mouseclicked=0 if mousedown=-1 and _mousebutton(1)=0 then mouseclicked=-1 mousedown=_mousebutton(1) toolbox colorpicker canvas locate 10,10: print state.tool _limit 30 _display loop sub toolbox dim x,y if imagebutton(0,0,32,32,icon(0)) then state.tool=1 if imagebutton(32,0,32,32,icon(1)) then state.tool=2 end sub sub colorpicker end sub sub canvas end sub function icon(index as long) static init as integer static icons() as long if not init then dim icons(5) as long icons(0)=_newimage(32,32,32) _dest icons(0) line (5,27)-(27,5) icons(1)=_newimage(32,32,32) _dest icons(1) circle (15,15),13 icons(2)=_newimage(32,32,32) _dest icons(2) _dest 0 init = -1 end if if (index>=lbound(icons)) and (index<=ubound(icons)) then icon=icons(index) end if end function '$include: 'include/ui.bm' '$include: 'include/imgout.bm' '$include: 'include/palette.bm' function adduiicon(imagehandle as long) dim unknown as long adduiicon=__internaluiicon(unknown,imagehandle,1) end function function adduiiconfromfile(filename as string) dim unknown as long adduiiconfromfile=__internaluiicon(unknown,_loadimage(filename),1) end function function uiicon(index) dim unknown as long uiicon=internaluiicon(index,unknown,2) end function function __internaluiicon&(index as long,imagehandle as long,mode as integer) static init as integer static icons() as long if not init or mode=3 then if mode<3 then redim icons(3) as long else _freeimage icons(0) _freeimage icons(1) _freeimage icons(2) _freeimage icons(3) end if icons(0)=_newimage(23,23,32) 'Up arrow' _dest icons(0) color textcolor icons(1)=_newimage(23,23,32) 'Down arrow' _dest icons(1) color textcolor icons(2)=_newimage(23,23,32) 'Left arrow' _dest icons(2) color textcolor icons(3)=_newimage(23,23,32) 'Right arrow' _dest icons(3) color textcolor _dest 0 init=-1 end if select case mode case 1 redim _preserve icons(ubound(icons)+1) icons(ubound(icons))=imagehandle __internaluiicon=ubound(icons) case 2 __internaluiicon=icons(index) end select end function