62
62
//| ...
63
63
STATIC mp_obj_t displayio_bitmap_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
64
64
mp_arg_check_num (n_args , n_kw , 3 , 3 , false);
65
- uint32_t width = mp_arg_validate_int_range (mp_obj_get_int (all_args [0 ]), 1 , 32767 , MP_QSTR_width );
66
- uint32_t height = mp_arg_validate_int_range (mp_obj_get_int (all_args [1 ]), 1 , 32767 , MP_QSTR_height );
65
+ uint32_t width = mp_arg_validate_int_range (mp_obj_get_int (all_args [0 ]), 0 , 32767 , MP_QSTR_width );
66
+ uint32_t height = mp_arg_validate_int_range (mp_obj_get_int (all_args [1 ]), 0 , 32767 , MP_QSTR_height );
67
67
uint32_t value_count = mp_arg_validate_int_range (mp_obj_get_int (all_args [2 ]), 1 , 65535 , MP_QSTR_value_count );
68
68
uint32_t bits = 1 ;
69
69
@@ -232,8 +232,8 @@ STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_arg
232
232
check_for_deinit (self );
233
233
234
234
// Check x,y are within self (target) bitmap boundary
235
- int16_t x = mp_arg_validate_int_range (args [ARG_x ].u_int , 0 , self -> width - 1 , MP_QSTR_x );
236
- int16_t y = mp_arg_validate_int_range (args [ARG_y ].u_int , 0 , self -> height - 1 , MP_QSTR_y );
235
+ int16_t x = mp_arg_validate_int_range (args [ARG_x ].u_int , 0 , MAX ( 0 , self -> width - 1 ) , MP_QSTR_x );
236
+ int16_t y = mp_arg_validate_int_range (args [ARG_y ].u_int , 0 , MAX ( 0 , self -> height - 1 ) , MP_QSTR_y );
237
237
238
238
displayio_bitmap_t * source = mp_arg_validate_type (args [ARG_source ].u_obj , & displayio_bitmap_type , MP_QSTR_source_bitmap );
239
239
@@ -244,8 +244,8 @@ STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_arg
244
244
}
245
245
246
246
// Check x1,y1,x2,y2 are within source bitmap boundary
247
- int16_t x1 = mp_arg_validate_int_range (args [ARG_x1 ].u_int , 0 , source -> width - 1 , MP_QSTR_x1 );
248
- int16_t y1 = mp_arg_validate_int_range (args [ARG_y1 ].u_int , 0 , source -> height - 1 , MP_QSTR_y1 );
247
+ int16_t x1 = mp_arg_validate_int_range (args [ARG_x1 ].u_int , 0 , MAX ( 0 , source -> width - 1 ) , MP_QSTR_x1 );
248
+ int16_t y1 = mp_arg_validate_int_range (args [ARG_y1 ].u_int , 0 , MAX ( 0 , source -> height - 1 ) , MP_QSTR_y1 );
249
249
int16_t x2 , y2 ;
250
250
// if x2 or y2 is None, then set as the maximum size of the source bitmap
251
251
if (args [ARG_x2 ].u_obj == mp_const_none ) {
0 commit comments