summaryrefslogtreecommitdiff
path: root/src/format/image/png.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/image/png.c')
-rw-r--r--src/format/image/png.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/format/image/png.c b/src/format/image/png.c
new file mode 100644
index 0000000..b29e271
--- /dev/null
+++ b/src/format/image/png.c
@@ -0,0 +1,37 @@
+#include "tinyff/image/png.h"
+#include "png.h"
+
+ff_result ff_png_isvalid(FILE *file)
+{
+ char raw_sig[8];
+ if (fread(raw_sig, sizeof(char), 8, file) != 8) {
+ // Inable to read first 8 bytes
+ fclose(file);
+ return FF_RESULT_ERROR_INVALID_FILE;
+ }
+
+ if (memcmp(raw_sig, PNG_SIGNATURE, 8) != 0) {
+ // Signiture did not match
+ fclose(file);
+ return FF_RESULT_ERROR_INVALID_FILE_SIGNITURE;
+ }
+
+ return FF_RESULT_OK;
+}
+
+ff_png_ctx *ff_open_png(const char *filepath) {
+ // Validate
+
+ ff_png_ctx ctx;
+ ctx.raw = fopen(filepath, "rb");
+
+ if (!ctx.raw) {
+ return NULL;
+ }
+
+ if (ff_png_isvalid(ctx.raw) != FF_RESULT_OK) {
+ return NULL;
+ }
+
+ // TODO: Parse
+} \ No newline at end of file