@@ -80,25 +80,23 @@ bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_
80
80
}
81
81
82
82
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
+ }
83
89
if (self -> absolute_transform -> transpose_xy ) {
84
90
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 );
90
92
if (self -> current_area .y2 < self -> current_area .y1 ) {
91
93
int16_t temp = self -> current_area .y2 ;
92
94
self -> current_area .y2 = self -> current_area .y1 ;
93
95
self -> current_area .y1 = temp ;
94
96
}
95
97
} else {
96
98
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 );
102
100
if (self -> current_area .x2 < self -> current_area .x1 ) {
103
101
int16_t temp = self -> current_area .x2 ;
104
102
self -> current_area .x2 = self -> current_area .x1 ;
@@ -108,25 +106,23 @@ void _update_current_x(displayio_tilegrid_t *self) {
108
106
}
109
107
110
108
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
+ }
111
115
if (self -> absolute_transform -> transpose_xy ) {
112
116
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 );
118
118
if (self -> current_area .x2 < self -> current_area .x1 ) {
119
119
int16_t temp = self -> current_area .x2 ;
120
120
self -> current_area .x2 = self -> current_area .x1 ;
121
121
self -> current_area .x1 = temp ;
122
122
}
123
123
} else {
124
124
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 );
130
126
if (self -> current_area .y2 < self -> current_area .y1 ) {
131
127
int16_t temp = self -> current_area .y2 ;
132
128
self -> current_area .y2 = self -> current_area .y1 ;
@@ -315,22 +311,12 @@ bool displayio_tilegrid_fill_area(displayio_tilegrid_t *self, const displayio_ar
315
311
// How many pixels are outside of our area between us and the start of the row.
316
312
uint16_t start = 0 ;
317
313
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 ;
325
316
}
326
317
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 ;
334
320
}
335
321
336
322
// Track if this layer finishes filling in the given area. We can ignore any remaining
0 commit comments