diff --git a/includes/tart.h b/includes/tart.h index 0b6545e..36d79be 100644 --- a/includes/tart.h +++ b/includes/tart.h @@ -20,7 +20,13 @@ extern "C" { // | over each cell. // #========================================================================# +#ifdef TART_RGB_COLORS +#define NULL_CELL (struct tart_cell){{0,0,0},{0,0,0},0,0,0} +#define TART_CELL_DATA_SIZE 16 // todo add number +#else #define NULL_CELL (struct tart_cell){0,0,0,0,0} +#define TART_CELL_DATA_SIZE 16 +#endif #define TART_OK 0 @@ -127,6 +133,8 @@ struct tart_buffer { struct tart_vec2 size; struct tart_vec2 position; struct tart_cell* cells; + char* data; + int data_count; }; /* Tart Window @@ -149,6 +157,7 @@ struct tart_cell tart_create_cell(char display, tart_byte style, tart_byte foreg #endif tart_byte tart_add_buffer(struct tart_window*, struct tart_buffer); +tart_byte tart_remove_buffer(struct tart_window*, tart_id); tart_byte tart_set_buffer(struct tart_window*, struct tart_buffer, tart_byte); struct tart_buffer* tart_get_buffer(struct tart_window*, tart_byte); diff --git a/source/tart.c b/source/tart.c index 05e8d27..1fea51e 100644 --- a/source/tart.c +++ b/source/tart.c @@ -5,7 +5,11 @@ #include "term.h" struct tart_cell tart_test() { - return (struct tart_cell){{0,0,0}, {0,0,0}, 0, 't'}; +#ifdef TART_RGB_COLORS + return (struct tart_cell){{0,0,0}, {0,0,0}, 0, 't',0}; +#else + return (struct tart_cell){0,0,0,0,0}; +#endif } struct tart_window tart_create_window() { struct tart_window window; @@ -18,20 +22,23 @@ struct tart_window tart_create_window() { } struct tart_buffer tart_create_buffer(tart_id id, struct tart_vec2 size, struct tart_vec2 position) { - unsigned int cell_count = position.x * position.y; + unsigned int cell_count = size.x * size.y; struct tart_cell* cells = (struct tart_cell*)malloc((size.x * size.y) * sizeof(struct tart_cell)); - memset(&cells,0, size.x * size.y); struct tart_cell cell = NULL_CELL; - struct tart_buffer buf = {cell_count,0,id,size,position,cells}; // -NOTE- dose not set the layer + char* data = (char*)malloc((size.x*size.y) * (sizeof(char) * TART_CELL_DATA_SIZE)); + unsigned int data_count = (size.x*size.y) * TART_CELL_DATA_SIZE; + struct tart_buffer buf = {cell_count,0,id,size,position,cells, data, data_count}; // -NOTE- dose not set the layer return buf; } #ifdef TART_RGB_COLORS struct tart_cell tart_create_cell(char display, tart_byte style, struct tart_rgb foreground, struct tart_rgb background) { - struct tart_cell b = {foreground, background, style, display}; + struct tart_cell b = {foreground, background, style, display,0}; return b; } #else -struct tart_cell tart_create_cell(char display, tart_byte style, tart_byte foreground, tart_byte background) { + +struct tart_cell tart_create_cell(char display, tart_byte style, + tart_byte foreground, tart_byte background) { return (struct tart_cell){foreground,background,style,display,0}; } #endif @@ -65,24 +72,3 @@ struct tart_cell tart_set_cell(struct tart_buffer* buffer, struct tart_cell cell return c; } -int render_cell(struct tart_cell* cell, char* cell_buffer, unsigned char buffer_size) { - unsigned char cell_size = 10; - -#ifdef TART_RGB_PALET - - sprintf(cell_buffer, "\x1b[%i;%i;%im%c\x1b[0m",cell->style, cell->foreground.r, cell->background.r, cell->display); - -#endif - return TART_OK; -} -int tart_render(struct tart_buffer* buffer) { - for(int i = 0; i < buffer->cell_count; i++) { - for(int y = 0; y < buffer->size.x; y++) { - for(int x = 0; x < buffer->size.x; x++) { - - } - } - } - - return 0; -} diff --git a/testing/test_tart.cpp b/testing/test_tart.cpp index c9df5a5..ec85623 100644 --- a/testing/test_tart.cpp +++ b/testing/test_tart.cpp @@ -17,9 +17,14 @@ void tart_run(struct pickle_shelf* shelf) { pickle_shelf __pickle_shelf__ = *shelf; CREATEJAR(tart_objects_test); PICKLE(Test_create_buffer) { + tart_vec2 size = {25,25}; + tart_vec2 position = {0,0}; - struct tart_buffer buffer_correct = {0,0,25,{20,20},{0,0}, 0}; - struct tart_buffer buffer_test = tart_create_buffer(25,{20,20},{0,0}); + int data_count = (size.x*size.y) * TART_CELL_DATA_SIZE; + + unsigned int cell_count = (size.x * size.y); + struct tart_buffer buffer_correct = {cell_count,0,25,size,position,0,0,data_count}; + struct tart_buffer buffer_test = tart_create_buffer(25,size,position); if(DIFFERENT(buffer_correct.cell_count,buffer_test.cell_count)) ASSERT("Cell count not the same.",false); @@ -35,16 +40,14 @@ void tart_run(struct pickle_shelf* shelf) { ASSERT("position.x is not the same.",false); if(DIFFERENT(buffer_correct.position.y,buffer_test.position.y)) ASSERT("position.y is not the same.",false); + if(DIFFERENT(buffer_correct.data_count,buffer_test.data_count)) + ASSERT("data_counts are not the same.",false); ASSERT("GOOD",true); }(); PICKLE(Test_create_cell) { - tart_byte f = 20; - tart_byte b = 40; - struct tart_cell cell_correct = {f, b, '1', 'f'}; - struct tart_cell cell_test = tart_create_cell('f', '1', f, b); #ifdef TART_RGB_COLOR struct tart_rgb b = {80,80,80}; struct tart_rgb f = {80,80,80}; @@ -55,9 +58,13 @@ void tart_run(struct pickle_shelf* shelf) { if(!rgb_test(&cell_correct.background, &cell_test.background)) ASSERT("background dose not match.",false); #else - if(DIFFERENT(&cell_correct.foreground, &cell_test.foreground)) + tart_byte f = 20; + tart_byte b = 40; + struct tart_cell cell_correct = {f, b, '1', 'f',0}; + struct tart_cell cell_test = tart_create_cell('f', '1', f, b); + if(DIFFERENT(cell_correct.foreground, cell_test.foreground)) ASSERT("Forground dose not match.",false); - if(DIFFERENT(&cell_correct.background, &cell_test.background)) + if(DIFFERENT(cell_correct.background, cell_test.background)) ASSERT("background dose not match.",false); #endif if(DIFFERENT(cell_correct.style, cell_test.style)) @@ -106,9 +113,14 @@ void tart_run(struct pickle_shelf* shelf) { }(); PICKLE(Test_set_cell) { +#ifdef TART_RGB_COLORS tart_rgb foreground = {90,90,90}; tart_rgb background = {80,80,80}; +#else + tart_byte foreground = 9; + tart_byte background = 8; +#endif struct tart_cell cell = tart_create_cell('0',10,foreground, background); struct tart_buffer buffer = tart_create_buffer(10, {10,20}, {10,20}); struct tart_window window = tart_create_window(); @@ -120,9 +132,15 @@ void tart_run(struct pickle_shelf* shelf) { }(); PICKLE(Test_get_cell) { +#ifdef TART_RGB_COLORS tart_rgb foreground = {90,90,90}; tart_rgb background = {80,80,80}; +#else + tart_byte foreground = 9; + tart_byte background = 8; +#endif + struct tart_cell cell = tart_create_cell('0',10,foreground, background); struct tart_buffer buffer = tart_create_buffer(10, {10,20}, {10,20}); struct tart_window window = tart_create_window();