Skip to content

Commit f479dc8

Browse files
committed
Address PR comments - remove byte manipulations
1 parent b70a58c commit f479dc8

File tree

1 file changed

+3
-46
lines changed

1 file changed

+3
-46
lines changed

shared-bindings/pixelbuf/PixelBuf.c

Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -251,31 +251,15 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
251251
if (value != MP_OBJ_SENTINEL) {
252252
#if MICROPY_PY_ARRAY_SLICE_ASSIGN
253253
size_t dst_len = slice.stop - slice.start;
254-
size_t dst_size = dst_len * self->bpp;
255-
uint8_t* src_items;
256254
uint8_t *destbuf = NULL, *adjustedbuf = NULL;
257255
if (self->two_buffers) {
258256
destbuf = self->rawbuf;
259257
adjustedbuf = self->buf;
260258
} else {
261259
destbuf = self->buf;
262260
}
263-
if (MP_OBJ_IS_TYPE(value, &mp_type_array) ||
264-
MP_OBJ_IS_TYPE(value, &mp_type_bytearray) ||
265-
MP_OBJ_IS_TYPE(value, &mp_type_memoryview) ||
266-
MP_OBJ_IS_TYPE(value, &mp_type_bytes)) {
267-
mp_get_buffer_raise(value, &bufinfo, MP_BUFFER_READ);
268-
if (1 != mp_binary_get_size('@', bufinfo.typecode, NULL)) {
269-
mp_raise_ValueError("Array values should be single bytes.");
270-
}
271-
dst_size = dst_len;
272-
if (bufinfo.len != dst_size) {
273-
mp_raise_ValueError_varg("Unmatched number of bytes on RHS (expected %d, got %d).",
274-
dst_size, bufinfo.len);
275-
}
276-
src_items = bufinfo.buf;
277-
} else if (MP_OBJ_IS_TYPE(value, &mp_type_list) ||
278-
MP_OBJ_IS_TYPE(value, &mp_type_tuple)) {
261+
if (MP_OBJ_IS_TYPE(value, &mp_type_list) ||
262+
MP_OBJ_IS_TYPE(value, &mp_type_tuple)) {
279263
mp_obj_t *src_objs;
280264
size_t num_items;
281265
if (MP_OBJ_IS_TYPE(value, &mp_type_list)) {
@@ -310,35 +294,8 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
310294
}
311295
return mp_const_none;
312296
} else {
313-
mp_raise_NotImplementedError("array/bytes/tuple/list required on right side");
297+
mp_raise_NotImplementedError("tuple/list required on right side");
314298
}
315-
316-
// "direct" pixel assignment
317-
if (slice.start % self->bpp != 0 || slice.stop % self->bpp != 0)
318-
mp_raise_IndexError("Indices must align with pixel boundaries");
319-
320-
for (uint i=slice.start; i < slice.stop; i += self->bpp) {
321-
mp_obj_t items[4];
322-
items[0] = MP_OBJ_NEW_SMALL_INT(src_items[i]);
323-
items[1] = MP_OBJ_NEW_SMALL_INT(src_items[i+1]);
324-
items[2] = MP_OBJ_NEW_SMALL_INT(src_items[i+2]);
325-
if (self->bpp == 4)
326-
items[3] = MP_OBJ_NEW_SMALL_INT(src_items[i+3]);
327-
328-
mp_obj_t *tuple = mp_obj_new_tuple(self->bpp, items);
329-
pixelbuf_set_pixel(destbuf + i, tuple, self->byteorder, self->bpp);
330-
// this should probbly be optimized and refactored
331-
if (self->two_buffers) {
332-
for (uint j = 0; j < self->bpp; j++) {
333-
adjustedbuf[i + j] = (destbuf[i + j] * self->brightness);
334-
}
335-
} else {
336-
for (uint j = 0; j < self->bpp; j++) {
337-
destbuf[i + j] = (destbuf[i + j] * self->brightness);
338-
}
339-
}
340-
}
341-
return mp_const_none;
342299
#else
343300
return MP_OBJ_NULL; // op not supported
344301
#endif

0 commit comments

Comments
 (0)