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.zip rockbox-781421afa2085b841b52f876d80f484f565c0755.tar.gz rockbox-781421afa2085b841b52f876d80f484f565c0755.tar.bz2 rockbox-781421afa2085b841b52f876d80f484f565c0755.tar.xz | |
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 9b6d6b5..a9ad578 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c @@ -813,6 +813,9 @@ void gui_sync_wps_init(void) FOR_NB_SCREENS(i) { wps_data_init(&wps_datas[i]); +#ifdef HAVE_ALBUMART + wps_datas[i].wps_uses_albumart = 0; +#endif #ifdef HAVE_REMOTE_LCD wps_datas[i].remote_wps = (i != 0); #endif diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h index 4cffb0d..6311bc0 100644 --- a/apps/gui/gwps.h +++ b/apps/gui/gwps.h @@ -47,13 +47,11 @@ #define WPS_ALBUMART_CHECK 1 /* WPS contains AA conditional tag */ #define WPS_ALBUMART_LOAD 2 /* WPS contains AA tag */ -#define WPS_ALBUMART_ALIGN_RIGHT WPS_ALIGN_RIGHT /* x align: right */ -#define WPS_ALBUMART_ALIGN_CENTER WPS_ALIGN_CENTER /* x/y align: center */ -#define WPS_ALBUMART_ALIGN_LEFT WPS_ALIGN_LEFT /* x align: left */ -#define WPS_ALBUMART_ALIGN_TOP WPS_ALIGN_RIGHT /* y align: top */ -#define WPS_ALBUMART_ALIGN_BOTTOM WPS_ALIGN_LEFT /* y align: bottom */ -#define WPS_ALBUMART_INCREASE 8 /* increase if smaller */ -#define WPS_ALBUMART_DECREASE 16 /* decrease if larger */ +#define WPS_ALBUMART_ALIGN_RIGHT 1 /* x align: right */ +#define WPS_ALBUMART_ALIGN_CENTER 2 /* x/y align: center */ +#define WPS_ALBUMART_ALIGN_LEFT 4 /* x align: left */ +#define WPS_ALBUMART_ALIGN_TOP 1 /* y align: top */ +#define WPS_ALBUMART_ALIGN_BOTTOM 4 /* y align: bottom */ #endif /* HAVE_ALBUMART */ @@ -382,10 +380,8 @@ struct wps_data unsigned char wps_uses_albumart; /* WPS_ALBUMART_NONE, _CHECK, _LOAD */ short albumart_x; short albumart_y; - unsigned short albumart_xalign; /* WPS_ALBUMART_ALIGN_LEFT, _CENTER, _RIGHT, - + .._INCREASE, + .._DECREASE */ - unsigned short albumart_yalign; /* WPS_ALBUMART_ALIGN_TOP, _CENTER, _BOTTOM, - + .._INCREASE, + .._DECREASE */ + unsigned char albumart_xalign; /* WPS_ALBUMART_ALIGN_LEFT, _CENTER, _RIGHT */ + unsigned char albumart_yalign; /* WPS_ALBUMART_ALIGN_TOP, _CENTER, _BOTTOM */ short albumart_max_width; short albumart_max_height; diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c index 42853e8..307d0bb 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, { const char *_pos, *newline; bool parsing; - const short xalign_mask = WPS_ALBUMART_ALIGN_LEFT | - WPS_ALBUMART_ALIGN_CENTER | - WPS_ALBUMART_ALIGN_RIGHT; - const short yalign_mask = WPS_ALBUMART_ALIGN_TOP | - WPS_ALBUMART_ALIGN_CENTER | - WPS_ALBUMART_ALIGN_BOTTOM; - (void)token; /* silence warning */ /* reset albumart info in wps */ - wps_data->wps_uses_albumart = WPS_ALBUMART_NONE; wps_data->albumart_max_width = -1; wps_data->albumart_max_height = -1; wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_CENTER; /* default */ wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_CENTER; /* default */ - /* format: %Cl|x|y|[[l|c|r][d|i|s]mwidth]|[[t|c|b][d|i|s]mheight]| */ + /* format: %Cl|x|y|[[l|c|r]mwidth]|[[t|c|b]mheight]| */ newline = strchr(wps_bufptr, '\n'); @@ -1020,35 +1012,24 @@ static int parse_albumart_load(const char *wps_bufptr, case 'l': case 'L': case '+': - wps_data->albumart_xalign = - (wps_data->albumart_xalign & xalign_mask) | - WPS_ALBUMART_ALIGN_LEFT; + wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_LEFT; break; case 'c': case 'C': - wps_data->albumart_xalign = - (wps_data->albumart_xalign & xalign_mask) | - WPS_ALBUMART_ALIGN_CENTER; + wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_CENTER; break; case 'r': case 'R': case '-': - wps_data->albumart_xalign = - (wps_data->albumart_xalign & xalign_mask) | - WPS_ALBUMART_ALIGN_RIGHT; + wps_data->albumart_xalign = WPS_ALBUMART_ALIGN_RIGHT; break; case 'd': case 'D': - wps_data->albumart_xalign |= WPS_ALBUMART_DECREASE; - break; case 'i': case 'I': - wps_data->albumart_xalign |= WPS_ALBUMART_INCREASE; - break; case 's': case 'S': - wps_data->albumart_xalign |= - (WPS_ALBUMART_DECREASE | WPS_ALBUMART_INCREASE); + /* simply ignored */ break; default: parsing = false; @@ -1080,35 +1061,24 @@ static int parse_albumart_load(const char *wps_bufptr, case 't': case 'T': case '-': - wps_data->albumart_yalign = - (wps_data->albumart_yalign & yalign_mask) | - WPS_ALBUMART_ALIGN_TOP; + wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_TOP; break; case 'c': case 'C': - wps_data->albumart_yalign = - (wps_data->albumart_yalign & yalign_mask) | - WPS_ALBUMART_ALIGN_CENTER; + wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_CENTER; break; case 'b': case 'B': case '+': - wps_data->albumart_yalign = - (wps_data->albumart_yalign & yalign_mask) | - WPS_ALBUMART_ALIGN_BOTTOM; + wps_data->albumart_yalign = WPS_ALBUMART_ALIGN_BOTTOM; break; case 'd': case 'D': - wps_data->albumart_yalign |= WPS_ALBUMART_DECREASE; - break; case 'i': case 'I': - wps_data->albumart_yalign |= WPS_ALBUMART_INCREASE; - break; case 's': case 'S': - wps_data->albumart_yalign |= - (WPS_ALBUMART_DECREASE | WPS_ALBUMART_INCREASE); + /* simply ignored */ break; default: parsing = false; @@ -1524,9 +1494,6 @@ static void wps_reset(struct wps_data *data) bool rwps = data->remote_wps; /* remember whether the data is for a RWPS */ #endif memset(data, 0, sizeof(*data)); -#ifdef HAVE_ALBUMART - data->wps_uses_albumart = WPS_ALBUMART_NONE; -#endif wps_data_init(data); #ifdef HAVE_REMOTE_LCD data->remote_wps = rwps; @@ -1617,6 +1584,14 @@ bool wps_data_load(struct wps_data *wps_data, const char *buf, bool isfile) { +#ifdef HAVE_ALBUMART + struct mp3entry *curtrack; + long offset; + int status; + int wps_uses_albumart = wps_data->wps_uses_albumart; + int albumart_max_height = wps_data->albumart_max_height; + int albumart_max_width = wps_data->albumart_max_width; +#endif if (!wps_data || !buf) return false; @@ -1732,6 +1707,21 @@ bool wps_data_load(struct wps_data *wps_data, return false; } #endif +#ifdef HAVE_ALBUMART + status = audio_status(); + if (((!wps_uses_albumart && wps_data->wps_uses_albumart) || + (wps_data->wps_uses_albumart && + (albumart_max_height != wps_data->albumart_max_height || + albumart_max_width != wps_data->albumart_max_width))) && + status & AUDIO_STATUS_PLAY) + { + curtrack = audio_current_track(); + offset = curtrack->offset; + audio_stop(); + if (!(status & AUDIO_STATUS_PAUSE)) + audio_play(offset); + } +#endif return true; } } |