diff options
| author | Melissa LeBlanc-Williams <melissa@melissagirl.com> | 2019-03-26 18:23:02 -0700 |
|---|---|---|
| committer | Melissa LeBlanc-Williams <melissa@melissagirl.com> | 2019-03-26 18:23:02 -0700 |
| commit | 5f0e71ccb48e47ea03d264a6d14e6009ac9691e1 (patch) | |
| tree | 1542be340b55cd0cea66d7aef3d60cdfaa546d58 /shared-bindings/displayio/Bitmap.c | |
| parent | a54493b4ae41210f12cb940db019be87d68253a1 (diff) | |
| parent | 3f42a49a6b9fe416b739757e6e72574abc58c4fd (diff) | |
Merge branch 'master' of https://github.com/adafruit/circuitpython into ssd1351-fix
Diffstat (limited to 'shared-bindings/displayio/Bitmap.c')
| -rw-r--r-- | shared-bindings/displayio/Bitmap.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/shared-bindings/displayio/Bitmap.c b/shared-bindings/displayio/Bitmap.c index 3612b8d63..91c17f2d1 100644 --- a/shared-bindings/displayio/Bitmap.c +++ b/shared-bindings/displayio/Bitmap.c @@ -58,14 +58,22 @@ STATIC mp_obj_t displayio_bitmap_make_new(const mp_obj_type_t *type, size_t n_ar uint32_t width = mp_obj_get_int(pos_args[0]); uint32_t height = mp_obj_get_int(pos_args[1]); uint32_t value_count = mp_obj_get_int(pos_args[2]); - uint32_t power_of_two = 1; - while (value_count > (1U << power_of_two)) { - power_of_two <<= 1; + uint32_t bits = 1; + + if (value_count == 0) { + mp_raise_ValueError(translate("value_count must be > 0")); + } + while ((value_count - 1) >> bits) { + if (bits < 8) { + bits <<= 1; + } else { + bits += 8; + } } displayio_bitmap_t *self = m_new_obj(displayio_bitmap_t); self->base.type = &displayio_bitmap_type; - common_hal_displayio_bitmap_construct(self, width, height, power_of_two); + common_hal_displayio_bitmap_construct(self, width, height, bits); return MP_OBJ_FROM_PTR(self); } |
