aboutsummaryrefslogtreecommitdiff
path: root/core/image
diff options
context:
space:
mode:
Diffstat (limited to 'core/image')
-rw-r--r--core/image/common.odin72
-rw-r--r--core/image/png/png.odin44
2 files changed, 58 insertions, 58 deletions
diff --git a/core/image/common.odin b/core/image/common.odin
index fed2c1470..07152e7db 100644
--- a/core/image/common.odin
+++ b/core/image/common.odin
@@ -1313,55 +1313,55 @@ expand_grayscale :: proc(img: ^Image, allocator := context.allocator) -> (ok: bo
}
switch img.depth {
- case 8:
- switch img.channels {
- case 1: // Turn Gray into RGB
- out := mem.slice_data_cast([]RGB_Pixel, buf.buf[:])
-
- for p in img.pixels.buf {
- out[0] = p // Broadcast gray value into RGB components.
- out = out[1:]
- }
+ case 8:
+ switch img.channels {
+ case 1: // Turn Gray into RGB
+ out := mem.slice_data_cast([]RGB_Pixel, buf.buf[:])
- case 2: // Turn Gray + Alpha into RGBA
- inp := mem.slice_data_cast([]GA_Pixel, img.pixels.buf[:])
- out := mem.slice_data_cast([]RGBA_Pixel, buf.buf[:])
+ for p in img.pixels.buf {
+ out[0] = p // Broadcast gray value into RGB components.
+ out = out[1:]
+ }
- for p in inp {
- out[0].rgb = p.r // Gray component.
- out[0].a = p.g // Alpha component.
- }
+ case 2: // Turn Gray + Alpha into RGBA
+ inp := mem.slice_data_cast([]GA_Pixel, img.pixels.buf[:])
+ out := mem.slice_data_cast([]RGBA_Pixel, buf.buf[:])
- case:
- unreachable()
+ for p in inp {
+ out[0].rgb = p.r // Gray component.
+ out[0].a = p.g // Alpha component.
}
- case 16:
- switch img.channels {
- case 1: // Turn Gray into RGB
- inp := mem.slice_data_cast([]u16, img.pixels.buf[:])
- out := mem.slice_data_cast([]RGB_Pixel_16, buf.buf[:])
+ case:
+ unreachable()
+ }
- for p in inp {
- out[0] = p // Broadcast gray value into RGB components.
- out = out[1:]
- }
+ case 16:
+ switch img.channels {
+ case 1: // Turn Gray into RGB
+ inp := mem.slice_data_cast([]u16, img.pixels.buf[:])
+ out := mem.slice_data_cast([]RGB_Pixel_16, buf.buf[:])
- case 2: // Turn Gray + Alpha into RGBA
- inp := mem.slice_data_cast([]GA_Pixel_16, img.pixels.buf[:])
- out := mem.slice_data_cast([]RGBA_Pixel_16, buf.buf[:])
+ for p in inp {
+ out[0] = p // Broadcast gray value into RGB components.
+ out = out[1:]
+ }
- for p in inp {
- out[0].rgb = p.r // Gray component.
- out[0].a = p.g // Alpha component.
- }
+ case 2: // Turn Gray + Alpha into RGBA
+ inp := mem.slice_data_cast([]GA_Pixel_16, img.pixels.buf[:])
+ out := mem.slice_data_cast([]RGBA_Pixel_16, buf.buf[:])
- case:
- unreachable()
+ for p in inp {
+ out[0].rgb = p.r // Gray component.
+ out[0].a = p.g // Alpha component.
}
case:
unreachable()
+ }
+
+ case:
+ unreachable()
}
diff --git a/core/image/png/png.odin b/core/image/png/png.odin
index aa1c5f781..aa42c5f56 100644
--- a/core/image/png/png.odin
+++ b/core/image/png/png.odin
@@ -535,28 +535,28 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a
ct := transmute(u8)info.header.color_type
switch ct {
- case 3: // Indexed color
- if c.header.length != 1 {
- return {}, .BKGD_Invalid_Length
- }
- col := _plte.entries[c.data[0]]
- img.background = [3]u16{
- u16(col[0]) << 8 | u16(col[0]),
- u16(col[1]) << 8 | u16(col[1]),
- u16(col[2]) << 8 | u16(col[2]),
- }
- case 0, 4: // Grayscale, with and without Alpha
- if c.header.length != 2 {
- return {}, .BKGD_Invalid_Length
- }
- col := u16(mem.slice_data_cast([]u16be, c.data[:])[0])
- img.background = [3]u16{col, col, col}
- case 2, 6: // Color, with and without Alpha
- if c.header.length != 6 {
- return {}, .BKGD_Invalid_Length
- }
- col := mem.slice_data_cast([]u16be, c.data[:])
- img.background = [3]u16{u16(col[0]), u16(col[1]), u16(col[2])}
+ case 3: // Indexed color
+ if c.header.length != 1 {
+ return {}, .BKGD_Invalid_Length
+ }
+ col := _plte.entries[c.data[0]]
+ img.background = [3]u16{
+ u16(col[0]) << 8 | u16(col[0]),
+ u16(col[1]) << 8 | u16(col[1]),
+ u16(col[2]) << 8 | u16(col[2]),
+ }
+ case 0, 4: // Grayscale, with and without Alpha
+ if c.header.length != 2 {
+ return {}, .BKGD_Invalid_Length
+ }
+ col := u16(mem.slice_data_cast([]u16be, c.data[:])[0])
+ img.background = [3]u16{col, col, col}
+ case 2, 6: // Color, with and without Alpha
+ if c.header.length != 6 {
+ return {}, .BKGD_Invalid_Length
+ }
+ col := mem.slice_data_cast([]u16be, c.data[:])
+ img.background = [3]u16{u16(col[0]), u16(col[1]), u16(col[2])}
}
case .tRNS: