@@ -80,25 +80,23 @@ bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_
8080}
8181
8282void _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
110108void _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