diff options
| author | Scott Shawcroft <scott@adafruit.com> | 2019-12-20 09:34:25 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-20 09:34:25 -0800 |
| commit | 5fc20145d1966e367c2e304a4a3359f625f17bcf (patch) | |
| tree | b1dd2af5d65670d93c38b33884b04faf95d266a8 /shared-module/displayio/Display.c | |
| parent | 663f61cbf38de18c42158027c08f019b858ef337 (diff) | |
| parent | a63da7a6c0e0537cbefaafb724d722f9587b82a2 (diff) | |
Merge pull request #2390 from jepler/displayio-set-rotation
displayio: make 'rotation' property settable
Diffstat (limited to 'shared-module/displayio/Display.c')
| -rw-r--r-- | shared-module/displayio/Display.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/shared-module/displayio/Display.c b/shared-module/displayio/Display.c index 11db0f8ff..299c8ad35 100644 --- a/shared-module/displayio/Display.c +++ b/shared-module/displayio/Display.c @@ -308,10 +308,27 @@ STATIC void _refresh_display(displayio_display_obj_t* self) { displayio_display_core_finish_refresh(&self->core); } +void common_hal_displayio_display_set_rotation(displayio_display_obj_t* self, int rotation){ + bool transposed = (self->core.rotation == 90 || self->core.rotation == 270); + bool will_transposed = (rotation == 90 || rotation == 270); + if(transposed != will_transposed) { + int tmp = self->core.width; + self->core.width = self->core.height; + self->core.height = tmp; + } + displayio_display_core_set_rotation(&self->core, rotation); + supervisor_stop_terminal(); + supervisor_start_terminal(self->core.width, self->core.height); + if (self->core.current_group != NULL) { + displayio_group_update_transform(self->core.current_group, &self->core.transform); + } +} + uint16_t common_hal_displayio_display_get_rotation(displayio_display_obj_t* self){ return self->core.rotation; } + bool common_hal_displayio_display_refresh(displayio_display_obj_t* self, uint32_t target_ms_per_frame, uint32_t maximum_ms_per_real_frame) { if (!self->auto_refresh && !self->first_manual_refresh) { uint64_t current_time = supervisor_ticks_ms64(); |
