Add bitmaptools to unix build
This commit is contained in:
parent
c6dbc7df3a
commit
d55388a17d
@ -35,12 +35,14 @@ SRC_BITMAP := \
|
||||
shared-module/displayio/area.c \
|
||||
shared-module/displayio/Bitmap.c \
|
||||
shared-module/displayio/ColorConverter.c \
|
||||
shared-bindings/bitmaptools/__init__.c \
|
||||
shared-module/bitmaptools/__init__.c \
|
||||
shared-bindings/util.c \
|
||||
|
||||
$(info $(SRC_BITMAP))
|
||||
SRC_C += $(SRC_BITMAP)
|
||||
|
||||
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1
|
||||
CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1 -DCIRCUITPY_BITMAPTOOLS=1
|
||||
|
||||
SRC_C += coverage.c
|
||||
SRC_CXX += coveragecpp.cpp
|
||||
|
@ -36,6 +36,13 @@
|
||||
#include "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#if MICROPY_VFS
|
||||
#include "extmod/vfs.h"
|
||||
#endif
|
||||
#if MICROPY_VFS_POSIX
|
||||
#include "extmod/vfs_posix.h"
|
||||
#endif
|
||||
|
||||
//| """Collection of bitmap manipulation tools"""
|
||||
//|
|
||||
|
||||
@ -154,8 +161,8 @@ STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args
|
||||
ARG_angle, ARG_scale, ARG_skip_index};
|
||||
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0}},
|
||||
{MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0}},
|
||||
|
||||
{MP_QSTR_ox, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, // None convert to destination->width / 2
|
||||
{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
|
||||
args[ARG_source_clip1].u_obj, &source_clip1_x, &source_clip1_y);
|
||||
|
||||
// Confirm the angle value
|
||||
float angle = 0.0;
|
||||
mp_float_t angle = 0.0;
|
||||
if (args[ARG_angle].u_obj != mp_const_none) {
|
||||
angle = mp_obj_get_float(args[ARG_angle].u_obj);
|
||||
}
|
||||
|
||||
// Confirm the scale value
|
||||
float scale = 1.0;
|
||||
mp_float_t scale = 1.0;
|
||||
if (args[ARG_scale].u_obj != mp_const_none) {
|
||||
scale = mp_obj_get_float(args[ARG_scale].u_obj);
|
||||
}
|
||||
@ -269,10 +276,10 @@ STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args,
|
||||
enum {ARG_dest_bitmap, ARG_source_bitmap_1, ARG_source_bitmap_2, ARG_colorspace, ARG_factor_1, ARG_factor_2};
|
||||
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_source_bitmap_1, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_source_bitmap_2, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_colorspace, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = NULL}},
|
||||
{MP_QSTR_source_bitmap_1, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = NULL}},
|
||||
{MP_QSTR_source_bitmap_2, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = NULL}},
|
||||
{MP_QSTR_colorspace, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = NULL}},
|
||||
{MP_QSTR_factor_1, MP_ARG_OBJ, {.u_obj = MP_ROM_NONE}},
|
||||
{MP_QSTR_factor_2, MP_ARG_OBJ, {.u_obj = MP_ROM_NONE}},
|
||||
};
|
||||
@ -283,8 +290,8 @@ STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args,
|
||||
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
|
||||
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
|
||||
|
||||
float factor1 = (args[ARG_factor_1].u_obj == mp_const_none) ? .5f : mp_obj_float_get(args[ARG_factor_1].u_obj);
|
||||
float factor2 = (args[ARG_factor_2].u_obj == mp_const_none) ? 1 - factor1 : mp_obj_float_get(args[ARG_factor_2].u_obj);
|
||||
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);
|
||||
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);
|
||||
|
||||
displayio_colorspace_t colorspace = (displayio_colorspace_t)cp_enum_value(&displayio_colorspace_type, args[ARG_colorspace].u_obj);
|
||||
|
||||
@ -346,12 +353,12 @@ STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_a
|
||||
enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value};
|
||||
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_x1, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_y1, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_x2, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_y2, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_value, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0}},
|
||||
{MP_QSTR_x1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_y1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_x2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_y2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_value, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
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
|
||||
enum {ARG_dest_bitmap, ARG_x, ARG_y, ARG_fill_color_value, ARG_replaced_color_value};
|
||||
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_x, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_y, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_fill_color_value, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0}},
|
||||
{MP_QSTR_x, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_y, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_fill_color_value, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_replaced_color_value, MP_ARG_INT, {.u_int = INT_MAX} },
|
||||
};
|
||||
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
|
||||
enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value};
|
||||
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ},
|
||||
{MP_QSTR_x1, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_y1, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_x2, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_y2, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_value, MP_ARG_REQUIRED | MP_ARG_INT},
|
||||
{MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0}},
|
||||
{MP_QSTR_x1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_y1, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_x2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_y2, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
{MP_QSTR_value, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0}},
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
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
|
||||
STATIC mp_obj_t bitmaptools_arrayblit(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_bitmap, ARG_data, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_skip_index };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_data, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_data, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_x1, MP_ARG_INT, {.u_int = 0} },
|
||||
{ MP_QSTR_y1, MP_ARG_INT, {.u_int = 0} },
|
||||
{ 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);
|
||||
STATIC mp_obj_t bitmaptools_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
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 };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_file, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_bits_per_pixel, MP_ARG_REQUIRED | MP_ARG_INT },
|
||||
{ MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_file, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_bits_per_pixel, MP_ARG_REQUIRED | MP_ARG_INT, {.u_obj = 0} },
|
||||
{ MP_QSTR_element_size, MP_ARG_INT, { .u_int = 1 } },
|
||||
{ MP_QSTR_reverse_pixels_in_element, MP_ARG_BOOL, { .u_bool = false } },
|
||||
{ MP_QSTR_swap_bytes_in_element, MP_ARG_BOOL, { .u_bool = false } },
|
||||
@ -682,9 +689,9 @@ MAKE_ENUM_TYPE(bitmaptools, DitherAlgorithm, bitmaptools_dither_algorithm);
|
||||
STATIC mp_obj_t bitmaptools_dither(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_dest_bitmap, ARG_source_bitmap, ARG_source_colorspace, ARG_algorithm };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_source_colorspace, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||
{ MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_source_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_source_colorspace, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = 0} },
|
||||
{ MP_QSTR_algorithm, MP_ARG_OBJ, { .u_obj = MP_ROM_PTR((void *)&dither_algorithm_Atkinson_obj) } },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
|
@ -46,8 +46,8 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
|
||||
displayio_bitmap_t *source, int16_t px, int16_t py,
|
||||
int16_t source_clip0_x, int16_t source_clip0_y,
|
||||
int16_t source_clip1_x, int16_t source_clip1_y,
|
||||
float angle,
|
||||
float scale,
|
||||
mp_float_t angle,
|
||||
mp_float_t scale,
|
||||
uint32_t skip_index, bool skip_index_none);
|
||||
|
||||
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
|
||||
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);
|
||||
void common_hal_bitmaptools_dither(displayio_bitmap_t *dest_bitmap, displayio_bitmap_t *source_bitmap, displayio_colorspace_t colorspace, bitmaptools_dither_algorithm_t algorithm);
|
||||
|
||||
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);
|
||||
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);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H
|
||||
|
@ -44,8 +44,8 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
|
||||
displayio_bitmap_t *source, int16_t px, int16_t py,
|
||||
int16_t source_clip0_x, int16_t source_clip0_y,
|
||||
int16_t source_clip1_x, int16_t source_clip1_y,
|
||||
float angle,
|
||||
float scale,
|
||||
mp_float_t angle,
|
||||
mp_float_t scale,
|
||||
uint32_t skip_index, bool skip_index_none) {
|
||||
|
||||
// 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
|
||||
int16_t maxx = dest_clip0_x;
|
||||
int16_t maxy = dest_clip0_y;
|
||||
|
||||
float sinAngle = sinf(angle);
|
||||
float cosAngle = cosf(angle);
|
||||
mp_float_t sinAngle = MICROPY_FLOAT_C_FUN(sin)(angle);
|
||||
mp_float_t cosAngle = MICROPY_FLOAT_C_FUN(cos)(angle);
|
||||
|
||||
float dx, dy;
|
||||
mp_float_t dx, dy;
|
||||
|
||||
/* Compute the position of where each corner on the source bitmap
|
||||
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
|
||||
maxy = dest_clip1_y - 1;
|
||||
}
|
||||
|
||||
float dvCol = cosAngle / scale;
|
||||
float duCol = sinAngle / scale;
|
||||
mp_float_t dvCol = cosAngle / scale;
|
||||
mp_float_t duCol = sinAngle / scale;
|
||||
|
||||
float duRow = dvCol;
|
||||
float dvRow = -duCol;
|
||||
mp_float_t duRow = dvCol;
|
||||
mp_float_t dvRow = -duCol;
|
||||
|
||||
float startu = px - (ox * dvCol + oy * duCol);
|
||||
float startv = py - (ox * dvRow + oy * duRow);
|
||||
mp_float_t startu = px - (ox * dvCol + oy * duCol);
|
||||
mp_float_t startv = py - (ox * dvRow + oy * duRow);
|
||||
|
||||
float rowu = startu + miny * duCol;
|
||||
float rowv = startv + miny * dvCol;
|
||||
mp_float_t rowu = startu + miny * duCol;
|
||||
mp_float_t rowv = startv + miny * dvCol;
|
||||
|
||||
displayio_area_t dirty_area = {minx, miny, maxx + 1, maxy + 1};
|
||||
displayio_area_t dirty_area = {minx, miny, maxx + 1, maxy + 1, NULL};
|
||||
displayio_bitmap_set_dirty_area(self, &dirty_area);
|
||||
|
||||
for (y = miny; y <= maxy; y++) {
|
||||
float u = rowu + minx * duRow;
|
||||
float v = rowv + minx * dvRow;
|
||||
mp_float_t u = rowu + minx * duRow;
|
||||
mp_float_t v = rowv + minx * dvRow;
|
||||
for (x = minx; x <= maxx; x++) {
|
||||
if (u >= source_clip0_x && u < source_clip1_x && v >= source_clip0_y && v < source_clip1_y) {
|
||||
uint32_t c = common_hal_displayio_bitmap_get_pixel(source, u, v);
|
||||
uint32_t c = common_hal_displayio_bitmap_get_pixel(source, (int)u, (int)v);
|
||||
if ((skip_index_none) || (c != skip_index)) {
|
||||
displayio_bitmap_write_pixel(self, x, y, c);
|
||||
}
|
||||
@ -227,10 +227,10 @@ void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
||||
//
|
||||
// input checks should ensure that x1 < x2 and y1 < y2 and are within the bitmap region
|
||||
|
||||
displayio_area_t area = { x1, y1, x2, y2 };
|
||||
displayio_area_t area = { x1, y1, x2, y2, NULL };
|
||||
displayio_area_canon(&area);
|
||||
|
||||
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height };
|
||||
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height, NULL };
|
||||
displayio_area_compute_overlap(&area, &bitmap_area, &area);
|
||||
|
||||
// update the dirty rectangle
|
||||
@ -378,7 +378,7 @@ void common_hal_bitmaptools_boundary_fill(displayio_bitmap_t *destination,
|
||||
}
|
||||
|
||||
// set dirty the area so displayio will draw
|
||||
displayio_area_t area = { minx, miny, maxx + 1, maxy + 1};
|
||||
displayio_area_t area = { minx, miny, maxx + 1, maxy + 1, NULL};
|
||||
displayio_bitmap_set_dirty_area(destination, &area);
|
||||
|
||||
}
|
||||
@ -408,8 +408,8 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
||||
ybb0 = y1;
|
||||
ybb1 = y0 + 1;
|
||||
}
|
||||
displayio_area_t area = { xbb0, ybb0, xbb1, ybb1 };
|
||||
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height };
|
||||
displayio_area_t area = { xbb0, ybb0, xbb1, ybb1, NULL };
|
||||
displayio_area_t bitmap_area = { 0, 0, destination->width, destination->height, NULL };
|
||||
displayio_area_compute_overlap(&area, &bitmap_area, &area);
|
||||
|
||||
displayio_bitmap_set_dirty_area(destination, &area);
|
||||
@ -460,7 +460,7 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
||||
dx = x1 - x0;
|
||||
dy = abs(y1 - y0);
|
||||
|
||||
float err = dx / 2;
|
||||
mp_float_t err = dx / 2;
|
||||
|
||||
if (y0 < y1) {
|
||||
ystep = 1;
|
||||
@ -509,14 +509,14 @@ void common_hal_bitmaptools_arrayblit(displayio_bitmap_t *self, void *data, int
|
||||
}
|
||||
}
|
||||
}
|
||||
displayio_area_t area = { x1, y1, x2, y2 };
|
||||
displayio_area_t area = { x1, y1, x2, y2, NULL };
|
||||
displayio_bitmap_set_dirty_area(self, &area);
|
||||
}
|
||||
|
||||
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) {
|
||||
uint32_t mask = (1 << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1;
|
||||
|
||||
displayio_area_t a = {0, 0, self->width, self->height};
|
||||
displayio_area_t a = {0, 0, self->width, self->height, NULL};
|
||||
displayio_bitmap_set_dirty_area(self, &a);
|
||||
|
||||
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
|
||||
fill_row(source_bitmap, swap, rows[2], y + 2, info->mx);
|
||||
}
|
||||
|
||||
displayio_area_t a = { 0, 0, width, height };
|
||||
displayio_area_t a = { 0, 0, width, height, NULL };
|
||||
displayio_bitmap_set_dirty_area(dest_bitmap, &a);
|
||||
}
|
||||
|
||||
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) {
|
||||
displayio_area_t a = {0, 0, dest->width, dest->height};
|
||||
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) {
|
||||
displayio_area_t a = {0, 0, dest->width, dest->height, NULL};
|
||||
displayio_bitmap_set_dirty_area(dest, &a);
|
||||
|
||||
int ifactor1 = (int)(factor1 * 256);
|
||||
|
Loading…
Reference in New Issue
Block a user