Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Gui pisan u c
#26
Gen_icons_header.c

Code:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <inttypes.h> #include <dirent.h> void strip_ext(char *fname) { char *end = fname + strlen(fname); while (end > fname && *end != '.' && *end != '\\' && *end != '/') { --end; } if ((end > fname && *end == '.') && (*(end - 1) != '\\' && *(end - 1) != '/')) { *end = '\0'; } } void usage(char *arg) { printf("Usage: %s append|new\n", arg); } int main(int argc, char *argv[]) { DIR *dir = NULL; struct dirent *ep = NULL; char *extension = NULL; char *fname = NULL; char *buf = NULL; char *ident = NULL; uint32_t i=0, file_size=0, need_comma=0; FILE *f_input = NULL; FILE *f_output = NULL; if (argc != 2) { usage(argv[0]); return 0; } if ((dir = opendir("icons")) != NULL) { while ((ep = readdir(dir)) != NULL) { /*if (ep->d_type == DT_REG)*/ { if (strcmp(ep->d_name, ".") != 0 && strcmp(ep->d_name, "..") != 0) { if ((extension = strrchr(ep->d_name, '.')) != NULL) { if (strcmp(extension, ".png") == 0) { char *filename = NULL; size_t filename_sz = strlen(ep->d_name) + 6 + 1; if ((filename = (char *)malloc(filename_sz)) == NULL) { fprintf(stderr, "%s: can't malloc %d bytes!\n", argv[0], filename_sz); return -1; } snprintf(filename, filename_sz, "icons/%s", ep->d_name); if ((f_input = fopen(filename, "rb")) == NULL) { fprintf(stderr, "%s: can't open %s for reading!\n", argv[0], filename); free(filename); return -1; } free(filename); fseek(f_input, 0, SEEK_END); file_size = ftell(f_input); fseek(f_input, 0, SEEK_SET); if ((buf = (char *)malloc(file_size)) == NULL) { fprintf(stderr, "%s: can't malloc %d bytes!\n", argv[0], file_size); return -1; } fread(buf, file_size, 1, f_input); fclose(f_input); if (memcmp(argv[1], "append", 6) == 0) { printf("Appending icons to the saviola_icons.h header file.\n"); if ((f_output = fopen("include/saviola_icons.h", "a")) == NULL) { fprintf(stderr, "%s: can't open include/saviola_icons.h for writing\n", argv[0]); free(buf); return -1; } } else if (memcmp(argv[1], "new", 2) == 0) { printf("Cleaning saviola_icons.h header file and generating saviola_icons.h header file.\n"); if ((f_output = fopen("include/saviola_icons.h", "w")) == NULL) { fprintf(stderr, "%s: can't open include/saviola_icons.h for writing\n", argv[0]); free(buf); return -1; } } else { usage(argv[0]); free(buf); return 0; } printf("Processing: %s\n\n", ep->d_name); fname = ep->d_name; strip_ext(fname); ident = fname; need_comma = 0; fprintf(f_output, "size_t %s_size = %u;\n\n", ident, file_size); fprintf(f_output, "char %s[%u] = {", ident, file_size); for (i = 0; i < file_size; ++i) { if (need_comma) fprintf(f_output, ", "); else need_comma = 1; if ((i % 11) == 0) fprintf(f_output, "\n\t"); fprintf(f_output, "0x%.2x", buf[i] & 0xff); } fprintf(f_output, "\n};\n\n"); fclose(f_output); free(buf); } } } } } } closedir(dir); return 0; }

Ovo sam napravio da mi sve slike iz foldera icons generise u header fajl koji kompilujem preko make. Onda slike smestim u memoriju sa loadPng2 funkcijom. Kasnije razmisljam da implementiram jednu funkciju za libgd koji ce da generise sprite.png sliku kao sto je u onom primeru iz raspidmx/game , u libgd mogu da rotiram png sliku u nekoliko uglova potrebnih za taj sprite.png pa za raspidmx rotaciju... itd, imam dosta ideja koje cu da sprovedem u delo. Ima tu jos dosta stvari da se modifikuje u raspidmx za neke finije stvari al otom potom doce i to na red
Reply


Messages In This Thread
Gui pisan u c - by savan - 07-19-2022, 10:25 AM
RE: Gui pisan u c - by savan - 07-19-2022, 10:32 AM
RE: Gui pisan u c - by savan - 07-19-2022, 10:58 AM
RE: Gui pisan u c - by savan - 07-19-2022, 12:21 PM
RE: Gui pisan u c - by mikikg - 07-19-2022, 09:44 PM
RE: Gui pisan u c - by mikikg - 07-19-2022, 10:40 PM
RE: Gui pisan u c - by savan - 07-20-2022, 10:43 AM
RE: Gui pisan u c - by mikikg - 07-20-2022, 01:42 PM
RE: Gui pisan u c - by savan - 07-20-2022, 02:59 PM
RE: Gui pisan u c - by gorankg - 07-20-2022, 08:52 PM
RE: Gui pisan u c - by savan - 07-20-2022, 09:45 PM
RE: Gui pisan u c - by mikikg - 07-20-2022, 10:23 PM
RE: Gui pisan u c - by savan - 07-21-2022, 08:11 AM
RE: Gui pisan u c - by mikikg - 07-21-2022, 10:20 AM
RE: Gui pisan u c - by savan - 07-22-2022, 06:50 PM
RE: Gui pisan u c - by mikikg - 07-22-2022, 07:36 PM
RE: Gui pisan u c - by savan - 07-22-2022, 07:55 PM
RE: Gui pisan u c - by mikikg - 07-22-2022, 07:56 PM
RE: Gui pisan u c - by savan - 07-23-2022, 07:45 AM
RE: Gui pisan u c - by savan - 07-23-2022, 02:08 PM
RE: Gui pisan u c - by mikikg - 07-23-2022, 07:41 PM
RE: Gui pisan u c - by mikikg - 07-23-2022, 08:03 PM
RE: Gui pisan u c - by mikikg - 07-23-2022, 08:44 PM
RE: Gui pisan u c - by savan - 07-24-2022, 09:19 AM
RE: Gui pisan u c - by savan - 07-24-2022, 09:45 AM
RE: Gui pisan u c - by savan - 07-24-2022, 10:07 AM
RE: Gui pisan u c - by mikikg - 07-24-2022, 11:35 AM
RE: Gui pisan u c - by savan - 07-24-2022, 12:48 PM
RE: Gui pisan u c - by savan - 07-24-2022, 01:01 PM
RE: Gui pisan u c - by mikikg - 07-24-2022, 01:04 PM
RE: Gui pisan u c - by savan - 07-24-2022, 03:48 PM
RE: Gui pisan u c - by mikikg - 07-24-2022, 06:10 PM
RE: Gui pisan u c - by savan - 07-24-2022, 08:35 PM
RE: Gui pisan u c - by savan - 07-25-2022, 04:31 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)