@@ -133,8 +133,6 @@ namespace pimoroni {
133
133
134
134
void ST7789::configure_display (Rotation rotate) {
135
135
136
- bool rotate180 = rotate == ROTATE_180 || rotate == ROTATE_90;
137
-
138
136
if (rotate == ROTATE_90 || rotate == ROTATE_270) {
139
137
std::swap (width, height);
140
138
}
@@ -185,20 +183,30 @@ namespace pimoroni {
185
183
// Pico Display
186
184
if (width == 240 && height == 135 ) {
187
185
caset[0 ] = 40 ; // 240 cols
188
- caset[1 ] = 279 ;
189
- raset[0 ] = 53 ; // 135 rows
190
- raset[1 ] = 187 ;
191
- madctl = rotate180 ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
186
+ caset[1 ] = 40 + width - 1 ;
187
+ raset[0 ] = 52 ; // 135 rows
188
+ raset[1 ] = 52 + height - 1 ;
189
+ if (rotate == ROTATE_0) {
190
+ raset[0 ] += 1 ;
191
+ raset[1 ] += 1 ;
192
+ }
193
+ madctl = rotate == ROTATE_180 ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
192
194
madctl |= MADCTL::SWAP_XY | MADCTL::SCAN_ORDER;
193
195
}
194
196
195
197
// Pico Display at 90 degree rotation
196
198
if (width == 135 && height == 240 ) {
197
199
caset[0 ] = 52 ; // 135 cols
198
- caset[1 ] = 186 ;
200
+ caset[1 ] = 52 + width - 1 ;
199
201
raset[0 ] = 40 ; // 240 rows
200
- raset[1 ] = 279 ;
201
- madctl = rotate180 ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0 ;
202
+ raset[1 ] = 40 + height - 1 ;
203
+ madctl = 0 ;
204
+ if (rotate == ROTATE_90) {
205
+ caset[0 ] += 1 ;
206
+ caset[1 ] += 1 ;
207
+ madctl = MADCTL::COL_ORDER | MADCTL::ROW_ORDER;
208
+ }
209
+ madctl = rotate == ROTATE_90 ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0 ;
202
210
}
203
211
204
212
// Pico Display 2.0
@@ -207,7 +215,7 @@ namespace pimoroni {
207
215
caset[1 ] = 319 ;
208
216
raset[0 ] = 0 ;
209
217
raset[1 ] = 239 ;
210
- madctl = rotate180 ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
218
+ madctl = (rotate == ROTATE_180 || rotate == ROTATE_90) ? MADCTL::ROW_ORDER : MADCTL::COL_ORDER;
211
219
madctl |= MADCTL::SWAP_XY | MADCTL::SCAN_ORDER;
212
220
}
213
221
@@ -217,7 +225,7 @@ namespace pimoroni {
217
225
caset[1 ] = 239 ;
218
226
raset[0 ] = 0 ;
219
227
raset[1 ] = 319 ;
220
- madctl = rotate180 ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0 ;
228
+ madctl = (rotate == ROTATE_180 || rotate == ROTATE_90) ? (MADCTL::COL_ORDER | MADCTL::ROW_ORDER) : 0 ;
221
229
}
222
230
223
231
// Byte swap the 16bit rows/cols values
0 commit comments