@@ -385,6 +385,42 @@ MP_PROPERTY_GETSET(displayio_tilegrid_bitmap_obj,
385385 (mp_obj_t )& displayio_tilegrid_get_bitmap_obj ,
386386 (mp_obj_t )& displayio_tilegrid_set_bitmap_obj );
387387
388+ //| def get_inverted(self, tile_coords: tuple) -> bool:
389+ //| """Returns True if the tile at the given x, y coordinates is inverted."""
390+ //|
391+ static mp_obj_t displayio_tilegrid_obj_get_inverted (mp_obj_t self_in , mp_obj_t tile_coords ) {
392+ displayio_tilegrid_t * self = MP_OBJ_TO_PTR (self_in );
393+
394+ mp_obj_t * tile_coords_items ;
395+ mp_obj_get_array_fixed_n (tile_coords , 2 , & tile_coords_items );
396+ uint16_t x = 0 ;
397+ uint16_t y = 0 ;
398+ x = mp_obj_get_int (tile_coords_items [0 ]);
399+ y = mp_obj_get_int (tile_coords_items [1 ]);
400+
401+ return mp_obj_new_bool (common_hal_displayio_tilegrid_get_inverted (self , x , y ));
402+ }
403+ MP_DEFINE_CONST_FUN_OBJ_2 (displayio_tilegrid_get_inverted_obj , displayio_tilegrid_obj_get_inverted );
404+
405+ //| def set_inverted(self, tile_coords: tuple, inverted: bool) -> None:
406+ //| """Set the tile at the given x, y coordinates to be inverted or not."""
407+ //|
408+ static mp_obj_t displayio_tilegrid_obj_set_inverted (mp_obj_t self_in , mp_obj_t tile_coords , mp_obj_t inverted_obj ) {
409+ displayio_tilegrid_t * self = MP_OBJ_TO_PTR (self_in );
410+
411+ mp_obj_t * tile_coords_items ;
412+ mp_obj_get_array_fixed_n (tile_coords , 2 , & tile_coords_items );
413+ uint16_t x = 0 ;
414+ uint16_t y = 0 ;
415+ x = mp_obj_get_int (tile_coords_items [0 ]);
416+ y = mp_obj_get_int (tile_coords_items [1 ]);
417+ bool inverted = mp_obj_is_true (inverted_obj );
418+
419+ common_hal_displayio_tilegrid_set_inverted (self , x , y , inverted );
420+ return mp_const_none ;
421+ }
422+ MP_DEFINE_CONST_FUN_OBJ_3 (displayio_tilegrid_set_inverted_obj , displayio_tilegrid_obj_set_inverted );
423+
388424//| def __getitem__(self, index: Union[Tuple[int, int], int]) -> int:
389425//| """Returns the tile index at the given index. The index can either be an x,y tuple or an int equal
390426//| to ``y * width + x``.
@@ -461,6 +497,8 @@ static const mp_rom_map_elem_t displayio_tilegrid_locals_dict_table[] = {
461497 { MP_ROM_QSTR (MP_QSTR_flip_y ), MP_ROM_PTR (& displayio_tilegrid_flip_y_obj ) },
462498 { MP_ROM_QSTR (MP_QSTR_transpose_xy ), MP_ROM_PTR (& displayio_tilegrid_transpose_xy_obj ) },
463499 { MP_ROM_QSTR (MP_QSTR_contains ), MP_ROM_PTR (& displayio_tilegrid_contains_obj ) },
500+ { MP_ROM_QSTR (MP_QSTR_get_inverted ), MP_ROM_PTR (& displayio_tilegrid_get_inverted_obj ) },
501+ { MP_ROM_QSTR (MP_QSTR_set_inverted ), MP_ROM_PTR (& displayio_tilegrid_set_inverted_obj ) },
464502 { MP_ROM_QSTR (MP_QSTR_pixel_shader ), MP_ROM_PTR (& displayio_tilegrid_pixel_shader_obj ) },
465503 { MP_ROM_QSTR (MP_QSTR_bitmap ), MP_ROM_PTR (& displayio_tilegrid_bitmap_obj ) },
466504};
0 commit comments