Move input checks to shared-module, update docstrings
This commit is contained in:
parent
85f0f07d51
commit
a9afa0d9d4
@ -255,8 +255,8 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_rotozoom_obj, 0, bitmaptools_obj_rotozoom
|
|||||||
//| :param bitmap dest_bitmap: Destination bitmap that will be written into
|
//| :param bitmap dest_bitmap: Destination bitmap that will be written into
|
||||||
//| :param int x1: x-pixel position of the first corner of the rectangular fill region
|
//| :param int x1: x-pixel position of the first corner of the rectangular fill region
|
||||||
//| :param int y1: y-pixel position of the first corner of the rectangular fill region
|
//| :param int y1: y-pixel position of the first corner of the rectangular fill region
|
||||||
//| :param int x2: x-pixel position of the second corner of the rectangular fill region
|
//| :param int x2: x-pixel position of the second corner of the rectangular fill region (exclusive)
|
||||||
//| :param int y2: y-pixel position of the second corner of the rectangular fill region
|
//| :param int y2: y-pixel position of the second corner of the rectangular fill region (exclusive)
|
||||||
//| :param int value: Bitmap palette index that will be written into the rectangular
|
//| :param int value: Bitmap palette index that will be written into the rectangular
|
||||||
//| fill region in the destination bitmap"""
|
//| fill region in the destination bitmap"""
|
||||||
//| ...
|
//| ...
|
||||||
@ -289,40 +289,6 @@ STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_a
|
|||||||
int16_t x2 = args[ARG_x2].u_int;
|
int16_t x2 = args[ARG_x2].u_int;
|
||||||
int16_t y2 = args[ARG_y2].u_int;
|
int16_t y2 = args[ARG_y2].u_int;
|
||||||
|
|
||||||
// Ensure x1 < x2 and y1 < y2
|
|
||||||
if (x1 > x2) {
|
|
||||||
int16_t temp=x2;
|
|
||||||
x2=x1;
|
|
||||||
x1=temp;
|
|
||||||
}
|
|
||||||
if (y1 > y2) {
|
|
||||||
int16_t temp=y2;
|
|
||||||
y2=y1;
|
|
||||||
y1=temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// constrain to bitmap dimensions
|
|
||||||
if (x1 < 0) {
|
|
||||||
x1 = 0;
|
|
||||||
} else if (x1 > destination->width) {
|
|
||||||
x1 = destination->width;
|
|
||||||
}
|
|
||||||
if (x2 < 0) {
|
|
||||||
x2 = 0;
|
|
||||||
} else if (x2 > destination->width) {
|
|
||||||
x2 = destination->width;
|
|
||||||
}
|
|
||||||
if (y1 < 0) {
|
|
||||||
y1 = 0;
|
|
||||||
} else if (y1 > destination->height) {
|
|
||||||
y1 = destination->height;
|
|
||||||
}
|
|
||||||
if (y2 < 0) {
|
|
||||||
y2 = 0;
|
|
||||||
} else if (y2 > destination->height) {
|
|
||||||
y2 = destination->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
common_hal_bitmaptools_fill_region(destination, x1, y1, x2, y2, value);
|
common_hal_bitmaptools_fill_region(destination, x1, y1, x2, y2, value);
|
||||||
|
|
||||||
return mp_const_none;
|
return mp_const_none;
|
||||||
|
@ -175,6 +175,17 @@ void common_hal_bitmaptools_rotozoom(displayio_bitmap_t *self, int16_t ox, int16
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int16_t constrain(int16_t input, int16_t min, int16_t max) {
|
||||||
|
// constrain the input between the min and max values
|
||||||
|
if (input < min) {
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
if (input > max) {
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
||||||
int16_t x1, int16_t y1,
|
int16_t x1, int16_t y1,
|
||||||
int16_t x2, int16_t y2,
|
int16_t x2, int16_t y2,
|
||||||
@ -187,6 +198,24 @@ void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
|||||||
mp_raise_RuntimeError(translate("Read-only object"));
|
mp_raise_RuntimeError(translate("Read-only object"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure x1 < x2 and y1 < y2
|
||||||
|
if (x1 > x2) {
|
||||||
|
int16_t temp=x2;
|
||||||
|
x2=x1;
|
||||||
|
x1=temp;
|
||||||
|
}
|
||||||
|
if (y1 > y2) {
|
||||||
|
int16_t temp=y2;
|
||||||
|
y2=y1;
|
||||||
|
y1=temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
// constrain to bitmap dimensions
|
||||||
|
x1 = constrain(x1, 0, destination->width);
|
||||||
|
x2 = constrain(x2, 0, destination->width);
|
||||||
|
y1 = constrain(y1, 0, destination->height);
|
||||||
|
y2 = constrain(y2, 0, destination->height);
|
||||||
|
|
||||||
// update the dirty rectangle
|
// update the dirty rectangle
|
||||||
displayio_bitmap_set_dirty_area(destination, x1, y1, x2, y2);
|
displayio_bitmap_set_dirty_area(destination, x1, y1, x2, y2);
|
||||||
|
|
||||||
@ -198,17 +227,6 @@ void common_hal_bitmaptools_fill_region(displayio_bitmap_t *destination,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t constrain(int16_t input, int16_t min, int16_t max) {
|
|
||||||
// constrain the input between the min and max values
|
|
||||||
if (input < min) {
|
|
||||||
return min;
|
|
||||||
}
|
|
||||||
if (input > max) {
|
|
||||||
return max;
|
|
||||||
}
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
|
|
||||||
void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination,
|
||||||
int16_t x0, int16_t y0,
|
int16_t x0, int16_t y0,
|
||||||
int16_t x1, int16_t y1,
|
int16_t x1, int16_t y1,
|
||||||
|
Loading…
Reference in New Issue
Block a user