is there a way I could use #000000 instead of 000,000,000 ..... for colors

Blitz3D Forums/Blitz3D Beginners Area/is there a way I could use #000000 instead of 000,000,000 ..... for colors

Is there a way I could use HTML color codes (example: #000000 is black) instead of using Color 0,0,0 it would be really useful and less long to figure out the colors........

Yes, write a function.

Clr(#000000)

Can you use a function in a function?

How would I go about to do this function I'm clueless :|

I think that #000000

Should be

$000000

in blitz.

This will work:

Color $FF,$FF,$FF

or this:

color 0,0,rgb

You should be able to make a function that does this. You should just have to pass in the code ( the #000000 thingy ) and use Left/Mid/Right to pull out the R G and B parts in the code. The you just convert them to decimal system using some of those functions, and your done!

-Rich05

So far I got this...

Function MGUI_clr( clr$)

clr_red   = "$" + Left$(clr$,3)
clr_green = "$" + Mid$(clr$,-1) + Mid$(clr$,1)
clr_blue  = "$" + Right(clr$,-2)

End Function


But I got no idea how to get this function to return thoses for the "Color 0,0,0" in my other function... *thinking*

MGUI_clr(FFFFFF)

Function MGUI_clr( clr$)

clr_red   = "$" + Left$(clr$,3)
clr_green = "$" + Mid$(clr$,-1) + Mid$(clr$,1)
clr_blue  = "$" + Right(clr$,-2)

End Function


Wheres my error?

You can only return one variable from a function.
Why don't you just set the color from within the function?

Plus, your string functions are wrong. Did you read the documentation?

Like:
Mid$ (string$, offset, characters)

string$ = any valid string
offset = location within the string to start reading
characters = how many characters to read frm the offset point

So, to get the green value, something like Mid$(clr, 3, 2)...

Then when you're done, "Color(clr_red, clr_green, clr_blue)"

the only problem with html color codes is that they are in hexadecimal, i can't see a way to convert an hexadecimal string to a decimal value without anoter function that handle hexadecimal conversion...

the a=$ff return 255
but a="$ff" don't work

so i had to include hexadecimal conversion in the function

; usage : setcolor("rrggbb")
; setcolor("ff0000") for red
; setcolor("00ff00") for green
; setcolor("0000ff") for blue
Function setcolor$(mycolor$) 
	Hexa$="0123456789abcdef"
	red=((Instr(hexa$,Mid$(mycolor$,1,1),1)-1)*16)+((Instr(hexa$,Mid$(mycolor$,2,1),1)-1))
	green=((Instr(hexa$,Mid$(mycolor$,3,1),1)-1)*16)+((Instr(hexa$,Mid$(mycolor$,4,1),1)-1))
	blue=((Instr(hexa$,Mid$(mycolor$,5,1),1)-1)*16)+((Instr(hexa$,Mid$(mycolor$,6,1),1)-1))
	Color red,green,blue
End Function


future enhancement!

Eventually you want something more luxury, like:

color red,green,blue,brightness#

brightness# is a float between 0 (all black), 1 (normal) and 2++ (bright(er))

Handy for drawing 3d tiles (buttons etc.) .. you only need to adjust the brightness and all stuff is rgb customizable while the light/shadow remains!

Na, tis easier than that..

Global fore1 = $5f5f5f
Global fore1r = fore1 Shr 16 And $FF
Global fore1g = fore1 Shr 8 And $FF
Global fore1b = fore1 And $FF

As rims said you can use a little trick:

color 0,0,$FFFFFF
or
color 0,0,$58A2FF

or whatever rgb color. this is the easiest way.
save bytes, save plutonium.

there is code for this in the code archives already. It includes functions for putting RGB values into an integer, as well as extracting RG&B components from the integer.

maybe my code below can be of help somehow .. dunno


Function print_debug_info()
	totalDrivers%=CountGfxDrivers() 
	r_dec%=0 : g_dec%=0 : b_dec%=0
	r_hex$=0 : g_hex$=0 : b_hex$=0	
	r_dec=ColorRed() : g_dec=ColorGreen() : b_dec=ColorBlue()
	r_hex=Hex$(r_dec) : g_Hex=Hex$(g_dec) : b_Hex=Hex$(b_dec)

	Cls
	Print "Date                          : " + CurrentDate()
	Print "Time                          : " + CurrentTime()
	Print "PlayField Width               : " + GraphicsWidth()
	Print "PlayField Height              : " + GraphicsHeight()
	Print "PlayField Depth               : " + GraphicsDepth()
	Print "PlayField Memory              : " + GraphicsBuffer()
	Print "PlayField Drawing Color (DEC) : " + r_dec + " " + g_dec + " " + b_dec
	Print "PlayField Drawing Color (HEX) : " + Right$(r_hex,2) + " " + Right$(g_hex,2) + " " + Right$(b_Hex,2)
	Select JoyType() 
	Case 0 
	Print "Joystick                      : None" 
	Case 1 
	Print "Joystick                      : Digital" 
	Case 2 
	Print "Joystick                      : Analog"  
	End Select 
	For t = 1 To totalDrivers 
	Print "Installed GFX driver(s)       : " + GfxDriverName$(t) 
	Next
	Print "Total GFX memory on card      : " + TotalVidMem() + " " + "(Bytes)" + " " + (TotalVidMem() / 1024) + " " + "(Mb)"
	Print "Avail GFX memory              : " + AvailVidMem() + " " + "(Bytes)" + " " + (AvailVidMem() / 1024) + " " + "(Mb)"
	Print "Operating system installed    : " + SystemProperty("OS")
	Print "CPU installed                 : " + SystemProperty("CPU")
End Function