@@ -143,6 +143,7 @@ static displayio_tilegrid_t *native_tilegrid(mp_obj_t tilegrid_obj) {
143
143
mp_obj_assert_native_inited (native_tilegrid );
144
144
return MP_OBJ_TO_PTR (native_tilegrid );
145
145
}
146
+
146
147
//| hidden: bool
147
148
//| """True when the TileGrid is hidden. This may be False even when a part of a hidden Group."""
148
149
//|
@@ -379,6 +380,72 @@ const mp_obj_property_t displayio_tilegrid_pixel_shader_obj = {
379
380
MP_ROM_NONE },
380
381
};
381
382
383
+ //| bitmap: Union[Bitmap,OnDiskBitmap,Shape]
384
+ //| """The bitmap of the tilegrid."""
385
+ //|
386
+ STATIC mp_obj_t displayio_tilegrid_obj_get_bitmap (mp_obj_t self_in ) {
387
+ displayio_tilegrid_t * self = native_tilegrid (self_in );
388
+ return common_hal_displayio_tilegrid_get_bitmap (self );
389
+ }
390
+ MP_DEFINE_CONST_FUN_OBJ_1 (displayio_tilegrid_get_bitmap_obj , displayio_tilegrid_obj_get_bitmap );
391
+
392
+ STATIC mp_obj_t displayio_tilegrid_obj_set_bitmap (mp_obj_t self_in , mp_obj_t bitmap ) {
393
+ displayio_tilegrid_t * self = native_tilegrid (self_in );
394
+
395
+ uint16_t new_bitmap_width ;
396
+ uint16_t new_bitmap_height ;
397
+ mp_obj_t native = mp_obj_cast_to_native_base (bitmap , & displayio_shape_type );
398
+ if (native != MP_OBJ_NULL ) {
399
+ displayio_shape_t * bmp = MP_OBJ_TO_PTR (native );
400
+ new_bitmap_width = bmp -> width ;
401
+ new_bitmap_height = bmp -> height ;
402
+ } else if (mp_obj_is_type (bitmap , & displayio_bitmap_type )) {
403
+ displayio_bitmap_t * bmp = MP_OBJ_TO_PTR (bitmap );
404
+ native = bitmap ;
405
+ new_bitmap_width = bmp -> width ;
406
+ new_bitmap_height = bmp -> height ;
407
+ } else if (mp_obj_is_type (bitmap , & displayio_ondiskbitmap_type )) {
408
+ displayio_ondiskbitmap_t * bmp = MP_OBJ_TO_PTR (bitmap );
409
+ native = bitmap ;
410
+ new_bitmap_width = bmp -> width ;
411
+ new_bitmap_height = bmp -> height ;
412
+ } else {
413
+ mp_raise_TypeError_varg (translate ("unsupported %q type" ), MP_QSTR_bitmap );
414
+ }
415
+
416
+ mp_obj_t old_native = mp_obj_cast_to_native_base (self -> bitmap , & displayio_shape_type );
417
+ if (old_native != MP_OBJ_NULL ) {
418
+ displayio_shape_t * old_bmp = MP_OBJ_TO_PTR (old_native );
419
+ if (old_bmp -> width != new_bitmap_width || old_bmp -> height != new_bitmap_height ) {
420
+ mp_raise_ValueError (translate ("New bitmap must be same size as old bitmap" ));
421
+ }
422
+ } else if (mp_obj_is_type (self -> bitmap , & displayio_bitmap_type )) {
423
+ displayio_bitmap_t * old_bmp = MP_OBJ_TO_PTR (self -> bitmap );
424
+ old_native = self -> bitmap ;
425
+ if (old_bmp -> width != new_bitmap_width || old_bmp -> height != new_bitmap_height ) {
426
+ mp_raise_ValueError (translate ("New bitmap must be same size as old bitmap" ));
427
+ }
428
+ } else if (mp_obj_is_type (self -> bitmap , & displayio_ondiskbitmap_type )) {
429
+ displayio_ondiskbitmap_t * old_bmp = MP_OBJ_TO_PTR (self -> bitmap );
430
+ old_native = self -> bitmap ;
431
+ if (old_bmp -> width != new_bitmap_width || old_bmp -> height != new_bitmap_height ) {
432
+ mp_raise_ValueError (translate ("New bitmap must be same size as old bitmap" ));
433
+ }
434
+ }
435
+
436
+ common_hal_displayio_tilegrid_set_bitmap (self , bitmap );
437
+
438
+ return mp_const_none ;
439
+ }
440
+ MP_DEFINE_CONST_FUN_OBJ_2 (displayio_tilegrid_set_bitmap_obj , displayio_tilegrid_obj_set_bitmap );
441
+
442
+ const mp_obj_property_t displayio_tilegrid_bitmap_obj = {
443
+ .base .type = & mp_type_property ,
444
+ .proxy = {(mp_obj_t )& displayio_tilegrid_get_bitmap_obj ,
445
+ (mp_obj_t )& displayio_tilegrid_set_bitmap_obj ,
446
+ MP_ROM_NONE },
447
+ };
448
+
382
449
//| def __getitem__(self, index: Union[Tuple[int, int], int]) -> int:
383
450
//| """Returns the tile index at the given index. The index can either be an x,y tuple or an int equal
384
451
//| to ``y * width + x``.
@@ -454,7 +521,8 @@ STATIC const mp_rom_map_elem_t displayio_tilegrid_locals_dict_table[] = {
454
521
{ MP_ROM_QSTR (MP_QSTR_flip_x ), MP_ROM_PTR (& displayio_tilegrid_flip_x_obj ) },
455
522
{ MP_ROM_QSTR (MP_QSTR_flip_y ), MP_ROM_PTR (& displayio_tilegrid_flip_y_obj ) },
456
523
{ MP_ROM_QSTR (MP_QSTR_transpose_xy ), MP_ROM_PTR (& displayio_tilegrid_transpose_xy_obj ) },
457
- { MP_ROM_QSTR (MP_QSTR_pixel_shader ), MP_ROM_PTR (& displayio_tilegrid_pixel_shader_obj ) },
524
+ { MP_ROM_QSTR (MP_QSTR_pixel_shader ), MP_ROM_PTR (& displayio_tilegrid_pixel_shader_obj ) },
525
+ { MP_ROM_QSTR (MP_QSTR_bitmap ), MP_ROM_PTR (& displayio_tilegrid_bitmap_obj ) },
458
526
};
459
527
STATIC MP_DEFINE_CONST_DICT (displayio_tilegrid_locals_dict , displayio_tilegrid_locals_dict_table );
460
528
0 commit comments