aboutsummaryrefslogtreecommitdiffstats
path: root/7_2/include/drawable.h
diff options
context:
space:
mode:
Diffstat (limited to '7_2/include/drawable.h')
-rw-r--r--7_2/include/drawable.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/7_2/include/drawable.h b/7_2/include/drawable.h
new file mode 100644
index 0000000..3d0caeb
--- /dev/null
+++ b/7_2/include/drawable.h
@@ -0,0 +1,42 @@
+#ifndef JCG_DRAWABLE_H
+#define JCG_DRAWABLE_H
+
+#define FILL_CHR '#'
+#define SPACE_CHR ' '
+
+// что угодно, на чём можно ''нарисовать''
+// должно иметь размер, размер пикселей, данные
+// функция put записывает пиксель по координатам x, y на поле
+// функция show выводит данные на экран/куда угодно ещё
+struct drawable {
+ long x, y, pix_s;
+ void *data;
+ void (*put)(struct drawable *self, long x, long y);
+ void(*show)(const struct drawable *self);
+};
+
+
+// конструктор
+void drawable_init(struct drawable* self,
+ void(*put_f)(struct drawable *, long, long),
+ void(*show_f)(const struct drawable *),
+ long width,
+ long height,
+ long pix_s);
+// деструктор
+void drawable_destroy(struct drawable *self);
+// конструктор для консольного поля
+struct drawable drawable_plaintxt(long width, long height);
+// конструктор для графического поля
+struct drawable drawable_X11(long width, long height);
+
+// put для консольного drawable
+void put_plaintxt(struct drawable *self, long x, long y);
+// show для консольного drawable
+void show_plaintxt(const struct drawable *self);
+// put для графического drawable
+void put_X11(struct drawable *self, long x, long y);
+// show для графического drawable
+void show_X11(const struct drawable *self);
+
+#endif // JCG_DRAWABLE_H