re-format with uncrustify
This commit is contained in:
parent
542fb58673
commit
97b6664201
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) {
|
STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) {
|
||||||
// Checks if point is None and returns default_value, otherwise decodes integer value
|
// Checks if point is None and returns default_value, otherwise decodes integer value
|
||||||
if ( point == mp_const_none ) {
|
if (point == mp_const_none) {
|
||||||
return default_value;
|
return default_value;
|
||||||
}
|
}
|
||||||
return mp_obj_get_int(point);
|
return mp_obj_get_int(point);
|
||||||
@ -47,13 +47,13 @@ STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) {
|
|||||||
STATIC void extract_tuple(mp_obj_t xy_tuple, int16_t *x, int16_t *y, int16_t x_default, int16_t y_default) {
|
STATIC void extract_tuple(mp_obj_t xy_tuple, int16_t *x, int16_t *y, int16_t x_default, int16_t y_default) {
|
||||||
// Helper function for rotozoom
|
// Helper function for rotozoom
|
||||||
// Extract x,y values from a tuple or default if None
|
// Extract x,y values from a tuple or default if None
|
||||||
if ( xy_tuple == mp_const_none ) {
|
if (xy_tuple == mp_const_none) {
|
||||||
*x = x_default;
|
*x = x_default;
|
||||||
*y = y_default;
|
*y = y_default;
|
||||||
} else if ( !MP_OBJ_IS_OBJ(xy_tuple) ) {
|
} else if (!MP_OBJ_IS_OBJ(xy_tuple)) {
|
||||||
mp_raise_ValueError(translate("clip point must be (x,y) tuple"));
|
mp_raise_ValueError(translate("clip point must be (x,y) tuple"));
|
||||||
} else {
|
} else {
|
||||||
mp_obj_t* items;
|
mp_obj_t *items;
|
||||||
mp_obj_get_array_fixed_n(xy_tuple, 2, &items);
|
mp_obj_get_array_fixed_n(xy_tuple, 2, &items);
|
||||||
*x = mp_obj_get_int(items[0]);
|
*x = mp_obj_get_int(items[0]);
|
||||||
*y = mp_obj_get_int(items[1]);
|
*y = mp_obj_get_int(items[1]);
|
||||||
@ -71,12 +71,12 @@ STATIC void validate_clip_region(displayio_bitmap_t *bitmap, mp_obj_t clip0_tupl
|
|||||||
extract_tuple(clip1_tuple, clip1_x, clip1_y, bitmap->width, bitmap->height);
|
extract_tuple(clip1_tuple, clip1_x, clip1_y, bitmap->width, bitmap->height);
|
||||||
|
|
||||||
// Ensure the value for clip0 is less than clip1 (for both x and y)
|
// Ensure the value for clip0 is less than clip1 (for both x and y)
|
||||||
if ( *clip0_x > *clip1_x ) {
|
if (*clip0_x > *clip1_x) {
|
||||||
int16_t temp_value = *clip0_x; // swap values
|
int16_t temp_value = *clip0_x; // swap values
|
||||||
*clip0_x = *clip1_x;
|
*clip0_x = *clip1_x;
|
||||||
*clip1_x = temp_value;
|
*clip1_x = temp_value;
|
||||||
}
|
}
|
||||||
if ( *clip0_y > *clip1_y ) {
|
if (*clip0_y > *clip1_y) {
|
||||||
int16_t temp_value = *clip0_y; // swap values
|
int16_t temp_value = *clip0_y; // swap values
|
||||||
*clip0_y = *clip1_y;
|
*clip0_y = *clip1_y;
|
||||||
*clip1_y = temp_value;
|
*clip1_y = temp_value;
|
||||||
@ -144,7 +144,7 @@ STATIC void validate_clip_region(displayio_bitmap_t *bitmap, mp_obj_t clip0_tupl
|
|||||||
//| set to None to copy all pixels"""
|
//| set to None to copy all pixels"""
|
||||||
//| ...
|
//| ...
|
||||||
//|
|
//|
|
||||||
STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args){
|
STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
enum {ARG_dest_bitmap, ARG_source_bitmap,
|
enum {ARG_dest_bitmap, ARG_source_bitmap,
|
||||||
ARG_ox, ARG_oy, ARG_dest_clip0, ARG_dest_clip1,
|
ARG_ox, ARG_oy, ARG_dest_clip0, ARG_dest_clip1,
|
||||||
ARG_px, ARG_py, ARG_source_clip0, ARG_source_clip1,
|
ARG_px, ARG_py, ARG_source_clip0, ARG_source_clip1,
|
||||||
@ -166,7 +166,7 @@ STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args
|
|||||||
|
|
||||||
{MP_QSTR_angle, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, // None convert to 0.0
|
{MP_QSTR_angle, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, // None convert to 0.0
|
||||||
{MP_QSTR_scale, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, // None convert to 1.0
|
{MP_QSTR_scale, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, // None convert to 1.0
|
||||||
{MP_QSTR_skip_index, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj=mp_const_none} },
|
{MP_QSTR_skip_index, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = mp_const_none} },
|
||||||
};
|
};
|
||||||
|
|
||||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||||
@ -204,14 +204,14 @@ 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);
|
args[ARG_source_clip1].u_obj, &source_clip1_x, &source_clip1_y);
|
||||||
|
|
||||||
// Confirm the angle value
|
// Confirm the angle value
|
||||||
float angle=0.0;
|
float angle = 0.0;
|
||||||
if ( args[ARG_angle].u_obj != mp_const_none ) {
|
if (args[ARG_angle].u_obj != mp_const_none) {
|
||||||
angle = mp_obj_get_float(args[ARG_angle].u_obj);
|
angle = mp_obj_get_float(args[ARG_angle].u_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirm the scale value
|
// Confirm the scale value
|
||||||
float scale=1.0;
|
float scale = 1.0;
|
||||||
if ( args[ARG_scale].u_obj != mp_const_none ) {
|
if (args[ARG_scale].u_obj != mp_const_none) {
|
||||||
scale = mp_obj_get_float(args[ARG_scale].u_obj);
|
scale = mp_obj_get_float(args[ARG_scale].u_obj);
|
||||||
}
|
}
|
||||||
if (scale < 0) { // ensure scale >= 0
|
if (scale < 0) { // ensure scale >= 0
|
||||||
@ -220,7 +220,7 @@ STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args
|
|||||||
|
|
||||||
uint32_t skip_index;
|
uint32_t skip_index;
|
||||||
bool skip_index_none; // Flag whether input skip_value was None
|
bool skip_index_none; // Flag whether input skip_value was None
|
||||||
if (args[ARG_skip_index].u_obj == mp_const_none ) {
|
if (args[ARG_skip_index].u_obj == mp_const_none) {
|
||||||
skip_index = 0;
|
skip_index = 0;
|
||||||
skip_index_none = true;
|
skip_index_none = true;
|
||||||
} else {
|
} else {
|
||||||
@ -262,7 +262,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_rotozoom_obj, 0, bitmaptools_obj_rotozoom
|
|||||||
//| fill region in the destination bitmap"""
|
//| fill region in the destination bitmap"""
|
||||||
//| ...
|
//| ...
|
||||||
//|
|
//|
|
||||||
STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args){
|
STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value};
|
enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value};
|
||||||
|
|
||||||
static const mp_arg_t allowed_args[] = {
|
static const mp_arg_t allowed_args[] = {
|
||||||
@ -315,7 +315,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_fill_region_obj, 0, bitmaptools_obj_fill_
|
|||||||
//| line in the destination bitmap"""
|
//| line in the destination bitmap"""
|
||||||
//| ...
|
//| ...
|
||||||
//|
|
//|
|
||||||
STATIC mp_obj_t bitmaptools_obj_draw_line(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args){
|
STATIC mp_obj_t bitmaptools_obj_draw_line(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value};
|
enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value};
|
||||||
|
|
||||||
static const mp_arg_t allowed_args[] = {
|
static const mp_arg_t allowed_args[] = {
|
||||||
@ -344,9 +344,9 @@ STATIC mp_obj_t bitmaptools_obj_draw_line(size_t n_args, const mp_obj_t *pos_arg
|
|||||||
int16_t y2 = args[ARG_y2].u_int;
|
int16_t y2 = args[ARG_y2].u_int;
|
||||||
|
|
||||||
// verify points are within the bitmap boundary (inclusive)
|
// verify points are within the bitmap boundary (inclusive)
|
||||||
if ( (x1 < 0) || (x2 < 0) || (y1 < 0) || (y2 < 0) ||
|
if ((x1 < 0) || (x2 < 0) || (y1 < 0) || (y2 < 0) ||
|
||||||
(x1 >= destination->width) || (x2 >= destination->width) ||
|
(x1 >= destination->width) || (x2 >= destination->width) ||
|
||||||
(y1 >= destination->height) || (y2 >= destination->height) ) {
|
(y1 >= destination->height) || (y2 >= destination->height)) {
|
||||||
mp_raise_ValueError(translate("out of range of target"));
|
mp_raise_ValueError(translate("out of range of target"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,7 +399,7 @@ STATIC mp_obj_t bitmaptools_arrayblit(size_t n_args, const mp_obj_t *pos_args, m
|
|||||||
{ MP_QSTR_y2, MP_ARG_INT, {.u_int = -1} },
|
{ MP_QSTR_y2, MP_ARG_INT, {.u_int = -1} },
|
||||||
{ MP_QSTR_skip_index, MP_ARG_OBJ, {.u_obj = mp_const_none } },
|
{ MP_QSTR_skip_index, MP_ARG_OBJ, {.u_obj = mp_const_none } },
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
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);
|
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ STATIC mp_obj_t bitmaptools_arrayblit(size_t n_args, const mp_obj_t *pos_args, m
|
|||||||
mp_raise_IndexError(translate("pixel coordinates out of bounds"));
|
mp_raise_IndexError(translate("pixel coordinates out of bounds"));
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t output_element_count = (x2-x1) * (y2-y1);
|
size_t output_element_count = (x2 - x1) * (y2 - y1);
|
||||||
size_t element_size = mp_binary_get_size('@', bufinfo.typecode, NULL);
|
size_t element_size = mp_binary_get_size('@', bufinfo.typecode, NULL);
|
||||||
size_t input_element_count = bufinfo.len / element_size;
|
size_t input_element_count = bufinfo.len / element_size;
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ STATIC mp_obj_t bitmaptools_readinto(size_t n_args, const mp_obj_t *pos_args, mp
|
|||||||
if (!MP_OBJ_IS_TYPE(args[ARG_file].u_obj, &mp_type_fileio)) {
|
if (!MP_OBJ_IS_TYPE(args[ARG_file].u_obj, &mp_type_fileio)) {
|
||||||
mp_raise_TypeError(NULL);
|
mp_raise_TypeError(NULL);
|
||||||
}
|
}
|
||||||
pyb_file_obj_t* file = MP_OBJ_TO_PTR(args[ARG_file].u_obj);
|
pyb_file_obj_t *file = MP_OBJ_TO_PTR(args[ARG_file].u_obj);
|
||||||
|
|
||||||
int element_size = args[ARG_element_size].u_int;
|
int element_size = args[ARG_element_size].u_int;
|
||||||
if (element_size != 1 && element_size != 2 && element_size != 4) {
|
if (element_size != 1 && element_size != 2 && element_size != 4) {
|
||||||
@ -523,5 +523,5 @@ STATIC MP_DEFINE_CONST_DICT(bitmaptools_module_globals, bitmaptools_module_globa
|
|||||||
|
|
||||||
const mp_obj_module_t bitmaptools_module = {
|
const mp_obj_module_t bitmaptools_module = {
|
||||||
.base = {&mp_type_module },
|
.base = {&mp_type_module },
|
||||||
.globals = (mp_obj_dict_t*)&bitmaptools_module_globals,
|
.globals = (mp_obj_dict_t *)&bitmaptools_module_globals,
|
||||||
};
|
};
|
||||||
|
@ -51,7 +51,7 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
|||||||
int16_t x1, int16_t y1,
|
int16_t x1, int16_t y1,
|
||||||
uint32_t value);
|
uint32_t value);
|
||||||
|
|
||||||
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_word, bool swap_bytes);
|
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_word, bool swap_bytes);
|
||||||
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_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);
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H
|
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H
|
||||||
|
@ -115,37 +115,77 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
|
|||||||
will be on the destination to get a bounding box for scanning */
|
will be on the destination to get a bounding box for scanning */
|
||||||
dx = -cosAngle * px * scale + sinAngle * py * scale + ox;
|
dx = -cosAngle * px * scale + sinAngle * py * scale + ox;
|
||||||
dy = -sinAngle * px * scale - cosAngle * py * scale + oy;
|
dy = -sinAngle * px * scale - cosAngle * py * scale + oy;
|
||||||
if(dx < minx) minx = (int16_t)dx;
|
if (dx < minx) {
|
||||||
if(dx > maxx) maxx = (int16_t)dx;
|
minx = (int16_t)dx;
|
||||||
if(dy < miny) miny = (int16_t)dy;
|
}
|
||||||
if(dy > maxy) maxy = (int16_t)dy;
|
if (dx > maxx) {
|
||||||
|
maxx = (int16_t)dx;
|
||||||
|
}
|
||||||
|
if (dy < miny) {
|
||||||
|
miny = (int16_t)dy;
|
||||||
|
}
|
||||||
|
if (dy > maxy) {
|
||||||
|
maxy = (int16_t)dy;
|
||||||
|
}
|
||||||
|
|
||||||
dx = cosAngle * (source->width - px) * scale + sinAngle * py * scale + ox;
|
dx = cosAngle * (source->width - px) * scale + sinAngle * py * scale + ox;
|
||||||
dy = sinAngle * (source->width - px) * scale - cosAngle * py * scale + oy;
|
dy = sinAngle * (source->width - px) * scale - cosAngle * py * scale + oy;
|
||||||
if(dx < minx) minx = (int16_t)dx;
|
if (dx < minx) {
|
||||||
if(dx > maxx) maxx = (int16_t)dx;
|
minx = (int16_t)dx;
|
||||||
if(dy < miny) miny = (int16_t)dy;
|
}
|
||||||
if(dy > maxy) maxy = (int16_t)dy;
|
if (dx > maxx) {
|
||||||
|
maxx = (int16_t)dx;
|
||||||
|
}
|
||||||
|
if (dy < miny) {
|
||||||
|
miny = (int16_t)dy;
|
||||||
|
}
|
||||||
|
if (dy > maxy) {
|
||||||
|
maxy = (int16_t)dy;
|
||||||
|
}
|
||||||
|
|
||||||
dx = cosAngle * (source->width - px) * scale - sinAngle * (source->height - py) * scale + ox;
|
dx = cosAngle * (source->width - px) * scale - sinAngle * (source->height - py) * scale + ox;
|
||||||
dy = sinAngle * (source->width - px) * scale + cosAngle * (source->height - py) * scale + oy;
|
dy = sinAngle * (source->width - px) * scale + cosAngle * (source->height - py) * scale + oy;
|
||||||
if(dx < minx) minx = (int16_t)dx;
|
if (dx < minx) {
|
||||||
if(dx > maxx) maxx = (int16_t)dx;
|
minx = (int16_t)dx;
|
||||||
if(dy < miny) miny = (int16_t)dy;
|
}
|
||||||
if(dy > maxy) maxy = (int16_t)dy;
|
if (dx > maxx) {
|
||||||
|
maxx = (int16_t)dx;
|
||||||
|
}
|
||||||
|
if (dy < miny) {
|
||||||
|
miny = (int16_t)dy;
|
||||||
|
}
|
||||||
|
if (dy > maxy) {
|
||||||
|
maxy = (int16_t)dy;
|
||||||
|
}
|
||||||
|
|
||||||
dx = -cosAngle * px * scale - sinAngle * (source->height - py) * scale + ox;
|
dx = -cosAngle * px * scale - sinAngle * (source->height - py) * scale + ox;
|
||||||
dy = -sinAngle * px * scale + cosAngle * (source->height - py) * scale + oy;
|
dy = -sinAngle * px * scale + cosAngle * (source->height - py) * scale + oy;
|
||||||
if(dx < minx) minx = (int16_t)dx;
|
if (dx < minx) {
|
||||||
if(dx > maxx) maxx = (int16_t)dx;
|
minx = (int16_t)dx;
|
||||||
if(dy < miny) miny = (int16_t)dy;
|
}
|
||||||
if(dy > maxy) maxy = (int16_t)dy;
|
if (dx > maxx) {
|
||||||
|
maxx = (int16_t)dx;
|
||||||
|
}
|
||||||
|
if (dy < miny) {
|
||||||
|
miny = (int16_t)dy;
|
||||||
|
}
|
||||||
|
if (dy > maxy) {
|
||||||
|
maxy = (int16_t)dy;
|
||||||
|
}
|
||||||
|
|
||||||
/* Clipping */
|
/* Clipping */
|
||||||
if(minx < dest_clip0_x) minx = dest_clip0_x;
|
if (minx < dest_clip0_x) {
|
||||||
if(maxx > dest_clip1_x - 1) maxx = dest_clip1_x - 1;
|
minx = dest_clip0_x;
|
||||||
if(miny < dest_clip0_y) miny = dest_clip0_y;
|
}
|
||||||
if(maxy > dest_clip1_y - 1) maxy = dest_clip1_y - 1;
|
if (maxx > dest_clip1_x - 1) {
|
||||||
|
maxx = dest_clip1_x - 1;
|
||||||
|
}
|
||||||
|
if (miny < dest_clip0_y) {
|
||||||
|
miny = dest_clip0_y;
|
||||||
|
}
|
||||||
|
if (maxy > dest_clip1_y - 1) {
|
||||||
|
maxy = dest_clip1_y - 1;
|
||||||
|
}
|
||||||
|
|
||||||
float dvCol = cosAngle / scale;
|
float dvCol = cosAngle / scale;
|
||||||
float duCol = sinAngle / scale;
|
float duCol = sinAngle / scale;
|
||||||
@ -159,13 +199,13 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
|
|||||||
float rowu = startu + miny * duCol;
|
float rowu = startu + miny * duCol;
|
||||||
float rowv = startv + miny * dvCol;
|
float rowv = startv + miny * dvCol;
|
||||||
|
|
||||||
for(y = miny; y <= maxy; y++) {
|
for (y = miny; y <= maxy; y++) {
|
||||||
float u = rowu + minx * duRow;
|
float u = rowu + minx * duRow;
|
||||||
float v = rowv + minx * dvRow;
|
float v = rowv + minx * dvRow;
|
||||||
for(x = minx; x <= maxx; x++) {
|
for (x = minx; x <= maxx; x++) {
|
||||||
if(u >= source_clip0_x && u < source_clip1_x && v >= source_clip0_y && v < source_clip1_y) {
|
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, u, v);
|
||||||
if( (skip_index_none) || (c != skip_index) ) {
|
if ((skip_index_none) || (c != skip_index)) {
|
||||||
common_hal_displayio_bitmap_set_pixel(self, x, y, c);
|
common_hal_displayio_bitmap_set_pixel(self, x, y, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,14 +242,14 @@ void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
|||||||
|
|
||||||
// Ensure x1 < x2 and y1 < y2
|
// Ensure x1 < x2 and y1 < y2
|
||||||
if (x1 > x2) {
|
if (x1 > x2) {
|
||||||
int16_t temp=x2;
|
int16_t temp = x2;
|
||||||
x2=x1;
|
x2 = x1;
|
||||||
x1=temp;
|
x1 = temp;
|
||||||
}
|
}
|
||||||
if (y1 > y2) {
|
if (y1 > y2) {
|
||||||
int16_t temp=y2;
|
int16_t temp = y2;
|
||||||
y2=y1;
|
y2 = y1;
|
||||||
y1=temp;
|
y1 = temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// constrain to bitmap dimensions
|
// constrain to bitmap dimensions
|
||||||
@ -223,7 +263,7 @@ void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
|||||||
|
|
||||||
int16_t x, y;
|
int16_t x, y;
|
||||||
for (x = x1; x < x2; x++) {
|
for (x = x1; x < x2; x++) {
|
||||||
for (y = y1; y < y2; y++ ) {
|
for (y = y1; y < y2; y++) {
|
||||||
displayio_bitmap_write_pixel(destination, x, y, value);
|
displayio_bitmap_write_pixel(destination, x, y, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -277,8 +317,7 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
|||||||
for (y = y0; y < (y1 + 1); y++) { // write a horizontal line
|
for (y = y0; y < (y1 + 1); y++) { // write a horizontal line
|
||||||
displayio_bitmap_write_pixel(destination, x0, y, value);
|
displayio_bitmap_write_pixel(destination, x0, y, value);
|
||||||
}
|
}
|
||||||
}
|
} else if (y0 == y1) { // horizontal line
|
||||||
else if (y0 == y1) { // horizontal line
|
|
||||||
if (x0 > x1) { // ensure y1 > y0
|
if (x0 > x1) { // ensure y1 > y0
|
||||||
temp = x0;
|
temp = x0;
|
||||||
x0 = x1;
|
x0 = x1;
|
||||||
@ -287,12 +326,11 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
|||||||
for (x = x0; x < (x1 + 1); x++) { // write a horizontal line
|
for (x = x0; x < (x1 + 1); x++) { // write a horizontal line
|
||||||
displayio_bitmap_write_pixel(destination, x, y0, value);
|
displayio_bitmap_write_pixel(destination, x, y0, value);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
bool steep;
|
bool steep;
|
||||||
steep = ( abs(y1 - y0) > abs(x1 - x0) );
|
steep = (abs(y1 - y0) > abs(x1 - x0));
|
||||||
|
|
||||||
if ( steep ) { // flip x0<->y0 and x1<->y1
|
if (steep) { // flip x0<->y0 and x1<->y1
|
||||||
temp = x0;
|
temp = x0;
|
||||||
x0 = y0;
|
x0 = y0;
|
||||||
y0 = temp;
|
y0 = temp;
|
||||||
@ -318,16 +356,14 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
|||||||
|
|
||||||
if (y0 < y1) {
|
if (y0 < y1) {
|
||||||
ystep = 1;
|
ystep = 1;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
ystep = -1;
|
ystep = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (x = x0; x < (x1 + 1); x++) {
|
for (x = x0; x < (x1 + 1); x++) {
|
||||||
if (steep) {
|
if (steep) {
|
||||||
displayio_bitmap_write_pixel(destination, y0, x, value);
|
displayio_bitmap_write_pixel(destination, y0, x, value);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
displayio_bitmap_write_pixel(destination, x, y0, value);
|
displayio_bitmap_write_pixel(destination, x, y0, value);
|
||||||
}
|
}
|
||||||
err -= dy;
|
err -= dy;
|
||||||
@ -342,22 +378,22 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
|||||||
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_value) {
|
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_value) {
|
||||||
uint32_t mask = (1 << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1;
|
uint32_t mask = (1 << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1;
|
||||||
|
|
||||||
for (int y=y1; y<y2; y++) {
|
for (int y = y1; y < y2; y++) {
|
||||||
for (int x=x1; x<x2; x++) {
|
for (int x = x1; x < x2; x++) {
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
switch(element_size) {
|
switch (element_size) {
|
||||||
default:
|
default:
|
||||||
case 1:
|
case 1:
|
||||||
value = *(uint8_t*) data;
|
value = *(uint8_t *)data;
|
||||||
data = (void*)((uint8_t*)data + 1);
|
data = (void *)((uint8_t *)data + 1);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
value = *(uint16_t*) data;
|
value = *(uint16_t *)data;
|
||||||
data = (void*)((uint16_t*)data + 1);
|
data = (void *)((uint16_t *)data + 1);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
value = *(uint32_t*) data;
|
value = *(uint32_t *)data;
|
||||||
data = (void*)((uint32_t*)data + 1);
|
data = (void *)((uint32_t *)data + 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!skip_specified || value != skip_value) {
|
if (!skip_specified || value != skip_value) {
|
||||||
@ -367,7 +403,7 @@ void common_hal_bitmaptools_arrayblit(displayio_bitmap_t *self, void *data, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
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) {
|
||||||
uint32_t mask = (1 << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1;
|
uint32_t mask = (1 << common_hal_displayio_bitmap_get_bits_per_value(self)) - 1;
|
||||||
|
|
||||||
if (self->read_only) {
|
if (self->read_only) {
|
||||||
@ -378,10 +414,10 @@ void common_hal_bitmaptools_readinto(displayio_bitmap_t *self, pyb_file_obj_t* f
|
|||||||
size_t rowsize = element_size * elements_per_row;
|
size_t rowsize = element_size * elements_per_row;
|
||||||
size_t rowsize_in_u32 = (rowsize + sizeof(uint32_t) - 1) / sizeof(uint32_t);
|
size_t rowsize_in_u32 = (rowsize + sizeof(uint32_t) - 1) / sizeof(uint32_t);
|
||||||
size_t rowsize_in_u16 = (rowsize + sizeof(uint16_t) - 1) / sizeof(uint16_t);
|
size_t rowsize_in_u16 = (rowsize + sizeof(uint16_t) - 1) / sizeof(uint16_t);
|
||||||
for(int y=0; y<self->height; y++) {
|
for (int y = 0; y < self->height; y++) {
|
||||||
uint32_t rowdata32[rowsize_in_u32];
|
uint32_t rowdata32[rowsize_in_u32];
|
||||||
uint16_t *rowdata16 = (uint16_t*)rowdata32;
|
uint16_t *rowdata16 = (uint16_t *)rowdata32;
|
||||||
uint8_t *rowdata8 = (uint8_t*)rowdata32;
|
uint8_t *rowdata8 = (uint8_t *)rowdata32;
|
||||||
|
|
||||||
UINT bytes_read = 0;
|
UINT bytes_read = 0;
|
||||||
if (f_read(&file->fp, rowdata32, rowsize, &bytes_read) != FR_OK || bytes_read != rowsize) {
|
if (f_read(&file->fp, rowdata32, rowsize, &bytes_read) != FR_OK || bytes_read != rowsize) {
|
||||||
@ -389,14 +425,14 @@ void common_hal_bitmaptools_readinto(displayio_bitmap_t *self, pyb_file_obj_t* f
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (swap_bytes) {
|
if (swap_bytes) {
|
||||||
switch(element_size) {
|
switch (element_size) {
|
||||||
case 2:
|
case 2:
|
||||||
for(size_t i=0; i< rowsize_in_u16; i++) {
|
for (size_t i = 0; i < rowsize_in_u16; i++) {
|
||||||
rowdata16[i] = __builtin_bswap16(rowdata16[i]);
|
rowdata16[i] = __builtin_bswap16(rowdata16[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
for(size_t i=0; i< rowsize_in_u32; i++) {
|
for (size_t i = 0; i < rowsize_in_u32; i++) {
|
||||||
rowdata32[i] = __builtin_bswap32(rowdata32[i]);
|
rowdata32[i] = __builtin_bswap32(rowdata32[i]);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -404,27 +440,24 @@ void common_hal_bitmaptools_readinto(displayio_bitmap_t *self, pyb_file_obj_t* f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int x=0; x<self->width; x++) {
|
for (int x = 0; x < self->width; x++) {
|
||||||
int value = 0;
|
int value = 0;
|
||||||
switch(bits_per_pixel) {
|
switch (bits_per_pixel) {
|
||||||
case 1:
|
case 1: {
|
||||||
{
|
|
||||||
int byte_offset = x / 8;
|
int byte_offset = x / 8;
|
||||||
int bit_offset = reverse_pixels_in_element ? (7 - x % 8) : x % 8;
|
int bit_offset = reverse_pixels_in_element ? (7 - x % 8) : x % 8;
|
||||||
|
|
||||||
value = (rowdata8[byte_offset] >> bit_offset) & 1;
|
value = (rowdata8[byte_offset] >> bit_offset) & 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2: {
|
||||||
{
|
|
||||||
int byte_offset = x / 4;
|
int byte_offset = x / 4;
|
||||||
int bit_offset = 2 * (reverse_pixels_in_element ? (3 - x % 4) : x % 4);
|
int bit_offset = 2 * (reverse_pixels_in_element ? (3 - x % 4) : x % 4);
|
||||||
|
|
||||||
value = (rowdata8[byte_offset] >> bit_offset) & 3;
|
value = (rowdata8[byte_offset] >> bit_offset) & 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4:
|
case 4: {
|
||||||
{
|
|
||||||
int byte_offset = x / 2;
|
int byte_offset = x / 2;
|
||||||
int bit_offset = 4 * (reverse_pixels_in_element ? (1 - x % 2) : x % 2);
|
int bit_offset = 4 * (reverse_pixels_in_element ? (1 - x % 2) : x % 2);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user