diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-01-13 06:48:39 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-01-13 06:48:39 +0000 |
| commit | 261c56ba59235c2da2aa644fbea0b1fa492bd1c6 (patch) | |
| tree | cdf37e93496f9dc3aaf71f45537ff3d5371c074f /apps/gui | |
| parent | c8535f27d140a2030cedf695a66595aae5b95c27 (diff) | |
| download | rockbox-261c56ba59235c2da2aa644fbea0b1fa492bd1c6.zip rockbox-261c56ba59235c2da2aa644fbea0b1fa492bd1c6.tar.gz rockbox-261c56ba59235c2da2aa644fbea0b1fa492bd1c6.tar.bz2 rockbox-261c56ba59235c2da2aa644fbea0b1fa492bd1c6.tar.xz | |
FS#11867 - Add 2 new tags to allow skins to display themed peakmeters
%pL for the left channel, %pR for the right channel... usable as a value, conditional or bar (exactly the same as %pv/%bl/etc)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29043 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
| -rw-r--r-- | apps/gui/skin_engine/skin_display.c | 10 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 6 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_render.c | 6 | ||||
| -rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 18 |
4 files changed, 40 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 47de463..d38c8fd 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c @@ -42,6 +42,7 @@ #include "playlist.h" #include "audio.h" #include "tagcache.h" +#include "peakmeter.h" #ifdef HAVE_LCD_BITMAP #include "peakmeter.h" @@ -159,6 +160,15 @@ void draw_progressbar(struct gui_wps *gwps, int line, struct progressbar *pb) length = 100; end = battery_level(); } + else if (pb->type == SKIN_TOKEN_PEAKMETER_LEFTBAR || + pb->type == SKIN_TOKEN_PEAKMETER_RIGHTBAR) + { + int left, right, val; + peak_meter_current_vals(&left, &right); + val = pb->type == SKIN_TOKEN_PEAKMETER_LEFTBAR ? left : right; + length = MAX_PEAK; + end = peak_meter_scale_value(val, length); + } #if CONFIG_TUNER else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) { diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index f292ff3..5a90873 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -744,6 +744,10 @@ static int parse_progressbar_tag(struct skin_element* element, token->type = SKIN_TOKEN_BATTERY_PERCENTBAR; else if (token->type == SKIN_TOKEN_TUNER_RSSI) token->type = SKIN_TOKEN_TUNER_RSSI_BAR; + else if (token->type == SKIN_TOKEN_PEAKMETER_LEFT) + token->type = SKIN_TOKEN_PEAKMETER_LEFTBAR; + else if (token->type == SKIN_TOKEN_PEAKMETER_RIGHT) + token->type = SKIN_TOKEN_PEAKMETER_RIGHTBAR; pb->type = token->type; return 0; @@ -1410,6 +1414,8 @@ static int skin_element_callback(struct skin_element* element, void* data) case SKIN_TOKEN_VOLUME: case SKIN_TOKEN_BATTERY_PERCENT: case SKIN_TOKEN_PLAYER_PROGRESSBAR: + case SKIN_TOKEN_PEAKMETER_LEFT: + case SKIN_TOKEN_PEAKMETER_RIGHT: #ifdef HAVE_RADIO_RSSI case SKIN_TOKEN_TUNER_RSSI: #endif diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 68a5433..424e0c2 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c @@ -139,6 +139,12 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, draw_peakmeters(gwps, info->line_number, vp); break; #endif +#ifdef HAVE_LCD_BITMAP + case SKIN_TOKEN_PEAKMETER_LEFTBAR: + case SKIN_TOKEN_PEAKMETER_RIGHTBAR: + data->peak_meter_enabled = true; + /* fall through to the progressbar code */ +#endif case SKIN_TOKEN_VOLUMEBAR: case SKIN_TOKEN_BATTERY_PERCENTBAR: #ifdef HAVE_LCD_BITMAP diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 217835a..c644d5b 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -59,6 +59,7 @@ #include "skin_engine.h" #include "statusbar-skinned.h" #include "root_menu.h" +#include "peakmeter.h" #ifdef HAVE_RECORDING #include "recording.h" #include "pcm_record.h" @@ -1267,6 +1268,23 @@ const char *get_token_value(struct gui_wps *gwps, #endif +#ifdef HAVE_LCD_BITMAP + /* peakmeter */ + case SKIN_TOKEN_PEAKMETER_LEFT: + case SKIN_TOKEN_PEAKMETER_RIGHT: + { + int left, right, val; + peak_meter_current_vals(&left, &right); + val = token->type == SKIN_TOKEN_PEAKMETER_LEFT ? + left : right; + val = peak_meter_scale_value(val, limit==1 ? MAX_PEAK : limit); + if (intval) + *intval = val; + snprintf(buf, buf_size, "%d", val); + data->peak_meter_enabled = true; + return buf; + } +#endif #if (CONFIG_CODEC == SWCODEC) case SKIN_TOKEN_CROSSFADE: |