diff options
| author | Melissa LeBlanc-Williams <melissa@melissagirl.com> | 2019-03-26 18:22:30 -0700 |
|---|---|---|
| committer | Melissa LeBlanc-Williams <melissa@melissagirl.com> | 2019-03-26 18:22:30 -0700 |
| commit | 0df40534f3ce148ed7e2f14ff5d28dc334685a94 (patch) | |
| tree | 9c2b863b90368e9e26f6bb0073ffff44db3a6c18 /shared-bindings/displayio/Bitmap.c | |
| parent | 09a1f06bbf6b333aaa3a76dbd93e0a5f5c9d7ef4 (diff) | |
| parent | 3f42a49a6b9fe416b739757e6e72574abc58c4fd (diff) | |
Merge branch 'master' of https://github.com/adafruit/circuitpython
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); } |
