summaryrefslogtreecommitdiff
path: root/shared-bindings
diff options
context:
space:
mode:
authorDave Astels <dastels@daveastels.com>2019-07-31 12:47:32 -0400
committerDave Astels <dastels@daveastels.com>2019-07-31 12:47:32 -0400
commit741cd9c40a4b3368ffa92286498883bd29b0fb70 (patch)
treede4b7a1b11396d28a3234647a7031d5109c8d205 /shared-bindings
parentb6178c9d85876c771b08188373df568da0acda87 (diff)
Get fill_area working
Diffstat (limited to 'shared-bindings')
-rw-r--r--shared-bindings/displayio/Display.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/shared-bindings/displayio/Display.c b/shared-bindings/displayio/Display.c
index 2b9c74066..6338fe459 100644
--- a/shared-bindings/displayio/Display.c
+++ b/shared-bindings/displayio/Display.c
@@ -451,9 +451,15 @@ STATIC mp_obj_t displayio_display_obj_fill_area(size_t n_args, const mp_obj_t *p
displayio_display_fill_area(self, &area, mask, buffer);
- mp_obj_array_t *result = array_new(BYTEARRAY_TYPECODE, buffer_size);
- for (int offset = 0; offset < buffer_size; offset++) {
- array_subscr(result, MP_OBJ_NEW_SMALL_INT(offset), MP_OBJ_NEW_SMALL_INT(buffer[offset]));
+ mp_obj_array_t *result = array_new(BYTEARRAY_TYPECODE, buffer_size * 4);
+ int byte_offset = 0;
+ for (int word_offset = 0; word_offset < buffer_size; word_offset++) {
+ uint32_t word = buffer[word_offset];
+ for (int byte_count = 0; byte_count < 4; byte_count++) {
+ array_subscr(result, MP_OBJ_NEW_SMALL_INT(byte_offset), MP_OBJ_NEW_SMALL_INT(word & 0x000000FF));
+ word >>= 8;
+ byte_offset++;
+ }
}
return result;
}