6262//| ...
6363STATIC 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 ) {
6464 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 );
6767 uint32_t value_count = mp_arg_validate_int_range (mp_obj_get_int (all_args [2 ]), 1 , 65535 , MP_QSTR_value_count );
6868 uint32_t bits = 1 ;
6969
@@ -232,8 +232,8 @@ STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_arg
232232 check_for_deinit (self );
233233
234234 // 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 );
237237
238238 displayio_bitmap_t * source = mp_arg_validate_type (args [ARG_source ].u_obj , & displayio_bitmap_type , MP_QSTR_source_bitmap );
239239
@@ -244,8 +244,8 @@ STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_arg
244244 }
245245
246246 // 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 );
249249 int16_t x2 , y2 ;
250250 // if x2 or y2 is None, then set as the maximum size of the source bitmap
251251 if (args [ARG_x2 ].u_obj == mp_const_none ) {
0 commit comments