diff options
author | Andrew Mahone <andrew.mahone@gmail.com> | 2008-12-09 23:07:59 +0000 |
---|---|---|
committer | Andrew Mahone <andrew.mahone@gmail.com> | 2008-12-09 23:07:59 +0000 |
commit | 781421afa2085b841b52f876d80f484f565c0755 (patch) | |
tree | e952fe4857a1ee3edb91642bfbb96c93947748b4 /apps/gui | |
parent | a2c71fde1bdb1a62cf66ae0e3b9a864824930dd0 (diff) | |
download | rockbox-781421afa2085b841b52f876d80f484f565c0755.tar.gz rockbox-781421afa2085b841b52f876d80f484f565c0755.zip |
resize-on-load for bitmap files on 2bpp and color targets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19374 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
-rw-r--r-- | apps/gui/gwps.c | 3 | ||||
-rw-r--r-- | apps/gui/gwps.h | 18 | ||||
-rw-r--r-- | apps/gui/wps_parser.c | 74 |
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 | } |