From 2f17165bd4c86885a75424d4f0ce6198c46c84b4 Mon Sep 17 00:00:00 2001 From: scratko Date: Thu, 21 Nov 2024 23:01:56 +0300 Subject: Including resources in the object file Convert pictures to array data (image_converter/converter.c) Resources are located in image_converter/resources.o --- image_converter/converter.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 image_converter/converter.c (limited to 'image_converter/converter.c') diff --git a/image_converter/converter.c b/image_converter/converter.c new file mode 100644 index 0000000..4252e71 --- /dev/null +++ b/image_converter/converter.c @@ -0,0 +1,52 @@ +#include +#include +#include + +enum { + length = 9 +}; + +static const char *parts[] = { + "00.png", "01.png", "02.png", + "10.png", "11.png", "12.png", + "20.png", "21.png", "22.png" +}; + +int main() +{ + int part_sizes[length]; + int i, j, c; + char res_dir[] = "../resources/tucan/"; + FILE * out = fopen("resources.cpp","wt"); + if (out == NULL) { + printf("Can not open output\n"); + return 1; + } + fprintf(out,"unsigned char image_data[] = {\n"); + for(i = 0; i < length; ++i) { + char *str_copy = (char*)malloc(sizeof(res_dir) + strlen("00.png")); + strcpy(str_copy, res_dir); + FILE * in = fopen(strcat(str_copy, parts[i]), "rb"); + if (in == NULL) { + printf("Can not open input file\n"); + return 1; + } + for(j = 0, c = fgetc(in); c != EOF; c = fgetc(in), ++j) { + if (j%16 == 0) fprintf(out," "); + fprintf(out,"0x%02X, ", c); + if (j%16 == 15) fputs("\n", out); + } + part_sizes[i] = j; + fclose(in); + free(str_copy); + } + fprintf(out,"0xFF };\n\n"); + fprintf(out, "int image_sizes[] = {\n"); + for(int i = 0; i < length; ++i) { + if (i%16 == 0) fprintf(out," "); + fprintf(out,"%d, ", part_sizes[i]); + if (i%16 == 15) fputs("\n", out); + } + fprintf(out,"0xFF };\n\n"); + fclose(out); +} -- cgit v1.2.3