Made the rtb only use 1 string and made the Nomai Branches have a start pos and use a beter cordent system

This commit is contained in:
2025-11-03 13:05:45 -08:00
parent ae02fcae71
commit 2daecbf7c0
3 changed files with 49 additions and 40 deletions

View File

@@ -34,7 +34,6 @@ unsigned char __Close__ = 0;
void programClose(int sig) {
term_threaded_input_stop();
term_enable_cursor();
__Close__ = 1;
}
@@ -57,41 +56,36 @@ void SetRichTextBox(richTextBox* rtb, char* text, int len,
char* p = text;
unsigned char found = 0;
rtb->stringCount = 5;
rtb->text = text;
int sizeOfString = 0;
for(int i = 0; i < len; i++) {
sizeOfString = i - textOffset;
if(p[i] == '\n') {
// This means that it will start splitting strings
found = 1;
//p[i] = '\0'; // Sets this to be the end of the string
//Add the address to the cstring
if(lineCount == 5) {
break;
}
rtb->textBox[lineCount] = tart_cstring(p + textOffset,
sizeOfString, rtb->cell);
textOffset = i + 1; // Sets the start of the next string.
lineCount++;
}
}
tart_cstring_free(&rtb->textBox[lineCount]);
rtb->textBox[lineCount] = tart_cstring(p + textOffset,
strlen(p), rtb->cell);
}
void drawTextBox(struct tart_window* window, richTextBox* rtb, tart_byte id) {
struct tart_buffer* sb = tart_get_buffer(window, id);
// This makes sure that we dont go outside of memeery with the string count.
for (int lineNo = 0; lineNo < rtb->stringCount; lineNo++) {
tart_draw_cstring_position(sb,
rtb->textBox[lineNo],
(struct tart_vec2){rtb->pos.x,rtb->pos.y + lineNo});
int lineNo = 0;
int lineStart = 0;
for(int i = 0; i < strlen(rtb->text); i++) {
if(rtb->text[i] == '\n') {
rtb->textBox[0] = tart_cstring(
&rtb->text[0]+lineStart,
i - lineStart,
NULL_CELL);
tart_draw_cstring_position(sb,
rtb->textBox[0],
(struct tart_vec2){rtb->pos.x, rtb->pos.y+lineNo});
tart_cstring_free(&rtb->textBox[0]);
lineNo++;
lineStart = i + 1;
}
}
rtb->textBox[0] = tart_cstring(
&rtb->text[0]+lineStart,
strlen(rtb->text) - lineStart,
NULL_CELL);
tart_draw_cstring_position(sb,
rtb->textBox[0],
(struct tart_vec2){rtb->pos.x, rtb->pos.y+lineNo});
tart_cstring_free(&rtb->textBox[0]);
}
//############ Init Commands ############
@@ -124,6 +118,10 @@ int main (int argc, char *argv[]) {
char commandInput[255] = "";
unsigned char keyPressed = 0;
branch b = {
.startPos = (struct tart_vec2){term_current_size().x/2,term_current_size().y- 10},
};
// Window Createion
struct tart_window window = tart_create_window();
@@ -260,7 +258,8 @@ int main (int argc, char *argv[]) {
drawTextBox(&window, &inputRtb, 0);
DrawBranch(NULL, &window, 0);
DrawBranch(&b, &window, 0);
tart_draw_window(&window, 0);
if(mode == COMMAND_MODE) {
@@ -285,5 +284,6 @@ int main (int argc, char *argv[]) {
}
tart_destroy_window(&window);
term_enable_cursor();
return 0;
}

View File

@@ -50,13 +50,21 @@ void DrawBranch(branch* branch, struct tart_window* w, tart_byte b) {
cell.display = '*';
struct nomiSpirel spirel;
int SizeOfFile = 600;
char cellChart[] = {'%','*','\\','/','l','&','b','+','=','^',':'};
char cellChart[] = {'%','*','\\','/','l','&','7','+','=','^',':'};
unsigned int iderations = 0;
struct tart_vec2 pos0 = {15+30, 0/2};
struct tart_vec2 c0 = { 0+30,30/2}; // controle point 0
struct tart_vec2 c1 = {30+30,19/2}; // controle point 1
struct tart_vec2 pos1 = {17+30,11/2};
struct tart_vec2 pos0 = {
(( 3) * -1)+branch->startPos.x,
(( 0/2) * -1)+branch->startPos.y};
struct tart_vec2 c0 = {
(( 25) * -1)+branch->startPos.x,
((35/2) * -1)+branch->startPos.y}; // controle point 0
struct tart_vec2 c1 = {
(( -10) * -1)+branch->startPos.x,
((35/2) * -1)+branch->startPos.y}; // controle point 1
struct tart_vec2 pos1 = {
(( 3) * -1)+branch->startPos.x,
((10/2) * -1)+branch->startPos.y};
struct tart_vec2 dpos = {0,0};
float count = 0;
@@ -74,10 +82,10 @@ void DrawBranch(branch* branch, struct tart_window* w, tart_byte b) {
cell.display = cellChart[rand_r(&iderations)%11];
dpos = (struct tart_vec2){
(1-count)*((1-count)*((1-count)*pos0.x + count * c0.x) + count *
((1-count)*c0.x + count*c1.x)) +
count *((1-count)*((1-count)*c0.x + count * c1.x) +
count * ((1-count)*c1.x + pos1.x)),
(1-count)*((1-count)*((1-count)*pos0.x + count * c0.x) +
count * ((1-count)*c0.x + count*c1.x)) +
count * ((1-count)*((1-count)*c0.x + count * c1.x) +
count * ((1-count)*c1.x + pos1.x)),
(1-count)*((1-count)*((1-count)*pos0.y + count * c0.y) + count *
((1-count)*c0.y + count*c1.y)) +
count *((1-count)*((1-count)*c0.y + count * c1.y) +

View File

@@ -30,6 +30,7 @@ typedef struct {
branchId children[MAX_CHILDREN]; // holds the branchIds of its children
void* parent; // points the the branches parent
char type; // holds the type as in if this struct is a branch or a trunk
struct tart_vec2 startPos; // the starting position of the branch
branchId id; // This holds the branch id.
} branch;