summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
authorwarriorofwire <3454741+WarriorOfWire@users.noreply.github.com>2020-05-02 02:21:35 -0700
committerwarriorofwire <3454741+WarriorOfWire@users.noreply.github.com>2020-05-09 15:38:22 -0700
commit206d0e598adb66e2b23a39a7d11e2f5087513205 (patch)
treecea5a2e50ec96edd8b4c0bfc09e0d9570694a2ee /py
parent90bd931808fa797938b723e8d30889ec4a0f1654 (diff)
Add vectorio: for drawing shapes
vectorio builds on m4 express feather Concrete shapes are composed into a VectorShape which is put into a displayio Group for display. VectorShape provides transpose and x/y positioning for shape implementations. Included Shapes: * Circle - A radius; Circle is positioned at its axis in the VectorShape. - You can freely modify the radius to grow and shrink the circle in-place. * Polygon - An ordered list of points. - Beteween each successive point an edge is inferred. A final edge closing the shape is inferred between the last point and the first point. - You can modify the points in a Polygon. The points' coordinate system is relative to (0, 0) so if you'd like a top-center justified 10x20 rectangle you can do points [(-5, 0), (5, 0), (5, 20), (0, 20)] and your VectorShape x and y properties will position the rectangle relative to its top center point * Rectangle A width and a height.
Diffstat (limited to 'py')
-rw-r--r--py/circuitpy_defns.mk8
-rw-r--r--py/circuitpy_mpconfig.h6
-rw-r--r--py/circuitpy_mpconfig.mk3
3 files changed, 17 insertions, 0 deletions
diff --git a/py/circuitpy_defns.mk b/py/circuitpy_defns.mk
index e3892d98e..c6ea2b45b 100644
--- a/py/circuitpy_defns.mk
+++ b/py/circuitpy_defns.mk
@@ -145,6 +145,9 @@ endif
ifeq ($(CIRCUITPY_DISPLAYIO),1)
SRC_PATTERNS += displayio/% terminalio/% fontio/%
endif
+ifeq ($(CIRCUITPY_VECTORIO),1)
+SRC_PATTERNS += vectorio/%
+endif
ifeq ($(CIRCUITPY_FRAMEBUFFERIO),1)
SRC_PATTERNS += framebufferio/%
endif
@@ -358,6 +361,11 @@ SRC_SHARED_MODULE_ALL = \
displayio/Shape.c \
displayio/TileGrid.c \
displayio/__init__.c \
+ vectorio/Circle.c \
+ vectorio/Rectangle.c \
+ vectorio/Polygon.c \
+ vectorio/VectorShape.c \
+ vectorio/__init__.c \
fontio/BuiltinFont.c \
fontio/__init__.c \
framebufferio/FramebufferDisplay.c \
diff --git a/py/circuitpy_mpconfig.h b/py/circuitpy_mpconfig.h
index 6b7fc192f..f48a648c4 100644
--- a/py/circuitpy_mpconfig.h
+++ b/py/circuitpy_mpconfig.h
@@ -352,6 +352,11 @@ extern const struct _mp_obj_module_t framebufferio_module;
#define FRAMEBUFFERIO_MODULE
#endif
+#if CIRCUITPY_VECTORIO
+extern const struct _mp_obj_module_t vectorio_module;
+#define VECTORIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_vectorio), (mp_obj_t)&vectorio_module },
+#endif
+
#if CIRCUITPY_FREQUENCYIO
extern const struct _mp_obj_module_t frequencyio_module;
#define FREQUENCYIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_frequencyio), (mp_obj_t)&frequencyio_module },
@@ -642,6 +647,7 @@ extern const struct _mp_obj_module_t ustack_module;
DISPLAYIO_MODULE \
FONTIO_MODULE \
TERMINALIO_MODULE \
+ VECTORIO_MODULE \
ERRNO_MODULE \
FRAMEBUFFERIO_MODULE \
FREQUENCYIO_MODULE \
diff --git a/py/circuitpy_mpconfig.mk b/py/circuitpy_mpconfig.mk
index 105253aec..e9e3d8013 100644
--- a/py/circuitpy_mpconfig.mk
+++ b/py/circuitpy_mpconfig.mk
@@ -94,6 +94,9 @@ CFLAGS += -DCIRCUITPY_DISPLAYIO=$(CIRCUITPY_DISPLAYIO)
CIRCUITPY_FRAMEBUFFERIO ?= 0
CFLAGS += -DCIRCUITPY_FRAMEBUFFERIO=$(CIRCUITPY_FRAMEBUFFERIO)
+CIRCUITPY_VECTORIO ?= 0
+CFLAGS += -DCIRCUITPY_VECTORIO=$(CIRCUITPY_VECTORIO)
+
CIRCUITPY_FREQUENCYIO ?= $(CIRCUITPY_FULL_BUILD)
CFLAGS += -DCIRCUITPY_FREQUENCYIO=$(CIRCUITPY_FREQUENCYIO)