From 5df8a3007079db5b4549dabc3fd2d5d9f8427c71 Mon Sep 17 00:00:00 2001 From: PreacherDHM Date: Fri, 31 Oct 2025 16:53:27 -0700 Subject: [PATCH] added nomi spirel --- .gitignore | 1 + bin/TartLib.a | Bin 14674 -> 0 bytes buffer.buf | 0 source/CMakeLists.txt | 2 + source/editor.c | 17 ++++- source/main.c | 7 +- source/nomi.c | 165 ++++++++++++++++++++++++++++++++++++++++++ source/nomi.h | 3 +- 8 files changed, 190 insertions(+), 5 deletions(-) delete mode 100644 bin/TartLib.a delete mode 100644 buffer.buf diff --git a/.gitignore b/.gitignore index 69f56a1..f3bc4e8 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ CMakeUserPresets.json .cache build +bin diff --git a/bin/TartLib.a b/bin/TartLib.a deleted file mode 100644 index 5070913140167b48014493f5502c0f117b8e65c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14674 zcmds74{)5tb^lJXv2bjk_)}_Pr@ex03=KkZu(4u~bHe`MgQCVzj*7 z_4jt)yW3mexsZ@)Cp+_f-|p|deedn=+dtp#{@VIzGS;zS{%xW1&~(R|rnPID)~sm` zg&Gyfe1}5KtJiXdE%P16X>go5H9y~H$%~Hj(LWv0FC~(RXxwRQOQoafL|YqT=|r-- zt+S`EKi#&qzr8(?1e!{u+hQHjWLsZOO8c6iS+j`qeX;eir-KOkNwx*S?PS&FmTg`-y$2(Ke ztzC&W)Ih2?DU!<|5}Qt>U>L<>(10r6-q{oH-ChRiYS&O4{K?)OWo#%-x;I%dYb?># zr87q3ac)1IrY0~2qXjNWmvXBHFUpE1qua|YAmPNEYD@Q)Nr}PQ&Yo>t9Gz%uPbL!O zNVKmHwJum+vNK&|PzfW8(oMSB`g&8H>CWCBolWDcp(063Dkn+RaZRXZYKS%T$_QZg z{HDf6bo=6a&F!~`LTeO8oqx;xC*Aw*stE)z0O$~KHaMk}ppKKjrW6mWXxLfgEOa8C zf8H--+^OL3T!II3fsBf9I^)icxCNqIxGn1zK=$?qhj$Z@ao;N;k=e`;fx%(-J>(g1 z3xR=Mg)6@NT>w*B;?QHqNt-t?74in%w>|&Zk!v1woR`VmgOqoYUcm#f(2PcU_-kfx!CTz(^>c8tD>Xc-!*fD1inl!CEClX zl6l!*BFOV~%Gar%15Jw@n0Q}n8rU@xNCz3r*Jx#*W=ODGBHtsuAq)Nsc zJnUV2a_M;ry)aiP)&dOTN!3OUyH1f%o-X<F+Ht5?QdsiHXI8E5a@428aqix@@zbG|cmHPO=1|k>hE)wsp;e8mRyQ@S zS`}LPKq4OUqG=}F`l*{q&K#13hsuv^PK^`D5hi^*V5P4GjY8mw2b{p;^?@Y|=G6^> zc_}b@DD=>)Wl{a_)ofgNMNKC-G;KZM2yuE9>1{>&ql6>8La!n{SETPG9AOE)g#M5s zE8Wi#ju8XGf zuVwltO!~v6{0}qzdXxTOiT*g#>rMJ^l<0ez{>vu)ffD^7({C{8kCo`-O#hfkzpF$q zFnys(_e%7|SQAnR(M#&*5lts-?PchcrCK1hbDST}R-)Gyy|kQKtGu}!g9|!WDR0*} z7YCTeB`sg_v8x=6M;s_Wg(f^#8+w(m1KY&7q?L~YdkBweGknePC=z5(h{5&z-GVRS z^rav;`nJ;hhC;cIAl{FslKdyD;68A&|5+}m>Px_$W&GQWt3CqkPw`Ze{{r*BW$_OK zC;PvNF9oT$f&p924F#{ZIWk-3fW?=Y_VCHS{9KF0VBz$olt{37G39|Hdx zeIhoZLw$%R^$5r z#`+smKV3yW^?RfF{*V5_Qt5baf7-!+Ku@||TaxH8|H!l-EMTV~cbbc5W>yEaI7QmV zY3`#y_!W4B{|*8X$WIBEa34o(d>iAooI%Ft;Cm$=kx%`f0&O|aBVm#w#7})e_}^ii zuz zyn&l?-ZpSk&P4+^hCt<_zA1XIGjJNu1rHhcJOjVQz^^m#I~b=A{j!Uk&lvo) zCKh~?ftz-Ij&Z7E@nuAvn1LHx0#1h^=i`R_Cm5%XIW9e01^*KZ|1pna`z>7T&lxz? zso<|x!Ot^JzGjYZ?=ep0HSsw-e-haoC$BQ_8x6hJGfr|iikRcv$O*D>86L5-iE)yD zqk%UwE^?^tDQv7FC#0ylKXOqN61H$z$8NE3S%2=fa9K}&)52vvnX_$e#Tm-X9Hu5__q z)^F=AT-IYwLuyBNI=U6#bW(piB$iBcMH|wI$J0(jJerO=4O>$wry<#^6S3azZfsXO z4L!Z-L<9cqZ^d3O_Of+)TTg#OU$VC^kxcJE9+H&kz)obeJHa*ovwcFyPE}y`5t10D z7s9>lpE_0AZ;&+omrx%F3&7t|8T?r=B}tFWD>PLdON}$cfbbJ91v~vo#_ari z8Q7p$5A zvhoY>1BlRAV%tB?`E9%G`uhU%l72gX9W^S#!xq8LPhMED{b}+<*w2Nd_NR5DVZRYSpgEfK*!f9jrK-vk0pSg+a;+r(fh*^KoF~Jyl2Urv`RUZ;!|c`Hv3eCB z(|z#0`bqhTg&ARGN@=ft|A|ALfHJ3-&(1otc+INi_6og!*%E1a@VC6DraDmFp8pT~ zelR-w%VeA4051eT6PqhC%ZMGlxk7wO8UTnJJTm!i?q%XD>4Qa76_ACZ>__ZSEquuH zPkR2T|MdP`$WNW1dV8eh(U!+}J9uEK9-HF@OC0ad)3*7Dt0u$?ANR8Eq?aA4g8;Sb zESAj#h?3o14+0J^cD|*oDvI9>A)|iYkL3K;!#Kh?feOj#dO61R;udhifkvq@sv<9X zZ_>&JuYHsK?-N4%!QsIBno4n4mqfxMUCxH!kB7?IZiqOE>aD6s1?Zw{kj-IVCIVS!7bADt3OmHw_nkX@4(UoQ@QE)1D z&aXkMv!a0$yWwdW&+p&OuEVE#JT#2B)8s(^eiXw$%ALug__pPN(X8`yF1Tm!WqG`T z+=Ac%I1s#}zp|V>cor$1F>lb#$&jLY29FQpBW|7yx^NRpmnrX9C|jP6bvDh-WopQ| z2i!ayJipEz-+7AC)e8W{bxJY3`pk$srONyV7~?OSMVE(c-S3||L^DDqlTVMh%J?cK zPim9*i^-EPd6I^#QzPy^QkeyY^H=)ZnB;}hx`6kx6 zW7H()K2Vc1yXS(>{P-ucI6S5{#R0NAb@`0*bz3&$#Q2#{Bjbg@(11IQ8E2YioZwei zy^ldZtF~szjr1r?eyx0JHx1TDs5xb1RUXKPrx@JPTP9?nU1bln6W-v08VKS}IaBPE z$Fc!mxg`;^PBt>rd@OlXiI&bd6-H;osM$Z}M_%{1Ucrt@nB?JGKHL|r*Z|@LBpS-x z*Hu5)r5eY;f$?u5+X|Lfy`$g9Nb*{6*vZ^k%d-F+qS+mL@&E|}=Va-q7$&Jf*2@;_ z155>PB&^n8X59=-HA(@B*0c8`%ea@_3_qo*AzViW=|W9bE7Ywz57kt$T$h#t4yrTNfRe-0e$wW+s%)dhp zvwkp3qq%aPA35mxt^3=9@8p6vyJL7r_I^y2XYmD{O6`Kj#R#UC20LxfIfyz@jvJY1 zZ$6en-yi(_eykPAR^1$xCvP}}nlJtP z7lU=Q=&$wS9PJ}v>~4XEI~n1tbqpSYj>K`xd8mnav1mFFT+Q#F_9JZb2ICQ&2Tl=8SMC8hPDG{~x6^&`g(MP|pRaXZA{X&k?h%blnB| zF^h|W1Vk+^QxH5*4}lo3NnQo&X0*8bZ;JfiAY&0=bd?I$m6^1XI>|GpNiaujSxLpx z>k3087S;9&lK5ma`!3fnZZ|YF-rn3n*BmH9_Z^nU*Da5GDsm^K?nbn+n{kl3m&X9C zYwZ5;mm=tYFob6=p3B{d;9tSwzUSrcMEnY570<;#r_aTg0a{Nu!e?oIkaP3<25X<0 zGcdPyLqIVu1u0HU2$kdzeUG9-1bs!$&eHk(^GrW$(rf;uDE|c0?=GX?S)`w1I{g$D z<=4cEbU8P1%jn@EeHoPx;TC#{eF;TYXC0fEeuGIj?kB{VUd_HeOkYJm?IOSS)>_g) z_47Q_A2H?E=*uHSKf&~`m(jmkwErB_8%(;s+M?vsomdJN=_UGW{-c=b2uud?%RRT9%(Lco0@0P?daCcQfb= zT7vR%Brxu)vuR1IJ_2kxkj+Iy|uV@r@(&?%lQ%yymE&75aX%&O01*$5TYH7zrwicJHU4{ z-o$&!yLC3_j~M?J<6{3XS=h+cikv}7lpxlq_U zSAT8(4&FN#`71P=)6clgzm~@VGMCPVMek#b6Tf-3ebKW02EpkQ-+~j|O z`@7A5s0yCp{!aX#Fyyb`{%+$T@KB&~aZ{*tSiMWQ%o`mRF7ryp!ew6BXW=r>jasU3zvCf(!yn)sN>2N zy)qxHv~ZaZJPVikK<*rf9GMR?7Qf5~`z&1MgHa2Y`QR7zjP`5n|GM=rJx`?Zg8D{S z82G!EFO#k0`l9YdO_e9PvRk&KW+YMXSAY!Ls65C z*!ruT(FPZ4{-5@Yb_3_P)L&A5TIbM^$<)9i N?c;ON|Lu(Se*jqngp&XO diff --git a/buffer.buf b/buffer.buf deleted file mode 100644 index e69de29..0000000 diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 5dd2f4f..3a745d0 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -5,6 +5,8 @@ set(SOURCE_FILES commands.h editor.h editor.c + nomi.c + nomi.h ) add_executable(${PROJECT_NAME} ${SOURCE_FILES}) diff --git a/source/editor.c b/source/editor.c index bec2a6c..6253f1d 100644 --- a/source/editor.c +++ b/source/editor.c @@ -2,6 +2,9 @@ #define EDITOR_H #include +#include "editor.h" + + struct tart_window window; @@ -15,6 +18,14 @@ struct commandMode { char* input; }; +struct bottomBar { + struct tart_cstring mode_cstr; + struct tart_cstring file_cstr; + struct tart_cstring branch_cstr; + struct tart_cell bottomBar_cell; +}; + + struct InsertMode { }; @@ -31,12 +42,12 @@ void InitNormalMode(); void InitNomiMode(); -void CommandMode(struct CommandMode cmdm) { +void CommandMode(struct commandMode cmdm) { tart_draw_cstring_position(tart_get_buffer(&window, 0), - commandInput_cstr, + cmdm.input_cstr, (struct tart_vec2){16,10}); tart_draw_cstring_position(tart_get_buffer(&window, 0), - commandPrompt_cstr, + cmdm.prompt_cstr, (struct tart_vec2){0,10}); } void InsertMode(); diff --git a/source/main.c b/source/main.c index 2920f7b..88503aa 100644 --- a/source/main.c +++ b/source/main.c @@ -21,6 +21,7 @@ #include #include "commands.h" +#include "nomi.h" #define KEY_BACKSPACE 127 #define COMMAND_MODE 0x01 @@ -127,7 +128,7 @@ int main (int argc, char *argv[]) { // Window Createion struct tart_window window = tart_create_window(); struct tart_buffer buf = tart_create_buffer(0, - (struct tart_vec2){40,20}, + term_current_size(), (struct tart_vec2){0,0}); tart_add_buffer(&window, buf); @@ -257,6 +258,10 @@ int main (int argc, char *argv[]) { keyPressed = 0; } drawTextBox(&window, &inputRtb, 0); + + + DrawBranch(NULL, &window, 0); + tart_draw_window(&window, 0); if(mode == COMMAND_MODE) { tart_draw_cstring_position(tart_get_buffer(&window, 0), diff --git a/source/nomi.c b/source/nomi.c index e69de29..3bea9eb 100644 --- a/source/nomi.c +++ b/source/nomi.c @@ -0,0 +1,165 @@ +#include +#include +#include "nomi.h" +#include + +#define SPIREL_MOD 0.618055f + +struct nomiSpirel { + struct tart_cell selected_cell; + struct tart_cell unselected_cell; + struct tart_vec2 startPos; + struct tart_vec2 size; + struct tart_vec2 endPos; + unsigned char oreantation; + int fibonacci[3]; +}; + +struct nomiMenu { + struct nomiSpirel branches[30]; + struct tart_vec2 startPos; + struct tart_vec2 size; + struct tart_vec2 origin; + unsigned char brachIds[30]; +}; + +/* + * This will Init Nomi + */ +void NomiInit(); +/* + * This will create the truk of the note. + * */ +trunk* CreateTrunk(); + +/* + * This is a test + * */ +void CreaetBranch(trunk* trunk); + +/* + * Locate Branch + * */ +branch* LocateBranch(); + +/* + * Draw Branch + */ +void DrawBranch(branch* branch, struct tart_window* w, tart_byte b) { + struct tart_cell cell = NULL_CELL; + cell.display = '*'; + struct nomiSpirel spirel; + int SizeOfFile = 210; + char cellChart[] = {'%','*','\\','/','l','&','b','+','=','^',':'}; + int iderations = 0; + int fib = 0; + int fib1 = 1; + int fib2 = 0; + struct tart_vec2 pos = {40,10}; + struct tart_vec2 nextPos; + unsigned int count = 0; + + while(SizeOfFile/10 > fib) { + + // This is the direction that the spirel is oreanted + // 0 = up + // 1 = left + // 2 = down + // 3 = right + + if(iderations < 3){ + iderations++; + } else { + iderations = 0; + } + + fib = fib1 + fib2; + fib2 = fib1; + fib1 = fib; + + + cell.display = cellChart[rand_r(&count)%11]; + + switch(iderations) { + case 0: // up + pos.x += fib/2; + pos.y += fib/2; + for(int i = 0; i < fib/2; i ++){ + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x-(i-2), pos.y-i}); + count++; + cell.display = cellChart[rand_r(&count)%11]; + + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x-(i-2) + 1, pos.y-i}); + } + break; + case 1: // right + pos.x += fib/2; + pos.y -= fib/2; + for(int i = 0; i < fib/2; i ++){ + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x - i, pos.y+i}); + count++; + cell.display = cellChart[rand_r(&count)%11]; + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x-i + 1, pos.y+i}); + } + break; + case 2: // down + pos.x -= fib/2; + pos.y -= fib/2; + for(int i = 0; i < fib/2; i ++){ + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x+(i+2), pos.y+i}); + count++; + cell.display = cellChart[rand_r(&count)%11]; + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x+(i+2) + 1, pos.y+i}); + } + break; + case 3: // left + pos.x -= fib/2; + pos.y += fib/2; + for(int i = 0; i < fib/2; i ++){ + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x+i, pos.y-i}); + count++; + cell.display = cellChart[rand_r(&count)%11]; + tart_draw_cell_position(tart_get_buffer(w, b), + cell, + (struct tart_vec2){pos.x+ i + 1, pos.y-i}); + } + break; + } + + count++; + } + + //for(int i = 0; i < rint((SizeOfFile/10.0f)*SPIREL_MOD); i++) { + // + //} + + +} + +/* + * Create Nomi File + * + * name: the name of the file that will be created. + */ +FILE CreateNomiFile(const char* name); + +/* + * Save Nomi File + * + * file: the pointer to the nomi file. + */ +void SaveNomiFile(FILE* file); diff --git a/source/nomi.h b/source/nomi.h index 153b83d..418d7ef 100644 --- a/source/nomi.h +++ b/source/nomi.h @@ -14,6 +14,7 @@ #ifndef NOMI_H #define NOMI_H +#include "tart.h" #define BRNACH 0x01 #define TRUNK 0x00 #define MAX_CHILDREN 5 @@ -61,7 +62,7 @@ branch* LocateBranch(); /* * Draw Branch */ -void DrawBranch(branch* branch); +void DrawBranch(branch* branch, struct tart_window* w, tart_byte b); /* * Create Nomi File