pimoroni-pico icon indicating copy to clipboard operation
pimoroni-pico copied to clipboard

Feature request: get_palette() for P4 and P8 modes and PNGs

Open LionsPhil opened this issue 1 year ago • 3 comments

Since PNGdec has been added, you can now load and set the palette along with an image using PNG_COPY. However, there's no way to get the palette from PNGdec I can see (even undocumented), nor a way to read the current palette from PicoGraphics.

A reason to want this is for palette cycling. This is a nice cheap way to get some animation without having to slowly push new pixels to the display. (You could also do fadeouts, if you really wanted.) Being able to get the palette from the image one way or another (and via PicoGraphics seems the more reasonable) would let me replace the custom image format I'm using with just PNG.

LionsPhil avatar Sep 08 '24 00:09 LionsPhil

Actually, it's possible I've misunderstood what PNG_COPY does...it doesn't set the palette, does it? Instead it assumes the display palette and the image palette are the same (or you want do color remapping tricks) and just copies indicies.

So I guess I'm actually asking for a way to get the palette out of a loaded PNG after all.

LionsPhil avatar Sep 09 '24 14:09 LionsPhil

I can't remember off the top of my head how straight-forward this is likely to be, but it makes sense and it's on my long list of things to prod and poke when I get the time!

Gadgetoid avatar Sep 16 '24 10:09 Gadgetoid

At a wild guess - it's been so long since I looked into this - the existing get_palette only works after displaying a PNG?

Ah, it looks like it uses decode() to load the palette, but passes in a nullptr for the userdata which might cause... things to happen (horribly crashing, memory corruption and other excitement maybe...).

Gadgetoid avatar Sep 26 '24 13:09 Gadgetoid