aboutsummaryrefslogtreecommitdiff
path: root/fbwarn
diff options
context:
space:
mode:
authoraxtloss <axtlos@getcryst.al>2024-02-27 21:28:32 +0100
committeraxtloss <axtlos@getcryst.al>2024-02-27 21:28:32 +0100
commitcb1400e74370e87b12dae27a5b725a6db01daf0e (patch)
tree10f2cce2620c73c360cfb53ba454d4b1a515d5aa /fbwarn
parenta6e33089e20b299e1c36ab5e91c29125e890b2bc (diff)
downloadfsverify-cb1400e74370e87b12dae27a5b725a6db01daf0e.tar.gz
fsverify-cb1400e74370e87b12dae27a5b725a6db01daf0e.tar.bz2
Add ellipse function
Diffstat (limited to 'fbwarn')
-rw-r--r--fbwarn/src/parseBVG.c47
-rw-r--r--fbwarn/src/warn.c11
2 files changed, 49 insertions, 9 deletions
diff --git a/fbwarn/src/parseBVG.c b/fbwarn/src/parseBVG.c
index 5b2a511..b7b8fb0 100644
--- a/fbwarn/src/parseBVG.c
+++ b/fbwarn/src/parseBVG.c
@@ -40,6 +40,15 @@ void BVGDrawRing(BVGRing *ring) {
DrawRing(center, ring->inRadius, ring->outRadius, ring->startAngle, ring->endAngle, ring->segmets, ring->color);
}
+void BVGDrawEllipse(BVGEllipse *ellipse) {
+ if (ellipse->fill) {
+ DrawEllipse(ellipse->centerX, ellipse->centerY, ellipse->horizontalRadius, ellipse->verticalRadius, ellipse->color);
+ } else {
+ DrawEllipseLines(ellipse->centerX, ellipse->centerY, ellipse->horizontalRadius, ellipse->verticalRadius, ellipse->color);
+ }
+ return;
+}
+
void BVGDrawTriangle(BVGTriangle *triangle) {
if (triangle->fill) {
DrawTriangle(triangle->corner1, triangle->corner2, triangle->corner3, triangle->color);
@@ -315,6 +324,37 @@ BVGRing *BVGParseRing(char *argv[8]) {
return result;
}
+BVGEllipse *BVGParseEllipse(char *argv[6]) {
+ BVGEllipse *result = malloc(sizeof(BVGEllipse));
+ size_t argN = 6;
+ char *args[argN];
+ char *knownArgs[6] = {"x", "y", "horizontalradius", "verticalradius", "fill", "color"};
+ orderArgs(args, argv, argN, knownArgs);
+ int x, y;
+ float horizontalRadius, verticalRadius;
+ bool fill;
+ Color *clr;
+ sscanf(args[0], "%d", &x);
+ sscanf(args[1], "%d", &y);
+ sscanf(args[2], "%f", &horizontalRadius);
+ sscanf(args[3], "%f", &verticalRadius);
+ fill = parseBoolValue(args[4]);
+ args[5] = args[5]+2;
+ args[5][strlen(args[5])-1] = '\0';
+ clr = parseColorFromHex(args[5]);
+ printf("X: %d, Y: %d", x, y);
+ printf("hRad: %f, vRad: %f", horizontalRadius, verticalRadius);
+ printf("fill: %d, Color: %s", fill, args[5]);
+ result->centerX=x; result->centerY=y;
+ result->horizontalRadius=horizontalRadius;
+ result->verticalRadius=verticalRadius;
+ result->fill=fill;
+ result->color=*clr;
+
+ free(clr);
+ return result;
+}
+
BVGTriangle *BVGParseTriangle(char *argv[8]) {
BVGTriangle *result = malloc(sizeof(BVGTriangle));
size_t argN = 8;
@@ -419,6 +459,13 @@ void matchFunctionCall(char *call) {
BVGRing *shape = BVGParseRing(argv);
BVGDrawRing(shape);
free(shape);
+ } else if (strcmp(function, "ellipse") == 0) {
+ char *argv[6];
+ call = call+strlen("ellipse (");
+ collectArgs(argv, call, 6);
+ BVGEllipse *shape = BVGParseEllipse(argv);
+ BVGDrawEllipse(shape);
+ free(shape);
} else if (strcmp(function, "triangle") == 0) {
char *argv[8];
call = call+strlen("triangle (");
diff --git a/fbwarn/src/warn.c b/fbwarn/src/warn.c
index 8adda19..c2ef7d3 100644
--- a/fbwarn/src/warn.c
+++ b/fbwarn/src/warn.c
@@ -38,7 +38,7 @@ int getFuncs(char *file, char ***ret) {
sprintf(funcline, "%s%s", funcline, line);
if (line[nread-2] == ')' || line[nread-1] == ')') {
funcCount += 1;
- newFuncsMem = sizeof(char)*(sizeof(funcs)+sizeof(funcline));
+ newFuncsMem = sizeof(char)*(sizeof(funcs)+sizeof(funcline)*funcCount);
void *newfuncs = realloc(funcs, newFuncsMem);
if (newfuncs)
funcs = newfuncs;
@@ -54,14 +54,7 @@ int getFuncs(char *file, char ***ret) {
free(line);
fclose(bvgfile);
- //char **alloc = realloc(*ret, newFuncsMem);
- //if (alloc)
- *ret = funcs;
- //else
- // exit(2);
- // free(alloc);
- //memcpy(*ret, funcs, newFuncsMem);
- //free(funcs);
+ *ret = funcs;
return funcCount;
}