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;