Skip to content

Commit c592a2b

Browse files
committed
Simplify pixelbuf set_pixels function
1 parent f078055 commit c592a2b

File tree

3 files changed

+6
-14
lines changed

3 files changed

+6
-14
lines changed

shared-bindings/_pixelbuf/PixelBuf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
340340
slice_len, num_items);
341341
}
342342

343-
common_hal__pixelbuf_pixelbuf_set_pixels(self_in, slice.start, slice.stop, slice.step, src_objs);
343+
common_hal__pixelbuf_pixelbuf_set_pixels(self_in, slice.start, slice.step, slice_len, src_objs);
344344
return mp_const_none;
345345
#else
346346
return MP_OBJ_NULL; // op not supported

shared-bindings/_pixelbuf/PixelBuf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ void common_hal__pixelbuf_pixelbuf_fill(mp_obj_t self, mp_obj_t item);
4747
void common_hal__pixelbuf_pixelbuf_show(mp_obj_t self);
4848
mp_obj_t common_hal__pixelbuf_pixelbuf_get_pixel(mp_obj_t self, size_t index);
4949
void common_hal__pixelbuf_pixelbuf_set_pixel(mp_obj_t self, size_t index, mp_obj_t item);
50-
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, mp_int_t start, mp_int_t stop, mp_int_t step, mp_obj_t* values);
50+
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values);
5151

5252
#endif // CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H

shared-module/_pixelbuf/PixelBuf.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -216,19 +216,11 @@ void _pixelbuf_set_pixel(pixelbuf_pixelbuf_obj_t* self, size_t index, mp_obj_t v
216216
_pixelbuf_set_pixel_color(self, index, r, g, b, w);
217217
}
218218

219-
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, mp_int_t start, mp_int_t stop, mp_int_t step, mp_obj_t* values) {
219+
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values) {
220220
pixelbuf_pixelbuf_obj_t* self = native_pixelbuf(self_in);
221-
size_t source_i = 0;
222-
if (step > 0) {
223-
for (mp_int_t target_i = start; target_i < stop; target_i += step) {
224-
_pixelbuf_set_pixel(self, target_i, values[source_i]);
225-
source_i++;
226-
}
227-
} else {
228-
for (mp_int_t target_i = start; target_i >= stop; target_i += step) {
229-
_pixelbuf_set_pixel(self, target_i, values[source_i]);
230-
source_i++;
231-
}
221+
for (size_t i = 0; i < slice_len; i++) {
222+
_pixelbuf_set_pixel(self, start, values[i]);
223+
start+=step;
232224
}
233225
if (self->auto_write) {
234226
common_hal__pixelbuf_pixelbuf_show(self_in);

0 commit comments

Comments
 (0)