Author |
Topic: TOOLS:Mask creator, pixel, set,sbox and more (Read 483 times) |
|
michael
Senior Member
member is offline


Posts: 335
|
 |
TOOLS:Mask creator, pixel, set,sbox and more
« Thread started on: Aug 13th, 2016, 07:22am » |
|
*** if you get an "ACCESS DENIED" error from the OSCLI statement, make sure you save the program in a directory that isn't restricted.
So the mask tool should make a mask for the defined area and capture the image in a BMP file.. It works with RGB colors
sbox has been modified so you can control the background color.
I was trying to figure why *SCREENSAVE isn't capturing the variable defined area or accepting the name.
Perhaps I will need to use OSCLI
OSCLI "SCREENSAVE """+name$+""" "+STR$(x%)+","+STR$(y%)+","+STR$(dx%)+","+STR$(dy%*2) Looks like that works
I am hoping the new mask tool is accurate. Try it out and let me know if the settings are good..
Try the other tools also.. They are newer improved tools from previous versions. ( I must note that if you use PROCcolor , you must use TINT to read a pixel color as PROCcolor produces a palette color even though the standard colors (0-15) are duplicated) So POINT wont be able to be used if you use PROCcolor. * The image capture is correct. its actually the size of sbox that is wrong. (left side is one pixel off... I will modify it so its accurate later today. Code: 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
|
« Last Edit: Aug 13th, 2016, 4:40pm by michael » |
Logged
|
I like making program generators and like reinventing the wheel
|
|
|
|