3636#include "py/obj.h"
3737#include "py/runtime.h"
3838
39+ #if MICROPY_VFS
40+ #include "extmod/vfs.h"
41+ #endif
42+ #if MICROPY_VFS_POSIX
43+ #include "extmod/vfs_posix.h"
44+ #endif
45+
3946//| """Collection of bitmap manipulation tools"""
4047//|
4148
@@ -154,8 +161,8 @@ STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args
154161 ARG_angle , ARG_scale , ARG_skip_index };
155162
156163 static const mp_arg_t allowed_args [] = {
157- {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
158- {MP_QSTR_source_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
164+ {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
165+ {MP_QSTR_source_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
159166
160167 {MP_QSTR_ox , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } }, // None convert to destination->width / 2
161168 {MP_QSTR_oy , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } }, // None convert to destination->height / 2
@@ -207,13 +214,13 @@ STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args
207214 args [ARG_source_clip1 ].u_obj , & source_clip1_x , & source_clip1_y );
208215
209216 // Confirm the angle value
210- float angle = 0.0 ;
217+ mp_float_t angle = 0.0 ;
211218 if (args [ARG_angle ].u_obj != mp_const_none ) {
212219 angle = mp_obj_get_float (args [ARG_angle ].u_obj );
213220 }
214221
215222 // Confirm the scale value
216- float scale = 1.0 ;
223+ mp_float_t scale = 1.0 ;
217224 if (args [ARG_scale ].u_obj != mp_const_none ) {
218225 scale = mp_obj_get_float (args [ARG_scale ].u_obj );
219226 }
@@ -269,10 +276,10 @@ STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args,
269276 enum {ARG_dest_bitmap , ARG_source_bitmap_1 , ARG_source_bitmap_2 , ARG_colorspace , ARG_factor_1 , ARG_factor_2 };
270277
271278 static const mp_arg_t allowed_args [] = {
272- {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
273- {MP_QSTR_source_bitmap_1 , MP_ARG_REQUIRED | MP_ARG_OBJ },
274- {MP_QSTR_source_bitmap_2 , MP_ARG_REQUIRED | MP_ARG_OBJ },
275- {MP_QSTR_colorspace , MP_ARG_REQUIRED | MP_ARG_OBJ },
279+ {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = NULL } },
280+ {MP_QSTR_source_bitmap_1 , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = NULL } },
281+ {MP_QSTR_source_bitmap_2 , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = NULL } },
282+ {MP_QSTR_colorspace , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = NULL } },
276283 {MP_QSTR_factor_1 , MP_ARG_OBJ , {.u_obj = MP_ROM_NONE }},
277284 {MP_QSTR_factor_2 , MP_ARG_OBJ , {.u_obj = MP_ROM_NONE }},
278285 };
@@ -283,8 +290,8 @@ STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args,
283290 displayio_bitmap_t * source1 = MP_OBJ_TO_PTR (mp_arg_validate_type (args [ARG_source_bitmap_1 ].u_obj , & displayio_bitmap_type , MP_QSTR_source_bitmap_1 )); // the first source bitmap
284291 displayio_bitmap_t * source2 = MP_OBJ_TO_PTR (mp_arg_validate_type (args [ARG_source_bitmap_2 ].u_obj , & displayio_bitmap_type , MP_QSTR_source_bitmap_2 )); // the second source bitmap
285292
286- float factor1 = (args [ARG_factor_1 ].u_obj == mp_const_none ) ? .5f : mp_obj_float_get (args [ARG_factor_1 ].u_obj );
287- float factor2 = (args [ARG_factor_2 ].u_obj == mp_const_none ) ? 1 - factor1 : mp_obj_float_get (args [ARG_factor_2 ].u_obj );
293+ mp_float_t factor1 = (args [ARG_factor_1 ].u_obj == mp_const_none ) ? MICROPY_FLOAT_CONST ( .5 ) : mp_obj_float_get (args [ARG_factor_1 ].u_obj );
294+ mp_float_t factor2 = (args [ARG_factor_2 ].u_obj == mp_const_none ) ? 1 - factor1 : mp_obj_float_get (args [ARG_factor_2 ].u_obj );
288295
289296 displayio_colorspace_t colorspace = (displayio_colorspace_t )cp_enum_value (& displayio_colorspace_type , args [ARG_colorspace ].u_obj );
290297
@@ -346,12 +353,12 @@ STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_a
346353 enum {ARG_dest_bitmap , ARG_x1 , ARG_y1 , ARG_x2 , ARG_y2 , ARG_value };
347354
348355 static const mp_arg_t allowed_args [] = {
349- {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
350- {MP_QSTR_x1 , MP_ARG_REQUIRED | MP_ARG_INT },
351- {MP_QSTR_y1 , MP_ARG_REQUIRED | MP_ARG_INT },
352- {MP_QSTR_x2 , MP_ARG_REQUIRED | MP_ARG_INT },
353- {MP_QSTR_y2 , MP_ARG_REQUIRED | MP_ARG_INT },
354- {MP_QSTR_value , MP_ARG_REQUIRED | MP_ARG_INT },
356+ {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
357+ {MP_QSTR_x1 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
358+ {MP_QSTR_y1 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
359+ {MP_QSTR_x2 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
360+ {MP_QSTR_y2 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
361+ {MP_QSTR_value , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
355362 };
356363 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
357364 mp_arg_parse_all (n_args , pos_args , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
@@ -398,10 +405,10 @@ STATIC mp_obj_t bitmaptools_obj_boundary_fill(size_t n_args, const mp_obj_t *pos
398405 enum {ARG_dest_bitmap , ARG_x , ARG_y , ARG_fill_color_value , ARG_replaced_color_value };
399406
400407 static const mp_arg_t allowed_args [] = {
401- {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
402- {MP_QSTR_x , MP_ARG_REQUIRED | MP_ARG_INT },
403- {MP_QSTR_y , MP_ARG_REQUIRED | MP_ARG_INT },
404- {MP_QSTR_fill_color_value , MP_ARG_REQUIRED | MP_ARG_INT },
408+ {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
409+ {MP_QSTR_x , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
410+ {MP_QSTR_y , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
411+ {MP_QSTR_fill_color_value , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
405412 {MP_QSTR_replaced_color_value , MP_ARG_INT , {.u_int = INT_MAX } },
406413 };
407414 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
@@ -461,12 +468,12 @@ STATIC mp_obj_t bitmaptools_obj_draw_line(size_t n_args, const mp_obj_t *pos_arg
461468 enum {ARG_dest_bitmap , ARG_x1 , ARG_y1 , ARG_x2 , ARG_y2 , ARG_value };
462469
463470 static const mp_arg_t allowed_args [] = {
464- {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
465- {MP_QSTR_x1 , MP_ARG_REQUIRED | MP_ARG_INT },
466- {MP_QSTR_y1 , MP_ARG_REQUIRED | MP_ARG_INT },
467- {MP_QSTR_x2 , MP_ARG_REQUIRED | MP_ARG_INT },
468- {MP_QSTR_y2 , MP_ARG_REQUIRED | MP_ARG_INT },
469- {MP_QSTR_value , MP_ARG_REQUIRED | MP_ARG_INT },
471+ {MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
472+ {MP_QSTR_x1 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
473+ {MP_QSTR_y1 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
474+ {MP_QSTR_x2 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
475+ {MP_QSTR_y2 , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
476+ {MP_QSTR_value , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
470477 };
471478 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
472479 mp_arg_parse_all (n_args , pos_args , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
@@ -532,8 +539,8 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_draw_line_obj, 0, bitmaptools_obj_draw_li
532539STATIC mp_obj_t bitmaptools_arrayblit (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
533540 enum { ARG_bitmap , ARG_data , ARG_x1 , ARG_y1 , ARG_x2 , ARG_y2 , ARG_skip_index };
534541 static const mp_arg_t allowed_args [] = {
535- { MP_QSTR_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
536- { MP_QSTR_data , MP_ARG_REQUIRED | MP_ARG_OBJ },
542+ { MP_QSTR_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
543+ { MP_QSTR_data , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
537544 { MP_QSTR_x1 , MP_ARG_INT , {.u_int = 0 } },
538545 { MP_QSTR_y1 , MP_ARG_INT , {.u_int = 0 } },
539546 { MP_QSTR_x2 , MP_ARG_INT , {.u_int = -1 } },
@@ -598,9 +605,9 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_arrayblit_obj, 0, bitmaptools_arrayblit);
598605STATIC mp_obj_t bitmaptools_readinto (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
599606 enum { ARG_bitmap , ARG_file , ARG_bits_per_pixel , ARG_element_size , ARG_reverse_pixels_in_element , ARG_swap_bytes_in_element , ARG_reverse_rows };
600607 static const mp_arg_t allowed_args [] = {
601- { MP_QSTR_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
602- { MP_QSTR_file , MP_ARG_REQUIRED | MP_ARG_OBJ },
603- { MP_QSTR_bits_per_pixel , MP_ARG_REQUIRED | MP_ARG_INT },
608+ { MP_QSTR_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
609+ { MP_QSTR_file , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
610+ { MP_QSTR_bits_per_pixel , MP_ARG_REQUIRED | MP_ARG_INT , {. u_obj = 0 } },
604611 { MP_QSTR_element_size , MP_ARG_INT , { .u_int = 1 } },
605612 { MP_QSTR_reverse_pixels_in_element , MP_ARG_BOOL , { .u_bool = false } },
606613 { MP_QSTR_swap_bytes_in_element , MP_ARG_BOOL , { .u_bool = false } },
@@ -682,9 +689,9 @@ MAKE_ENUM_TYPE(bitmaptools, DitherAlgorithm, bitmaptools_dither_algorithm);
682689STATIC mp_obj_t bitmaptools_dither (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
683690 enum { ARG_dest_bitmap , ARG_source_bitmap , ARG_source_colorspace , ARG_algorithm };
684691 static const mp_arg_t allowed_args [] = {
685- { MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
686- { MP_QSTR_source_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ },
687- { MP_QSTR_source_colorspace , MP_ARG_REQUIRED | MP_ARG_OBJ },
692+ { MP_QSTR_dest_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
693+ { MP_QSTR_source_bitmap , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
694+ { MP_QSTR_source_colorspace , MP_ARG_REQUIRED | MP_ARG_OBJ , {. u_obj = 0 } },
688695 { MP_QSTR_algorithm , MP_ARG_OBJ , { .u_obj = MP_ROM_PTR ((void * )& dither_algorithm_Atkinson_obj ) } },
689696 };
690697 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
0 commit comments