summaryrefslogtreecommitdiff
path: root/shared-bindings/_pixelbuf
diff options
context:
space:
mode:
authorRoy Hooper <rhooper@toybox.ca>2019-11-26 21:28:41 -0500
committerRoy Hooper <rhooper@toybox.ca>2019-11-26 21:28:41 -0500
commita9624fff253a33c6c71e992ab438bf0c63ed3a5f (patch)
tree9c211ae585f3217fab431302a75caf4d12e3f423 /shared-bindings/_pixelbuf
parent56720eae0a9eb6fe8845cf20eb1298c3fb68a373 (diff)
add show
Diffstat (limited to 'shared-bindings/_pixelbuf')
-rw-r--r--shared-bindings/_pixelbuf/PixelBuf.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/shared-bindings/_pixelbuf/PixelBuf.c b/shared-bindings/_pixelbuf/PixelBuf.c
index 0b1bd3e89..8ddcf6648 100644
--- a/shared-bindings/_pixelbuf/PixelBuf.c
+++ b/shared-bindings/_pixelbuf/PixelBuf.c
@@ -230,7 +230,7 @@ STATIC mp_obj_t pixelbuf_pixelbuf_obj_set_brightness(mp_obj_t self_in, mp_obj_t
if (self->two_buffers)
pixelbuf_recalculate_brightness(self);
if (self->auto_write)
- call_show(self_in, 'b');
+ call_show(self_in);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(pixelbuf_pixelbuf_set_brightness_obj, pixelbuf_pixelbuf_obj_set_brightness);
@@ -253,7 +253,7 @@ void pixelbuf_recalculate_brightness(pixelbuf_pixelbuf_obj_t *self) {
}
}
-mp_obj_t call_show(mp_obj_t self_in, char origin) {
+mp_obj_t call_show(mp_obj_t self_in) {
mp_obj_t dest[2];
mp_load_method(self_in, MP_QSTR_show, dest);
return mp_call_method_n_kw(0, 0, dest);
@@ -340,6 +340,25 @@ STATIC mp_obj_t pixelbuf_pixelbuf_show(mp_obj_t self_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_show_obj, pixelbuf_pixelbuf_show);
+
+//| .. method:: fill(color)
+//|
+//| Fills the entire buffer with the given color.
+//|
+
+STATIC mp_obj_t pixelbuf_pixelbuf_fill(mp_obj_t self_in, mp_obj_t value) {
+ pixelbuf_pixelbuf_obj_t *self = native_pixelbuf(self_in);
+
+ for (size_t offset = 0; offset < self->pixels; offset++) {
+ pixelbuf_set_pixel(self->buf + offset, self->two_buffers ? self->rawbuf + offset : NULL,
+ self->brightness, value, &self->byteorder, self->byteorder.is_dotstar);
+ if (self->auto_write)
+ call_show(self_in);
+ }
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_show_obj, pixelbuf_pixelbuf_fill);
+
+
//| .. method:: __getitem__(index)
//|
//| Returns the pixel value at the given index.
@@ -410,7 +429,7 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
}
}
if (self->auto_write)
- call_show(instance, 's');
+ call_show(instance);
return mp_const_none;
#else
return MP_OBJ_NULL; // op not supported
@@ -430,7 +449,7 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
pixelbuf_set_pixel(self->buf + offset, self->two_buffers ? self->rawbuf + offset : NULL,
self->brightness, value, &self->byteorder, self->byteorder.is_dotstar);
if (self->auto_write)
- call_show(instance, 'i');
+ call_show(instance);
return mp_const_none;
}
}
@@ -443,6 +462,7 @@ STATIC const mp_rom_map_elem_t pixelbuf_pixelbuf_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_buf), MP_ROM_PTR(&pixelbuf_pixelbuf_buf_obj)},
{ MP_ROM_QSTR(MP_QSTR_byteorder), MP_ROM_PTR(&pixelbuf_pixelbuf_byteorder_str)},
{ MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&pixelbuf_pixelbuf_show_obj)},
+ { MP_ROM_QSTR(MP_QSTR_fill), MP_ROM_PTR(&pixelbuf_pixelbuf_fill_obj)},
};
STATIC MP_DEFINE_CONST_DICT(pixelbuf_pixelbuf_locals_dict, pixelbuf_pixelbuf_locals_dict_table);