Re: Type check failure (New problem now)

new topic     » goto parent     » topic index » view thread      » older message » newer message
ghaberek said...
Icy_Viking said...

Ok now I can't figure out why the color won't work. I have them assigned as r,g,b,a values, but only red appears to be working.

--Wrapper code 
public constant xClearBackground = define_c_proc(ray,"+ClearBackground",{C_UCHAR,C_UCHAR,C_UCHAR,C_UCHAR}) 

I'm pretty sure that this method still passes the arguments to the function as 4-byte values. It's just going to ensure they're the lower 8 bits and strip the upper 24 bits.

Try packing the values into a single C_UINT value instead. Use bytes_to_int({ r, g, b, a }) and pass that as a single argument to ClearBackground.

typedef struct Color { 
    unsigned char r; 
    unsigned char g; 
    unsigned char b; 
    unsigned char a; 
} Color; 
 
RLAPI void ClearBackground(Color color); // Set background color (framebuffer clear color) 

-Greg

--Wrapper Code 
public constant xDrawText = define_c_proc(ray,"+DrawText",{C_POINTER,C_INT,C_INT,C_INT,C_UINT}) 
 
public procedure DrawText(sequence text,atom x,atom y,atom size,atom col) 
 
 atom str = allocate_string(text,1) 
  
 c_proc(xDrawText,{str,x,y,size,col}) 
	 
end procedure 
--Example 
without warning 
 
include std/machine.e 
include flags.e 
include Euraylib.ew 
 
atom width = 800 
atom height = 450 
 
InitWindow(width,height,"Input") 
 
SetTargetFPS(60) 
 
atom r = bytes_to_int({255,255,255,255}) 
 
while not WindowShouldClose() do 
 
	BeginDrawing() 
	 
	ClearBackground(r) 
	 
	EndDrawing() 
	 
end while 
 
CloseWindow() 

I tried what you advised and it didn't work. Or I'm going about it wrong?

EDIT: My Apologies. I had the wrong function shown, I fixed it for ClearBackground and it works! Thanks Greg. Now I just need to do this for the other color related functions.

--Wrapper 
public constant xClearBackground = define_c_proc(ray,"+ClearBackground",{C_UINT}) 
 
public procedure ClearBackground(atom col) 
 
 c_proc(xClearBackground,{col}) 
	 
end procedure 
--Example 
without warning 
 
include std/machine.e 
include std/convert.e 
include flags.e 
include Euraylib.ew 
 
atom width = 800 
atom height = 450 
 
InitWindow(width,height,"Input") 
 
SetTargetFPS(60) 
 
atom r = bytes_to_int({0,255,0,255}) 
 
while not WindowShouldClose() do 
 
	BeginDrawing() 
	 
	ClearBackground(r) 
	 
	EndDrawing() 
	 
end while 
 
CloseWindow() 
new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu