summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2021-03-18 09:06:00 -0500
committerJeff Epler <jepler@gmail.com>2021-03-18 09:06:00 -0500
commit3b506f0fa59872916b617083a3dad9cadd07c428 (patch)
tree48ab750596bf59834628421abeb3d81277326197
parentf40c0c13adacf39bc9a21afd2d9ebbf29135e0f0 (diff)
displayio: area: add displayio_area_canon
This routine will be used to simplify code that deals with ranges of bitmap coordinates.
-rw-r--r--shared-module/displayio/__init__.c13
-rw-r--r--shared-module/displayio/area.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c
index 07fd60386..18d08c530 100644
--- a/shared-module/displayio/__init__.c
+++ b/shared-module/displayio/__init__.c
@@ -320,6 +320,19 @@ bool displayio_area_empty(const displayio_area_t *a) {
return (a->x1 == a->x2) || (a->y1 == a->y2);
}
+void displayio_area_canon(displayio_area_t *a) {
+ if (a->x1 < a->x2) {
+ int16_t t = a->x1;
+ a->x1 = a->x2;
+ a->x2 = t;
+ }
+ if (a->y1 < a->y2) {
+ int16_t t = a->y1;
+ a->y1 = a->y2;
+ a->y2 = t;
+ }
+}
+
void displayio_area_union(const displayio_area_t *a,
const displayio_area_t *b,
displayio_area_t *u) {
diff --git a/shared-module/displayio/area.h b/shared-module/displayio/area.h
index 1b30ce96f..b6ff1dcd2 100644
--- a/shared-module/displayio/area.h
+++ b/shared-module/displayio/area.h
@@ -55,6 +55,7 @@ extern displayio_buffer_transform_t null_transform;
bool displayio_area_empty(const displayio_area_t *a);
void displayio_area_copy_coords(const displayio_area_t *src, displayio_area_t *dest);
+void displayio_area_canon(displayio_area_t *a);
void displayio_area_union(const displayio_area_t *a,
const displayio_area_t *b,
displayio_area_t *u);