@@ -68,9 +68,9 @@ static void GIFDraw(GIFDRAW *pDraw) {
68
68
// The palette is either RGB565 or the original 24-bit RGB values
69
69
// depending on the pixel type selected with gif.begin()
70
70
71
- gifio_ondiskgif_displayio_objs_t * displayio_objs = (gifio_ondiskgif_displayio_objs_t * )pDraw -> pUser ;
72
- displayio_bitmap_t * bitmap = displayio_objs -> bitmap ;
73
- displayio_palette_t * palette = displayio_objs -> palette ;
71
+ gifio_ondiskgif_t * ondiskgif = (gifio_ondiskgif_t * )pDraw -> pUser ;
72
+ displayio_bitmap_t * bitmap = ondiskgif -> bitmap ;
73
+ displayio_palette_t * palette = ondiskgif -> palette ;
74
74
75
75
// Update the palette if we have one in RGB888
76
76
if (palette != NULL ) {
@@ -174,20 +174,19 @@ void common_hal_gifio_ondiskgif_construct(gifio_ondiskgif_t *self, pyb_file_obj_
174
174
175
175
int bpp = 16 ;
176
176
if (use_palette == true) {
177
- mp_printf (& mp_plat_print , "Using palette\n" );
178
177
displayio_palette_t * palette = m_new_obj (displayio_palette_t );
179
178
palette -> base .type = & displayio_palette_type ;
180
179
common_hal_displayio_palette_construct (palette , 256 , false);
181
- self -> displayio_objs . palette = palette ;
180
+ self -> palette = palette ;
182
181
bpp = 8 ;
183
182
} else {
184
- self -> displayio_objs . palette = NULL ;
183
+ self -> palette = NULL ;
185
184
}
186
185
187
186
displayio_bitmap_t * bitmap = m_new_obj (displayio_bitmap_t );
188
187
bitmap -> base .type = & displayio_bitmap_type ;
189
188
common_hal_displayio_bitmap_construct (bitmap , self -> gif .iCanvasWidth , self -> gif .iCanvasHeight , bpp );
190
- self -> displayio_objs . bitmap = bitmap ;
189
+ self -> bitmap = bitmap ;
191
190
192
191
GIFINFO info ;
193
192
GIF_getInfo (& self -> gif , & info );
@@ -199,13 +198,13 @@ void common_hal_gifio_ondiskgif_construct(gifio_ondiskgif_t *self, pyb_file_obj_
199
198
200
199
void common_hal_gifio_ondiskgif_deinit (gifio_ondiskgif_t * self ) {
201
200
self -> file = NULL ;
202
- common_hal_displayio_bitmap_deinit (self -> displayio_objs . bitmap );
203
- self -> displayio_objs . bitmap = NULL ;
204
- self -> displayio_objs . palette = NULL ;
201
+ common_hal_displayio_bitmap_deinit (self -> bitmap );
202
+ self -> bitmap = NULL ;
203
+ self -> palette = NULL ;
205
204
}
206
205
207
206
bool common_hal_gifio_ondiskgif_deinited (gifio_ondiskgif_t * self ) {
208
- return self -> displayio_objs . bitmap == NULL ;
207
+ return self -> bitmap == NULL ;
209
208
}
210
209
211
210
uint16_t common_hal_gifio_ondiskgif_get_height (gifio_ondiskgif_t * self ) {
@@ -217,11 +216,14 @@ uint16_t common_hal_gifio_ondiskgif_get_width(gifio_ondiskgif_t *self) {
217
216
}
218
217
219
218
mp_obj_t common_hal_gifio_ondiskgif_get_bitmap (gifio_ondiskgif_t * self ) {
220
- return MP_OBJ_FROM_PTR (self -> displayio_objs . bitmap );
219
+ return MP_OBJ_FROM_PTR (self -> bitmap );
221
220
}
222
221
223
222
mp_obj_t common_hal_gifio_ondiskgif_get_palette (gifio_ondiskgif_t * self ) {
224
- return MP_OBJ_FROM_PTR (self -> displayio_objs .palette );
223
+ if (self -> palette == NULL ) {
224
+ return mp_const_none ;
225
+ }
226
+ return MP_OBJ_FROM_PTR (self -> palette );
225
227
}
226
228
227
229
int32_t common_hal_gifio_ondiskgif_get_duration (gifio_ondiskgif_t * self ) {
@@ -243,17 +245,17 @@ int32_t common_hal_gifio_ondiskgif_get_max_delay(gifio_ondiskgif_t *self) {
243
245
uint32_t common_hal_gifio_ondiskgif_next_frame (gifio_ondiskgif_t * self , bool setDirty ) {
244
246
int nextDelay = 0 ;
245
247
int result = 0 ;
246
- result = GIF_playFrame (& self -> gif , & nextDelay , & self -> displayio_objs );
248
+ result = GIF_playFrame (& self -> gif , & nextDelay , self );
247
249
248
250
if ((result >= 0 ) && (setDirty )) {
249
251
displayio_area_t dirty_area = {
250
252
.x1 = 0 ,
251
253
.y1 = 0 ,
252
- .x2 = self -> displayio_objs . bitmap -> width ,
253
- .y2 = self -> displayio_objs . bitmap -> height ,
254
+ .x2 = self -> bitmap -> width ,
255
+ .y2 = self -> bitmap -> height ,
254
256
};
255
257
256
- displayio_bitmap_set_dirty_area (self -> displayio_objs . bitmap , & dirty_area );
258
+ displayio_bitmap_set_dirty_area (self -> bitmap , & dirty_area );
257
259
}
258
260
259
261
return nextDelay ;
0 commit comments