REM I have modified the commands so they work with numbers or words or RGB values for colours *************** REM width;height;charwidth,charheight,number of colors,character set VDU 23,22,1024;600;8,15,16,1 :REM max width is 1920 and 1440 height REM its a green pixel and its near the center of the window (function test) PROCpixel(500,500,"green") REM lets draw a bordered box to make a mask for PROCsbox(9,10,90,90,"white"):REM left side is offset to make it center. sbox needs adjustment PROCmask(0,0,100,100,"mybox") WAIT 1 REM Turn off the text cursor _ OFF VDU 5 : REM Treat text as graphics (transparent background) REM SET returns... (its a big pixel) PROCset(200,200,"5") PROCpr(110,100,"TEST: THE MASK IS CREATED","green") WAIT 0 END REM h and v must always be a higher value as they are the top right corner of the image.( I will make this smart like sbox) DEFPROCmask(x%,y%,h%,v%,name$) name$=name$+".bmp" LOCAL dx%,dy%,c%,counx%,couny% counx%=0:couny%=0 dx%= h%-x% dy%= v%-y% IF dx%>dy% OR dx%=dy% THEN REPEAT c%=TINT(x%+counx%,y%+couny%) IF c%=0 THEN PROCpixel(x%+counx%,y%+couny%+dy%+1,"light white") ELSE PROCpixel(x%+counx%,y%+couny%+dy%+1,"0") couny%+=1:IF couny%=y%+dy% THEN couny%=0:counx%=counx%+1 UNTIL counx%=dx%+1 ENDIF IF dy%>dx% THEN REPEAT c%=TINT(x%+counx%,y%+couny%) IF c%=0 THEN PROCpixel(x%+counx%,y%+couny%+dy%+1,"255,255,255") ELSE PROCpixel(x%+counx%,y%+couny%+dy%+1,"0") counx%+=1:IF counx%=x%+dx% THEN counx%=0:couny%=couny%+1 UNTIL couny%=dy%+1 ENDIF OSCLI "SCREENSAVE """+name$+""" "+STR$(x%)+","+STR$(y%)+","+STR$(dx%)+","+STR$(dy%*2) ENDPROC DEFPROCpixel(x%,y%,c$) PROCcolor("f",c$) MOVE x%,y%:DRAW x%,y% ENDPROC REM this may slow things a bit, but I want to change it:(this tool requires the sprite library and proper preparation. will not work without it) DEFPROC_getbmp(num%,bmpname$) LOCAL a% bmpname$+=".bmp" IF FN_createspritefrombmp(num%,bmpname$) = 0 THEN ERROR 100, "Couldn't create "+bmpname$+" sprite" ENDIF ENDPROC REM c$ can be colors like blue or 1 or a R,G,B color DEF PROCset(x%,y%,c$) LOCAL h% PROCcolor("f",c$) FOR h%=0 TO 20 LINE x%+h%,y%,x%+h%,y%+20 NEXT MOVE 0,0 ENDPROC DEF PROCsbox(x%,y%,w%,h%,c$) LOCAL ry%,sx%,sy% sx%=x%:sy%=y% IF x%>w% THEN x%=w%:w%=sx% IF y%>h% THEN y%=h%:h%=sy% ry%=y% PROCcolor("f",c$) REPEAT LINE x%,y%,w%,y% y%=y%+1 UNTIL y%=h% y%=ry% PROCcolor("f","000,000,000") LINE x%+2,y%+2,w%-2,y%+2 LINE w%-2,y%+2,w%-2,h%-4 LINE w%-2,h%-4,x%+2,h%-4 LINE x%+2,h%-4,x%+2,y%+2 ENDPROC REM color "F"or"B", "color name number or R G B" REM this was created to manage special colors and to hold onto the original first 2 pallets (as I use them all the time) DEF PROCcolor(fb$,rgb$) IF rgb$="0" OR rgb$="black" THEN rgb$="000,000,000" IF rgb$="1" OR rgb$="red" THEN rgb$="200,000,000" IF rgb$="2" OR rgb$="green" THEN rgb$="000,200,000" IF rgb$="3" OR rgb$="yellow" THEN rgb$="200,200,000" IF rgb$="4" OR rgb$="blue" THEN rgb$="000,000,200" IF rgb$="5" OR rgb$="magenta" THEN rgb$="200,000,200" IF rgb$="6" OR rgb$="cyan" THEN rgb$="000,200,200" IF rgb$="7" OR rgb$="white" THEN rgb$="200,200,200" IF rgb$="8" OR rgb$="grey" THEN rgb$="056,056,056" IF rgb$="9" OR rgb$="light red" THEN rgb$="248,056,056" IF rgb$="10" OR rgb$="light green" THEN rgb$="056,248,056" IF rgb$="11" OR rgb$="light yellow" THEN rgb$="248,248,056" IF rgb$="12" OR rgb$="light blue" THEN rgb$="056,056,248" IF rgb$="13" OR rgb$="light magenta" THEN rgb$="248,056,248" IF rgb$="14" OR rgb$="light cyan" THEN rgb$="056,248,248" IF rgb$="15" OR rgb$="light white" THEN rgb$="248,248,248" PRIVATE assemble$,br%,bg%,bb% assemble$=rgb$ br%=VAL(MID$(assemble$,1,3)):bg%=VAL(MID$(assemble$,5,3)):bb%=VAL(MID$(assemble$,9,3)) IF fb$="f" OR fb$="F" THEN COLOUR 0,br%,bg%,bb% : GCOL 0 IF fb$="b" OR fb$="B" THEN COLOUR 1,br%,bg%,bb% : GCOL 128+1 ENDPROC REM X,Y,text color,message,r,g,b REM ************************************************************************ DEF PROCpr(X,Y,msg$,c$) LOCAL initialx%,fi%,reduction%,tx,ty initialx%=LEN(msg$) PROCcolor("f",c$) GCOL 0 LET tx= X+initialx%+25 LET ty= Y:reduction%=0 reduction%=initialx%/2 reduction%=reduction%*6 IF initialx%<20 THEN reduction%=reduction%/2 initialx%=initialx%*22-reduction% FOR fi%=12 TO 48 LINE X-3,Y+20-fi%,X+initialx%+8,Y+20-fi% NEXT COLOUR 0,0,0,0 GCOL 0 MOVE tx,ty PRINT msg$ MOVE 0,0 REM hide that thing ENDPROC