diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2021-06-20 18:27:23 +0200 |
|---|---|---|
| committer | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2021-06-20 18:27:23 +0200 |
| commit | 55d09251d8ec7455609bbbf3d211e9be8948bf0e (patch) | |
| tree | dcd9e9ba138d33ee8cde9910d8603a473cf27205 /core/image/png/png.odin | |
| parent | d66fd71d217815a97af12e5e0a1bd035783c3f36 (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.odin | 13 |
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. |