36
36
#include "py/obj.h"
37
37
#include "py/runtime.h"
38
38
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
+
39
46
//| """Collection of bitmap manipulation tools"""
40
47
//|
41
48
@@ -154,8 +161,8 @@ STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args
154
161
ARG_angle , ARG_scale , ARG_skip_index };
155
162
156
163
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 } },
159
166
160
167
{MP_QSTR_ox , MP_ARG_KW_ONLY | MP_ARG_OBJ , {.u_obj = mp_const_none } }, // None convert to destination->width / 2
161
168
{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
207
214
args [ARG_source_clip1 ].u_obj , & source_clip1_x , & source_clip1_y );
208
215
209
216
// Confirm the angle value
210
- float angle = 0.0 ;
217
+ mp_float_t angle = 0.0 ;
211
218
if (args [ARG_angle ].u_obj != mp_const_none ) {
212
219
angle = mp_obj_get_float (args [ARG_angle ].u_obj );
213
220
}
214
221
215
222
// Confirm the scale value
216
- float scale = 1.0 ;
223
+ mp_float_t scale = 1.0 ;
217
224
if (args [ARG_scale ].u_obj != mp_const_none ) {
218
225
scale = mp_obj_get_float (args [ARG_scale ].u_obj );
219
226
}
@@ -269,10 +276,10 @@ STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args,
269
276
enum {ARG_dest_bitmap , ARG_source_bitmap_1 , ARG_source_bitmap_2 , ARG_colorspace , ARG_factor_1 , ARG_factor_2 };
270
277
271
278
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 } },
276
283
{MP_QSTR_factor_1 , MP_ARG_OBJ , {.u_obj = MP_ROM_NONE }},
277
284
{MP_QSTR_factor_2 , MP_ARG_OBJ , {.u_obj = MP_ROM_NONE }},
278
285
};
@@ -283,8 +290,8 @@ STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args,
283
290
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
284
291
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
285
292
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 );
288
295
289
296
displayio_colorspace_t colorspace = (displayio_colorspace_t )cp_enum_value (& displayio_colorspace_type , args [ARG_colorspace ].u_obj );
290
297
@@ -346,12 +353,12 @@ STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_a
346
353
enum {ARG_dest_bitmap , ARG_x1 , ARG_y1 , ARG_x2 , ARG_y2 , ARG_value };
347
354
348
355
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 } },
355
362
};
356
363
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
357
364
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
398
405
enum {ARG_dest_bitmap , ARG_x , ARG_y , ARG_fill_color_value , ARG_replaced_color_value };
399
406
400
407
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 } },
405
412
{MP_QSTR_replaced_color_value , MP_ARG_INT , {.u_int = INT_MAX } },
406
413
};
407
414
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
461
468
enum {ARG_dest_bitmap , ARG_x1 , ARG_y1 , ARG_x2 , ARG_y2 , ARG_value };
462
469
463
470
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 } },
470
477
};
471
478
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
472
479
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
532
539
STATIC mp_obj_t bitmaptools_arrayblit (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
533
540
enum { ARG_bitmap , ARG_data , ARG_x1 , ARG_y1 , ARG_x2 , ARG_y2 , ARG_skip_index };
534
541
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 } },
537
544
{ MP_QSTR_x1 , MP_ARG_INT , {.u_int = 0 } },
538
545
{ MP_QSTR_y1 , MP_ARG_INT , {.u_int = 0 } },
539
546
{ 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);
598
605
STATIC mp_obj_t bitmaptools_readinto (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
599
606
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 };
600
607
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 } },
604
611
{ MP_QSTR_element_size , MP_ARG_INT , { .u_int = 1 } },
605
612
{ MP_QSTR_reverse_pixels_in_element , MP_ARG_BOOL , { .u_bool = false } },
606
613
{ MP_QSTR_swap_bytes_in_element , MP_ARG_BOOL , { .u_bool = false } },
@@ -682,9 +689,9 @@ MAKE_ENUM_TYPE(bitmaptools, DitherAlgorithm, bitmaptools_dither_algorithm);
682
689
STATIC mp_obj_t bitmaptools_dither (size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
683
690
enum { ARG_dest_bitmap , ARG_source_bitmap , ARG_source_colorspace , ARG_algorithm };
684
691
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 } },
688
695
{ MP_QSTR_algorithm , MP_ARG_OBJ , { .u_obj = MP_ROM_PTR ((void * )& dither_algorithm_Atkinson_obj ) } },
689
696
};
690
697
mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
0 commit comments