summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/gwps.c3
-rw-r--r--apps/gui/gwps.h18
-rw-r--r--apps/gui/wps_parser.c74
3 files changed, 42 insertions, 53 deletions
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index 9b6d6b5558..a9ad5788b7 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -813,6 +813,9 @@ void gui_sync_wps_init(void)
813 FOR_NB_SCREENS(i) 813 FOR_NB_SCREENS(i)
814 { 814 {
815 wps_data_init(&wps_datas[i]); 815 wps_data_init(&wps_datas[i]);
816#ifdef HAVE_ALBUMART
817 wps_datas[i].wps_uses_albumart = 0;
818#endif
816#ifdef HAVE_REMOTE_LCD 819#ifdef HAVE_REMOTE_LCD
817 wps_datas[i].remote_wps = (i != 0); 820 wps_datas[i].remote_wps = (i != 0);
818#endif 821#endif
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h
index 4cffb0de2c..6311bc058b 100644
--- a/apps/gui/gwps.h
+++ b/apps/gui/gwps.h
@@ -47,13 +47,11 @@
47#define WPS_ALBUMART_CHECK 1 /* WPS contains AA conditional tag */ 47#define WPS_ALBUMART_CHECK 1 /* WPS contains AA conditional tag */
48#define WPS_ALBUMART_LOAD 2 /* WPS contains AA tag */ 48#define WPS_ALBUMART_LOAD 2 /* WPS contains AA tag */
49 49
50#define WPS_ALBUMART_ALIGN_RIGHT WPS_ALIGN_RIGHT /* x align: right */ 50#define WPS_ALBUMART_ALIGN_RIGHT 1 /* x align: right */
51#define WPS_ALBUMART_ALIGN_CENTER WPS_ALIGN_CENTER /* x/y align: center */ 51#define WPS_ALBUMART_ALIGN_CENTER 2 /* x/y align: center */
52#define WPS_ALBUMART_ALIGN_LEFT WPS_ALIGN_LEFT /* x align: left */ 52#define WPS_ALBUMART_ALIGN_LEFT 4 /* x align: left */
53#define WPS_ALBUMART_ALIGN_TOP WPS_ALIGN_RIGHT /* y align: top */ 53#define WPS_ALBUMART_ALIGN_TOP 1 /* y align: top */
54#define WPS_ALBUMART_ALIGN_BOTTOM WPS_ALIGN_LEFT /* y align: bottom */ 54#define WPS_ALBUMART_ALIGN_BOTTOM 4 /* y align: bottom */
55#define WPS_ALBUMART_INCREASE 8 /* increase if smaller */
56#define WPS_ALBUMART_DECREASE 16 /* decrease if larger */
57 55
58#endif /* HAVE_ALBUMART */ 56#endif /* HAVE_ALBUMART */
59 57
@@ -382,10 +380,8 @@ struct wps_data
382 unsigned char wps_uses_albumart; /* WPS_ALBUMART_NONE, _CHECK, _LOAD */ 380 unsigned char wps_uses_albumart; /* WPS_ALBUMART_NONE, _CHECK, _LOAD */
383 short albumart_x; 381 short albumart_x;
384 short albumart_y; 382 short albumart_y;
385 unsigned short albumart_xalign; /* WPS_ALBUMART_ALIGN_LEFT, _CENTER, _RIGHT, 383 unsigned char albumart_xalign; /* WPS_ALBUMART_ALIGN_LEFT, _CENTER, _RIGHT */
386 + .._INCREASE, + .._DECREASE */ 384 unsigned char albumart_yalign; /* WPS_ALBUMART_ALIGN_TOP, _CENTER, _BOTTOM */
387 unsigned short albumart_yalign; /* WPS_ALBUMART_ALIGN_TOP, _CENTER, _BOTTOM,
388 + .._INCREASE, + .._DECREASE */
389 short albumart_max_width; 385 short albumart_max_width;
390 short albumart_max_height; 386 short albumart_max_height;
391 387
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c
index 42853e8fae..307d0bb784 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -969,23 +969,15 @@ static int parse_albumart_load(const char *wps_bufptr,
969{ 969{
970 const char *_pos, *newline; 970 const char *_pos, *newline;
971 bool parsing; 971 bool parsing;
972 const short xalign_mask = WPS_ALBUMART_ALIGN_LEFT |
973 WPS_ALBUMART_ALIGN_CENTER |
974 WPS_ALBUMART_ALIGN_RIGHT;
975 const short yalign_mask = WPS_ALBUMART_ALIGN_TOP |
976 WPS_ALBUMART_ALIGN_CENTER |
977 WPS_ALBUMART_ALIGN_BOTTOM;
978
979 (void)token; /* silence warning */ 972 (void)token; /* silence warning */
980 973
981 /* reset albumart info in wps */ 974 /* reset albumart info in wps */
982 wps_data->wps_uses_albumart = WPS_ALBUMART_NONE;
983 wps_data->albumart_max_width = -1; 975 wps_data->albumart_max_width = -1;
984 wps_data->albumart_max_height = -1; 976 wps_data->albumart_max_height = -1;
985 wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_CENTER; /* default */ 977 wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_CENTER; /* default */
986 wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_CENTER; /* default */ 978 wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_CENTER; /* default */
987 979
988 /* format: %Cl|x|y|[[l|c|r][d|i|s]mwidth]|[[t|c|b][d|i|s]mheight]| */ 980 /* format: %Cl|x|y|[[l|c|r]mwidth]|[[t|c|b]mheight]| */
989 981
990 newline = strchr(wps_bufptr, '\n'); 982 newline = strchr(wps_bufptr, '\n');
991 983
@@ -1020,35 +1012,24 @@ static int parse_albumart_load(const char *wps_bufptr,
1020 case 'l': 1012 case 'l':
1021 case 'L': 1013 case 'L':
1022 case '+': 1014 case '+':
1023 wps_data->albumart_xalign = 1015 wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_LEFT;
1024 (wps_data->albumart_xalign & xalign_mask) |
1025 WPS_ALBUMART_ALIGN_LEFT;
1026 break; 1016 break;
1027 case 'c': 1017 case 'c':
1028 case 'C': 1018 case 'C':
1029 wps_data->albumart_xalign = 1019 wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_CENTER;
1030 (wps_data->albumart_xalign & xalign_mask) |
1031 WPS_ALBUMART_ALIGN_CENTER;
1032 break; 1020 break;
1033 case 'r': 1021 case 'r':
1034 case 'R': 1022 case 'R':
1035 case '-': 1023 case '-':
1036 wps_data->albumart_xalign = 1024 wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_RIGHT;
1037 (wps_data->albumart_xalign & xalign_mask) |
1038 WPS_ALBUMART_ALIGN_RIGHT;
1039 break; 1025 break;
1040 case 'd': 1026 case 'd':
1041 case 'D': 1027 case 'D':
1042 wps_data->albumart_xalign |= WPS_ALBUMART_DECREASE;
1043 break;
1044 case 'i': 1028 case 'i':
1045 case 'I': 1029 case 'I':
1046 wps_data->albumart_xalign |= WPS_ALBUMART_INCREASE;
1047 break;
1048 case 's': 1030 case 's':
1049 case 'S': 1031 case 'S':
1050 wps_data->albumart_xalign |= 1032 /* simply ignored */
1051 (WPS_ALBUMART_DECREASE | WPS_ALBUMART_INCREASE);
1052 break; 1033 break;
1053 default: 1034 default:
1054 parsing = false; 1035 parsing = false;
@@ -1080,35 +1061,24 @@ static int parse_albumart_load(const char *wps_bufptr,
1080 case 't': 1061 case 't':
1081 case 'T': 1062 case 'T':
1082 case '-': 1063 case '-':
1083 wps_data->albumart_yalign = 1064 wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_TOP;
1084 (wps_data->albumart_yalign & yalign_mask) |
1085 WPS_ALBUMART_ALIGN_TOP;
1086 break; 1065 break;
1087 case 'c': 1066 case 'c':
1088 case 'C': 1067 case 'C':
1089 wps_data->albumart_yalign = 1068 wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_CENTER;
1090 (wps_data->albumart_yalign & yalign_mask) |
1091 WPS_ALBUMART_ALIGN_CENTER;
1092 break; 1069 break;
1093 case 'b': 1070 case 'b':
1094 case 'B': 1071 case 'B':
1095 case '+': 1072 case '+':
1096 wps_data->albumart_yalign = 1073 wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_BOTTOM;
1097 (wps_data->albumart_yalign & yalign_mask) |
1098 WPS_ALBUMART_ALIGN_BOTTOM;
1099 break; 1074 break;
1100 case 'd': 1075 case 'd':
1101 case 'D': 1076 case 'D':
1102 wps_data->albumart_yalign |= WPS_ALBUMART_DECREASE;
1103 break;
1104 case 'i': 1077 case 'i':
1105 case 'I': 1078 case 'I':
1106 wps_data->albumart_yalign |= WPS_ALBUMART_INCREASE;
1107 break;
1108 case 's': 1079 case 's':
1109 case 'S': 1080 case 'S':
1110 wps_data->albumart_yalign |= 1081 /* simply ignored */
1111 (WPS_ALBUMART_DECREASE | WPS_ALBUMART_INCREASE);
1112 break; 1082 break;
1113 default: 1083 default:
1114 parsing = false; 1084 parsing = false;
@@ -1524,9 +1494,6 @@ static void wps_reset(struct wps_data *data)
1524 bool rwps = data->remote_wps; /* remember whether the data is for a RWPS */ 1494 bool rwps = data->remote_wps; /* remember whether the data is for a RWPS */
1525#endif 1495#endif
1526 memset(data, 0, sizeof(*data)); 1496 memset(data, 0, sizeof(*data));
1527#ifdef HAVE_ALBUMART
1528 data->wps_uses_albumart = WPS_ALBUMART_NONE;
1529#endif
1530 wps_data_init(data); 1497 wps_data_init(data);
1531#ifdef HAVE_REMOTE_LCD 1498#ifdef HAVE_REMOTE_LCD
1532 data->remote_wps = rwps; 1499 data->remote_wps = rwps;
@@ -1617,6 +1584,14 @@ bool wps_data_load(struct wps_data *wps_data,
1617 const char *buf, 1584 const char *buf,
1618 bool isfile) 1585 bool isfile)
1619{ 1586{
1587#ifdef HAVE_ALBUMART
1588 struct mp3entry *curtrack;
1589 long offset;
1590 int status;
1591 int wps_uses_albumart = wps_data->wps_uses_albumart;
1592 int albumart_max_height = wps_data->albumart_max_height;
1593 int albumart_max_width = wps_data->albumart_max_width;
1594#endif
1620 if (!wps_data || !buf) 1595 if (!wps_data || !buf)
1621 return false; 1596 return false;
1622 1597
@@ -1732,6 +1707,21 @@ bool wps_data_load(struct wps_data *wps_data,
1732 return false; 1707 return false;
1733 } 1708 }
1734#endif 1709#endif
1710#ifdef HAVE_ALBUMART
1711 status = audio_status();
1712 if (((!wps_uses_albumart && wps_data->wps_uses_albumart) ||
1713 (wps_data->wps_uses_albumart &&
1714 (albumart_max_height != wps_data->albumart_max_height ||
1715 albumart_max_width != wps_data->albumart_max_width))) &&
1716 status & AUDIO_STATUS_PLAY)
1717 {
1718 curtrack = audio_current_track();
1719 offset = curtrack->offset;
1720 audio_stop();
1721 if (!(status & AUDIO_STATUS_PAUSE))
1722 audio_play(offset);
1723 }
1724#endif
1735 return true; 1725 return true;
1736 } 1726 }
1737} 1727}