forum-msg-id-134020-edit
Original date:2019-07-03 19:04:35 Edited by: Icy_Viking Subject: Re: Type check failure (New problem now)
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()
Not Categorized, Please Help
|
- history, backlinks
- Last modified Jul 03, 2019 by Icy_Viking