From 261c56ba59235c2da2aa644fbea0b1fa492bd1c6 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Thu, 13 Jan 2011 06:48:39 +0000 Subject: 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 --- apps/recorder/peakmeter.c | 24 +++++++++++++++++------- apps/recorder/peakmeter.h | 2 ++ 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'apps/recorder') diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c index aacfc23..ca1b8c8 100644 --- a/apps/recorder/peakmeter.c +++ b/apps/recorder/peakmeter.c @@ -930,6 +930,21 @@ void peak_meter_screen(struct screen *display, int x, int y, int height) peak_meter_draw(display, &scales[display->screen_type], x, y, display->getwidth() - x, height); } + +/* sets *left and *right to the current *unscaled* values */ +void peak_meter_current_vals(int *left, int *right) +{ + static int left_level = 0, right_level = 0; + if (level_check){ + /* only read the volume info from MAS if peek since last read*/ + left_level = peak_meter_read_l(); + right_level = peak_meter_read_r(); + level_check = false; + } + *left = left_level; + *right = right_level; +} + /** * Draws a peak meter in the specified size at the specified position. * @param int x - The x coordinate. @@ -944,7 +959,7 @@ void peak_meter_screen(struct screen *display, int x, int y, int height) static void peak_meter_draw(struct screen *display, struct meter_scales *scales, int x, int y, int width, int height) { - static int left_level = 0, right_level = 0; + int left_level = 0, right_level = 0; int left = 0, right = 0; int meterwidth = width - 3; int i, delta; @@ -964,12 +979,7 @@ static void peak_meter_draw(struct screen *display, struct meter_scales *scales, if (peak_meter_enabled) { - if (level_check){ - /* only read the volume info from MAS if peek since last read*/ - left_level = peak_meter_read_l(); - right_level = peak_meter_read_r(); - level_check = false; - } + peak_meter_current_vals(&left_level, &right_level); /* scale the samples dBfs */ left = peak_meter_scale_value(left_level, meterwidth); diff --git a/apps/recorder/peakmeter.h b/apps/recorder/peakmeter.h index 4abcc15..fee4882 100644 --- a/apps/recorder/peakmeter.h +++ b/apps/recorder/peakmeter.h @@ -34,6 +34,8 @@ extern void pm_reset_clipcount(void); extern void pm_activate_clipcount(bool active); extern void peak_meter_enable(bool enable); +/* sets *left and *right to the current *unscaled* values */ +extern void peak_meter_current_vals(int *left, int *right); extern void peak_meter_playback(bool playback); extern int peak_meter_draw_get_btn(int action_context, int x[], int y[], -- cgit v1.1