summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJensen <jensechu@gmail.com>2020-10-11 17:29:16 -0500
committerJensen <jensechu@gmail.com>2020-10-12 20:48:04 -0500
commit337019626a8cd0632cd2a6f6bae4ae09ae26cf16 (patch)
treee28e8c4b2434915e2868620d242edf8a0d7dc756
parentb359e2945ac9914c31afc7e692a4f46a837a854d (diff)
displayio: Add make_transparent to ColorConverter
-rw-r--r--locale/circuitpython.pot24
-rw-r--r--shared-bindings/displayio/ColorConverter.c32
-rw-r--r--shared-module/displayio/ColorConverter.c12
3 files changed, 61 insertions, 7 deletions
diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot
index c4951f78f..081e2df9f 100644
--- a/locale/circuitpython.pot
+++ b/locale/circuitpython.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-09-29 20:14-0500\n"
+"POT-Creation-Date: 2020-10-12 20:47-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -285,6 +285,7 @@ msgid "All I2C peripherals are in use"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use"
msgstr ""
@@ -892,6 +893,7 @@ msgid "File exists"
msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c
+#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex"
msgstr ""
@@ -928,7 +930,8 @@ msgid "Group full"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
-#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins"
msgstr ""
@@ -998,7 +1001,8 @@ msgid "Invalid %q pin"
msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
-#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c
+#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
+#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection"
msgstr ""
@@ -3144,6 +3148,7 @@ msgstr ""
msgid "pow() with 3 arguments requires integers"
msgstr ""
+#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@@ -3151,6 +3156,7 @@ msgstr ""
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
+#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n"
msgstr ""
@@ -3388,6 +3394,18 @@ msgstr ""
msgid "too many values to unpack (expected %d)"
msgstr ""
+#: shared-bindings/displayio/ColorConverter.c
+msgid "transparent_color should be an int"
+msgstr ""
+
+#: shared-module/displayio/ColorConverter.c
+msgid "transparent_color value is already set"
+msgstr ""
+
+#: shared-module/displayio/ColorConverter.c
+msgid "transparent_color value is not transparent"
+msgstr ""
+
#: extmod/ulab/code/approx/approx.c
msgid "trapz is defined for 1D arrays of equal length"
msgstr ""
diff --git a/shared-bindings/displayio/ColorConverter.c b/shared-bindings/displayio/ColorConverter.c
index c02dfdb6d..a041bbe59 100644
--- a/shared-bindings/displayio/ColorConverter.c
+++ b/shared-bindings/displayio/ColorConverter.c
@@ -110,9 +110,41 @@ const mp_obj_property_t displayio_colorconverter_dither_obj = {
(mp_obj_t)&mp_const_none_obj},
};
+//| def make_transparent(self, pixel: int) -> None:
+//| """Sets a pixel to not opaque."""
+//|
+STATIC mp_obj_t displayio_colorconverter_make_transparent(mp_obj_t self_in, mp_obj_t transparent_color_obj) {
+ displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in);
+
+ mp_int_t transparent_color;
+ if (!mp_obj_get_int_maybe(transparent_color_obj, &transparent_color)) {
+ mp_raise_ValueError(translate("transparent_color should be an int"));
+ }
+ common_hal_displayio_colorconverter_make_transparent(self, transparent_color);
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_make_transparent_obj, displayio_colorconverter_make_transparent);
+
+//| def make_opaque(self, pixel: int) -> None:
+//| """Sets a pixel to opaque."""
+//|
+STATIC mp_obj_t displayio_colorconverter_make_opaque(mp_obj_t self_in, mp_obj_t transparent_color_obj) {
+ displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in);
+
+ mp_int_t transparent_color;
+ if (!mp_obj_get_int_maybe(transparent_color_obj, &transparent_color)) {
+ mp_raise_ValueError(translate("transparent_color should be an int"));
+ }
+ common_hal_displayio_colorconverter_make_opaque(self, transparent_color);
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_make_opaque_obj, displayio_colorconverter_make_opaque);
+
STATIC const mp_rom_map_elem_t displayio_colorconverter_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_convert), MP_ROM_PTR(&displayio_colorconverter_convert_obj) },
{ MP_ROM_QSTR(MP_QSTR_dither), MP_ROM_PTR(&displayio_colorconverter_dither_obj) },
+ { MP_ROM_QSTR(MP_QSTR_make_transparent), MP_ROM_PTR(&displayio_colorconverter_make_transparent_obj) },
+ { MP_ROM_QSTR(MP_QSTR_make_opaque), MP_ROM_PTR(&displayio_colorconverter_make_opaque_obj) },
};
STATIC MP_DEFINE_CONST_DICT(displayio_colorconverter_locals_dict, displayio_colorconverter_locals_dict_table);
diff --git a/shared-module/displayio/ColorConverter.c b/shared-module/displayio/ColorConverter.c
index 0a1a7dc06..fef71cdf5 100644
--- a/shared-module/displayio/ColorConverter.c
+++ b/shared-module/displayio/ColorConverter.c
@@ -27,6 +27,7 @@
#include "shared-bindings/displayio/ColorConverter.h"
#include "py/misc.h"
+#include "py/runtime.h"
uint32_t displayio_colorconverter_dither_noise_1 (uint32_t n)
{
@@ -129,15 +130,18 @@ bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t*
}
void common_hal_displayio_colorconverter_make_transparent(displayio_colorconverter_t* self, uint32_t transparent_color) {
+ if (self->transparent_color) {
+ mp_raise_RuntimeError(translate("transparent_color value is already set"));
+ }
self->transparent_color = transparent_color;
- // TODO: Does this require refreshing like the other modules?
}
void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t* self, uint32_t transparent_color) {
- if (self->transparent_color == transparent_color) {
- m_del(uint8_t, self, transparent_color);
+ if (self->transparent_color != transparent_color) {
+ mp_raise_RuntimeError(translate("transparent_color value is not transparent"));
}
- // TODO: Does this require refreshing like the other modules?
+ // 0x1000000 will never equal a valid color
+ self->transparent_color = 0x1000000;
}
void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _displayio_colorspace_t* colorspace, const displayio_input_pixel_t *input_pixel, displayio_output_pixel_t *output_color) {