summaryrefslogtreecommitdiff
path: root/apps/plugins/calculator.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/calculator.c')
-rw-r--r--apps/plugins/calculator.c58
1 files changed, 36 insertions, 22 deletions
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 5263ab3bd7..9d5ae205b9 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -394,9 +394,11 @@ void cal_initial (void)
394 n = 1; 394 n = 1;
395 prev_m = m; 395 prev_m = m;
396 prev_n = n; 396 prev_n = n;
397 rb->lcd_invertrect( X_0_POS + n*REC_WIDTH + 1, 397 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
398 Y_1_POS + m*REC_HEIGHT + 1, 398 rb->lcd_fillrect( X_0_POS + n*REC_WIDTH + 1,
399 REC_WIDTH - 1, REC_HEIGHT - 1); 399 Y_1_POS + m*REC_HEIGHT + 1,
400 REC_WIDTH - 1, REC_HEIGHT - 1);
401 rb->lcd_set_drawmode(DRMODE_SOLID);
400 rb->lcd_update(); 402 rb->lcd_update();
401 403
402 /* initial mem and output display*/ 404 /* initial mem and output display*/
@@ -689,13 +691,15 @@ void moveButton(void){
689 break; 691 break;
690 } 692 }
691 693
692 rb->lcd_invertrect( X_0_POS + prev_n*REC_WIDTH + 1, 694 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
693 Y_1_POS + prev_m*REC_HEIGHT + 1, 695 rb->lcd_fillrect( X_0_POS + prev_n*REC_WIDTH + 1,
694 REC_WIDTH - 1, REC_HEIGHT - 1); 696 Y_1_POS + prev_m*REC_HEIGHT + 1,
697 REC_WIDTH - 1, REC_HEIGHT - 1);
695 698
696 rb->lcd_invertrect( X_0_POS + n*REC_WIDTH + 1, 699 rb->lcd_fillrect( X_0_POS + n*REC_WIDTH + 1,
697 Y_1_POS + m*REC_HEIGHT + 1, 700 Y_1_POS + m*REC_HEIGHT + 1,
698 REC_WIDTH - 1, REC_HEIGHT - 1); 701 REC_WIDTH - 1, REC_HEIGHT - 1);
702 rb->lcd_set_drawmode(DRMODE_SOLID);
699 703
700 rb->lcd_update_rect( X_0_POS + prev_n*REC_WIDTH + 1, 704 rb->lcd_update_rect( X_0_POS + prev_n*REC_WIDTH + 1,
701 Y_1_POS + prev_m*REC_HEIGHT + 1, 705 Y_1_POS + prev_m*REC_HEIGHT + 1,
@@ -718,9 +722,11 @@ void printButtonGroups(int group)
718 for (i = 0; i < 5; i++){ 722 for (i = 0; i < 5; i++){
719 for (j = 3; j <= 4; j++){ 723 for (j = 3; j <= 4; j++){
720 rb->lcd_getstringsize( buttonChar[group][i][j],&w,&h); 724 rb->lcd_getstringsize( buttonChar[group][i][j],&w,&h);
721 rb->lcd_clearrect( X_0_POS + j*REC_WIDTH + 1, 725 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
722 Y_1_POS + i*REC_HEIGHT + 1, 726 rb->lcd_fillrect( X_0_POS + j*REC_WIDTH + 1,
723 REC_WIDTH - 1, REC_HEIGHT - 1); 727 Y_1_POS + i*REC_HEIGHT + 1,
728 REC_WIDTH - 1, REC_HEIGHT - 1);
729 rb->lcd_set_drawmode(DRMODE_SOLID);
724 rb->lcd_putsxy( X_0_POS + j*REC_WIDTH + (REC_WIDTH - w)/2, 730 rb->lcd_putsxy( X_0_POS + j*REC_WIDTH + (REC_WIDTH - w)/2,
725 TEXT_2_POS + i*REC_HEIGHT, 731 TEXT_2_POS + i*REC_HEIGHT,
726 buttonChar[group][i][j] ); 732 buttonChar[group][i][j] );
@@ -729,17 +735,21 @@ void printButtonGroups(int group)
729 for (i = 0; i <= 0; i++){ 735 for (i = 0; i <= 0; i++){
730 for (j = 0; j <= 2; j++){ 736 for (j = 0; j <= 2; j++){
731 rb->lcd_getstringsize( buttonChar[group][i][j],&w,&h); 737 rb->lcd_getstringsize( buttonChar[group][i][j],&w,&h);
732 rb->lcd_clearrect( X_0_POS + j*REC_WIDTH + 1, 738 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
733 Y_1_POS + i*REC_HEIGHT + 1, 739 rb->lcd_fillrect( X_0_POS + j*REC_WIDTH + 1,
734 REC_WIDTH - 1, REC_HEIGHT - 1); 740 Y_1_POS + i*REC_HEIGHT + 1,
741 REC_WIDTH - 1, REC_HEIGHT - 1);
742 rb->lcd_set_drawmode(DRMODE_SOLID);
735 rb->lcd_putsxy( X_0_POS + j*REC_WIDTH + (REC_WIDTH - w)/2, 743 rb->lcd_putsxy( X_0_POS + j*REC_WIDTH + (REC_WIDTH - w)/2,
736 TEXT_2_POS + i*REC_HEIGHT, 744 TEXT_2_POS + i*REC_HEIGHT,
737 buttonChar[group][i][j] ); 745 buttonChar[group][i][j] );
738 } 746 }
739 } 747 }
740 rb->lcd_invertrect( X_0_POS + 2*REC_WIDTH + 1, 748 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
741 Y_1_POS + 0*REC_HEIGHT + 1, 749 rb->lcd_fillrect( X_0_POS + 2*REC_WIDTH + 1,
742 REC_WIDTH - 1, REC_HEIGHT - 1); 750 Y_1_POS + 0*REC_HEIGHT + 1,
751 REC_WIDTH - 1, REC_HEIGHT - 1);
752 rb->lcd_set_drawmode(DRMODE_SOLID);
743 rb->lcd_update_rect( X_0_POS, Y_1_POS, 753 rb->lcd_update_rect( X_0_POS, Y_1_POS,
744 REC_WIDTH*5, REC_HEIGHT*5); 754 REC_WIDTH*5, REC_HEIGHT*5);
745} 755}
@@ -750,10 +760,11 @@ void flashButton(int b)
750{ 760{
751 int i = b/5; int j = b - i*5; 761 int i = b/5; int j = b - i*5;
752 int k; 762 int k;
763 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
753 for (k=1*2;k>0;k--){ 764 for (k=1*2;k>0;k--){
754 rb->lcd_invertrect( X_0_POS + j*REC_WIDTH + 1, 765 rb->lcd_fillrect( X_0_POS + j*REC_WIDTH + 1,
755 Y_1_POS + i*REC_HEIGHT + 1, 766 Y_1_POS + i*REC_HEIGHT + 1,
756 REC_WIDTH - 1, REC_HEIGHT - 1); 767 REC_WIDTH - 1, REC_HEIGHT - 1);
757 rb->lcd_update_rect( X_0_POS + j*REC_WIDTH + 1, 768 rb->lcd_update_rect( X_0_POS + j*REC_WIDTH + 1,
758 Y_1_POS + i*REC_HEIGHT + 1, 769 Y_1_POS + i*REC_HEIGHT + 1,
759 REC_WIDTH - 1, REC_HEIGHT - 1); 770 REC_WIDTH - 1, REC_HEIGHT - 1);
@@ -762,6 +773,7 @@ void flashButton(int b)
762 rb->sleep(HZ/22); 773 rb->sleep(HZ/22);
763 774
764 } 775 }
776 rb->lcd_set_drawmode(DRMODE_SOLID);
765} 777}
766 778
767/* ----------------------------------------------------------------------- 779/* -----------------------------------------------------------------------
@@ -778,7 +790,9 @@ void deleteAnimation(int pos)
778 790
779 for (k=1;k<=4;k++){ 791 for (k=1;k<=4;k++){
780 rb->sleep(HZ/32); 792 rb->sleep(HZ/32);
781 rb->lcd_clearrect(1+pos*6, TEXT_1_POS, 6, 8); 793 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
794 rb->lcd_fillrect(1+pos*6, TEXT_1_POS, 6, 8);
795 rb->lcd_set_drawmode(DRMODE_SOLID);
782 rb->lcd_fillrect(1+pos*6+1+k, TEXT_1_POS+k, 796 rb->lcd_fillrect(1+pos*6+1+k, TEXT_1_POS+k,
783 (5-2*k)>0?(5-2*k):1, (7-2*k)>0?(7-2*k):1 ); 797 (5-2*k)>0?(5-2*k):1, (7-2*k)>0?(7-2*k):1 );
784 rb->lcd_update_rect(1+pos*6, TEXT_1_POS, 6, 8); 798 rb->lcd_update_rect(1+pos*6, TEXT_1_POS, 6, 8);