summaryrefslogtreecommitdiff
path: root/src_build/domino_assets.c
diff options
context:
space:
mode:
authororangerot <orangerot@orangerot.dev>2025-10-14 06:17:32 +0200
committerorangerot <orangerot@orangerot.dev>2025-10-14 06:17:32 +0200
commit2d359fb932c245267d3da8edbb479b549fc6cebb (patch)
tree125b93953833588cc98821cd73b7c6c91e9c74d9 /src_build/domino_assets.c
parent06aaf6e0bab748c2b491c8a56715c9ac74f1e36e (diff)
feat: draw dominos
Diffstat (limited to 'src_build/domino_assets.c')
-rw-r--r--src_build/domino_assets.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src_build/domino_assets.c b/src_build/domino_assets.c
new file mode 100644
index 0000000..b251506
--- /dev/null
+++ b/src_build/domino_assets.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#define STB_IMAGE_IMPLEMENTATION
+#include "stb_image.h"
+
+#define NUM_DOMINO_X 7
+#define NUM_DOMINO_Y 6
+#define DOMINO_WIDTH 23
+#define DOMINO_HEIGHT 12
+#define START_X 2
+#define START_Y 2
+#define MARGIN_X 9
+#define MARGIN_Y 4
+
+void print_domino(unsigned char *data, int width, int n, int posx, int posy) {
+ printf(" {");
+ for (int y = 0; y < DOMINO_HEIGHT; y++) {
+ for (int x = 0; x < DOMINO_WIDTH; x++) {
+ for (int i = 0; i < n; i++) {
+ printf("%3d, ", data[(y + posy) * width * n + (x + posx) * n + i]);
+ }
+ }
+ }
+ printf("},\n");
+}
+
+int main(int argc, char **argv) {
+ int x,y,n;
+ if (argc != 2) return 1;
+
+ unsigned char *data = stbi_load(argv[1], &x, &y, &n, 0);
+ // n = n < 3 ? n : 3;
+
+ printf("#define NUM_DOMINO_X %d\n", NUM_DOMINO_X );
+ printf("#define NUM_DOMINO_Y %d\n", NUM_DOMINO_Y );
+ printf("#define DOMINO_WIDTH %d\n", DOMINO_WIDTH );
+ printf("#define DOMINO_HEIGHT %d\n", DOMINO_HEIGHT);
+ printf("#define BYTES_PER_PIXEL %d\n", n);
+
+ printf("unsigned char domino[%d][%d][%d] = {\n",
+ NUM_DOMINO_Y,
+ NUM_DOMINO_X,
+ DOMINO_WIDTH * DOMINO_HEIGHT * n
+ );
+
+ for (int domino_y = 0; domino_y < NUM_DOMINO_Y; domino_y++) {
+ printf(" {\n");
+ for (int domino_x = 0; domino_x < NUM_DOMINO_X; domino_x++) {
+ print_domino(
+ data, x, n,
+ START_X + domino_x * (DOMINO_WIDTH + MARGIN_X),
+ START_Y + domino_y * (DOMINO_HEIGHT + MARGIN_Y)
+ );
+ }
+ printf(" },\n");
+ }
+
+ printf("};\n");
+
+ return 0;
+}