commit 5a5447a
uint
·
2026-08-08 01:34:19 +0000 UTC
parent 4d5ea9c
PNG: Allow loading just from file
3 files changed,
+20,
-8
+4,
-0
1@@ -25,5 +25,9 @@ ulepng ulepng_init(void);
2 /* Initialise a ulepng with an image loaded from disk */
3 ulepng ulepng_init_file(const char* path);
4
5+/* Load an image from disk into png */
6+void ulepng_load_file(ulepng* png, const char* path);
7+
8+
9 #endif /* ULEPNG_H */
10
+13,
-8
1@@ -12,29 +12,34 @@ ulepng ulepng_init(void)
2 ulepng ulepng_init_file(const char* path)
3 {
4 ulepng png = ulepng_init();
5+ ulepng_load_file(&png, path);
6+ return png;
7+}
8+
9+void ulepng_load_file(ulepng* png, const char* path)
10+{
11 FILE* file = NULL;
12
13 file = fopen(path, "rb");
14 if (file == NULL) {
15- png.err = ULEPNG_ERR_FOPEN;
16- return png;
17+ png->err = ULEPNG_ERR_FOPEN;
18+ return;
19 }
20
21 /* get file size */
22 fseek(file, 0L, SEEK_END);
23- png.size = ftell(file);
24+ png->size = ftell(file);
25 rewind(file);
26
27- png.data = malloc(png.size);
28- if (png.data == NULL) {
29- png.err = ULEPNG_ERR_OOM;
30+ png->data = malloc(png->size);
31+ if (png->data == NULL) {
32+ png->err = ULEPNG_ERR_OOM;
33 goto cleanup;
34 }
35
36- fread(png.data, 1, png.size, file);
37+ fread(png->data, 1, png->size, file);
38
39 cleanup:
40 fclose(file);
41- return png;
42 }
43
+3,
-0
1@@ -14,7 +14,10 @@ int main(int argc, char* argv[])
2 return EXIT_FAILURE;
3 }
4
5+ /* png = ulepng_init();
6+ ulepng_load_file(&png, argv[1]); */
7 png = ulepng_init_file(argv[1]);
8+
9 if (png.err != ULEPNG_ERR_NONE) {
10 fprintf(stderr, "Failed to open PNG file [ERR: %d]\n", png.err);
11 return png.err;