1414#include "shared-bindings/tilepalettemapper/TilePaletteMapper.h"
1515
1616static mp_obj_t tilepalettemapper_tilepalettemapper_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
17- enum { ARG_palette , ARG_width , ARG_height };
18- static const mp_arg_t allowed_args [] = {
19- { MP_QSTR_palette , MP_ARG_OBJ | MP_ARG_REQUIRED },
20- { MP_QSTR_width , MP_ARG_INT | MP_ARG_REQUIRED , {.u_int = 1 } },
21- { MP_QSTR_height , MP_ARG_INT | MP_ARG_REQUIRED , {.u_int = 1 } },
22- };
23- mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
24- mp_arg_parse_all_kw_array (n_args , n_kw , all_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
25- mp_obj_t palette = args [ARG_palette ].u_obj ;
26- if (!mp_obj_is_type (palette , & displayio_palette_type )) {
27- mp_raise_TypeError_varg (MP_ERROR_TEXT ("unsupported %q type" ), MP_QSTR_pixel_shader );
28- }
29- tilepalettemapper_tilepalettemapper_t * self = mp_obj_malloc (tilepalettemapper_tilepalettemapper_t , & tilepalettemapper_tilepalettemapper_type );
30- common_hal_tilepalettemapper_tilepalettemapper_construct (self , palette , args [ARG_width ].u_int , args [ARG_height ].u_int );
31-
32- return MP_OBJ_FROM_PTR (self );
17+ enum { ARG_palette , ARG_width , ARG_height };
18+ static const mp_arg_t allowed_args [] = {
19+ { MP_QSTR_palette , MP_ARG_OBJ | MP_ARG_REQUIRED },
20+ { MP_QSTR_width , MP_ARG_INT | MP_ARG_REQUIRED , {.u_int = 1 } },
21+ { MP_QSTR_height , MP_ARG_INT | MP_ARG_REQUIRED , {.u_int = 1 } },
22+ };
23+ mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
24+ mp_arg_parse_all_kw_array (n_args , n_kw , all_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
25+ mp_obj_t palette = args [ARG_palette ].u_obj ;
26+ if (!mp_obj_is_type (palette , & displayio_palette_type )) {
27+ mp_raise_TypeError_varg (MP_ERROR_TEXT ("unsupported %q type" ), MP_QSTR_pixel_shader );
28+ }
29+ tilepalettemapper_tilepalettemapper_t * self = mp_obj_malloc (tilepalettemapper_tilepalettemapper_t , & tilepalettemapper_tilepalettemapper_type );
30+ common_hal_tilepalettemapper_tilepalettemapper_construct (self , palette , args [ARG_width ].u_int , args [ARG_height ].u_int );
31+
32+ return MP_OBJ_FROM_PTR (self );
3333}
3434
3535//| width: int
3636//| """Width of the tile palette mapper in tiles."""
3737static mp_obj_t tilepalettemapper_tilepalettemapper_obj_get_width (mp_obj_t self_in ) {
38- tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
39- return MP_OBJ_NEW_SMALL_INT (common_hal_tilepalettemapper_tilepalettemapper_get_width (self ));
38+ tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
39+ return MP_OBJ_NEW_SMALL_INT (common_hal_tilepalettemapper_tilepalettemapper_get_width (self ));
4040}
4141MP_DEFINE_CONST_FUN_OBJ_1 (tilepalettemapper_tilepalettemapper_get_width_obj , tilepalettemapper_tilepalettemapper_obj_get_width );
4242
@@ -46,8 +46,8 @@ MP_PROPERTY_GETTER(tilepalettemapper_tilepalettemapper_width_obj,
4646//| height: int
4747//| """Height of the tile palette mapper in tiles."""
4848static mp_obj_t tilepalettemapper_tilepalettemapper_obj_get_height (mp_obj_t self_in ) {
49- tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
50- return MP_OBJ_NEW_SMALL_INT (common_hal_tilepalettemapper_tilepalettemapper_get_height (self ));
49+ tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
50+ return MP_OBJ_NEW_SMALL_INT (common_hal_tilepalettemapper_tilepalettemapper_get_height (self ));
5151}
5252MP_DEFINE_CONST_FUN_OBJ_1 (tilepalettemapper_tilepalettemapper_get_height_obj , tilepalettemapper_tilepalettemapper_obj_get_height );
5353
@@ -58,8 +58,8 @@ MP_PROPERTY_GETTER(tilepalettemapper_tilepalettemapper_height_obj,
5858//| palette: displayio.Palette
5959//| """The palette that the mapper uses."""
6060static mp_obj_t tilepalettemapper_tilepalettemapper_obj_get_palette (mp_obj_t self_in ) {
61- tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
62- return common_hal_tilepalettemapper_tilepalettemapper_get_palette (self );
61+ tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
62+ return common_hal_tilepalettemapper_tilepalettemapper_get_palette (self );
6363}
6464MP_DEFINE_CONST_FUN_OBJ_1 (tilepalettemapper_tilepalettemapper_get_palette_obj , tilepalettemapper_tilepalettemapper_obj_get_palette );
6565
@@ -91,51 +91,51 @@ MP_PROPERTY_GETTER(tilepalettemapper_tilepalettemapper_palette_obj,
9191//|
9292//|
9393static mp_obj_t tilepalettemapper_subscr (mp_obj_t self_in , mp_obj_t index_obj , mp_obj_t value_obj ) {
94- tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
95- if (mp_obj_is_type (index_obj , & mp_type_slice )) {
96- mp_raise_NotImplementedError (MP_ERROR_TEXT ("Slices not supported" ));
97- } else {
98- uint16_t x = 0 ;
99- uint16_t y = 0 ;
100- if (mp_obj_is_small_int (index_obj )) {
101- mp_int_t i = MP_OBJ_SMALL_INT_VALUE (index_obj );
102- uint16_t width = common_hal_tilepalettemapper_tilepalettemapper_get_width (self );
103- x = i % width ;
104- y = i / width ;
94+ tilepalettemapper_tilepalettemapper_t * self = MP_OBJ_TO_PTR (self_in );
95+ if (mp_obj_is_type (index_obj , & mp_type_slice )) {
96+ mp_raise_NotImplementedError (MP_ERROR_TEXT ("Slices not supported" ));
10597 } else {
106- mp_obj_t * items ;
107- mp_obj_get_array_fixed_n (index_obj , 2 , & items );
108- x = mp_obj_get_int (items [0 ]);
109- y = mp_obj_get_int (items [1 ]);
110- }
111- if (x >= common_hal_tilepalettemapper_tilepalettemapper_get_width (self ) ||
112- y >= common_hal_tilepalettemapper_tilepalettemapper_get_height (self )) {
113- mp_raise_IndexError (MP_ERROR_TEXT ("Tile index out of bounds" ));
98+ uint16_t x = 0 ;
99+ uint16_t y = 0 ;
100+ if (mp_obj_is_small_int (index_obj )) {
101+ mp_int_t i = MP_OBJ_SMALL_INT_VALUE (index_obj );
102+ uint16_t width = common_hal_tilepalettemapper_tilepalettemapper_get_width (self );
103+ x = i % width ;
104+ y = i / width ;
105+ } else {
106+ mp_obj_t * items ;
107+ mp_obj_get_array_fixed_n (index_obj , 2 , & items );
108+ x = mp_obj_get_int (items [0 ]);
109+ y = mp_obj_get_int (items [1 ]);
110+ }
111+ if (x >= common_hal_tilepalettemapper_tilepalettemapper_get_width (self ) ||
112+ y >= common_hal_tilepalettemapper_tilepalettemapper_get_height (self )) {
113+ mp_raise_IndexError (MP_ERROR_TEXT ("Tile index out of bounds" ));
114114 }
115115
116- if (value_obj == MP_OBJ_SENTINEL ) {
117- // load
118- return common_hal_tilepalettemapper_tilepalettemapper_get_mapping (self , x , y );
119- } else if (value_obj == mp_const_none ) {
120- return MP_OBJ_NULL ; // op not supported
121- } else {
122- size_t len = 0 ;
123- mp_obj_t * items ;
124- mp_obj_list_get (value_obj , & len , & items );
125- uint32_t palette_len = common_hal_displayio_palette_get_len (self -> palette );
126-
127- mp_arg_validate_int_range (len , 0 , palette_len , MP_QSTR_mapping_length );
128- common_hal_tilepalettemapper_tilepalettemapper_set_mapping (self , x , y , len , items );
116+ if (value_obj == MP_OBJ_SENTINEL ) {
117+ // load
118+ return common_hal_tilepalettemapper_tilepalettemapper_get_mapping (self , x , y );
119+ } else if (value_obj == mp_const_none ) {
120+ return MP_OBJ_NULL ; // op not supported
121+ } else {
122+ size_t len = 0 ;
123+ mp_obj_t * items ;
124+ mp_obj_list_get (value_obj , & len , & items );
125+ uint32_t palette_len = common_hal_displayio_palette_get_len (self -> palette );
126+
127+ mp_arg_validate_int_range (len , 0 , palette_len , MP_QSTR_mapping_length );
128+ common_hal_tilepalettemapper_tilepalettemapper_set_mapping (self , x , y , len , items );
129+ }
129130 }
130- }
131- return mp_const_none ;
131+ return mp_const_none ;
132132}
133133
134134
135135static const mp_rom_map_elem_t tilepalettemapper_tilepalettemapper_locals_dict_table [] = {
136- { MP_ROM_QSTR (MP_QSTR_width ), MP_ROM_PTR (& tilepalettemapper_tilepalettemapper_width_obj ) },
137- { MP_ROM_QSTR (MP_QSTR_height ), MP_ROM_PTR (& tilepalettemapper_tilepalettemapper_height_obj ) },
138- { MP_ROM_QSTR (MP_QSTR_palette ), MP_ROM_PTR (& tilepalettemapper_tilepalettemapper_palette_obj ) },
136+ { MP_ROM_QSTR (MP_QSTR_width ), MP_ROM_PTR (& tilepalettemapper_tilepalettemapper_width_obj ) },
137+ { MP_ROM_QSTR (MP_QSTR_height ), MP_ROM_PTR (& tilepalettemapper_tilepalettemapper_height_obj ) },
138+ { MP_ROM_QSTR (MP_QSTR_palette ), MP_ROM_PTR (& tilepalettemapper_tilepalettemapper_palette_obj ) },
139139};
140140static MP_DEFINE_CONST_DICT (tilepalettemapper_tilepalettemapper_locals_dict , tilepalettemapper_tilepalettemapper_locals_dict_table ) ;
141141
0 commit comments