summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2005-06-28 23:15:47 +0000
committerJens Arnold <amiconn@rockbox.org>2005-06-28 23:15:47 +0000
commit7e11acbce9b9a63c28ded055d02301175391e027 (patch)
treeea8d30e7281e8d720d6dc8ea51804e1749282697 /apps/plugins
parentc2bf5dfe12978b44d5d890a37f256c8d9f510660 (diff)
downloadrockbox-7e11acbce9b9a63c28ded055d02301175391e027.tar.gz
rockbox-7e11acbce9b9a63c28ded055d02301175391e027.zip
Second part of graphics api rework. Bitmap drawing and text output converted; some code cleanup and more optimisations.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6906 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/bounce.c15
-rw-r--r--apps/plugins/chessclock.c2
-rw-r--r--apps/plugins/clock.c200
-rw-r--r--apps/plugins/flipit.c10
-rw-r--r--apps/plugins/logo.c2
-rw-r--r--apps/plugins/minesweeper.c4
-rw-r--r--apps/plugins/sliding_puzzle.c2
-rw-r--r--apps/plugins/snake2.c12
-rw-r--r--apps/plugins/snow.c2
-rw-r--r--apps/plugins/solitaire.c12
-rw-r--r--apps/plugins/splitedit.c8
-rw-r--r--apps/plugins/star.c24
-rw-r--r--apps/plugins/vu_meter.c61
13 files changed, 189 insertions, 165 deletions
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 232d9a9cc5..fa0e22f196 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -269,9 +269,9 @@ static void addclock(void)
269 /* draw a circle */ 269 /* draw a circle */
270 for(i=0; i < 60; i+=3) { 270 for(i=0; i < 60; i+=3) {
271 rb->lcd_drawline( xminute[i], 271 rb->lcd_drawline( xminute[i],
272 yminute[i], 272 yminute[i],
273 xminute[(i+1)%60], 273 xminute[(i+1)%60],
274 yminute[(i+1)%60]); 274 yminute[(i+1)%60]);
275 } 275 }
276} 276}
277#endif /* HAVE_RTC */ 277#endif /* HAVE_RTC */
@@ -303,16 +303,17 @@ static int scrollit(void)
303 return -1; 303 return -1;
304 304
305 rb->lcd_clear_display(); 305 rb->lcd_clear_display();
306 rb->lcd_set_drawmode(DRMODE_FG);
306 307
307 for(i=0, yy=y, xx=x; i< LETTERS_ON_SCREEN; i++) { 308 for(i=0, yy=y, xx=x; i< LETTERS_ON_SCREEN; i++) {
308 letter = rock[(i+textpos) % rocklen ]; 309 letter = rock[(i+textpos) % rocklen ];
309 310
310 rb->lcd_bitmap((char *)char_gen_12x16[letter-0x20], 311 rb->lcd_bitmap((char *)char_gen_12x16[letter-0x20],
311 xx, table[yy&(TABLE_SIZE-1)], 312 xx, table[yy&(TABLE_SIZE-1)], 11, 16);
312 11, 16, false);
313 yy += YADD; 313 yy += YADD;
314 xx+= LCD_WIDTH/LETTERS_ON_SCREEN; 314 xx+= LCD_WIDTH/LETTERS_ON_SCREEN;
315 } 315 }
316 rb->lcd_set_drawmode(DRMODE_SOLID);
316#ifdef HAVE_RTC 317#ifdef HAVE_RTC
317 addclock(); 318 addclock();
318#endif 319#endif
@@ -393,13 +394,15 @@ static int loopit(void)
393 rb->lcd_putsxy(0, LCD_HEIGHT - 8, buffer); 394 rb->lcd_putsxy(0, LCD_HEIGHT - 8, buffer);
394 timeout--; 395 timeout--;
395 } 396 }
397 rb->lcd_set_drawmode(DRMODE_FG);
396 for(i=0, yy=y, xx=x; 398 for(i=0, yy=y, xx=x;
397 i<rocklen; 399 i<rocklen;
398 i++, yy+=values[NUM_YDIST].num, xx+=values[NUM_XDIST].num) 400 i++, yy+=values[NUM_YDIST].num, xx+=values[NUM_XDIST].num)
399 rb->lcd_bitmap((char *)char_gen_12x16[rock[i]-0x20], 401 rb->lcd_bitmap((char *)char_gen_12x16[rock[i]-0x20],
400 xtable[xx&(TABLE_SIZE-1)], table[yy&(TABLE_SIZE-1)], 402 xtable[xx&(TABLE_SIZE-1)], table[yy&(TABLE_SIZE-1)],
401 11, 16, false); 403 11, 16);
402 rb->lcd_update(); 404 rb->lcd_update();
405 rb->lcd_set_drawmode(DRMODE_SOLID);
403 406
404 ysanke+= values[NUM_YSANKE].num; 407 ysanke+= values[NUM_YSANKE].num;
405 xsanke+= values[NUM_XSANKE].num; 408 xsanke+= values[NUM_XSANKE].num;
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 8485d40aae..b66ed2a385 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -214,7 +214,7 @@ static void show_pause_mode(bool enabled)
214 static const char pause_icon[] = {0x00,0x7f,0x7f,0x00,0x7f,0x7f,0x00}; 214 static const char pause_icon[] = {0x00,0x7f,0x7f,0x00,0x7f,0x7f,0x00};
215 215
216 if (enabled) 216 if (enabled)
217 rb->lcd_bitmap(pause_icon, 52, 0, 7, 8, true); 217 rb->lcd_bitmap(pause_icon, 52, 0, 7, 8);
218 else 218 else
219 { 219 {
220 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); 220 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
diff --git a/apps/plugins/clock.c b/apps/plugins/clock.c
index d58f746158..bddda15f5f 100644
--- a/apps/plugins/clock.c
+++ b/apps/plugins/clock.c
@@ -788,9 +788,9 @@ bool colon, bool lcd)
788 if(settings.digital_12h) 788 if(settings.digital_12h)
789 { 789 {
790 if(hour > 12) 790 if(hour > 12)
791 rb->lcd_bitmap(pm, 97, 55, 15, 8, true); 791 rb->lcd_bitmap(pm, 97, 55, 15, 8);
792 else 792 else
793 rb->lcd_bitmap(am, 1, 55, 15, 8, true); 793 rb->lcd_bitmap(am, 1, 55, 15, 8);
794 } 794 }
795 } 795 }
796 else 796 else
@@ -798,9 +798,9 @@ bool colon, bool lcd)
798 if(settings.lcd_12h) 798 if(settings.lcd_12h)
799 { 799 {
800 if(hour > 12) 800 if(hour > 12)
801 rb->lcd_bitmap(pm, 97, 55, 15, 8, true); 801 rb->lcd_bitmap(pm, 97, 55, 15, 8);
802 else 802 else
803 rb->lcd_bitmap(am, 1, 55, 15, 8, true); 803 rb->lcd_bitmap(am, 1, 55, 15, 8);
804 } 804 }
805 } 805 }
806 806
@@ -881,138 +881,138 @@ void binary(int hour, int minute, int second)
881 *****/ 881 *****/
882 if(temphour >= 32) 882 if(temphour >= 32)
883 { 883 {
884 rb->lcd_bitmap(bitmap_1, 0, 1, 15, 20, true); 884 rb->lcd_bitmap(bitmap_1, 0, 1, 15, 20);
885 temphour -= 32; 885 temphour -= 32;
886 } 886 }
887 else 887 else
888 rb->lcd_bitmap(bitmap_0, 0, 1, 15, 20, true); 888 rb->lcd_bitmap(bitmap_0, 0, 1, 15, 20);
889 if(temphour >= 16) 889 if(temphour >= 16)
890 { 890 {
891 rb->lcd_bitmap(bitmap_1, 19, 1, 15, 20, true); 891 rb->lcd_bitmap(bitmap_1, 19, 1, 15, 20);
892 temphour -= 16; 892 temphour -= 16;
893 } 893 }
894 else 894 else
895 rb->lcd_bitmap(bitmap_0, 19, 1, 15, 20, true); 895 rb->lcd_bitmap(bitmap_0, 19, 1, 15, 20);
896 if(temphour >= 8) 896 if(temphour >= 8)
897 { 897 {
898 rb->lcd_bitmap(bitmap_1, 38, 1, 15, 20, true); 898 rb->lcd_bitmap(bitmap_1, 38, 1, 15, 20);
899 temphour -= 8; 899 temphour -= 8;
900 } 900 }
901 else 901 else
902 rb->lcd_bitmap(bitmap_0, 38, 1, 15, 20, true); 902 rb->lcd_bitmap(bitmap_0, 38, 1, 15, 20);
903 if(temphour >= 4) 903 if(temphour >= 4)
904 { 904 {
905 rb->lcd_bitmap(bitmap_1, 57, 1, 15, 20, true); 905 rb->lcd_bitmap(bitmap_1, 57, 1, 15, 20);
906 temphour -= 4; 906 temphour -= 4;
907 } 907 }
908 else 908 else
909 rb->lcd_bitmap(bitmap_0, 57, 1, 15, 20, true); 909 rb->lcd_bitmap(bitmap_0, 57, 1, 15, 20);
910 if(temphour >= 2) 910 if(temphour >= 2)
911 { 911 {
912 rb->lcd_bitmap(bitmap_1, 76, 1, 15, 20, true); 912 rb->lcd_bitmap(bitmap_1, 76, 1, 15, 20);
913 temphour -= 2; 913 temphour -= 2;
914 } 914 }
915 else 915 else
916 rb->lcd_bitmap(bitmap_0, 76, 1, 15, 20, true); 916 rb->lcd_bitmap(bitmap_0, 76, 1, 15, 20);
917 if(temphour >= 1) 917 if(temphour >= 1)
918 { 918 {
919 rb->lcd_bitmap(bitmap_1, 95, 1, 15, 20, true); 919 rb->lcd_bitmap(bitmap_1, 95, 1, 15, 20);
920 temphour -= 1; 920 temphour -= 1;
921 } 921 }
922 else 922 else
923 rb->lcd_bitmap(bitmap_0, 95, 1, 15, 20, true); 923 rb->lcd_bitmap(bitmap_0, 95, 1, 15, 20);
924 924
925 /********* 925 /*********
926 * MINUTES 926 * MINUTES
927 ********/ 927 ********/
928 if(tempmin >= 32) 928 if(tempmin >= 32)
929 { 929 {
930 rb->lcd_bitmap(bitmap_1, 0, 21, 15, 20, true); 930 rb->lcd_bitmap(bitmap_1, 0, 21, 15, 20);
931 tempmin -= 32; 931 tempmin -= 32;
932 } 932 }
933 else 933 else
934 rb->lcd_bitmap(bitmap_0, 0, 21, 15, 20, true); 934 rb->lcd_bitmap(bitmap_0, 0, 21, 15, 20);
935 if(tempmin >= 16) 935 if(tempmin >= 16)
936 { 936 {
937 rb->lcd_bitmap(bitmap_1, 19, 21, 15, 20, true); 937 rb->lcd_bitmap(bitmap_1, 19, 21, 15, 20);
938 tempmin -= 16; 938 tempmin -= 16;
939 } 939 }
940 else 940 else
941 rb->lcd_bitmap(bitmap_0, 19, 21, 15, 20, true); 941 rb->lcd_bitmap(bitmap_0, 19, 21, 15, 20);
942 if(tempmin >= 8) 942 if(tempmin >= 8)
943 { 943 {
944 rb->lcd_bitmap(bitmap_1, 38, 21, 15, 20, true); 944 rb->lcd_bitmap(bitmap_1, 38, 21, 15, 20);
945 tempmin -= 8; 945 tempmin -= 8;
946 } 946 }
947 else 947 else
948 rb->lcd_bitmap(bitmap_0, 38, 21, 15, 20, true); 948 rb->lcd_bitmap(bitmap_0, 38, 21, 15, 20);
949 if(tempmin >= 4) 949 if(tempmin >= 4)
950 { 950 {
951 rb->lcd_bitmap(bitmap_1, 57, 21, 15, 20, true); 951 rb->lcd_bitmap(bitmap_1, 57, 21, 15, 20);
952 tempmin -= 4; 952 tempmin -= 4;
953 } 953 }
954 else 954 else
955 rb->lcd_bitmap(bitmap_0, 57, 21, 15, 20, true); 955 rb->lcd_bitmap(bitmap_0, 57, 21, 15, 20);
956 if(tempmin >= 2) 956 if(tempmin >= 2)
957 { 957 {
958 rb->lcd_bitmap(bitmap_1, 76, 21, 15, 20, true); 958 rb->lcd_bitmap(bitmap_1, 76, 21, 15, 20);
959 tempmin -= 2; 959 tempmin -= 2;
960 } 960 }
961 else 961 else
962 rb->lcd_bitmap(bitmap_0, 76, 21, 15, 20, true); 962 rb->lcd_bitmap(bitmap_0, 76, 21, 15, 20);
963 if(tempmin >= 1) 963 if(tempmin >= 1)
964 { 964 {
965 rb->lcd_bitmap(bitmap_1, 95, 21, 15, 20, true); 965 rb->lcd_bitmap(bitmap_1, 95, 21, 15, 20);
966 tempmin -= 1; 966 tempmin -= 1;
967 } 967 }
968 else 968 else
969 rb->lcd_bitmap(bitmap_0, 95, 21, 15, 20, true); 969 rb->lcd_bitmap(bitmap_0, 95, 21, 15, 20);
970 970
971 /********* 971 /*********
972 * SECONDS 972 * SECONDS
973 ********/ 973 ********/
974 if(tempsec >= 32) 974 if(tempsec >= 32)
975 { 975 {
976 rb->lcd_bitmap(bitmap_1, 0, 42, 15, 20, true); 976 rb->lcd_bitmap(bitmap_1, 0, 42, 15, 20);
977 tempsec -= 32; 977 tempsec -= 32;
978 } 978 }
979 else 979 else
980 rb->lcd_bitmap(bitmap_0, 0, 42, 15, 20, true); 980 rb->lcd_bitmap(bitmap_0, 0, 42, 15, 20);
981 if(tempsec >= 16) 981 if(tempsec >= 16)
982 { 982 {
983 rb->lcd_bitmap(bitmap_1, 19, 42, 15, 20, true); 983 rb->lcd_bitmap(bitmap_1, 19, 42, 15, 20);
984 tempsec -= 16; 984 tempsec -= 16;
985 } 985 }
986 else 986 else
987 rb->lcd_bitmap(bitmap_0, 19, 42, 15, 20, true); 987 rb->lcd_bitmap(bitmap_0, 19, 42, 15, 20);
988 if(tempsec >= 8) 988 if(tempsec >= 8)
989 { 989 {
990 rb->lcd_bitmap(bitmap_1, 38, 42, 15, 20, true); 990 rb->lcd_bitmap(bitmap_1, 38, 42, 15, 20);
991 tempsec -= 8; 991 tempsec -= 8;
992 } 992 }
993 else 993 else
994 rb->lcd_bitmap(bitmap_0, 38, 42, 15, 20, true); 994 rb->lcd_bitmap(bitmap_0, 38, 42, 15, 20);
995 if(tempsec >= 4) 995 if(tempsec >= 4)
996 { 996 {
997 rb->lcd_bitmap(bitmap_1, 57, 42, 15, 20, true); 997 rb->lcd_bitmap(bitmap_1, 57, 42, 15, 20);
998 tempsec -= 4; 998 tempsec -= 4;
999 } 999 }
1000 else 1000 else
1001 rb->lcd_bitmap(bitmap_0, 57, 42, 15, 20, true); 1001 rb->lcd_bitmap(bitmap_0, 57, 42, 15, 20);
1002 if(tempsec >= 2) 1002 if(tempsec >= 2)
1003 { 1003 {
1004 rb->lcd_bitmap(bitmap_1, 76, 42, 15, 20, true); 1004 rb->lcd_bitmap(bitmap_1, 76, 42, 15, 20);
1005 tempsec -= 2; 1005 tempsec -= 2;
1006 } 1006 }
1007 else 1007 else
1008 rb->lcd_bitmap(bitmap_0, 76, 42, 15, 20, true); 1008 rb->lcd_bitmap(bitmap_0, 76, 42, 15, 20);
1009 if(tempsec >= 1) 1009 if(tempsec >= 1)
1010 { 1010 {
1011 rb->lcd_bitmap(bitmap_1, 95, 42, 15, 20, true); 1011 rb->lcd_bitmap(bitmap_1, 95, 42, 15, 20);
1012 tempsec -= 1; 1012 tempsec -= 1;
1013 } 1013 }
1014 else 1014 else
1015 rb->lcd_bitmap(bitmap_0, 95, 42, 15, 20, true); 1015 rb->lcd_bitmap(bitmap_0, 95, 42, 15, 20);
1016 1016
1017 rb->lcd_update(); 1017 rb->lcd_update();
1018} 1018}
@@ -1039,7 +1039,7 @@ void show_logo(bool animate, bool show_clock_text)
1039 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1); 1039 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1);
1040 rb->lcd_drawline(0, y_position/2+38, 111, y_position/2+38); 1040 rb->lcd_drawline(0, y_position/2+38, 111, y_position/2+38);
1041 rb->lcd_set_drawmode(DRMODE_SOLID); 1041 rb->lcd_set_drawmode(DRMODE_SOLID);
1042 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37, true); 1042 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37);
1043 if(show_clock_text) 1043 if(show_clock_text)
1044 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf); 1044 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf);
1045 rb->lcd_update(); 1045 rb->lcd_update();
@@ -1051,7 +1051,7 @@ void show_logo(bool animate, bool show_clock_text)
1051 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1); 1051 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1);
1052 rb->lcd_drawline(0, y_position/2+38, 111, y_position/2+38); 1052 rb->lcd_drawline(0, y_position/2+38, 111, y_position/2+38);
1053 rb->lcd_set_drawmode(DRMODE_SOLID); 1053 rb->lcd_set_drawmode(DRMODE_SOLID);
1054 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37, true); 1054 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37);
1055 if(show_clock_text) 1055 if(show_clock_text)
1056 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf); 1056 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf);
1057 rb->lcd_update(); 1057 rb->lcd_update();
@@ -1063,7 +1063,7 @@ void show_logo(bool animate, bool show_clock_text)
1063 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1); 1063 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1);
1064 rb->lcd_drawline(0, y_position/2+38, 111, y_position/2+38); 1064 rb->lcd_drawline(0, y_position/2+38, 111, y_position/2+38);
1065 rb->lcd_set_drawmode(DRMODE_SOLID); 1065 rb->lcd_set_drawmode(DRMODE_SOLID);
1066 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37, true); 1066 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37);
1067 if(show_clock_text) 1067 if(show_clock_text)
1068 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf); 1068 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf);
1069 rb->lcd_update(); 1069 rb->lcd_update();
@@ -1071,7 +1071,7 @@ void show_logo(bool animate, bool show_clock_text)
1071 } 1071 }
1072 else /* don't animate, just show */ 1072 else /* don't animate, just show */
1073 { 1073 {
1074 rb->lcd_bitmap(clogo, 0, 10, 112, 37, true); 1074 rb->lcd_bitmap(clogo, 0, 10, 112, 37);
1075 if(show_clock_text) 1075 if(show_clock_text)
1076 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf); 1076 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf);
1077 rb->lcd_update(); 1077 rb->lcd_update();
@@ -1094,7 +1094,7 @@ void exit_logo(void)
1094 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); 1094 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
1095 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1); 1095 rb->lcd_drawline(0, y_position/2-1, 111, y_position/2-1);
1096 rb->lcd_set_drawmode(DRMODE_SOLID); 1096 rb->lcd_set_drawmode(DRMODE_SOLID);
1097 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37, true); 1097 rb->lcd_bitmap(clogo, 0, y_position/2, 112, 37);
1098 rb->lcd_update(); 1098 rb->lcd_update();
1099 } 1099 }
1100} 1100}
@@ -1511,9 +1511,9 @@ bool f1_screen(void)
1511void draw_checkbox(bool setting, int x, int y) 1511void draw_checkbox(bool setting, int x, int y)
1512{ 1512{
1513 if(setting) /* checkbox is on */ 1513 if(setting) /* checkbox is on */
1514 rb->lcd_bitmap(checkbox_full, x, y, 8, 6, true); 1514 rb->lcd_bitmap(checkbox_full, x, y, 8, 6);
1515 else /* checkbox is off */ 1515 else /* checkbox is off */
1516 rb->lcd_bitmap(checkbox_empty, x, y, 8, 6, true); 1516 rb->lcd_bitmap(checkbox_empty, x, y, 8, 6);
1517} 1517}
1518 1518
1519void draw_settings(void) 1519void draw_settings(void)
@@ -1544,18 +1544,18 @@ void draw_settings(void)
1544 draw_checkbox(settings.analog_digits, 1, 33); 1544 draw_checkbox(settings.analog_digits, 1, 33);
1545 1545
1546 if(settings.analog_date == 0) 1546 if(settings.analog_date == 0)
1547 rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6, true); 1547 rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6);
1548 else if(settings.analog_date == 1) 1548 else if(settings.analog_date == 1)
1549 rb->lcd_bitmap(checkbox_half, 1, 41, 8, 6, true); 1549 rb->lcd_bitmap(checkbox_half, 1, 41, 8, 6);
1550 else 1550 else
1551 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); 1551 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6);
1552 1552
1553 if(settings.analog_time == 0) 1553 if(settings.analog_time == 0)
1554 rb->lcd_bitmap(checkbox_empty, 1, 49, 8, 6, true); 1554 rb->lcd_bitmap(checkbox_empty, 1, 49, 8, 6);
1555 else if(settings.analog_time == 1) 1555 else if(settings.analog_time == 1)
1556 rb->lcd_bitmap(checkbox_half, 1, 49, 8, 6, true); 1556 rb->lcd_bitmap(checkbox_half, 1, 49, 8, 6);
1557 else 1557 else
1558 rb->lcd_bitmap(checkbox_full, 1, 49, 8, 6, true); 1558 rb->lcd_bitmap(checkbox_full, 1, 49, 8, 6);
1559 1559
1560 draw_checkbox(settings.analog_secondhand, 1, 57); 1560 draw_checkbox(settings.analog_secondhand, 1, 57);
1561 } 1561 }
@@ -1584,20 +1584,20 @@ void draw_settings(void)
1584 1584
1585 /* Draw checkboxes */ 1585 /* Draw checkboxes */
1586 if(settings.digital_date == 0) 1586 if(settings.digital_date == 0)
1587 rb->lcd_bitmap(checkbox_empty, 1, 33, 8, 6, true); 1587 rb->lcd_bitmap(checkbox_empty, 1, 33, 8, 6);
1588 else if(settings.digital_date == 1) 1588 else if(settings.digital_date == 1)
1589 rb->lcd_bitmap(checkbox_half, 1, 33, 8, 6, true); 1589 rb->lcd_bitmap(checkbox_half, 1, 33, 8, 6);
1590 else 1590 else
1591 rb->lcd_bitmap(checkbox_full, 1, 33, 8, 6, true); 1591 rb->lcd_bitmap(checkbox_full, 1, 33, 8, 6);
1592 1592
1593 if(settings.digital_seconds == 0) 1593 if(settings.digital_seconds == 0)
1594 rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6, true); 1594 rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6);
1595 else if(settings.digital_seconds == 1) 1595 else if(settings.digital_seconds == 1)
1596 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); 1596 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6);
1597 else if(settings.digital_seconds == 2) 1597 else if(settings.digital_seconds == 2)
1598 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); 1598 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6);
1599 else 1599 else
1600 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); 1600 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6);
1601 1601
1602 draw_checkbox(settings.digital_blinkcolon, 1, 49); 1602 draw_checkbox(settings.digital_blinkcolon, 1, 49);
1603 draw_checkbox(settings.digital_12h, 1, 57); 1603 draw_checkbox(settings.digital_12h, 1, 57);
@@ -1627,20 +1627,20 @@ void draw_settings(void)
1627 1627
1628 /* Draw checkboxes */ 1628 /* Draw checkboxes */
1629 if(settings.lcd_date == 0) 1629 if(settings.lcd_date == 0)
1630 rb->lcd_bitmap(checkbox_empty, 1, 33, 8, 6, true); 1630 rb->lcd_bitmap(checkbox_empty, 1, 33, 8, 6);
1631 else if(settings.lcd_date == 1) 1631 else if(settings.lcd_date == 1)
1632 rb->lcd_bitmap(checkbox_half, 1, 33, 8, 6, true); 1632 rb->lcd_bitmap(checkbox_half, 1, 33, 8, 6);
1633 else 1633 else
1634 rb->lcd_bitmap(checkbox_full, 1, 33, 8, 6, true); 1634 rb->lcd_bitmap(checkbox_full, 1, 33, 8, 6);
1635 1635
1636 if(settings.lcd_seconds == 0) 1636 if(settings.lcd_seconds == 0)
1637 rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6, true); 1637 rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6);
1638 else if(settings.lcd_seconds == 1) 1638 else if(settings.lcd_seconds == 1)
1639 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); 1639 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6);
1640 else if(settings.lcd_seconds == 2) 1640 else if(settings.lcd_seconds == 2)
1641 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); 1641 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6);
1642 else 1642 else
1643 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); 1643 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6);
1644 1644
1645 draw_checkbox(settings.lcd_blinkcolon, 1, 49); 1645 draw_checkbox(settings.lcd_blinkcolon, 1, 49);
1646 draw_checkbox(settings.lcd_12h, 1, 57); 1646 draw_checkbox(settings.lcd_12h, 1, 57);
@@ -2131,16 +2131,16 @@ void general_settings(void)
2131 rb->lcd_getstringsize(buf, &buf_w, &buf_h); 2131 rb->lcd_getstringsize(buf, &buf_w, &buf_h);
2132 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); 2132 rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf);
2133 2133
2134 rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); 2134 rb->lcd_bitmap(arrow, 1, 17, 8, 6);
2135 rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); 2135 rb->lcd_bitmap(arrow, 1, 25, 8, 6);
2136 draw_checkbox(settings.display_counter, 1, 33); 2136 draw_checkbox(settings.display_counter, 1, 33);
2137 2137
2138 if(settings.save_mode == 1) 2138 if(settings.save_mode == 1)
2139 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); 2139 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6);
2140 else if(settings.save_mode == 2) 2140 else if(settings.save_mode == 2)
2141 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); 2141 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6);
2142 else 2142 else
2143 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); 2143 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6);
2144 2144
2145 switch(cursorpos) 2145 switch(cursorpos)
2146 { 2146 {
@@ -2181,15 +2181,15 @@ void general_settings(void)
2181 rb->lcd_puts(2, 5, "Save: Automatic"); 2181 rb->lcd_puts(2, 5, "Save: Automatic");
2182 else 2182 else
2183 rb->lcd_puts(2, 5, "Save: Manually"); 2183 rb->lcd_puts(2, 5, "Save: Manually");
2184 rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); 2184 rb->lcd_bitmap(arrow, 1, 17, 8, 6);
2185 rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); 2185 rb->lcd_bitmap(arrow, 1, 25, 8, 6);
2186 draw_checkbox(settings.display_counter, 1, 33); 2186 draw_checkbox(settings.display_counter, 1, 33);
2187 if(settings.save_mode == 1) 2187 if(settings.save_mode == 1)
2188 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); 2188 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6);
2189 else if(settings.save_mode == 2) 2189 else if(settings.save_mode == 2)
2190 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); 2190 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6);
2191 else 2191 else
2192 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); 2192 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6);
2193 2193
2194 cursor(0, cursor_y, 112, 8); 2194 cursor(0, cursor_y, 112, 8);
2195 rb->lcd_update(); 2195 rb->lcd_update();
@@ -2218,15 +2218,15 @@ void general_settings(void)
2218 rb->lcd_puts(2, 5, "Save: Automatic"); 2218 rb->lcd_puts(2, 5, "Save: Automatic");
2219 else 2219 else
2220 rb->lcd_puts(2, 5, "Save: Manually"); 2220 rb->lcd_puts(2, 5, "Save: Manually");
2221 rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); 2221 rb->lcd_bitmap(arrow, 1, 17, 8, 6);
2222 rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); 2222 rb->lcd_bitmap(arrow, 1, 25, 8, 6);
2223 draw_checkbox(settings.display_counter, 1, 33); 2223 draw_checkbox(settings.display_counter, 1, 33);
2224 if(settings.save_mode == 1) 2224 if(settings.save_mode == 1)
2225 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); 2225 rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6);
2226 else if(settings.save_mode == 2) 2226 else if(settings.save_mode == 2)
2227 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); 2227 rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6);
2228 else 2228 else
2229 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); 2229 rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6);
2230 2230
2231 cursor(0, cursor_y, 112, 8); 2231 cursor(0, cursor_y, 112, 8);
2232 rb->lcd_update(); 2232 rb->lcd_update();
@@ -2323,9 +2323,9 @@ void draw_extras(int year, int day, int month, int hour, int minute, int second)
2323 if(settings.analog_time == 2) 2323 if(settings.analog_time == 2)
2324 { 2324 {
2325 if(current_time->tm_hour > 12) /* PM */ 2325 if(current_time->tm_hour > 12) /* PM */
2326 rb->lcd_bitmap(pm, 96, 1, 15, 8, true); 2326 rb->lcd_bitmap(pm, 96, 1, 15, 8);
2327 else /* AM */ 2327 else /* AM */
2328 rb->lcd_bitmap(am, 96, 1, 15, 8, true); 2328 rb->lcd_bitmap(am, 96, 1, 15, 8);
2329 } 2329 }
2330 } 2330 }
2331 2331
@@ -2460,11 +2460,11 @@ void select_mode(void)
2460 rb->lcd_puts(0, 7, "PLAY:Go|OFF:Cancel"); 2460 rb->lcd_puts(0, 7, "PLAY:Go|OFF:Cancel");
2461 2461
2462 /* draw an arrow next to all of them */ 2462 /* draw an arrow next to all of them */
2463 rb->lcd_bitmap(arrow, 1, 9, 8, 6, true); 2463 rb->lcd_bitmap(arrow, 1, 9, 8, 6);
2464 rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); 2464 rb->lcd_bitmap(arrow, 1, 17, 8, 6);
2465 rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); 2465 rb->lcd_bitmap(arrow, 1, 25, 8, 6);
2466 rb->lcd_bitmap(arrow, 1, 33, 8, 6, true); 2466 rb->lcd_bitmap(arrow, 1, 33, 8, 6);
2467 rb->lcd_bitmap(arrow, 1, 41, 8, 6, true); 2467 rb->lcd_bitmap(arrow, 1, 41, 8, 6);
2468 2468
2469 /* draw line selector */ 2469 /* draw line selector */
2470 switch(cursorpos) 2470 switch(cursorpos)
@@ -2501,11 +2501,11 @@ void select_mode(void)
2501 rb->lcd_puts(0, 7, "PLAY:Go|OFF:Cancel"); 2501 rb->lcd_puts(0, 7, "PLAY:Go|OFF:Cancel");
2502 2502
2503 /* draw an arrow next to all of them */ 2503 /* draw an arrow next to all of them */
2504 rb->lcd_bitmap(arrow, 1, 9, 8, 6, true); 2504 rb->lcd_bitmap(arrow, 1, 9, 8, 6);
2505 rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); 2505 rb->lcd_bitmap(arrow, 1, 17, 8, 6);
2506 rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); 2506 rb->lcd_bitmap(arrow, 1, 25, 8, 6);
2507 rb->lcd_bitmap(arrow, 1, 33, 8, 6, true); 2507 rb->lcd_bitmap(arrow, 1, 33, 8, 6);
2508 rb->lcd_bitmap(arrow, 1, 41, 8, 6, true); 2508 rb->lcd_bitmap(arrow, 1, 41, 8, 6);
2509 2509
2510 cursor(0, cursor_y, 112, 8); 2510 cursor(0, cursor_y, 112, 8);
2511 rb->lcd_update(); 2511 rb->lcd_update();
@@ -2535,11 +2535,11 @@ void select_mode(void)
2535 rb->lcd_puts(0, 7, "PLAY:Go|OFF:Cancel"); 2535 rb->lcd_puts(0, 7, "PLAY:Go|OFF:Cancel");
2536 2536
2537 /* draw an arrow next to all of them */ 2537 /* draw an arrow next to all of them */
2538 rb->lcd_bitmap(arrow, 1, 9, 8, 6, true); 2538 rb->lcd_bitmap(arrow, 1, 9, 8, 6);
2539 rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); 2539 rb->lcd_bitmap(arrow, 1, 17, 8, 6);
2540 rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); 2540 rb->lcd_bitmap(arrow, 1, 25, 8, 6);
2541 rb->lcd_bitmap(arrow, 1, 33, 8, 6, true); 2541 rb->lcd_bitmap(arrow, 1, 33, 8, 6);
2542 rb->lcd_bitmap(arrow, 1, 41, 8, 6, true); 2542 rb->lcd_bitmap(arrow, 1, 41, 8, 6);
2543 2543
2544 cursor(0, cursor_y, 112, 8); 2544 cursor(0, cursor_y, 112, 8);
2545 rb->lcd_update(); 2545 rb->lcd_update();
@@ -2580,7 +2580,7 @@ void counter_finished(void)
2580 rb->lcd_clear_display(); 2580 rb->lcd_clear_display();
2581 2581
2582 /* draw "TIME'S UP" text */ 2582 /* draw "TIME'S UP" text */
2583 rb->lcd_bitmap(times_up, 0, xpos, 112, 50, true); 2583 rb->lcd_bitmap(times_up, 0, xpos, 112, 50);
2584 2584
2585 /* invert lcd */ 2585 /* invert lcd */
2586 rb->lcd_set_drawmode(DRMODE_COMPLEMENT); 2586 rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 57cbad213d..d6774fc968 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -71,9 +71,9 @@ static unsigned char cursor_pic[32] = {
71/* draw a spot at the coordinates (x,y), range of p is 0-19 */ 71/* draw a spot at the coordinates (x,y), range of p is 0-19 */
72static void draw_spot(int p) { 72static void draw_spot(int p) {
73 ptr = spot_pic[spots[p]]; 73 ptr = spot_pic[spots[p]];
74 rb->lcd_bitmap (ptr, (p%5)*16+1, (p/5)*16+1, 14, 8, true); 74 rb->lcd_bitmap (ptr, (p%5)*16+1, (p/5)*16+1, 14, 8);
75 ptr += 14; 75 ptr += 14;
76 rb->lcd_bitmap (ptr, (p%5)*16+1, (p/5)*16+9, 14, 6, true); 76 rb->lcd_bitmap (ptr, (p%5)*16+1, (p/5)*16+9, 14, 6);
77} 77}
78 78
79/* draw the cursor at the current cursor position */ 79/* draw the cursor at the current cursor position */
@@ -81,10 +81,12 @@ static void draw_cursor(void) {
81 int i,j; 81 int i,j;
82 i = (cursor_pos%5)*16; 82 i = (cursor_pos%5)*16;
83 j = (cursor_pos/5)*16; 83 j = (cursor_pos/5)*16;
84 rb->lcd_set_drawmode(DRMODE_FG);
84 ptr = cursor_pic; 85 ptr = cursor_pic;
85 rb->lcd_bitmap (ptr, i, j, 16, 8, false); 86 rb->lcd_bitmap (ptr, i, j, 16, 8);
86 ptr += 16; 87 ptr += 16;
87 rb->lcd_bitmap (ptr, i, j+8, 16, 8, false); 88 rb->lcd_bitmap (ptr, i, j+8, 16, 8);
89 rb->lcd_set_drawmode(DRMODE_SOLID);
88} 90}
89 91
90/* clear the cursor where it is */ 92/* clear the cursor where it is */
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 7763fb9737..7807982ebc 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -229,7 +229,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) {
229 while (1) { 229 while (1) {
230#ifdef HAVE_LCD_BITMAP 230#ifdef HAVE_LCD_BITMAP
231 rb->lcd_clear_display(); 231 rb->lcd_clear_display();
232 rb->lcd_bitmap(LOGO, x, y, LOGO_WIDTH, LOGO_HEIGHT, false); 232 rb->lcd_bitmap(LOGO, x, y, LOGO_WIDTH, LOGO_HEIGHT);
233#ifdef REMOTE_LOGO 233#ifdef REMOTE_LOGO
234 rb->remote_clear_display(); 234 rb->remote_clear_display();
235 rb->remote_bitmap(REMOTE_LOGO, 235 rb->remote_bitmap(REMOTE_LOGO,
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index d7e19e9423..18b57c42f2 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -379,7 +379,9 @@ int minesweeper(void)
379 if(minefield[i][j].mine){ 379 if(minefield[i][j].mine){
380 rb->lcd_putsxy(j*8+1,i*8+1,"b"); 380 rb->lcd_putsxy(j*8+1,i*8+1,"b");
381 } else if(minefield[i][j].neighbors){ 381 } else if(minefield[i][j].neighbors){
382 rb->lcd_bitmap(num[minefield[i][j].neighbors],j*8,i*8,8,8,false); 382 rb->lcd_set_drawmode(DRMODE_FG);
383 rb->lcd_bitmap(num[minefield[i][j].neighbors],j*8,i*8,8,8);
384 rb->lcd_set_drawmode(DRMODE_SOLID);
383 } 385 }
384 } else if(minefield[i][j].flag) { 386 } else if(minefield[i][j].flag) {
385 rb->lcd_drawline(j*8+2,i*8+2,j*8+5,i*8+5); 387 rb->lcd_drawline(j*8+2,i*8+2,j*8+5,i*8+5);
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 83f92b241b..e222995e01 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -148,7 +148,7 @@ static unsigned char picture[20][32] = {
148static void draw_spot(int p, int x, int y) 148static void draw_spot(int p, int x, int y)
149{ 149{
150 if (pic || p==20) { 150 if (pic || p==20) {
151 rb->lcd_bitmap (picture[p-1], x, y, 16, 16, true); 151 rb->lcd_bitmap (picture[p-1], x, y, 16, 16);
152 } else { 152 } else {
153 rb->lcd_drawrect(x, y, 16, 16); 153 rb->lcd_drawrect(x, y, 16, 16);
154 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); 154 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index bd9792a23d..fdc317b7ef 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -619,11 +619,13 @@ void draw_apple( void )
619#if LCD_WIDTH >= 160 && LCD_HEIGHT >= 128 619#if LCD_WIDTH >= 160 && LCD_HEIGHT >= 128
620 char pscore[5], counter[4]; 620 char pscore[5], counter[4];
621 621
622 rb->lcd_bitmap(snakebmp,0,0,BMPWIDTH_snakebmp,BMPHEIGHT_snakebmp,false); 622 rb->lcd_set_drawmode(DRMODE_FG);
623 rb->lcd_bitmap(snakebmp,0,0,BMPWIDTH_snakebmp,BMPHEIGHT_snakebmp);
623 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); 624 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
624 rb->lcd_fillrect(0,0,BMPWIDTH_snakeupbmp,BMPHEIGHT_snakeupbmp); 625 rb->lcd_fillrect(0,0,BMPWIDTH_snakeupbmp,BMPHEIGHT_snakeupbmp);
626 rb->lcd_set_drawmode(DRMODE_FG);
627 rb->lcd_bitmap(snakeupbmp,0,0,BMPWIDTH_snakeupbmp,BMPHEIGHT_snakeupbmp);
625 rb->lcd_set_drawmode(DRMODE_SOLID); 628 rb->lcd_set_drawmode(DRMODE_SOLID);
626 rb->lcd_bitmap(snakeupbmp,0,0,BMPWIDTH_snakeupbmp,BMPHEIGHT_snakeupbmp,false);
627 629
628 rb->snprintf(counter,sizeof(counter),"%d",applecount); 630 rb->snprintf(counter,sizeof(counter),"%d",applecount);
629 rb->lcd_getstringsize(counter,&strwdt,&strhgt); 631 rb->lcd_getstringsize(counter,&strwdt,&strhgt);
@@ -1295,8 +1297,10 @@ void game_init(void)
1295 1297
1296#if LCD_WIDTH >= 160 && LCD_HEIGHT >= 128 1298#if LCD_WIDTH >= 160 && LCD_HEIGHT >= 128
1297 1299
1298 rb->lcd_bitmap(snakebmp,0,0,BMPWIDTH_snakebmp,BMPWIDTH_snakebmp,false); 1300 rb->lcd_set_drawmode(DRMODE_FG);
1299 1301 rb->lcd_bitmap(snakebmp,0,0,BMPWIDTH_snakebmp,BMPWIDTH_snakebmp);
1302 rb->lcd_set_drawmode(DRMODE_SOLID);
1303
1300 rb->snprintf(plevel,sizeof(plevel),"%d",level); 1304 rb->snprintf(plevel,sizeof(plevel),"%d",level);
1301 rb->lcd_getstringsize(plevel,&strwdt,&strhgt); 1305 rb->lcd_getstringsize(plevel,&strwdt,&strhgt);
1302 rb->lcd_putsxy(42-strwdt/2,25, plevel); 1306 rb->lcd_putsxy(42-strwdt/2,25, plevel);
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index dd97abc4fb..36181e6eae 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -115,7 +115,7 @@ static void snow_move(void)
115 if (particle_exists(i)) 115 if (particle_exists(i))
116#ifdef HAVE_LCD_BITMAP 116#ifdef HAVE_LCD_BITMAP
117 rb->lcd_bitmap(flake,particles[i][0],particles[i][1], 117 rb->lcd_bitmap(flake,particles[i][0],particles[i][1],
118 FLAKE_WIDTH,FLAKE_WIDTH,true); 118 FLAKE_WIDTH,FLAKE_WIDTH);
119#else 119#else
120 pgfx_drawpixel(particles[i][0],particles[i][1]); 120 pgfx_drawpixel(particles[i][0],particles[i][1]);
121#endif 121#endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 9f2fbfa4f2..fca36aad82 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -900,8 +900,8 @@ int solitaire(void){
900 rb->lcd_set_drawmode(DRMODE_SOLID); 900 rb->lcd_set_drawmode(DRMODE_SOLID);
901 /* known card */ 901 /* known card */
902 if(deck[c].known){ 902 if(deck[c].known){
903 rb->lcd_bitmap(numbers[deck[c].num], i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1, j, 8, 8, true); 903 rb->lcd_bitmap(numbers[deck[c].num], i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1, j, 8, 8);
904 rb->lcd_bitmap(colors[deck[c].color], i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+7, j, 8, 8, true); 904 rb->lcd_bitmap(colors[deck[c].color], i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+7, j, 8, 8);
905 } 905 }
906 /* draw top line of the card */ 906 /* draw top line of the card */
907 rb->lcd_drawline(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1,j,i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+CARD_WIDTH-1,j); 907 rb->lcd_drawline(i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+1,j,i*(LCD_WIDTH - CARD_WIDTH)/COL_NUM+CARD_WIDTH-1,j);
@@ -944,9 +944,9 @@ int solitaire(void){
944 } 944 }
945 } 945 }
946 if(c != NOT_A_CARD) { 946 if(c != NOT_A_CARD) {
947 rb->lcd_bitmap(numbers[deck[c].num], LCD_WIDTH2 - CARD_WIDTH+1, i*CARD_HEIGHT, 8, 8, true); 947 rb->lcd_bitmap(numbers[deck[c].num], LCD_WIDTH2 - CARD_WIDTH+1, i*CARD_HEIGHT, 8, 8);
948 } 948 }
949 rb->lcd_bitmap(colors[i], LCD_WIDTH2 - CARD_WIDTH+7, i*CARD_HEIGHT, 8, 8, true); 949 rb->lcd_bitmap(colors[i], LCD_WIDTH2 - CARD_WIDTH+7, i*CARD_HEIGHT, 8, 8);
950 /* draw a selected card */ 950 /* draw a selected card */
951 if(c != NOT_A_CARD) { 951 if(c != NOT_A_CARD) {
952 if(sel_card == c){ 952 if(sel_card == c){
@@ -976,8 +976,8 @@ int solitaire(void){
976 rb->lcd_drawline(LCD_WIDTH2,LCD_HEIGHT-CARD_HEIGHT,LCD_WIDTH2,LCD_HEIGHT-2); 976 rb->lcd_drawline(LCD_WIDTH2,LCD_HEIGHT-CARD_HEIGHT,LCD_WIDTH2,LCD_HEIGHT-2);
977#endif 977#endif
978 if(cur_rem != NOT_A_CARD){ 978 if(cur_rem != NOT_A_CARD){
979 rb->lcd_bitmap(numbers[deck[cur_rem].num], LCD_WIDTH2 - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT, 8, 8, true); 979 rb->lcd_bitmap(numbers[deck[cur_rem].num], LCD_WIDTH2 - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT, 8, 8);
980 rb->lcd_bitmap(colors[deck[cur_rem].color], LCD_WIDTH2 - CARD_WIDTH+7, LCD_HEIGHT-CARD_HEIGHT, 8, 8, true); 980 rb->lcd_bitmap(colors[deck[cur_rem].color], LCD_WIDTH2 - CARD_WIDTH+7, LCD_HEIGHT-CARD_HEIGHT, 8, 8);
981 /* draw a selected card */ 981 /* draw a selected card */
982 if(sel_card == cur_rem){ 982 if(sel_card == cur_rem){
983 rb->lcd_drawrect(LCD_WIDTH2 - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT,CARD_WIDTH-1, CARD_HEIGHT-1); 983 rb->lcd_drawrect(LCD_WIDTH2 - CARD_WIDTH+1, LCD_HEIGHT-CARD_HEIGHT,CARD_WIDTH-1, CARD_HEIGHT-1);
diff --git a/apps/plugins/splitedit.c b/apps/plugins/splitedit.c
index 20a9922a29..e6d8551d63 100644
--- a/apps/plugins/splitedit.c
+++ b/apps/plugins/splitedit.c
@@ -262,18 +262,18 @@ static void update_icons(void)
262 /* The CUT icon */ 262 /* The CUT icon */
263 rb->lcd_bitmap(CUT_BMP, 263 rb->lcd_bitmap(CUT_BMP,
264 LCD_WIDTH / 3 / 2 - BMPWIDTH / 2, LCD_HEIGHT - BMPHEIGHT, 264 LCD_WIDTH / 3 / 2 - BMPWIDTH / 2, LCD_HEIGHT - BMPHEIGHT,
265 BMPWIDTH, BMPHEIGHT, true); 265 BMPWIDTH, BMPHEIGHT);
266 266
267 /* The loop mode icon */ 267 /* The loop mode icon */
268 rb->lcd_bitmap(LOOP_BMP[splitedit_get_loop_mode()], 268 rb->lcd_bitmap(LOOP_BMP[splitedit_get_loop_mode()],
269 LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, 269 LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT,
270 BMPWIDTH, BMPHEIGHT, true); 270 BMPWIDTH, BMPHEIGHT);
271 271
272#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 272#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
273 /* The scale icon */ 273 /* The scale icon */
274 rb->lcd_bitmap(SCALE_BMP[rb->peak_meter_get_use_dbfs()], 274 rb->lcd_bitmap(SCALE_BMP[rb->peak_meter_get_use_dbfs()],
275 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, 275 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT,
276 BMPWIDTH, BMPHEIGHT, true); 276 BMPWIDTH, BMPHEIGHT);
277#else 277#else
278 { 278 {
279 static int idx; 279 static int idx;
@@ -281,7 +281,7 @@ static void update_icons(void)
281 idx = 1 - idx; 281 idx = 1 - idx;
282 rb->lcd_bitmap(SCALE_BMP[idx], 282 rb->lcd_bitmap(SCALE_BMP[idx],
283 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, 283 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT,
284 BMPWIDTH, BMPHEIGHT, true); 284 BMPWIDTH, BMPHEIGHT);
285 } 285 }
286#endif 286#endif
287 287
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index fbaf8aeed6..acf34275be 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -485,10 +485,10 @@ static void star_display_board_info(void)
485 485
486 if (control == STAR_CONTROL_BALL) 486 if (control == STAR_CONTROL_BALL)
487 rb->lcd_bitmap (ball_bmp, 103, label_offset_y + 1, STAR_TILE_SIZE, 487 rb->lcd_bitmap (ball_bmp, 103, label_offset_y + 1, STAR_TILE_SIZE,
488 STAR_TILE_SIZE, true); 488 STAR_TILE_SIZE);
489 else 489 else
490 rb->lcd_bitmap (block_bmp, 103, label_offset_y + 1, STAR_TILE_SIZE, 490 rb->lcd_bitmap (block_bmp, 103, label_offset_y + 1, STAR_TILE_SIZE,
491 STAR_TILE_SIZE, true); 491 STAR_TILE_SIZE);
492 492
493 rb->lcd_update_rect(0, label_offset_y, LCD_WIDTH, char_height); 493 rb->lcd_update_rect(0, label_offset_y, LCD_WIDTH, char_height);
494} 494}
@@ -522,14 +522,14 @@ static int star_load_level(int current_level)
522 rb->lcd_bitmap (wall_bmp, 522 rb->lcd_bitmap (wall_bmp,
523 STAR_OFFSET_X + x * STAR_TILE_SIZE, 523 STAR_OFFSET_X + x * STAR_TILE_SIZE,
524 STAR_OFFSET_Y + y * STAR_TILE_SIZE, 524 STAR_OFFSET_Y + y * STAR_TILE_SIZE,
525 STAR_TILE_SIZE, STAR_TILE_SIZE, false); 525 STAR_TILE_SIZE, STAR_TILE_SIZE);
526 break; 526 break;
527 527
528 case STAR_STAR: 528 case STAR_STAR:
529 rb->lcd_bitmap (star_bmp, 529 rb->lcd_bitmap (star_bmp,
530 STAR_OFFSET_X + x * STAR_TILE_SIZE, 530 STAR_OFFSET_X + x * STAR_TILE_SIZE,
531 STAR_OFFSET_Y + y * STAR_TILE_SIZE, 531 STAR_OFFSET_Y + y * STAR_TILE_SIZE,
532 STAR_TILE_SIZE, STAR_TILE_SIZE, false); 532 STAR_TILE_SIZE, STAR_TILE_SIZE);
533 star_count++; 533 star_count++;
534 break; 534 break;
535 535
@@ -539,7 +539,7 @@ static int star_load_level(int current_level)
539 rb->lcd_bitmap (ball_bmp, 539 rb->lcd_bitmap (ball_bmp,
540 STAR_OFFSET_X + x * STAR_TILE_SIZE, 540 STAR_OFFSET_X + x * STAR_TILE_SIZE,
541 STAR_OFFSET_Y + y * STAR_TILE_SIZE, 541 STAR_OFFSET_Y + y * STAR_TILE_SIZE,
542 STAR_TILE_SIZE, STAR_TILE_SIZE, false); 542 STAR_TILE_SIZE, STAR_TILE_SIZE);
543 break; 543 break;
544 544
545 545
@@ -549,7 +549,7 @@ static int star_load_level(int current_level)
549 rb->lcd_bitmap (block_bmp, 549 rb->lcd_bitmap (block_bmp,
550 STAR_OFFSET_X + x * STAR_TILE_SIZE, 550 STAR_OFFSET_X + x * STAR_TILE_SIZE,
551 STAR_OFFSET_Y + y * STAR_TILE_SIZE, 551 STAR_OFFSET_Y + y * STAR_TILE_SIZE,
552 STAR_TILE_SIZE, STAR_TILE_SIZE, false); 552 STAR_TILE_SIZE, STAR_TILE_SIZE);
553 break; 553 break;
554 } 554 }
555 ptr_tab++; 555 ptr_tab++;
@@ -668,7 +668,7 @@ static int star_run_game(void)
668 ball_bmp, 668 ball_bmp,
669 STAR_OFFSET_X + ball_x * STAR_TILE_SIZE + move_x * i, 669 STAR_OFFSET_X + ball_x * STAR_TILE_SIZE + move_x * i,
670 STAR_OFFSET_Y + ball_y * STAR_TILE_SIZE + move_y * i, 670 STAR_OFFSET_Y + ball_y * STAR_TILE_SIZE + move_y * i,
671 STAR_TILE_SIZE, STAR_TILE_SIZE, true); 671 STAR_TILE_SIZE, STAR_TILE_SIZE);
672 672
673 rb->lcd_update_rect( 673 rb->lcd_update_rect(
674 STAR_OFFSET_X + ball_x * STAR_TILE_SIZE + move_x * i, 674 STAR_OFFSET_X + ball_x * STAR_TILE_SIZE + move_x * i,
@@ -700,7 +700,7 @@ static int star_run_game(void)
700 block_bmp, 700 block_bmp,
701 STAR_OFFSET_X + block_x * STAR_TILE_SIZE + move_x * i, 701 STAR_OFFSET_X + block_x * STAR_TILE_SIZE + move_x * i,
702 STAR_OFFSET_Y + block_y * STAR_TILE_SIZE + move_y * i, 702 STAR_OFFSET_Y + block_y * STAR_TILE_SIZE + move_y * i,
703 STAR_TILE_SIZE, STAR_TILE_SIZE, true); 703 STAR_TILE_SIZE, STAR_TILE_SIZE);
704 704
705 rb->lcd_update_rect( 705 rb->lcd_update_rect(
706 STAR_OFFSET_X + block_x * STAR_TILE_SIZE + move_x * i, 706 STAR_OFFSET_X + block_x * STAR_TILE_SIZE + move_x * i,
@@ -766,7 +766,7 @@ static int star_menu(void)
766 766
767 move_y = 0; 767 move_y = 0;
768 rb->lcd_bitmap(arrow_bmp[anim_arrow[(anim_state & 0x38) >> 3]], 768 rb->lcd_bitmap(arrow_bmp[anim_arrow[(anim_state & 0x38) >> 3]],
769 2, menu_offset_y + menu_y * char_height, 7, 8, true); 769 2, menu_offset_y + menu_y * char_height, 7, 8);
770 rb->lcd_update_rect (2, menu_offset_y + menu_y * 8, 8, 8); 770 rb->lcd_update_rect (2, menu_offset_y + menu_y * 8, 8, 8);
771 rb->sleep(STAR_SLEEP); 771 rb->sleep(STAR_SLEEP);
772 anim_state++; 772 anim_state++;
@@ -840,14 +840,14 @@ static int star_menu(void)
840 { 840 {
841 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); 841 rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
842 rb->lcd_fillrect (2, 30, 7, 4 * 8); 842 rb->lcd_fillrect (2, 30, 7, 4 * 8);
843 rb->lcd_set_drawmode(DRMODE_SOLID); 843 rb->lcd_set_drawmode(DRMODE_FG);
844 rb->lcd_bitmap(arrow_bmp[anim_arrow[(anim_state & 0x38) >> 3]], 844 rb->lcd_bitmap(arrow_bmp[anim_arrow[(anim_state & 0x38) >> 3]],
845 2, menu_offset_y + menu_y * 8 + move_y * i, 7, 8, 845 2, menu_offset_y + menu_y * 8 + move_y * i, 7, 8);
846 false);
847 rb->lcd_update_rect(2, 30, 8, 4 * 8); 846 rb->lcd_update_rect(2, 30, 8, 4 * 8);
848 anim_state++; 847 anim_state++;
849 rb->sleep(STAR_SLEEP); 848 rb->sleep(STAR_SLEEP);
850 } 849 }
850 rb->lcd_set_drawmode(DRMODE_SOLID);
851 menu_y += move_y; 851 menu_y += move_y;
852 } 852 }
853} 853}
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 1a6f723292..d54f86de06 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -278,47 +278,55 @@ void change_settings(void)
278} 278}
279 279
280void draw_analog_minimeters(void) { 280void draw_analog_minimeters(void) {
281 rb->lcd_bitmap(sound_speaker, 0, 12, 4, 8, true); 281 rb->lcd_bitmap(sound_speaker, 0, 12, 4, 8);
282 rb->lcd_set_drawmode(DRMODE_FG);
282 if(5<left_needle_top_x) 283 if(5<left_needle_top_x)
283 rb->lcd_bitmap(sound_low_level, 5, 12, 2, 8, false); 284 rb->lcd_bitmap(sound_low_level, 5, 12, 2, 8);
284 if(12<left_needle_top_x) 285 if(12<left_needle_top_x)
285 rb->lcd_bitmap(sound_med_level, 7, 12, 2, 8, false); 286 rb->lcd_bitmap(sound_med_level, 7, 12, 2, 8);
286 if(24<left_needle_top_x) 287 if(24<left_needle_top_x)
287 rb->lcd_bitmap(sound_high_level, 9, 12, 2, 8, false); 288 rb->lcd_bitmap(sound_high_level, 9, 12, 2, 8);
288 if(40<left_needle_top_x) 289 if(40<left_needle_top_x)
289 rb->lcd_bitmap(sound_max_level, 12, 12, 3, 8, false); 290 rb->lcd_bitmap(sound_max_level, 12, 12, 3, 8);
290 291
291 rb->lcd_bitmap(sound_speaker, 54, 12, 4, 8, true); 292 rb->lcd_set_drawmode(DRMODE_SOLID);
293 rb->lcd_bitmap(sound_speaker, 54, 12, 4, 8);
294 rb->lcd_set_drawmode(DRMODE_FG);
292 if(5<(right_needle_top_x-56)) 295 if(5<(right_needle_top_x-56))
293 rb->lcd_bitmap(sound_low_level, 59, 12, 2, 8, false); 296 rb->lcd_bitmap(sound_low_level, 59, 12, 2, 8);
294 if(12<(right_needle_top_x-56)) 297 if(12<(right_needle_top_x-56))
295 rb->lcd_bitmap(sound_med_level, 61, 12, 2, 8, false); 298 rb->lcd_bitmap(sound_med_level, 61, 12, 2, 8);
296 if(24<(right_needle_top_x-56)) 299 if(24<(right_needle_top_x-56))
297 rb->lcd_bitmap(sound_high_level, 63, 12, 2, 8, false); 300 rb->lcd_bitmap(sound_high_level, 63, 12, 2, 8);
298 if(40<(right_needle_top_x-56)) 301 if(40<(right_needle_top_x-56))
299 rb->lcd_bitmap(sound_max_level, 66, 12, 3, 8, false); 302 rb->lcd_bitmap(sound_max_level, 66, 12, 3, 8);
303 rb->lcd_set_drawmode(DRMODE_SOLID);
300} 304}
301 305
302void draw_digital_minimeters(void) { 306void draw_digital_minimeters(void) {
303 rb->lcd_bitmap(sound_speaker, 34, 24, 4, 8, true); 307 rb->lcd_bitmap(sound_speaker, 34, 24, 4, 8);
308 rb->lcd_set_drawmode(DRMODE_FG);
304 if(1<num_left_leds) 309 if(1<num_left_leds)
305 rb->lcd_bitmap(sound_low_level, 39, 24, 2, 8, false); 310 rb->lcd_bitmap(sound_low_level, 39, 24, 2, 8);
306 if(2<num_left_leds) 311 if(2<num_left_leds)
307 rb->lcd_bitmap(sound_med_level, 41, 24, 2, 8, false); 312 rb->lcd_bitmap(sound_med_level, 41, 24, 2, 8);
308 if(5<num_left_leds) 313 if(5<num_left_leds)
309 rb->lcd_bitmap(sound_high_level, 43, 24, 2, 8, false); 314 rb->lcd_bitmap(sound_high_level, 43, 24, 2, 8);
310 if(8<num_left_leds) 315 if(8<num_left_leds)
311 rb->lcd_bitmap(sound_max_level, 46, 24, 3, 8, false); 316 rb->lcd_bitmap(sound_max_level, 46, 24, 3, 8);
312 317
313 rb->lcd_bitmap(sound_speaker, 34, 40, 4, 8, true); 318 rb->lcd_set_drawmode(DRMODE_SOLID);
319 rb->lcd_bitmap(sound_speaker, 34, 40, 4, 8);
320 rb->lcd_set_drawmode(DRMODE_FG);
314 if(1<(num_right_leds)) 321 if(1<(num_right_leds))
315 rb->lcd_bitmap(sound_low_level, 39, 40, 2, 8, false); 322 rb->lcd_bitmap(sound_low_level, 39, 40, 2, 8);
316 if(2<(num_right_leds)) 323 if(2<(num_right_leds))
317 rb->lcd_bitmap(sound_med_level, 41, 40, 2, 8, false); 324 rb->lcd_bitmap(sound_med_level, 41, 40, 2, 8);
318 if(5<(num_right_leds)) 325 if(5<(num_right_leds))
319 rb->lcd_bitmap(sound_high_level, 43, 40, 2, 8, false); 326 rb->lcd_bitmap(sound_high_level, 43, 40, 2, 8);
320 if(8<(num_right_leds)) 327 if(8<(num_right_leds))
321 rb->lcd_bitmap(sound_max_level, 46, 40, 3, 8, false); 328 rb->lcd_bitmap(sound_max_level, 46, 40, 3, 8);
329 rb->lcd_set_drawmode(DRMODE_SOLID);
322} 330}
323 331
324void analog_meter(void) { 332void analog_meter(void) {
@@ -350,8 +358,10 @@ void analog_meter(void) {
350 draw_analog_minimeters(); 358 draw_analog_minimeters();
351 359
352 /* Needle covers */ 360 /* Needle covers */
353 rb->lcd_bitmap(needle_cover, 22, 59, 13, 5, false); 361 rb->lcd_set_drawmode(DRMODE_FG);
354 rb->lcd_bitmap(needle_cover, 78, 59, 13, 5, false); 362 rb->lcd_bitmap(needle_cover, 22, 59, 13, 5);
363 rb->lcd_bitmap(needle_cover, 78, 59, 13, 5);
364 rb->lcd_set_drawmode(DRMODE_SOLID);
355 365
356 /* Show Left/Right */ 366 /* Show Left/Right */
357 rb->lcd_putsxy(16, 12, "Left"); 367 rb->lcd_putsxy(16, 12, "Left");
@@ -383,12 +393,15 @@ void digital_meter(void) {
383 last_num_left_leds = num_left_leds; 393 last_num_left_leds = num_left_leds;
384 last_num_right_leds = num_right_leds; 394 last_num_right_leds = num_right_leds;
385 395
396 rb->lcd_set_drawmode(DRMODE_FG);
386 /* LEDS */ 397 /* LEDS */
387 for(i=0; i<num_left_leds; i++) 398 for(i=0; i<num_left_leds; i++)
388 rb->lcd_bitmap(led, i*9+2+i, 14, 9, 5, false); 399 rb->lcd_bitmap(led, i*9+2+i, 14, 9, 5);
389 400
390 for(i=0; i<num_right_leds; i++) 401 for(i=0; i<num_right_leds; i++)
391 rb->lcd_bitmap(led, i*9+2+i, 52, 9, 5, false); 402 rb->lcd_bitmap(led, i*9+2+i, 52, 9, 5);
403
404 rb->lcd_set_drawmode(DRMODE_SOLID);
392 405
393 if(settings.digital_minimeters) 406 if(settings.digital_minimeters)
394 draw_digital_minimeters(); 407 draw_digital_minimeters();