8000 Add bitmaptools to unix build · jcbender/circuitpython@d55388a · GitHub
[go: up one dir, main page]

Skip to content

Commit d55388a

Browse files
committed
Add bitmaptools to unix build
1 parent c6dbc7d commit d55388a

File tree

4 files changed

+75
-66
lines changed

4 files changed

+75
-66
lines changed

ports/unix/variants/coverage/mpconfigvariant.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ SRC_BITMAP := \
3535
shared-module/displayio/area.c \
3636
shared-module/displayio/Bitmap.c \
3737
shared-module/displayio/ColorConverter.c \
38+
shared-bindings/bitmaptools/__init__.c \
39+
shared-module/bitmaptools/__init__.c \
3840
shared-bindings/util.c \
3941

4042
$(info $(SRC_BITMAP))
4143
SRC_C += $(SRC_BITMAP)
4244

43-
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1
45+
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1 -DCIRCUITPY_BITMAPTOOLS=1
4446

4547
SRC_C += coverage.c
4648
SRC_CXX += coveragecpp.cpp

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 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
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 = 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);
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 = 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);
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 = 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)];

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-module/bitmaptools/__init__.c

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
4444
displayio_bitmap_t *source, int16_t px, int16_t py,
4545
int16_t source_clip0_x, int16_t source_clip0_y,
4646
int16_t source_clip1_x, int16_t source_clip1_y,
47-
float angle,
48-
float scale,
47+
mp_float_t angle,
48+
mp_float_t scale,
4949
uint32_t skip_index, bool skip_index_none) {
5050

5151
// Copies region from source to the destination bitmap, including rotation,
@@ -105,10 +105,10 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
105105
int16_t maxx = dest_clip0_x;
106106
int16_t maxy = dest_clip0_y;
107107

108-
float sinAngle = sinf(angle);
109-
float cosAngle = cosf(angle);
108+
mp_float_t sinAngle = MICROPY_FLOAT_C_FUN(sin)(angle);
109+
mp_float_t cosAngle = MICROPY_FLOAT_C_FUN(cos)(angle);
110110

111-
float dx, dy;
111+
mp_float_t dx, dy;
112112

113113
/* Compute the position of where each corner on the source bitmap
114114
will be on the destination to get a bounding box for scanning */
@@ -186,27 +186,27 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
186186
maxy = dest_clip1_y - 1;
187187
}
188188

189-
float dvCol = cosAngle / scale;
190-
float duCol = sinAngle / scale;
189+
mp_float_t dvCol = cosAngle / scale;
190+
mp_float_t duCol = sinAngle / scale;
191191

192-
float duRow = dvCol;
193-
float dvRow = -duCol;
192+
mp_float_t duRow = dvCol;
193+
mp_float_t dvRow = -duCol;
194194

195-
float startu = px - (ox * dvCol + oy * duCol);
196-
float startv = py - (ox * dvRow + oy * duRow);
195+
mp_float_t startu = px - (ox * dvCol + oy * duCol);
196+
mp_float_t startv = py - (ox * dvRow + oy * duRow);
197197

198-
float rowu = startu + miny * duCol;
199-
float rowv = startv + miny * dvCol;
198+
mp_float_t rowu = startu + miny * duCol;
199+
mp_float_t rowv = startv + miny * dvCol;
200200

201-
displayio_area_t dirty_area = {minx, miny, maxx + 1, maxy + 1};
201+
displayio_area_t dirty_area = {minx, miny, maxx + 1, maxy + 1, NULL};
202202
displayio_bitmap_set_dirty_area(self, &dirty_area);
203203

