summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--src/main/engine/engine.c17
-rw-r--r--src/main/engine/shape/circle.c34
-rw-r--r--src/main/engine/shape/circle.h (renamed from src/main/engine/types.h)12
4 files changed, 46 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1232136..efb94f9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,7 +43,9 @@ add_executable(tris
src/main/game/domain/board.c
src/main/game/domain/board.h
src/main/engine/domain/color.c
- src/main/engine/domain/color.h)
+ src/main/engine/domain/color.h
+ src/main/engine/shape/circle.c
+ src/main/engine/shape/circle.h)
target_include_directories(tris PRIVATE log/src)
diff --git a/src/main/engine/engine.c b/src/main/engine/engine.c
index 362d2d8..3abfbcc 100644
--- a/src/main/engine/engine.c
+++ b/src/main/engine/engine.c
@@ -26,7 +26,7 @@
#include "engine.h"
#include "ui/ui.h"
#include "../util/list.h"
-#include "types.h"
+#include "shape/circle.h"
#ifdef X11
#include <X11/Xlib.h>
@@ -88,24 +88,11 @@ engine_set_window_title(Engine *engine, const char *title)
ui_set_title(engine->ui, title);
}
-static Circle *
-engine_new_circle(float cx, float cy, float r, int num_segments, int outline)
-{
- Circle *circle = malloc(sizeof(Circle));
- circle->cx = cx;
- circle->cy = cy;
- circle->r = r;
- circle->num_segments = num_segments;
- circle->outline = outline;
-
- return circle;
-}
-
void
engine_draw_circle(float cx, float cy, float r, int num_segments, int outline)
{
if (engine == NULL || engine->circles == NULL) return;
- list_add(engine->circles, engine_new_circle(cx, cy, r, num_segments, outline));
+ list_add(engine->circles, engine_circle_new(cx, cy, r, num_segments, outline));
}
static Line *
diff --git a/src/main/engine/shape/circle.c b/src/main/engine/shape/circle.c
new file mode 100644
index 0000000..9cc79c6
--- /dev/null
+++ b/src/main/engine/shape/circle.c
@@ -0,0 +1,34 @@
+/*-
+ * 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 "circle.h"
+
+Circle *
+engine_circle_new(float cx, float cy, float r, int num_segments, int outline)
+{
+ Circle *circle = malloc(sizeof(Circle));
+ circle->cx = cx;
+ circle->cy = cy;
+ circle->r = r;
+ circle->num_segments = num_segments;
+ circle->outline = outline;
+
+ return circle;
+}
diff --git a/src/main/engine/types.h b/src/main/engine/shape/circle.h
index a87f087..f8bb91d 100644
--- a/src/main/engine/types.h
+++ b/src/main/engine/shape/circle.h
@@ -1,5 +1,5 @@
/*-
-* Copyright (C) 2025 Alessandro Iezzi <aiezzi AT alessandroiezzi PERIOD it>
+ * Copyright (C) 2025 Alessandro Iezzi <aiezzi AT alessandroiezzi PERIOD it>
*
* This file is part of Tris Game.
*
@@ -17,10 +17,10 @@
* along with Tris Game. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __ENGINE_TYPES_H__
-#define __ENGINE_TYPES_H__
+#ifndef __CIRCLE_H__
+#define __CIRCLE_H__
-typedef struct Circle {
+typedef struct {
int outline;
float cx;
float cy;
@@ -28,4 +28,6 @@ typedef struct Circle {
int num_segments;
} Circle;
-#endif /* __ENGINE_TYPES_H__ */
+Circle *engine_circle_new(float cx, float cy, float r, int num_segments, int outline);
+
+#endif /* __CIRCLE_H__ */