@@ -251,31 +251,15 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
251
251
if (value != MP_OBJ_SENTINEL ) {
252
252
#if MICROPY_PY_ARRAY_SLICE_ASSIGN
253
253
size_t dst_len = slice .stop - slice .start ;
254
- size_t dst_size = dst_len * self -> bpp ;
255
- uint8_t * src_items ;
256
254
uint8_t * destbuf = NULL , * adjustedbuf = NULL ;
257
255
if (self -> two_buffers ) {
258
256
destbuf = self -> rawbuf ;
259
257
adjustedbuf = self -> buf ;
260
258
} else {
261
259
destbuf = self -> buf ;
262
260
}
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 )) {
279
263
mp_obj_t * src_objs ;
280
264
size_t num_items ;
281
265
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
310
294
}
311
295
return mp_const_none ;
312
296
} else {
313
- mp_raise_NotImplementedError ("array/bytes/ tuple/list required on right side" );
297
+ mp_raise_NotImplementedError ("tuple/list required on right side" );
314
298
}
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 ;
342
299
#else
343
300
return MP_OBJ_NULL ; // op not supported
344
301
#endif
0 commit comments