17
17
//| :param int width: The number of pixels wide
18
18
//| :param int height: The number of pixels high
19
19
//| :param int x: Initial x position of the top left corner.
20
- //| :param int y: Initial y position of the top left corner."""
20
+ //| :param int y: Initial y position of the top left corner.
21
+ //| :param int color_number: Initial color_number to use when selecting color from the palette."""
21
22
//|
22
23
static mp_obj_t vectorio_rectangle_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
23
- enum { ARG_pixel_shader , ARG_width , ARG_height , ARG_x , ARG_y };
24
+ enum { ARG_pixel_shader , ARG_width , ARG_height , ARG_x , ARG_y , ARG_color_number };
24
25
static const mp_arg_t allowed_args [] = {
25
26
{ MP_QSTR_pixel_shader , MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED },
26
27
{ MP_QSTR_width , MP_ARG_REQUIRED | MP_ARG_INT },
27
28
{ MP_QSTR_height , MP_ARG_REQUIRED | MP_ARG_INT },
28
29
{ MP_QSTR_x , MP_ARG_INT | MP_ARG_KW_ONLY , {.u_int = 0 } },
29
30
{ MP_QSTR_y , MP_ARG_INT | MP_ARG_KW_ONLY , {.u_int = 0 } },
31
+ { MP_QSTR_color_number , MP_ARG_INT | MP_ARG_KW_ONLY , {.u_int = 1 } },
30
32
};
31
33
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
32
34
mp_arg_parse_all_kw_array (n_args , n_kw , all_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
@@ -42,7 +44,8 @@ static mp_obj_t vectorio_rectangle_make_new(const mp_obj_type_t *type, size_t n_
42
44
43
45
vectorio_rectangle_t * self = m_new_obj (vectorio_rectangle_t );
44
46
self -> base .type = & vectorio_rectangle_type ;
45
- common_hal_vectorio_rectangle_construct (self , width , height );
47
+ int32_t color_number = args [ARG_color_number ].u_int ;
48
+ common_hal_vectorio_rectangle_construct (self , width , height , color_number );
46
49
47
50
// VectorShape parts
48
51
mp_obj_t pixel_shader = args [ARG_pixel_shader ].u_obj ;
@@ -106,6 +109,29 @@ const mp_obj_property_t vectorio_rectangle_height_obj = {
106
109
MP_ROM_NONE },
107
110
};
108
111
112
+ //| color_number : int
113
+ //| """The color_number of the rectangle in 1 based index of the palette."""
114
+ //|
115
+ STATIC mp_obj_t vectorio_rectangle_obj_get_color_number (mp_obj_t self_in ) {
116
+ vectorio_rectangle_t * self = MP_OBJ_TO_PTR (self_in );
117
+ return mp_obj_new_int (common_hal_vectorio_rectangle_get_color_number (self ));
118
+ }
119
+ MP_DEFINE_CONST_FUN_OBJ_1 (vectorio_rectangle_get_color_number_obj , vectorio_rectangle_obj_get_color_number );
120
+
121
+ STATIC mp_obj_t vectorio_rectangle_obj_set_color_number (mp_obj_t self_in , mp_obj_t color_number ) {
122
+ vectorio_rectangle_t * self = MP_OBJ_TO_PTR (self_in );
123
+ common_hal_vectorio_rectangle_set_color_number (self , mp_obj_get_int (color_number ));
124
+ return mp_const_none ;
125
+ }
126
+ MP_DEFINE_CONST_FUN_OBJ_2 (vectorio_rectangle_set_color_number_obj , vectorio_rectangle_obj_set_color_number );
127
+
128
+ const mp_obj_property_t vectorio_rectangle_color_number_obj = {
129
+ .base .type = & mp_type_property ,
130
+ .proxy = {(mp_obj_t )& vectorio_rectangle_get_color_number_obj ,
131
+ (mp_obj_t )& vectorio_rectangle_set_color_number_obj ,
132
+ MP_ROM_NONE },
133
+ };
134
+
109
135
// Documentation for properties inherited from VectorShape.
110
136
111
137
//| x : int
@@ -127,6 +153,7 @@ STATIC const mp_rom_map_elem_t vectorio_rectangle_locals_dict_table[] = {
127
153
// Properties
128
154
{ MP_ROM_QSTR (MP_QSTR_x ), MP_ROM_PTR (& vectorio_vector_shape_x_obj ) },
129
155
{ MP_ROM_QSTR (MP_QSTR_y ), MP_ROM_PTR (& vectorio_vector_shape_y_obj ) },
156
+ { MP_ROM_QSTR (MP_QSTR_color_number ), MP_ROM_PTR (& vectorio_rectangle_color_number_obj ) },
130
157
{ MP_ROM_QSTR (MP_QSTR_width ), MP_ROM_PTR (& vectorio_rectangle_width_obj ) },
131
158
{ MP_ROM_QSTR (MP_QSTR_height ), MP_ROM_PTR (& vectorio_rectangle_height_obj ) },
132
159
{ MP_ROM_QSTR (MP_QSTR_location ), MP_ROM_PTR (& vectorio_vector_shape_location_obj ) },
0 commit comments