IonicWind Software

Creative Basic => General Questions => Topic started by: Egil on August 11, 2016, 12:06:22 pm

Title: Experimenting with colors I - Conversions
Post by: Egil on August 11, 2016, 12:06:22 pm
I have told you about my young "assistants" before, and since school starts up again monday after summer leave, and the weather was rather lousy, we had a little "workshop" here today. This resulted in three programs, all demonstrating how to experiment with colors. And since I can't see that these ideas have ever been posted for CB before, here they are.

The first one is an idea that TexasPete once sent me in a PM. We had to modify it slightly to get it to work in CB. It converts RGB color values to decimal values and decimal values to RGB.


Have fun!

Code Select
'-------------------------------------------------------------------------------------
' RGB_Ideas.CBA
'-------------------------------------------------------------------------------------
AutoDefine "Off"

DECLARE RGBtoDec(red:int,green:int,blue:Int) as int
DECLARE DecToRGB(decimal:int)

def win:window 
def dec,red,blue,green,run:int 

Window win,-640,0,640,300,0,0,"    CB Skeleton Window",messages 

' Convert from RGB to integer value:
dec = RGBtoDec(128,128,127)
'setwindowcolor win, dec :' In case you want to see the colour

print win,"RGB(128,128,127) as decimal = ", dec

' Convert from integer value to RGB:
DecToRGB(dec)
print" = RGB(",red,",",green,",",blue,")"

run = 1 

WAITUNTIL run = 0 
CLOSEWINDOW win 
END 


'
SUB messages()
'----------------------------------------------------------------------------------------
' Main Loop
'----------------------------------------------------------------------------------------
'
SELECT @class

CASE @idcreate 
centerwindow win 

CASE @idclosewindow 
run = 0 

CASE @IDKEYDOWN
if GETKEYSTATE(0x1B) <> 0 then run = 0 :' ESC is pressed - end program

ENDSELECT 
RETURN

'
SUB RGBtoDec(red:int,green:int,blue:Int) as int
'----------------------------------------------------------------------------------------
' Returns and RGB triplet as integer
' Original idea: TexasPete
'----------------------------------------------------------------------------------------
if blue > 0 then blue = blue * 65536 else blue =0
if green > 0 then green = green * 256 else green = 0
RETURN blue + green + red

'
SUB DecToRGB(decimal:int)
'----------------------------------------------------------------------------------------
' Returns R G B Triplet from integer
' Original idea: TexasPete
' Please note  : Red,Green and Blue Must be Global and declared outside of this function
'----------------------------------------------------------------------------------------
def GetRed,GetGreen,GetBlue:int

' GetRed :
   blue=int(decimal/(256*256))
green=int((decimal-blue*256*256)/256)
   GetRed= decimal-Blue*256*256-green*256
' Getgreen:
   blue=int(decimal/(256*256))
   GetGreen=int((decimal-blue*256*256)/256)
' GetBLue:
   GetBlue=int(decimal/(256*256))
red=GetRed:green=GetGreen:blue=GetBlue

RETURN