204204
for (y = miny; y <= maxy; y++) {
205-
float u = rowu + minx * duRow;
206-
float v = rowv + minx * dvRow;
205+
mp_float_t u = rowu + minx * duRow;
206+
mp_float_t v = rowv + minx * dvRow;
207207
for (x = minx; x <= maxx; x++) {
208208
if (u >= source_clip0_x && u < source_clip1_x && v >= source_clip0_y && v < source_clip1_y) {
209-
uint32_t c = common_hal_displayio_bitmap_get_pixel(source, u, v);
209+
uint32_t c = common_hal_displayio_bitmap_get_pixel(source, (int)u, (int)v);
210210
if ((skip_index_none) || (c != skip_index)) {
211211
displayio_bitmap_write_pixel(self, x, y, c);
212212
}
@@ -227,10 +227,10 @@ void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
227227
//
228228
// input checks should ensure that x1 < x2 and y1 < y2 and are within the bitmap region
229229

230-
displayio_area_t area = { x1, y1, x2, y2 };
230+
displayio_area_t area = { x1, y1, x2, y2, NULL };
231231
displayio_area_canon(&area);
232232

233-
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height };
233+
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height, NULL };
234234
displayio_area_compute_overlap(&area, &bitmap_area, &area);
235235

236236
// update the dirty rectangle
@@ -378,7 +378,7 @@ void common_hal_bitmaptools_boundary_fill(displayio_bitmap_t *destination,
378378
}
379379

380380
// set dirty the area so displayio will draw
381-
displayio_area_t area = { minx, miny, maxx + 1, maxy + 1};
381+
displayio_area_t area = { minx, miny, maxx + 1, maxy + 1, NULL};
382382
displayio_bitmap_set_dirty_area(destination, &area);
383383

384384
}
@@ -408,8 +408,8 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
408408
ybb0 = y1;
409409
ybb1 = y0 + 1;
410410
}
411-
displayio_area_t area = { xbb0, ybb0, xbb1, ybb1 };
412-
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height };
411+
displayio_area_t area = { xbb0, ybb0, xbb1, ybb1, NULL };
412+
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height, NULL };
413413
displayio_area_compute_overlap(&area, &bitmap_area, &area);
414414

415415
displayio_bitmap_set_dirty_area(destination, &area);
@@ -460,7 +460,7 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
460460
dx = x1 - x0;
461461
dy = abs(y1 - y0);
462462

463-
float err = dx / 2;
463+
mp_float_t err = dx / 2;
464464

465465
if (y0 < y1) {
466466
ystep = 1;
@@ -509,14 +509,14 @@ void common_hal_bitmaptools_arrayblit(displayio_bitmap_t *self, void *data, int
509509
}
510510
}
511511
}
512-
displayio_area_t area = { x1, y1, x2, y2 };
512+
displayio_area_t area = { x1, y1, x2, y2, NULL };
513513
displayio_bitmap_set_dirty_area(self, &area);
514514
}
515515

516516
void common_hal_bitmaptools_readinto(displayio_bitmap_t *self, pyb_file_obj_t *file, int element_size, int bits_per_pixel, bool reverse_pixels_in_element, bool swap_bytes, bool reverse_rows) {
517517
uint32_t mask = (1 << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1;
518518

519-
displayio_area_t a = {0, 0, self->width, self->height};
519+
displayio_area_t a = {0, 0, self->width, self->height, NULL};
520520
displayio_bitmap_set_dirty_area(self, &a);
521521

522522
size_t elements_per_row = (self->width * bits_per_pixel + element_size * 8 - 1) / (element_size * 8);
@@ -785,12 +785,12 @@ void common_hal_bitmaptools_dither(displayio_bitmap_t *dest_bitmap, displayio_bi
785785
fill_row(source_bitmap, swap, rows[2], y + 2, info->mx);
786786
}
787787

788-
displayio_area_t a = { 0, 0, width, height };
788+
displayio_area_t a = { 0, 0, width, height, NULL };
789789
displayio_bitmap_set_dirty_area(dest_bitmap, &a);
790790
}
791791

792-
void common_hal_bitmaptools_alphablend(displayio_bitmap_t *dest, displayio_bitmap_t *source1, displayio_bitmap_t *source2, displayio_colorspace_t colorspace, float factor1, float factor2) {
793-
displayio_area_t a = {0, 0, dest->width, dest->height};
792+
void common_hal_bitmaptools_alphablend(displayio_bitmap_t *dest, displayio_bitmap_t *source1, displayio_bitmap_t *source2, displayio_colorspace_t colorspace, mp_float_t factor1, mp_float_t factor2) {
793+
displayio_area_t a = {0, 0, dest->width, dest->height, NULL};
794794
displayio_bitmap_set_dirty_area(dest, &a);
795795

796796
int ifactor1 = (int)(factor1 * 256);

0 commit comments

Comments
 (0)
0