Skip to content

Commit b9ecb0f

Browse files
authored
Merge pull request #5575 from jepler/bitmaptools-on-host
Enable bitmaptools on the 'unix' build, 'coverage' variant
2 parents 28b5733 + 06bb6ea commit b9ecb0f

File tree

16 files changed

+307
-223
lines changed

16 files changed

+307
-223
lines changed

ports/unix/displayio_colorspace_only.c renamed to ports/unix/displayio_min.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "py/runtime.h"
3030

3131
#include "shared-bindings/displayio/__init__.h"
32+
#include "shared-bindings/displayio/Bitmap.h"
3233

3334
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, RGB888, DISPLAYIO_COLORSPACE_RGB888);
3435
MAKE_ENUM_VALUE(displayio_colorspace_type, displayio_colorspace, RGB565, DISPLAYIO_COLORSPACE_RGB565);
@@ -78,6 +79,7 @@ MAKE_ENUM_TYPE(displayio, ColorSpace, displayio_colorspace);
7879

7980
STATIC const mp_rom_map_elem_t displayio_module_globals_table[] = {
8081
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_displayio) },
82+
{ MP_ROM_QSTR(MP_QSTR_Bitmap), MP_ROM_PTR(&displayio_bitmap_type) },
8183
{ MP_ROM_QSTR(MP_QSTR_Colorspace), MP_ROM_PTR(&displayio_colorspace_type) },
8284
};
8385
STATIC MP_DEFINE_CONST_DICT(displayio_module_globals, displayio_module_globals_table);
@@ -87,4 +89,4 @@ const mp_obj_module_t displayio_module = {
8789
.globals = (mp_obj_dict_t *)&displayio_module_globals,
8890
};
8991

90-
MP_REGISTER_MODULE(MP_QSTR_displayio, displayio_module, CIRCUITPY_DISPLAYIO_COLORSPACE_ONLY);
92+
MP_REGISTER_MODULE(MP_QSTR_displayio, displayio_module, CIRCUITPY_DISPLAYIO_UNIX);

ports/unix/variants/coverage/mpconfigvariant.mk

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,22 @@ SRC_C += $(SRC_QRIO)
2727
CFLAGS += -DCIRCUITPY_QRIO=1
2828
$(BUILD)/lib/quirc/lib/%.o: CFLAGS += -Wno-shadow -Wno-sign-compare -include shared-module/qrio/quirc_alloc.h
2929

