Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PNGdec: Add support for palette offsets and greyscale copy mode #919

Merged
merged 4 commits into from
Apr 11, 2024

Conversation

Gadgetoid
Copy link
Member

As if PNG rendering isn't already complex enough, I dreamed up "palette_offset" as an argument that would change a "COPY" mode PNG's pixel value by a certain offset value.

Eg: if you have a 4bit (16 colour) greyscale or indexed PNG you could copy it verbatim into the PicoGraphics buffer (ignoring the actual colour values). Normally this happens from palette index 0, so you could never swap out the palette to handle artwork variations.

Using an offset, - eg let's say we offset by 16- it's possible to render a PNG in "COPY" mode, offsetting each palette index by 16. Now in 8-bit palette mode we can draw up to sixteen copies of our PNG and - via palette manipulation - give them all distinct colours.

Yes, even trying to explain this is complicated...

Allow index colour PNGs to be copied with a palette offset.

EG: a 4bit PNG could be offset 16 times for as many colour variations.
@Gadgetoid Gadgetoid mentioned this pull request Apr 11, 2024
@Gadgetoid Gadgetoid merged commit 9edcdcc into main Apr 11, 2024
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant