summaryrefslogtreecommitdiff
path: root/include/tinyff/image/png.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/tinyff/image/png.h')
-rw-r--r--include/tinyff/image/png.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/tinyff/image/png.h b/include/tinyff/image/png.h
index c195951..c2c7db2 100644
--- a/include/tinyff/image/png.h
+++ b/include/tinyff/image/png.h
@@ -55,6 +55,27 @@ typedef struct {
} ff_png_ctx;
+// Small BpP helper function
+
+static inline uint16_t ff_png_bpp(ff_png_ctx *ctx)
+{
+ int16_t byte_depth = ctx->bit_depth / 8;
+ switch (ctx->color_type) {
+ case 0: // Grayscale
+ return byte_depth * 1; // Gray
+ case 2: // Truecolor
+ return byte_depth * 3; // R, G, B
+ case 3: // Indexed-color
+ return byte_depth * 1; // Index
+ case 4: // Grayscale with alpha
+ return byte_depth * 2; // Gray w/ alpha
+ case 6: // Truecolor with alpha
+ return byte_depth * 4; // R, G, B w/ alpha
+ default:
+ return 0; // damn, you corrupt
+ }
+}
+
// Chunk handling