diff options
Diffstat (limited to 'fbwarn/src/warn.c')
-rw-r--r-- | fbwarn/src/warn.c | 113 |
1 files changed, 59 insertions, 54 deletions
diff --git a/fbwarn/src/warn.c b/fbwarn/src/warn.c index db2750d..a495f6b 100644 --- a/fbwarn/src/warn.c +++ b/fbwarn/src/warn.c @@ -1,76 +1,81 @@ #include "raylib.h" #include "parseBVG.h" +#include "extString.h" +#include <stdbool.h> #include <string.h> #include <stdlib.h> #include <unistd.h> int main(void) { - char *rectA, *rectB, *rectC, *rectD, *rectAFree, *rectBFree, *rectCFree, *rectDFree, *singleA, *singleB, *singleC, *singleD; - char *rectE, *rectF, *rectEFree, *rectFFree, *singleE, *singleF; - rectAFree = rectA = strdup("rectangle (x=10,y=20,\nwidth=100,\nheight=100,\ncolor='#9787CFFF',\nfill=true,\nthickness=1.0)\n"); - if (rectA == NULL) - return 1; - singleA = multiToSingle(rectA); - free(rectAFree); - - rectBFree = rectB = strdup("rectangle (x=130,y=160,\nwidth=100,\nheight=60,\ncolor='#88C2B1FF',\nfill=false,\nthickness=5.0)\n"); - if (rectB == NULL) - return 1; - singleB = multiToSingle(rectB); - free(rectBFree); + FILE *bvgfile = readFile("./test.bvg"); + char *line = NULL; + size_t len = 0; + ssize_t nread = 0; + ssize_t totallinesize = 0; + ssize_t funcCount = 0; + int inComment = 0; + char *funcline = strdup(""); + char **funcs = malloc(1*sizeof(char)); + + while ((nread = getline(&line, &len, bvgfile)) != -1) { + if (strstr(line, "/*")) { + inComment += 1; + continue; + } + if (strstr(line, "*/")) { + inComment -= 1; + continue; + } + if (inComment != 0 || strstr(line, "//") || line[0] == '\n') + continue; + void *newfuncline = realloc(funcline, sizeof(char)*(strlen(funcline)+strlen(line)+1)); + if (newfuncline) + funcline = newfuncline; + else + exit(2); + totallinesize=totallinesize+nread; + sprintf(funcline, "%s%s", funcline, line); + if (line[nread-2] == ')') { + funcCount += 1; + void *newfuncs = realloc(funcs, sizeof(char)*(sizeof(funcs)+1+strlen(funcline)*2)); + if (newfuncs) + funcs = newfuncs; + else + exit(2); + funcs[funcCount-1]=strdup(funcline); + totallinesize = 0; + free(funcline); + funcline = strdup(""); + } + } + free(line); - rectCFree = rectC = strdup("circlesegment (x=300, y=200,radius=100,color='#BE79A7FF',startangle=0.0,endangle=90.0,segments=10)"); - if (rectC == NULL) - return 1; - singleC = multiToSingle(rectC); - printf("SingleC %s", rectC); - free(rectCFree); + for (int i = 0; i<funcCount; i++) { + printf("%s", funcs[i]); + } - rectDFree = rectD = strdup("ring (x=300,y=50,innerradius=20,outerradius=30,startangle=0.0,endangle=360.0,segments=10,color='#DD98E5FF')"); - // rectDFree = rectD = strdup("text (text='haiii :3',x=300,y=10,size=50,color='#DD98E5FF')"); - if (rectD == NULL) - return 1; - singleD = multiToSingle(rectD); - free(rectDFree); + fclose(bvgfile); - rectEFree = rectE = strdup("roundedrectangle (x=90,y=300,\nwidth=92,\nheight=20,\ncolor='#BE79A7FF',\nfill=false,\nthickness=3.0,roundness=5.0,segments=100)\n"); - if (rectE == NULL) - return 1; - singleE = multiToSingle(rectE); - free(rectEFree); + char *call = strdup(multiToSingle(funcs[0])); + char *args[2]; + call=call+strlen("IMG ("); + char *callTrim = trim(call); + callTrim[strlen(callTrim)-1]='\0'; + collectArgs(args, callTrim, 2); + BVGIMG *imgsize = BVGParseIMG(args); - rectFFree = rectF = strdup("circle (x=700,y=300,radius=90.0,color='#7676DCFF')\n"); - if (rectF == NULL) - return 1; - singleF = multiToSingle(rectF); - free(rectFFree); - - - InitWindow (800, 400, ":3"); + InitWindow (imgsize->width, imgsize->height, ":3"); while (!WindowShouldClose ()) { BeginDrawing (); ClearBackground (RAYWHITE); - char *parseA = strdup(singleA); - matchFunctionCall(parseA); - - char *parseB = strdup(singleB); - matchFunctionCall(parseB); - - char *parseC = strdup(singleC); - matchFunctionCall(parseC); - char *parseD = strdup(singleD); - matchFunctionCall(parseD); - - char *parseE = strdup(singleE); - matchFunctionCall(parseE); + for (int i = 0; i<funcCount; i++) { + matchFunctionCall(multiToSingle(funcs[i])); + } - char *parseF = strdup(singleF); - matchFunctionCall(parseF); - char *text = malloc(strlen("100")*100); sprintf(text, "%d", GetFPS()); DrawText(text, 2, 2, 20, MAROON); |