Page 1 of 1

Need help with nGc "gui_gc_Sprite" structure

Unread postPosted: 30 Jul 2021, 13:11
by SlyVTT
Dear All,

I am in the process of writing a kind of universal renderer for the TI nSpire (for the GUI Toolkit NF) and then I need to write some methods able to translate the drawcalls either to SDL or to nGc.

Most of the primitives are now working great (pixels (read/write) / main blitting functions / line, rectangle, circle ...).

I need to create a function for sprites and hence try to understand the data structure of gui_gc_Sprite.
I know there are 3 members :
short width;
short height;
char * pixels;

but what is the convention used for the "pixels" member ?

On the CX/CX-II, the color screen uses 16bits (565 coding) so a pixel color should be coded on a short rather than on a char. Looking at some example in the ndless_sdk, it does not seem to use 3 values per pixel (there are not 3 char per actual pixel). It does not seem either to be using a palette (or I do not know where it is defined).

Right now I have my raw data in a table of unsigned short, each pixel coded on a 16bit value as per the 565 convention, How can I make it compatible with gui_gc_Sprite ?

I hope someone will be able to help.

BR

Sly

Re: Need help with nGc "gui_gc_Sprite" structure

Unread postPosted: 30 Jul 2021, 14:09
by Ti64CLi++
Hi,

I remember using ngc some time ago, and I think that pixels should be 8bits colors for each pixel.
These colors are represented in this image : Image

Re: Need help with nGc "gui_gc_Sprite" structure

Unread postPosted: 30 Jul 2021, 16:47
by SlyVTT
Hello Ti64CLi++

thanks for your feedback. I guess you are right, it seems that that structure uses a kind of "hidden" palette somewhere. So I cannot use it directly as I am using RGB coding for each pixel.
A better choice seems to be using TI_Image format and the corresponding gui_gc_drawImage function but, it does not seem to be able to consider transparency.

So I wrote a structure from scratch, able to handle sprite data either for SDL and for nGc (through conditional compiling) and integration of transparency.

I dropped the question to Vogtinator/Ndless team on the github repository, if a detailed answer comes, I will post it here.

BR

Sly