From 2d359fb932c245267d3da8edbb479b549fc6cebb Mon Sep 17 00:00:00 2001 From: orangerot Date: Tue, 14 Oct 2025 06:17:32 +0200 Subject: feat: draw dominos --- src_build/domino_assets.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src_build/domino_assets.c (limited to 'src_build/domino_assets.c') 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 +#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; +} -- cgit v1.2.3