summaryrefslogtreecommitdiff
path: root/firmware/drivers/lcd-2bit-horz.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/lcd-2bit-horz.c')
-rw-r--r--firmware/drivers/lcd-2bit-horz.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/firmware/drivers/lcd-2bit-horz.c b/firmware/drivers/lcd-2bit-horz.c
index 37125679ad..1b192377f6 100644
--- a/firmware/drivers/lcd-2bit-horz.c
+++ b/firmware/drivers/lcd-2bit-horz.c
@@ -417,102 +417,6 @@ void lcd_clear_viewport(void)
417 lcd_current_viewport->flags &= ~(VP_FLAG_VP_SET_CLEAN); 417 lcd_current_viewport->flags &= ~(VP_FLAG_VP_SET_CLEAN);
418} 418}
419 419
420/* Set a single pixel */
421void lcd_drawpixel(int x, int y)
422{
423 if (lcd_clip_viewport_pixel(&x, &y))
424 lcd_pixelfuncs[lcd_current_viewport->drawmode](x, y);
425}
426
427/* Draw a line */
428void lcd_drawline(int x1, int y1, int x2, int y2)
429{
430 int numpixels;
431 int i;
432 int deltax, deltay;
433 int d, dinc1, dinc2;
434 int x, xinc1, xinc2;
435 int y, yinc1, yinc2;
436 int x_vp, y_vp, w_vp, h_vp;
437 lcd_pixelfunc_type *pfunc = lcd_pixelfuncs[lcd_current_viewport->drawmode];
438
439 deltay = abs(y2 - y1);
440 if (deltay == 0)
441 {
442 /* DEBUGF("lcd_drawline() called for horizontal line - optimisation.\n"); */
443 lcd_hline(x1, x2, y1);
444 return;
445 }
446 deltax = abs(x2 - x1);
447 if (deltax == 0)
448 {
449 /* DEBUGF("lcd_drawline() called for vertical line - optimisation.\n"); */
450 lcd_vline(x1, y1, y2);
451 return;
452 }
453 xinc2 = 1;
454 yinc2 = 1;
455
456 if (deltax >= deltay)
457 {
458 numpixels = deltax;
459 d = 2 * deltay - deltax;
460 dinc1 = deltay * 2;
461 dinc2 = (deltay - deltax) * 2;
462 xinc1 = 1;
463 yinc1 = 0;
464 }
465 else
466 {
467 numpixels = deltay;
468 d = 2 * deltax - deltay;
469 dinc1 = deltax * 2;
470 dinc2 = (deltax - deltay) * 2;
471 xinc1 = 0;
472 yinc1 = 1;
473 }
474 numpixels++; /* include endpoints */
475
476 if (x1 > x2)
477 {
478 xinc1 = -xinc1;
479 xinc2 = -xinc2;
480 }
481
482 if (y1 > y2)
483 {
484 yinc1 = -yinc1;
485 yinc2 = -yinc2;
486 }
487
488 x = x1;
489 y = y1;
490
491 x_vp = lcd_current_viewport->x;
492 y_vp = lcd_current_viewport->y;
493 w_vp = lcd_current_viewport->width;
494 h_vp = lcd_current_viewport->height;
495
496 for (i = 0; i < numpixels; i++)
497 {
498 if (x >= 0 && y >= 0 && x < w_vp && y < h_vp)
499 pfunc(x + x_vp, y + y_vp);
500
501 if (d < 0)
502 {
503 d += dinc1;
504 x += xinc1;
505 y += yinc1;
506 }
507 else
508 {
509 d += dinc2;
510 x += xinc2;
511 y += yinc2;
512 }
513 }
514}
515
516/* Draw a horizontal line (optimised) */ 420/* Draw a horizontal line (optimised) */
517void lcd_hline(int x1, int x2, int y) 421void lcd_hline(int x1, int x2, int y)
518{ 422{
@@ -564,21 +468,6 @@ void lcd_vline(int x, int y1, int y2)
564 while (dst <= dst_end); 468 while (dst <= dst_end);
565} 469}
566 470
567/* Draw a rectangular box */
568void lcd_drawrect(int x, int y, int width, int height)
569{
570 if ((width <= 0) || (height <= 0))
571 return;
572
573 int x2 = x + width - 1;
574 int y2 = y + height - 1;
575
576 lcd_vline(x, y, y2);
577 lcd_vline(x2, y, y2);
578 lcd_hline(x, x2, y);
579 lcd_hline(x, x2, y2);
580}
581
582/* Fill a rectangular area */ 471/* Fill a rectangular area */
583void lcd_fillrect(int x, int y, int width, int height) 472void lcd_fillrect(int x, int y, int width, int height)
584{ 473{