2025-10-14 06:17:32 +02:00
|
|
|
#include <stdio.h>
|
|
|
|
#define STB_IMAGE_IMPLEMENTATION
|
|
|
|
#include "stb_image.h"
|
|
|
|
|
2025-10-14 15:09:34 +02:00
|
|
|
#define NUM_DOMINO_X 6
|
2025-10-14 06:17:32 +02:00
|
|
|
#define NUM_DOMINO_Y 6
|
|
|
|
#define DOMINO_WIDTH 23
|
|
|
|
#define DOMINO_HEIGHT 12
|
2025-10-14 15:09:34 +02:00
|
|
|
#define EYE_SIZE 12
|
2025-10-14 06:17:32 +02:00
|
|
|
#define MARGIN_X 9
|
|
|
|
#define MARGIN_Y 4
|
2025-10-14 15:09:34 +02:00
|
|
|
#define START_X 1 + 2*(DOMINO_WIDTH + MARGIN_X)
|
|
|
|
#define START_Y 2
|
2025-10-14 06:17:32 +02:00
|
|
|
|
|
|
|
void print_domino(unsigned char *data, int width, int n, int posx, int posy) {
|
2025-10-14 16:32:45 +02:00
|
|
|
printf(" {.width = %d, .height = %d, .bufsize = %d, .color = (struct color[%d]) {",
|
|
|
|
DOMINO_WIDTH,
|
|
|
|
DOMINO_HEIGHT,
|
|
|
|
DOMINO_WIDTH * DOMINO_HEIGHT,
|
|
|
|
DOMINO_WIDTH * DOMINO_HEIGHT
|
|
|
|
);
|
2025-10-14 06:17:32 +02:00
|
|
|
for (int y = 0; y < DOMINO_HEIGHT; y++) {
|
|
|
|
for (int x = 0; x < DOMINO_WIDTH; x++) {
|
2025-10-14 16:32:45 +02:00
|
|
|
printf("{");
|
2025-10-14 06:17:32 +02:00
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
printf("%3d, ", data[(y + posy) * width * n + (x + posx) * n + i]);
|
|
|
|
}
|
2025-10-14 16:32:45 +02:00
|
|
|
printf("},");
|
2025-10-14 06:17:32 +02:00
|
|
|
}
|
|
|
|
}
|
2025-10-14 16:32:45 +02:00
|
|
|
printf("}},\n");
|
2025-10-14 06:17:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
2025-10-14 16:32:45 +02:00
|
|
|
|
|
|
|
printf("#include \"../game.h\"\n");
|
2025-10-14 06:17:32 +02:00
|
|
|
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);
|
2025-10-14 15:09:34 +02:00
|
|
|
printf("#define EYE_SIZE %d\n", EYE_SIZE);
|
2025-10-14 06:17:32 +02:00
|
|
|
printf("#define BYTES_PER_PIXEL %d\n", n);
|
|
|
|
|
2025-10-14 16:32:45 +02:00
|
|
|
printf("struct image domino[%d][%d] = {\n",
|
2025-10-14 06:17:32 +02:00
|
|
|
NUM_DOMINO_X,
|
2025-10-14 16:32:45 +02:00
|
|
|
NUM_DOMINO_Y
|
2025-10-14 06:17:32 +02:00
|
|
|
);
|
|
|
|
|
2025-10-14 15:09:34 +02:00
|
|
|
for (int domino_x = 0; domino_x < NUM_DOMINO_X; domino_x++) {
|
2025-10-14 06:17:32 +02:00
|
|
|
printf(" {\n");
|
2025-10-14 15:09:34 +02:00
|
|
|
for (int domino_y = 0; domino_y < NUM_DOMINO_Y; domino_y++) {
|
2025-10-14 06:17:32 +02:00
|
|
|
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;
|
|
|
|
}
|