fixed the TART_CELL_DATA_SIZE and used malloc in the test
This commit is contained in:
@@ -25,7 +25,7 @@ extern "C" {
|
|||||||
#define TART_CELL_DATA_SIZE 16 // todo add number
|
#define TART_CELL_DATA_SIZE 16 // todo add number
|
||||||
#else
|
#else
|
||||||
#define NULL_CELL (struct tart_cell){0,0,0,0}
|
#define NULL_CELL (struct tart_cell){0,0,0,0}
|
||||||
#define TART_CELL_DATA_SIZE 16
|
#define TART_CELL_DATA_SIZE 20
|
||||||
#endif
|
#endif
|
||||||
#define TART_OK 0
|
#define TART_OK 0
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ struct tart_window tart_create_window() {
|
|||||||
for(int g = 0; g < (window.size.x * window.size.y * sizeof(char) * TART_CELL_DATA_SIZE)+ 100; g++) {
|
for(int g = 0; g < (window.size.x * window.size.y * sizeof(char) * TART_CELL_DATA_SIZE)+ 100; g++) {
|
||||||
window.data[g] = '\0';
|
window.data[g] = '\0';
|
||||||
}
|
}
|
||||||
|
window.data_count = (window.size.x * window.size.y * sizeof(char) * TART_CELL_DATA_SIZE)+ 100;
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +91,7 @@ tart_byte tart_draw_window(struct tart_window * window, char* rend_buffer) {
|
|||||||
for (int x = 0; x < window->buffers[b].size.x; x++) {
|
for (int x = 0; x < window->buffers[b].size.x; x++) {
|
||||||
// add data to window c buffer.
|
// add data to window c buffer.
|
||||||
struct tart_cell cell = window->buffers[b].cells[(y*window->buffers[b].size.x) + x];
|
struct tart_cell cell = window->buffers[b].cells[(y*window->buffers[b].size.x) + x];
|
||||||
char pre[20];
|
char pre[TART_CELL_DATA_SIZE];
|
||||||
int size = sprintf(pre, "\033[%d;%d;%dm%c\033[0;0m", (int)cell.style, cell.foreground, cell.background, cell.display);
|
int size = sprintf(pre, "\033[%d;%d;%dm%c\033[0;0m", (int)cell.style, cell.foreground, cell.background, cell.display);
|
||||||
for(int preIdx = 0; preIdx < size; preIdx++) {
|
for(int preIdx = 0; preIdx < size; preIdx++) {
|
||||||
window->data[(y*window->buffers[b].size.x) + x + offset] = pre[preIdx];
|
window->data[(y*window->buffers[b].size.x) + x + offset] = pre[preIdx];
|
||||||
@@ -106,7 +107,7 @@ tart_byte tart_draw_window(struct tart_window * window, char* rend_buffer) {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fwrite(window->data, sizeof(char), (window->size.x * window->size.y * sizeof(char))+ 100 , stdout);
|
fwrite(window->data, sizeof(char), window->data_count, stdout);
|
||||||
return TART_OK;
|
return TART_OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
#include <tart.h>
|
#include <tart.h>
|
||||||
|
#include <memory.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main (int argc, char *argv[]) {
|
int main (int argc, char *argv[]) {
|
||||||
struct tart_window window = tart_create_window();
|
struct tart_window window = tart_create_window();
|
||||||
struct tart_buffer mainbuff = tart_create_buffer(109, {20,20},{20,20});
|
struct tart_buffer mainbuff = tart_create_buffer(109, {100,50},{20,20});
|
||||||
struct tart_cell cells[20*20];
|
struct tart_cell* cells = (struct tart_cell*)malloc(mainbuff.cell_count * sizeof(struct tart_cell));
|
||||||
for(int i = 1; i < 20*20; i += 2) {
|
for(int i = 1; i < mainbuff.cell_count; i += 2) {
|
||||||
cells[i] = tart_create_cell('^', TART_STYLE_BOLD, TART_COLOR_BLACK_FOREGROUND, TART_COLOR_WHITE_BACKGROUND);
|
cells[i] = tart_create_cell('^', TART_STYLE_BLINKING, TART_COLOR_BLACK_FOREGROUND, TART_COLOR_WHITE_BACKGROUND);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < + 20*20; i += 2) {
|
for(int i = 0; i < + mainbuff.cell_count; i += 2) {
|
||||||
cells[i] = tart_create_cell('^', TART_STYLE_BOLD, TART_COLOR_WHITE_BACKGROUND, TART_COLOR_BLACK_BACKGROUND);
|
cells[i] = tart_create_cell('^', TART_STYLE_BLINKING, TART_COLOR_RED_FOREGROUND, TART_COLOR_BLACK_BACKGROUND);
|
||||||
}
|
}
|
||||||
tart_add_cells_to_buffer(&mainbuff, cells);
|
tart_add_cells_to_buffer(&mainbuff, cells);
|
||||||
|
|
||||||
char* t;
|
char t[1] = {'0'};
|
||||||
tart_add_buffer(&window, mainbuff);
|
tart_add_buffer(&window, mainbuff);
|
||||||
tart_draw_window(&window, t);
|
tart_draw_window(&window, t);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user