@@ -263,21 +263,21 @@ STATIC void fill_rect(const mp_obj_framebuf_t *fb, int x, int y, int w, int h, u
263
263
formats [fb -> format ].fill_rect (fb , x , y , xend - x , yend - y , col );
264
264
}
265
265
266
- STATIC mp_obj_t framebuf_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args ) {
266
+ STATIC mp_obj_t framebuf_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args_in ) {
267
267
mp_arg_check_num (n_args , n_kw , 4 , 5 , false);
268
268
269
269
mp_obj_framebuf_t * o = mp_obj_malloc (mp_obj_framebuf_t , type );
270
- o -> buf_obj = args [0 ];
270
+ o -> buf_obj = args_in [0 ];
271
271
272
272
mp_buffer_info_t bufinfo ;
273
- mp_get_buffer_raise (args [0 ], & bufinfo , MP_BUFFER_WRITE );
273
+ mp_get_buffer_raise (args_in [0 ], & bufinfo , MP_BUFFER_WRITE );
274
274
o -> buf = bufinfo .buf ;
275
275
276
- o -> width = mp_obj_get_int (args [1 ]);
277
- o -> height = mp_obj_get_int (args [2 ]);
278
- o -> format = mp_obj_get_int (args [3 ]);
276
+ o -> width = mp_obj_get_int (args_in [1 ]);
277
+ o -> height = mp_obj_get_int (args_in [2 ]);
278
+ o -> format = mp_obj_get_int (args_in [3 ]);
279
279
if (n_args >= 5 ) {
280
- o -> stride = mp_obj_get_int (args [4 ]);
280
+ o -> stride = mp_obj_get_int (args_in [4 ]);
281
281
} else {
282
282
o -> stride = o -> width ;
283
283
}
@@ -305,6 +305,12 @@ STATIC mp_obj_t framebuf_make_new(const mp_obj_type_t *type, size_t n_args, size
305
305
return MP_OBJ_FROM_PTR (o );
306
306
}
307
307
308
+ STATIC void framebuf_args (const mp_obj_t * args_in , mp_int_t * args_out , int n ) {
309
+ for (int i = 0 ; i < n ; ++ i ) {
310
+ args_out [i ] = mp_obj_get_int (args_in [i + 1 ]);
311
+ }
312
+ }
313
+
308
314
STATIC mp_int_t framebuf_get_buffer (mp_obj_t self_in , mp_buffer_info_t * bufinfo , mp_uint_t flags ) {
309
315
(void )flags ;
310
316
mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (self_in );
@@ -322,98 +328,71 @@ STATIC mp_obj_t framebuf_fill(mp_obj_t self_in, mp_obj_t col_in) {
322
328
}
323
329
STATIC MP_DEFINE_CONST_FUN_OBJ_2 (framebuf_fill_obj , framebuf_fill );
324
330
325
- STATIC mp_obj_t framebuf_fill_rect (size_t n_args , const mp_obj_t * args ) {
326
- (void )n_args ;
327
-
328
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
329
- mp_int_t x = mp_obj_get_int (args [1 ]);
330
- mp_int_t y = mp_obj_get_int (args [2 ]);
331
- mp_int_t width = mp_obj_get_int (args [3 ]);
332
- mp_int_t height = mp_obj_get_int (args [4 ]);
333
- mp_int_t col = mp_obj_get_int (args [5 ]);
334
-
335
- fill_rect (self , x , y , width , height , col );
336
-
331
+ STATIC mp_obj_t framebuf_fill_rect (size_t n_args , const mp_obj_t * args_in ) {
332
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
333
+ mp_int_t args [5 ]; // x, y, w, h, col
334
+ framebuf_args (args_in , args , 5 );
335
+ fill_rect (self , args [0 ], args [1 ], args [2 ], args [3 ], args [4 ]);
337
336
return mp_const_none ;
338
337
}
339
338
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (framebuf_fill_rect_obj , 6 , 6 , framebuf_fill_rect );
340
339
341
- STATIC mp_obj_t framebuf_pixel (size_t n_args , const mp_obj_t * args ) {
342
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
343
- mp_int_t x = mp_obj_get_int (args [1 ]);
344
- mp_int_t y = mp_obj_get_int (args [2 ]);
340
+ STATIC mp_obj_t framebuf_pixel (size_t n_args , const mp_obj_t * args_in ) {
341
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
342
+ mp_int_t x = mp_obj_get_int (args_in [1 ]);
343
+ mp_int_t y = mp_obj_get_int (args_in [2 ]);
345
344
if (0 <= x && x < self -> width && 0 <= y && y < self -> height ) {
346
345
if (n_args == 3 ) {
347
346
// get
348
347
return MP_OBJ_NEW_SMALL_INT (getpixel (self , x , y ));
349
348
} else {
350
349
// set
351
- setpixel (self , x , y , mp_obj_get_int (args [3 ]));
350
+ setpixel (self , x , y , mp_obj_get_int (args_in [3 ]));
352
351
}
353
352
}
354
353
return mp_const_none ;
355
354
}
356
355
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (framebuf_pixel_obj , 3 , 4 , framebuf_pixel );
357
356
358
- STATIC mp_obj_t framebuf_hline (size_t n_args , const mp_obj_t * args ) {
357
+ STATIC mp_obj_t framebuf_hline (size_t n_args , const mp_obj_t * args_in ) {
359
358
(void )n_args ;
360
359
361
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
362
- mp_int_t x = mp_obj_get_int (args [1 ]);
363
- mp_int_t y = mp_obj_get_int (args [2 ]);
364
- mp_int_t w = mp_obj_get_int (args [3 ]);
365
- mp_int_t col = mp_obj_get_int (args [4 ]);
360
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
361
+ mp_int_t args [4 ]; // x, y, w, col
362
+ framebuf_args (args_in , args , 4 );
366
363
367
- fill_rect (self , x , y , w , 1 , col );
364
+ fill_rect (self , args [ 0 ], args [ 1 ], args [ 2 ] , 1 , args [ 3 ] );
368
365
369
366
return mp_const_none ;
370
367
}
371
368
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (framebuf_hline_obj , 5 , 5 , framebuf_hline );
372
369
373
- STATIC mp_obj_t framebuf_vline (size_t n_args , const mp_obj_t * args ) {
370
+ STATIC mp_obj_t framebuf_vline (size_t n_args , const mp_obj_t * args_in ) {
374
371
(void )n_args ;
375
372
376
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
377
- mp_int_t x = mp_obj_get_int (args [1 ]);
378
- mp_int_t y = mp_obj_get_int (args [2 ]);
379
- mp_int_t h = mp_obj_get_int (args [3 ]);
380
- mp_int_t col = mp_obj_get_int (args [4 ]);
373
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
374
+ mp_int_t args [4 ]; // x, y, h, col
375
+ framebuf_args (args_in , args , 4 );
381
376
382
- fill_rect (self , x , y , 1 , h , col );
377
+ fill_rect (self , args [ 0 ], args [ 1 ] , 1 , args [ 2 ], args [ 3 ] );
383
378
384
379
return mp_const_none ;
385
380
}
386
381
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (framebuf_vline_obj , 5 , 5 , framebuf_vline );
387
382
388
- STATIC mp_obj_t framebuf_rect (size_t n_args , const mp_obj_t * args ) {
389
- (void )n_args ;
390
-
391
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
392
- mp_int_t x = mp_obj_get_int (args [1 ]);
393
- mp_int_t y = mp_obj_get_int (args [2 ]);
394
- mp_int_t w = mp_obj_get_int (args [3 ]);
395
- mp_int_t h = mp_obj_get_int (args [4 ]);
396
- mp_int_t col = mp_obj_get_int (args [5 ]);
397
-
398
- fill_rect (self , x , y , w , 1 , col );
399
- fill_rect (self , x , y + h - 1 , w , 1 , col );
400
- fill_rect (self , x , y , 1 , h , col );
401
- fill_rect (self , x + w - 1 , y , 1 , h , col );
402
-
383
+ STATIC mp_obj_t framebuf_rect (size_t n_args , const mp_obj_t * args_in ) {
384
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
385
+ mp_int_t args [5 ]; // x, y, w, h, col
386
+ framebuf_args (args_in , args , 5 );
387
+ fill_rect (self , args [0 ], args [1 ], args [2 ], 1 , args [4 ]);
388
+ fill_rect (self , args [0 ], args [1 ] + args [3 ] - 1 , args [2 ], 1 , args [4 ]);
389
+ fill_rect (self , args [0 ], args [1 ], 1 , args [3 ], args [4 ]);
390
+ fill_rect (self , args [0 ] + args [2 ] - 1 , args [1 ], 1 , args [3 ], args [4 ]);
403
391
return mp_const_none ;
404
392
}
405
393
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (framebuf_rect_obj , 6 , 6 , framebuf_rect );
406
394
407
- STATIC mp_obj_t framebuf_line (size_t n_args , const mp_obj_t * args ) {
408
- (void )n_args ;
409
-
410
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
411
- mp_int_t x1 = mp_obj_get_int (args [1 ]);
412
- mp_int_t y1 = mp_obj_get_int (args [2 ]);
413
- mp_int_t x2 = mp_obj_get_int (args [3 ]);
414
- mp_int_t y2 = mp_obj_get_int (args [4 ]);
415
- mp_int_t col = mp_obj_get_int (args [5 ]);
416
-
395
+ STATIC void line (const mp_obj_framebuf_t * fb , mp_int_t x1 , mp_int_t y1 , mp_int_t x2 , mp_int_t y2 , mp_int_t col ) {
417
396
mp_int_t dx = x2 - x1 ;
418
397
mp_int_t sx ;
419
398
if (dx > 0 ) {
@@ -452,12 +431,12 @@ STATIC mp_obj_t framebuf_line(size_t n_args, const mp_obj_t *args) {
452
431
mp_int_t e = 2 * dy - dx ;
453
432
for (mp_int_t i = 0 ; i < dx ; ++ i ) {
454
433
if (steep ) {
455
- if (0 <= y1 && y1 < self -> width && 0 <= x1 && x1 < self -> height ) {
456
- setpixel (self , y1 , x1 , col );
434
+ if (0 <= y1 && y1 < fb -> width && 0 <= x1 && x1 < fb -> height ) {
435
+ setpixel (fb , y1 , x1 , col );
457
436
}
458
437
} else {
459
- if (0 <= x1 && x1 < self -> width && 0 <= y1 && y1 < self -> height ) {
460
- setpixel (self , x1 , y1 , col );
438
+ if (0 <= x1 && x1 < fb -> width && 0 <= y1 && y1 < fb -> height ) {
439
+ setpixel (fb , x1 , y1 , col );
461
440
}
462
441
}
463
442
while (e >= 0 ) {
@@ -468,31 +447,41 @@ STATIC mp_obj_t framebuf_line(size_t n_args, const mp_obj_t *args) {
468
447
e += 2 * dy ;
469
448
}
470
449
471
- if (0 <= x2 && x2 < self -> width && 0 <= y2 && y2 < self -> height ) {
472
- setpixel (self , x2 , y2 , col );
450
+ if (0 <= x2 && x2 < fb -> width && 0 <= y2 && y2 < fb -> height ) {
451
+ setpixel (fb , x2 , y2 , col );
473
452
}
453
+ }
454
+
455
+ STATIC mp_obj_t framebuf_line (size_t n_args , const mp_obj_t * args_in ) {
456
+ (void )n_args ;
457
+
458
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
459
+ mp_int_t args [5 ]; // x1, y1, x2, y2, col
460
+ framebuf_args (args_in , args , 5 );
461
+
462
+ line (self , args [0 ], args [1 ], args [2 ], args [3 ], args [4 ]);
474
463
475
464
return mp_const_none ;
476
465
}
477
466
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (framebuf_line_obj , 6 , 6 , framebuf_line );
478
467
479
- STATIC mp_obj_t framebuf_blit (size_t n_args , const mp_obj_t * args ) {
480
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
481
- mp_obj_t source_in = mp_obj_cast_to_native_base (args [1 ], MP_OBJ_FROM_PTR (& mp_type_framebuf ));
468
+ STATIC mp_obj_t framebuf_blit (size_t n_args , const mp_obj_t * args_in ) {
469
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
470
+ mp_obj_t source_in = mp_obj_cast_to_native_base (args_in [1 ], MP_OBJ_FROM_PTR (& mp_type_framebuf ));
482
471
if (source_in == MP_OBJ_NULL ) {
483
472
mp_raise_TypeError (NULL );
484
473
}
485
474
mp_obj_framebuf_t * source = MP_OBJ_TO_PTR (source_in );
486
475
487
- mp_int_t x = mp_obj_get_int (args [2 ]);
488
- mp_int_t y = mp_obj_get_int (args [3 ]);
476
+ mp_int_t x = mp_obj_get_int (args_in [2 ]);
477
+ mp_int_t y = mp_obj_get_int (args_in [3 ]);
489
478
mp_int_t key = -1 ;
490
479
if (n_args > 4 ) {
491
- key = mp_obj_get_int (args [4 ]);
480
+ key = mp_obj_get_int (args_in [4 ]);
492
481
}
493
482
mp_obj_framebuf_t * palette = NULL ;
494
- if (n_args > 5 && args [5 ] != mp_const_none ) {
495
- palette = MP_OBJ_TO_PTR (mp_obj_cast_to_native_base (args [5 ], MP_OBJ_FROM_PTR (& mp_type_framebuf )));
483
+ if (n_args > 5 && args_in [5 ] != mp_const_none ) {
484
+ palette = MP_OBJ_TO_PTR (mp_obj_cast_to_native_base (args_in [5 ], MP_OBJ_FROM_PTR (& mp_type_framebuf )));
496
485
}
497
486
498
487
if (
@@ -563,15 +552,15 @@ STATIC mp_obj_t framebuf_scroll(mp_obj_t self_in, mp_obj_t xstep_in, mp_obj_t ys
563
552
}
564
553
STATIC MP_DEFINE_CONST_FUN_OBJ_3 (framebuf_scroll_obj , framebuf_scroll );
565
554
566
- STATIC mp_obj_t framebuf_text (size_t n_args , const mp_obj_t * args ) {
555
+ STATIC mp_obj_t framebuf_text (size_t n_args , const mp_obj_t * args_in ) {
567
556
// extract arguments
568
- mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args [0 ]);
569
- const char * str = mp_obj_str_get_str (args [1 ]);
570
- mp_int_t x0 = mp_obj_get_int (args [2 ]);
571
- mp_int_t y0 = mp_obj_get_int (args [3 ]);
557
+ mp_obj_framebuf_t * self = MP_OBJ_TO_PTR (args_in [0 ]);
558
+ const char * str = mp_obj_str_get_str (args_in [1 ]);
559
+ mp_int_t x0 = mp_obj_get_int (args_in [2 ]);
560
+ mp_int_t y0 = mp_obj_get_int (args_in [3 ]);
572
561
mp_int_t col = 1 ;
573
562
if (n_args >= 5 ) {
574
- col = mp_obj_get_int (args [4 ]);
563
+ col = mp_obj_get_int (args_in [4 ]);
575
564
}
576
565
577
566
// loop over chars
@@ -626,18 +615,18 @@ STATIC const mp_obj_type_t mp_type_framebuf = {
626
615
#endif
627
616
628
617
// this factory function is provided for backwards compatibility with old FrameBuffer1 class
629
- STATIC mp_obj_t legacy_framebuffer1 (size_t n_args , const mp_obj_t * args ) {
618
+ STATIC mp_obj_t legacy_framebuffer1 (size_t n_args , const mp_obj_t * args_in ) {
630
619
mp_obj_framebuf_t * o = mp_obj_malloc (mp_obj_framebuf_t , & mp_type_framebuf );
631
620
632
621
mp_buffer_info_t bufinfo ;
633
- mp_get_buffer_raise (args [0 ], & bufinfo , MP_BUFFER_WRITE );
622
+ mp_get_buffer_raise (args_in [0 ], & bufinfo , MP_BUFFER_WRITE );
634
623
o -> buf = bufinfo .buf ;
635
624
636
- o -> width = mp_obj_get_int (args [1 ]);
637
- o -> height = mp_obj_get_int (args [2 ]);
625
+ o -> width = mp_obj_get_int (args_in [1 ]);
626
+ o -> height = mp_obj_get_int (args_in [2 ]);
638
627
o -> format = FRAMEBUF_MVLSB ;
639
628
if (n_args >= 4 ) {
640
- o -> stride = mp_obj_get_int (args [3 ]);
629
+ o -> stride = mp_obj_get_int (args_in [3 ]);
641
630
} else {
642
631
o -> stride = o -> width ;
643
632
}
0 commit comments