30-
SRC_GIFIO := $(patsubst ../../%,%,$(wildcard ../../shared-bindings/gifio/*.c ../../shared-module/gifio/*.c)) shared/runtime/context_manager_helpers.c displayio_colorspace_only.c shared-module/displayio/ColorConverter.c shared-bindings/util.c
31-
SRC_C += $(SRC_GIFIO)
32-
33-
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_COLORSPACE_ONLY=1
30+
SRC_BITMAP := \
31+
$(patsubst ../../%,%,$(wildcard ../../shared-bindings/gifio/*.c ../../shared-module/gifio/*.c)) \
32+
shared/runtime/context_manager_helpers.c \
33+
displayio_min.c \
34+
shared-bindings/displayio/Bitmap.c \
35+
shared-module/displayio/area.c \
36+
shared-module/displayio/Bitmap.c \
37+
shared-module/displayio/ColorConverter.c \
38+
shared-bindings/bitmaptools/__init__.c \
39+
shared-module/bitmaptools/__init__.c \
40+
shared-bindings/util.c \
41+
42+
$(info $(SRC_BITMAP))
43+
SRC_C += $(SRC_BITMAP)
44+
45+
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1 -DCIRCUITPY_BITMAPTOOLS=1
3446

3547
SRC_C += coverage.c
3648
SRC_CXX += coveragecpp.cpp

py/circuitpy_defns.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@ SRC_SHARED_MODULE_ALL = \
534534
displayio/Palette.c \
535535
displayio/Shape.c \
536536
displayio/TileGrid.c \
537+
displayio/area.c \
537538
displayio/__init__.c \
538539
fontio/BuiltinFont.c \
539540
fontio/__init__.c \

py/circuitpy_mpconfig.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ extern void common_hal_mcu_enable_interrupts(void);
176176
#define INT_FMT "%d"
177177
typedef int mp_int_t; // must be pointer size
178178
typedef unsigned mp_uint_t; // must be pointer size
179+
#if __GNUC__ >= 10 // on recent gcc versions we can check that this is so
180+
_Static_assert(sizeof(mp_int_t) == sizeof(void *));
181+
_Static_assert(sizeof(mp_uint_t) == sizeof(void *));
182+
#endif
179183
typedef long mp_off_t;
180184

181185
#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len)

shared-bindings/bitmaptools/__init__.c

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@
3636
#include "py/obj.h"
3737
#include "py/runtime.h"
3838

39+
#if MICROPY_VFS
40+
#include "extmod/vfs.h"
41+
#endif
42+
#if defined(MICROPY_VFS_POSIX) && 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 = MP_OBJ_NULL}},
165+
{MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL}},
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 = MP_OBJ_NULL}},
357+
{MP_QSTR_x1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
358+
{MP_QSTR_y1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
359+
{MP_QSTR_x2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
360+
{MP_QSTR_y2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
361+
{MP_QSTR_value, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
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 = MP_OBJ_NULL}},
409+
{MP_QSTR_x, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
410+
{MP_QSTR_y, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
411+
{MP_QSTR_fill_color_value, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
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 = MP_OBJ_NULL}},
472+
{MP_QSTR_x1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
473+
{MP_QSTR_y1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
474+
{MP_QSTR_x2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
475+
{MP_QSTR_y2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
476+
{MP_QSTR_value, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL}},
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
532539
STATIC 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 = MP_OBJ_NULL} },
543+
{ MP_QSTR_data, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
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);
598605
STATIC 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 = MP_OBJ_NULL} },
609+
{ MP_QSTR_file, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
610+
{ MP_QSTR_bits_per_pixel, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL} },
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);
682689
STATIC 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 = MP_OBJ_NULL} },
693+
{ MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
694+
{ MP_QSTR_source_colorspace, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
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)];

shared-bindings/bitmaptools/__init__.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
4646
displayio_bitmap_t *source, int16_t px, int16_t py,
4747
int16_t source_clip0_x, int16_t source_clip0_y,
4848
int16_t source_clip1_x, int16_t source_clip1_y,
49-
float angle,
50-
float scale,
49+
mp_float_t angle,
50+
mp_float_t scale,
5151
uint32_t skip_index, bool skip_index_none);
5252

5353
void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
@@ -68,6 +68,6 @@ void common_hal_bitmaptools_readinto(displayio_bitmap_t *self, pyb_file_obj_t *f
6868
void common_hal_bitmaptools_arrayblit(displayio_bitmap_t *self, void *data, int element_size, int x1, int y1, int x2, int y2, bool skip_specified, uint32_t skip_index);
6969
void common_hal_bitmaptools_dither(displayio_bitmap_t *dest_bitmap, displayio_bitmap_t *source_bitmap, displayio_colorspace_t colorspace, bitmaptools_dither_algorithm_t algorithm);
7070

71-
void common_hal_bitmaptools_alphablend(displayio_bitmap_t *destination, displayio_bitmap_t *source1, displayio_bitmap_t *source2, displayio_colorspace_t colorspace, float factor1, float factor2);
71+
void common_hal_bitmaptools_alphablend(displayio_bitmap_t *destination, displayio_bitmap_t *source1, displayio_bitmap_t *source2, displayio_colorspace_t colorspace, mp_float_t factor1, mp_float_t factor2);
7272

7373
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H

shared-bindings/canio/CAN.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ STATIC mp_obj_t canio_can_listen(size_t n_args, const mp_obj_t *pos_args, mp_map
240240

241241
enum { ARG_matches, ARG_timeout, NUM_ARGS };
242242
static const mp_arg_t allowed_args[] = {
243-
{ MP_QSTR_matches, MP_ARG_OBJ, {.u_obj = 0} },
244-
{ MP_QSTR_timeout, MP_ARG_OBJ, {.u_obj = 0} },
243+
{ MP_QSTR_matches, MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
244+
{ MP_QSTR_timeout, MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
245245
};
246246
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
247247
MP_STATIC_ASSERT(MP_ARRAY_SIZE(allowed_args) == NUM_ARGS);

shared-bindings/displayio/Bitmap.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include "py/binary.h"
3434
#include "py/objproperty.h"
3535
#include "py/runtime.h"
36-
#include "shared-bindings/microcontroller/Pin.h"
3736
#include "shared-bindings/util.h"
3837
#include "supervisor/shared/translate.h"
3938

@@ -206,9 +205,9 @@ STATIC mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t val
206205
STATIC mp_obj_t displayio_bitmap_obj_blit(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
207206
enum {ARG_x, ARG_y, ARG_source, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_skip_index};
208207
static const mp_arg_t allowed_args[] = {
209-
{MP_QSTR_x, MP_ARG_REQUIRED | MP_ARG_INT},
210-
{MP_QSTR_y, MP_ARG_REQUIRED | MP_ARG_INT},
211-
{MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
208+
{MP_QSTR_x, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL} },
209+
{MP_QSTR_y, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = MP_OBJ_NULL} },
210+
{MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
212211
{MP_QSTR_x1, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
213212
{MP_QSTR_y1, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
214213
{MP_QSTR_x2, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, // None convert to source->width

shared-bindings/displayio/area.c

Whitespace-only changes.

0 commit comments

Comments
 (0)