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

Expose set_pixel to MicroPython #873

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Expose set_pixel to MicroPython #873

wants to merge 1 commit into from

Conversation

tmsmr
Copy link

@tmsmr tmsmr commented Nov 7, 2023

While using Pico Graphics might usually be the proper way to draw on the Stellar/Galactic/Cosmic Unicorn, there are use cases where setting the pixels directly is desirable.
This PR exposes GalacticUnicorn::set_pixel (https://github.com/pimoroni/pimoroni-pico/blob/v1.21.0/libraries/galactic_unicorn/galactic_unicorn.cpp#L447) to MicroPython.

The implementation is pretty much copy-pasted from https://github.com/pimoroni/pimoroni-pico/blob/v1.21.0/micropython/modules/pico_unicorn/pico_unicorn.cpp#L56.

If this change generally suits you, i'll add it to the Stellar and Cosmic Unicorn as well and update the docs accordingly as preparation for the merge.

@Gadgetoid
Copy link
Member

Sorry for the delay feeding back on this. This seems reasonable, though there may be some confusion that arises between the two methods of drawing to the display. Do you have any use-cases or examples?

If you're still interested do you want to add the other two displays to this PR?

@tmsmr
Copy link
Author

tmsmr commented Jan 17, 2024

The use-case is for my personal project to be honest: https://github.com/tmsmr/RUC

This is basically a minimal TCP-based protocol and a client lib which allows to draw in a "frame-buffer" on the client side and transmit only the diff required to update the image.

Every update-call in uPython on the Pico overwrites the whole frame-buffer: https://github.com/pimoroni/pimoroni-pico/blob/main/libraries/galactic_unicorn/galactic_unicorn.cpp#L517

While this might not actually be a performance issue, it feels unnecessary for me in cases where only some pixels have changed...

If the change generally suits you, i'll add the other displays as well and update the docs accordingly. I could add a note, that using update should be preferred generally.

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.

2 participants