summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJörg Hohensohn <hohensoh@rockbox.org>2003-12-23 22:24:48 +0000
committerJörg Hohensohn <hohensoh@rockbox.org>2003-12-23 22:24:48 +0000
commit2d720b2a7968666bfc315026c8a69b8a762aa058 (patch)
treeeabe756f60a5049c0697d0dad3af28c5d850ab44 /apps
parent9aad0db9df7716fe4e2997bca09e8a0a46889b84 (diff)
downloadrockbox-2d720b2a7968666bfc315026c8a69b8a762aa058.tar.gz
rockbox-2d720b2a7968666bfc315026c8a69b8a762aa058.zip
I found several plugins to draw beyond screen boundary
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4176 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/calendar.c2
-rw-r--r--apps/plugins/cube.c6
-rw-r--r--apps/plugins/star.c2
-rw-r--r--apps/plugins/vu_meter.c118
4 files changed, 123 insertions, 5 deletions
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index d0fb102f18..a7762589d6 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -108,7 +108,7 @@ static void draw_headers(void)
rb->lcd_putsxy(ws, 0 , Dayname[i++]);
ws += space;
}
- rb->lcd_drawline(0 ,h ,LCD_WIDTH ,h);
+ rb->lcd_drawline(0 ,h ,LCD_WIDTH-1 ,h);
}
static bool day_has_memo[31];
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 996a1a81dd..17440ad496 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -41,7 +41,7 @@ static long matrice[3][3];
static int nb_points = 8;
static int x_off = 56;
-static int y_off = 95;
+static int y_off = 31;
static int z_off = 600;
/* Precalculated sine and cosine * 10000 (four digit fixed point math) */
@@ -249,7 +249,9 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
while(!exit)
{
- if (!highspeed)
+ if (highspeed)
+ rb->yield();
+ else
rb->sleep(4);
rb->lcd_clear_display();
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 71b5170ad7..8ab8bec0b1 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -405,7 +405,7 @@ static void star_transition_update(void)
int y = 0;
int var_y = 0;
- for (x = 0 ; x < lcd_demi_width ; x++)
+ for (x = 1 ; x < lcd_demi_width ; x++)
{
var_y += LCD_HEIGHT;
if (var_y > LCD_WIDTH)
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 268f4b161a..677d41886d 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -1,116 +1,232 @@
/***************************************************************************
+
* __________ __ ___.
+
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
+
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+
* \/ \/ \/ \/ \/
+
*
+
* Copyright (C) 2003 Lee Pilgrim
+
*
+
* All files in this archive are subject to the GNU General Public License.
+
* See the file COPYING in the source tree root for full license agreement.
+
*
+
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+
* KIND, either express or implied.
+
*
+
**************************************************************************/
+
#ifndef SIMULATOR /* The simulator dosen't have a MAS */
+
#include "plugin.h"
+
+
#ifdef HAVE_LCD_BITMAP
+
+
static struct plugin_api* rb;
+
+
enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
+
{
+
TEST_PLUGIN_API(api);
+
(void) parameter;
+
rb = api;
+
+
/*
+
I hope to make (left/right)_needle_top_y change some day (because it looks
+
like it is stretching) so that is why it is a int and not a #define.
+
*/
+
#define LEFT_NEEDLE_BOTTOM_X 28
+
#define LEFT_NEEDLE_BOTTOM_Y 53
+
int left_needle_top_x;
+
int left_needle_top_y = 18;
+
+
#define RIGHT_NEEDLE_BOTTOM_X 84
+
#define RIGHT_NEEDLE_BOTTOM_Y 53
+
int right_needle_top_x;
+
int right_needle_top_y = 18;
+
+
while (!PLUGIN_OK)
+
{
+
/* These are to define how far the tip of the needles can go to the
+
left and right. The names are a bit confusing. The LEFT/RIGHT tells
+
which needle it is for, and the L/R at the end tells which side
+
of the needle. */
+
#define MAX_LEFT_L 2
+
#define MAX_LEFT_R 55
+
#define MAX_RIGHT_L 57
+
#define MAX_RIGHT_R 111
+
+
#define MAX_PEAK 0x7FFF
+
+
left_needle_top_x =
+
(rb->mas_codec_readreg(0xC) *
+
(MAX_LEFT_R - MAX_LEFT_L) / MAX_PEAK) + MAX_LEFT_L;
+
+
right_needle_top_x =
+
(rb->mas_codec_readreg(0xD) *
+
(MAX_RIGHT_R - MAX_RIGHT_L) / MAX_PEAK) + MAX_RIGHT_L;
+
+
/* Time to draw all of the display stuff!
+
Could I move some of these out of the loop so they don't have to
+
be re-drawn everytime, but still be displayed, or would that
+
improve performance any at all? */
+
rb->lcd_clear_display();
+
+
rb->lcd_drawline(LEFT_NEEDLE_BOTTOM_X, LEFT_NEEDLE_BOTTOM_Y,
+
left_needle_top_x, left_needle_top_y);
+
rb->lcd_drawline(RIGHT_NEEDLE_BOTTOM_X, RIGHT_NEEDLE_BOTTOM_Y,
+
right_needle_top_x, right_needle_top_y);
+
+
rb->lcd_setfont(FONT_SYSFIXED);
+
rb->lcd_putsxy(30, 1, "VU Meter");
+
+
/* The first is the line under "VU Meter" and the second is under
+
the needles. */
+
rb->lcd_drawline(30, 9, 77, 9);
- rb->lcd_drawline(1, 53, 112, 53);
+
+ rb->lcd_drawline(0, 53, 111, 53);
+
+
/* These are the needle "covers" - we're going for that
+
"old fashioned" look */
+
+
/* The left needle cover - organized from the top line to the bottom */
+
rb->lcd_drawline(27, 48, 29, 48);
+
rb->lcd_drawline(25, 49, 31, 49);
+
rb->lcd_drawline(23, 50, 33, 50);
+
rb->lcd_drawline(22, 51, 34, 51);
+
rb->lcd_drawline(22, 52, 34, 52);
+
+
/* The right needle cover - organized from the top line to
+
the bottom */
+
rb->lcd_drawline(83, 48, 85, 48);
+
rb->lcd_drawline(81, 49, 87, 49);
+
rb->lcd_drawline(79, 50, 89, 50);
+
rb->lcd_drawline(78, 51, 90, 51);
+
rb->lcd_drawline(78, 52, 90, 52);
+
+
rb->lcd_update();
+
+
/* We must yield once in a while to make sure that the MPEG thread
+
isn't starved, but we use the shortest possible timeout for best
+
performance */
+
switch (rb->button_get_w_tmo(1))
+
{
+
case BUTTON_OFF:
+
return PLUGIN_OK;
+
}
+
}
+
}
+
#endif /* HAVE_LCD_BITMAP */
+
#endif /* #ifndef SIMULATOR */
+