aboutsummaryrefslogtreecommitdiff
path: root/core/image/png/png.odin
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2021-06-20 18:27:23 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2021-06-20 18:27:23 +0200
commit55d09251d8ec7455609bbbf3d211e9be8948bf0e (patch)
treedcd9e9ba138d33ee8cde9910d8603a473cf27205 /core/image/png/png.odin
parentd66fd71d217815a97af12e5e0a1bd035783c3f36 (diff)
Change PNG's img.sidecar to ^Info, make img.depth an int.
For compatibility with the upcoming OpenEXR code, img.depth is now an int. Like OpenEXR's code, it will now also return metadata as ^Info instead of Info. The example was updated to retrieve the metadata this way. It regrettably does not fix: #1018. That seems to be a codegen issue in the test runner or elsewhere.
Diffstat (limited to 'core/image/png/png.odin')
-rw-r--r--core/image/png/png.odin13
1 files changed, 8 insertions, 5 deletions
diff --git a/core/image/png/png.odin b/core/image/png/png.odin
index 2964348d9..8d26d87d7 100644
--- a/core/image/png/png.odin
+++ b/core/image/png/png.odin
@@ -392,7 +392,10 @@ load_from_stream :: proc(stream: io.Stream, options := Options{}, allocator := c
img = new(Image);
}
- img.sidecar = nil;
+ info: ^Info;
+ if img.sidecar == nil {
+ info = new(Info);
+ }
ctx := &compress.Context{
input = stream,
@@ -413,7 +416,8 @@ load_from_stream :: proc(stream: io.Stream, options := Options{}, allocator := c
e: io.Error;
header: IHDR;
- info: Info;
+
+ img.sidecar = info;
info.chunks.allocator = context.temp_allocator;
// State to ensure correct chunk ordering.
@@ -462,12 +466,12 @@ load_from_stream :: proc(stream: io.Stream, options := Options{}, allocator := c
// Color image without a palette
img.channels = 3;
final_image_channels = 3;
- img.depth = header.bit_depth;
+ img.depth = int(header.bit_depth);
} else {
// Grayscale
img.channels = 1;
final_image_channels = 1;
- img.depth = header.bit_depth;
+ img.depth = int(header.bit_depth);
}
if .Alpha in header.color_type {
@@ -522,7 +526,6 @@ load_from_stream :: proc(stream: io.Stream, options := Options{}, allocator := c
// If we only want image metadata and don't want the pixel data, we can early out.
if .return_metadata not_in options && .do_not_decompress_image in options {
img.channels = final_image_channels;
- img.sidecar = info;
return img, nil;
}
// There must be at least 1 IDAT, contiguous if more.