Skip to content

Commit 6f6dcaf

Browse files
committed
Minor tweaks based on Dan's feedback
1 parent d2ec431 commit 6f6dcaf

File tree

4 files changed

+27
-41
lines changed

4 files changed

+27
-41
lines changed

shared-bindings/displayio/TileGrid.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,8 @@ const mp_obj_property_t displayio_tilegrid_flip_y_obj = {
249249

250250
//| .. attribute:: transpose_xy
251251
//|
252-
//| If true, the TileGrid will be rotate 90 degrees. When combined with mirroring any 90 degree
253-
//| rotation can be achieved.
252+
//| If true, the TileGrid's axis will be swapped. When combined with mirroring, any 90 degree
253+
//| rotation can be achieved along with the corresponding mirrored version.
254254
//|
255255
STATIC mp_obj_t displayio_tilegrid_obj_get_transpose_xy(mp_obj_t self_in) {
256256
displayio_tilegrid_t *self = native_tilegrid(self_in);

shared-module/displayio/Display.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,4 +354,4 @@ bool displayio_display_fill_area(displayio_display_obj_t *self, displayio_area_t
354354

355355
bool displayio_display_clip_area(displayio_display_obj_t *self, const displayio_area_t* area, displayio_area_t* clipped) {
356356
return displayio_area_compute_overlap(&self->area, area, clipped);
357-
}
357+
}

shared-module/displayio/Group.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ uint32_t common_hal_displayio_group_get_scale(displayio_group_t* self) {
4040

4141
bool displayio_group_get_previous_area(displayio_group_t *self, displayio_area_t* area) {
4242
bool first = true;
43-
for (int32_t i = 0; i < self->size; i++) {
43+
for (size_t i = 0; i < self->size; i++) {
4444
mp_obj_t layer = self->children[i].native;
4545
displayio_area_t layer_area;
4646
if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) {
@@ -74,7 +74,7 @@ static void _update_child_transforms(displayio_group_t* self) {
7474
if (!self->in_group) {
7575
return;
7676
}
77-
for (int32_t i = 0; i < self->size; i++) {
77+
for (size_t i = 0; i < self->size; i++) {
7878
mp_obj_t layer = self->children[i].native;
7979
if (MP_OBJ_IS_TYPE(layer, &displayio_tilegrid_type)) {
8080
displayio_tilegrid_update_transform(layer, &self->absolute_transform);
@@ -128,10 +128,10 @@ void common_hal_displayio_group_set_x(displayio_group_t* self, mp_int_t x) {
128128
return;
129129
}
130130
if (self->absolute_transform.transpose_xy) {
131-
int8_t dy = self->absolute_transform.dy / self->scale;
131+
int16_t dy = self->absolute_transform.dy / self->scale;
132132
self->absolute_transform.y += dy * (x - self->x);
133133
} else {
134-
int8_t dx = self->absolute_transform.dx / self->scale;
134+
int16_t dx = self->absolute_transform.dx / self->scale;
135135
self->absolute_transform.x += dx * (x - self->x);
136136
}
137137

shared-module/displayio/TileGrid.c

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -80,25 +80,23 @@ bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_
8080
}
8181

8282
void _update_current_x(displayio_tilegrid_t *self) {
83+
int16_t width;
84+
if (self->transpose_xy) {
85+
width = self->pixel_height;
86+
} else {
87+
width = self->pixel_width;
88+
}
8389
if (self->absolute_transform->transpose_xy) {
8490
self->current_area.y1 = self->absolute_transform->y + self->absolute_transform->dy * self->x;
85-
if (self->transpose_xy) {
86-
self->current_area.y2 = self->absolute_transform->y + self->absolute_transform->dy * (self->x + self->pixel_height);
87-
} else {
88-
self->current_area.y2 = self->absolute_transform->y + self->absolute_transform->dy * (self->x + self->pixel_width);
89-
}
91+
self->current_area.y2 = self->absolute_transform->y + self->absolute_transform->dy * (self->x + width);
9092
if (self->current_area.y2 < self->current_area.y1) {
9193
int16_t temp = self->current_area.y2;
9294
self->current_area.y2 = self->current_area.y1;
9395
self->current_area.y1 = temp;
9496
}
9597
} else {
9698
self->current_area.x1 = self->absolute_transform->x + self->absolute_transform->dx * self->x;
97-
if (self->transpose_xy) {
98-
self->current_area.x2 = self->absolute_transform->x + self->absolute_transform->dx * (self->x + self->pixel_height);
99-
} else {
100-
self->current_area.x2 = self->absolute_transform->x + self->absolute_transform->dx * (self->x + self->pixel_width);
101-
}
99+
self->current_area.x2 = self->absolute_transform->x + self->absolute_transform->dx * (self->x + width);
102100
if (self->current_area.x2 < self->current_area.x1) {
103101
int16_t temp = self->current_area.x2;
104102
self->current_area.x2 = self->current_area.x1;
@@ -108,25 +106,23 @@ void _update_current_x(displayio_tilegrid_t *self) {
108106
}
109107

110108
void _update_current_y(displayio_tilegrid_t *self) {
109+
int16_t height;
110+
if (self->transpose_xy) {
111+
height = self->pixel_width;
112+
} else {
113+
height = self->pixel_height;
114+
}
111115
if (self->absolute_transform->transpose_xy) {
112116
self->current_area.x1 = self->absolute_transform->x + self->absolute_transform->dx * self->y;
113-
if (self->transpose_xy) {
114-
self->current_area.x2 = self->absolute_transform->x + self->absolute_transform->dx * (self->y + self->pixel_width);
115-
} else {
116-
self->current_area.x2 = self->absolute_transform->x + self->absolute_transform->dx * (self->y + self->pixel_height);
117-
}
117+
self->current_area.x2 = self->absolute_transform->x + self->absolute_transform->dx * (self->y + height);
118118
if (self->current_area.x2 < self->current_area.x1) {
119119
int16_t temp = self->current_area.x2;
120120
self->current_area.x2 = self->current_area.x1;
121121
self->current_area.x1 = temp;
122122
}
123123
} else {
124124
self->current_area.y1 = self->absolute_transform->y + self->absolute_transform->dy * self->y;
125-
if (self->transpose_xy) {
126-
self->current_area.y2 = self->absolute_transform->y + self->absolute_transform->dy * (self->y + self->pixel_width);
127-
} else {
128-
self->current_area.y2 = self->absolute_transform->y + self->absolute_transform->dy * (self->y + self->pixel_height);
129-
}
125+
self->current_area.y2 = self->absolute_transform->y + self->absolute_transform->dy * (self->y + height);
130126
if (self->current_area.y2 < self->current_area.y1) {
131127
int16_t temp = self->current_area.y2;
132128
self->current_area.y2 = self->current_area.y1;
@@ -315,22 +311,12 @@ bool displayio_tilegrid_fill_area(displayio_tilegrid_t *self, const displayio_ar
315311
// How many pixels are outside of our area between us and the start of the row.
316312
uint16_t start = 0;
317313
if ((self->absolute_transform->dx < 0) != flip_x) {
318-
// if (self->absolute_transform->transpose_xy) {
319-
// start += (area->y2 - area->y1 - 1) * y_stride;
320-
// y_stride *= -1;
321-
// } else {
322-
start += (area->x2 - area->x1 - 1) * x_stride;
323-
x_stride *= -1;
324-
//}
314+
start += (area->x2 - area->x1 - 1) * x_stride;
315+
x_stride *= -1;
325316
}
326317
if ((self->absolute_transform->dy < 0) != flip_y) {
327-
// if (self->absolute_transform->transpose_xy) {
328-
// start += (area->x2 - area->x1 - 1) * x_stride;
329-
// x_stride *= -1;
330-
// } else {
331-
start += (area->y2 - area->y1 - 1) * y_stride;
332-
y_stride *= -1;
333-
//}
318+
start += (area->y2 - area->y1 - 1) * y_stride;
319+
y_stride *= -1;
334320
}
335321

336322
// Track if this layer finishes filling in the given area. We can ignore any remaining

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy