summaryrefslogtreecommitdiff
path: root/src/main/engine/shape
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/engine/shape')
-rw-r--r--src/main/engine/shape/circle.h3
-rw-r--r--src/main/engine/shape/line.c69
-rw-r--r--src/main/engine/shape/line.h35
3 files changed, 107 insertions, 0 deletions
diff --git a/src/main/engine/shape/circle.h b/src/main/engine/shape/circle.h
index 72e69e1..67c3a46 100644
--- a/src/main/engine/shape/circle.h
+++ b/src/main/engine/shape/circle.h
@@ -20,12 +20,15 @@
#ifndef __CIRCLE_H__
#define __CIRCLE_H__
+#include "../domain/color.h"
+
typedef struct {
int outline;
float cx;
float cy;
float r;
int num_segments;
+ Color *color;
} Circle;
Circle *engine_circle_new(float cx, float cy, float r, int num_segments, int outline);
diff --git a/src/main/engine/shape/line.c b/src/main/engine/shape/line.c
new file mode 100644
index 0000000..7c0bc18
--- /dev/null
+++ b/src/main/engine/shape/line.c
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (C) 2025 Alessandro Iezzi <aiezzi AT alessandroiezzi PERIOD it>
+ *
+ * This file is part of Tris Game.
+ *
+ * Tris Game is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Tris Game is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Tris Game. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include <GL/gl.h>
+#include "line.h"
+
+Line *
+engine_line_new(float x1, float y1, float x2, float y2)
+{
+ Line *line = malloc(sizeof(Line));
+ line->x1 = x1;
+ line->y1 = y1;
+ line->x2 = x2;
+ line->y2 = y2;
+
+ return line;
+}
+
+void
+engine_render_line(Line *line)
+{
+ glLineWidth(5.0f);
+ glBegin(GL_LINES);
+ glColor3f(1.0f, 1.0f, 0.0f); /* Yellow */
+
+ glVertex2f(line->x1, line->y1);
+ glVertex2f(line->x2, line->y2);
+
+ glEnd();
+}
+
+void
+engine_render_lines(list_t *lines)
+{
+ if (lines == NULL || lines->size <= 0) return;
+
+ glLineWidth(5.0f);
+ glBegin(GL_LINES);
+ glColor3f(1.0f, 1.0f, 0.0f); /* Yellow */
+
+ list_node_t *current = lines->head;
+ do {
+ Line *line = current->data;
+
+ glVertex2f(line->x1, line->y1);
+ glVertex2f(line->x2, line->y2);
+
+ current = current->next;
+ } while (current != NULL);
+
+ glEnd();
+}
diff --git a/src/main/engine/shape/line.h b/src/main/engine/shape/line.h
new file mode 100644
index 0000000..c1a933d
--- /dev/null
+++ b/src/main/engine/shape/line.h
@@ -0,0 +1,35 @@
+/*-
+ * Copyright (C) 2025 Alessandro Iezzi <aiezzi AT alessandroiezzi PERIOD it>
+ *
+ * This file is part of Tris Game.
+ *
+ * Tris Game is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Tris Game is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Tris Game. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __ENGINE_LINE_H__
+#define __ENGINE_LINE_H__
+
+#include "../domain/color.h"
+#include "../../util/list.h"
+
+typedef struct Line {
+ float x1, y1, x2, y2;
+ Color *color;
+} Line;
+
+Line *engine_line_new(float x1, float y1, float x2, float y2);
+void engine_render_line(Line *line);
+void engine_render_lines(list_t *lines);
+
+#endif /* __ENGINE_LINE_H__ */