diff options
author | Björn Stenberg <bjorn@haxx.se> | 2003-06-29 16:33:04 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2003-06-29 16:33:04 +0000 |
commit | ba371fb595affd68c823926b85718d1d613dc7d3 (patch) | |
tree | cfda303d0603d623cdb12f3928905d3ae02f1d87 /apps/recorder/oscillograph.c | |
parent | 9bcbe3fd723d23a709873a0855f27b86bc5c96f1 (diff) | |
download | rockbox-ba371fb595affd68c823926b85718d1d613dc7d3.tar.gz rockbox-ba371fb595affd68c823926b85718d1d613dc7d3.zip |
Added plugin loader. Moved games, demos and the text viewer to loadable plugins. Copy your *.rock files to /.rockbox/rocks/
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3769 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder/oscillograph.c')
-rw-r--r-- | apps/recorder/oscillograph.c | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/apps/recorder/oscillograph.c b/apps/recorder/oscillograph.c deleted file mode 100644 index bf94db168f..0000000000 --- a/apps/recorder/oscillograph.c +++ /dev/null @@ -1,207 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 Philipp Pertermann - * - * 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 /* don't want this code in the simulator */ - -#include <stdlib.h> -#include <sprintf.h> -#include "menu.h" -#include "lcd.h" -#include "button.h" -#include "mas.h" -#include "system.h" - -/* The different drawing modes */ -#define DRAW_MODE_FILLED 0 -#define DRAW_MODE_OUTLINE 1 -#define DRAW_MODE_PIXEL 2 -#define DRAW_MODE_COUNT 3 - -#define MAX_PEAK 0x8000 - -/* number of ticks between two volume samples */ -static int speed = 1; -/* roll == true -> lcd rolls */ -static bool roll = true; -/* see DRAW_MODE_XXX constants for valid values */ -static int drawMode = DRAW_MODE_FILLED; - -/** - * Displays a vertically scrolling oscillosgraph using - * hardware scrolling of the display. The user can change - * speed - */ -bool oscillograph(void) -{ - /* stores current volume value left */ - int left; - /* stores current volume value right */ - int right; - /* specifies the current position on the lcd */ - int y = LCD_WIDTH - 1; - - /* only needed when drawing lines */ - int lastLeft = 0; - int lastRight = 0; - int lasty = 0; - - bool exit = false; - - /* the main loop */ - while (!exit) { - - /* read the volume info from MAS */ - left = mas_codec_readreg(0xC) / (MAX_PEAK / (LCD_WIDTH / 2 - 2)); - right = mas_codec_readreg(0xD) / (MAX_PEAK / (LCD_WIDTH / 2 - 2)); - - /* delete current line */ - lcd_clearline(0, y, LCD_WIDTH-1, y); - - switch (drawMode) { - case DRAW_MODE_FILLED: - lcd_drawline(LCD_WIDTH / 2 + 1 , y, - LCD_WIDTH / 2 + 1 + right, y); - lcd_drawline(LCD_WIDTH / 2 - 1 , y, - LCD_WIDTH / 2 - 1 -left , y); - break; - - case DRAW_MODE_OUTLINE: - /* last position needed for lines */ - lasty = MAX(y-1, 0); - - /* Here real lines were neccessary because - anything else was ugly. */ - lcd_drawline(LCD_WIDTH / 2 + right , y, - LCD_WIDTH / 2 + lastRight , lasty); - lcd_drawline(LCD_WIDTH / 2 - left , y, - LCD_WIDTH / 2 - lastLeft, lasty); - - /* have to store the old values for drawing lines - the next time */ - lastRight = right; - lastLeft = left; - break; - - case DRAW_MODE_PIXEL: - /* straight and simple */ - lcd_drawpixel(LCD_WIDTH / 2 + right, y); - lcd_drawpixel(LCD_WIDTH / 2 - left, y); - break; - } - - - /* increment and adjust the drawing position */ - y++; - if (y >= LCD_HEIGHT) - y = 0; - - /* I roll before update because otherwise the new - line would appear at the wrong end of the display */ - if (roll) - lcd_roll(y); - - /* now finally make the new sample visible */ - lcd_update_rect(0, MAX(y-1, 0), LCD_WIDTH, 2); - - /* There are two mechanisms to alter speed: - 1.) slowing down is achieved by increasing - the time waiting for user input. This - mechanism uses positive values. - 2.) speeding up is achieved by leaving out - the user input check for (-speed) volume - samples. For this mechanism negative values - are used. - */ - - if (speed >= 0 || ((speed < 0) && (y % (-speed) == 0))) { - bool draw = false; - - /* speed values > 0 slow the oszi down. By user input - speed might become < 1. If a value < 1 was - passed user input would be disabled. Thus - it must be ensured that at least 1 is passed. */ - - /* react to user input */ - switch (button_get_w_tmo(MAX(speed, 1))) { - case BUTTON_UP: - speed++; - draw = true; - break; - - case BUTTON_DOWN: - speed--; - draw = true; - break; - - case BUTTON_PLAY: - /* pause the demo */ - button_get(true); - break; - - case BUTTON_F1: - /* toggle rolling */ - roll = !roll; - break; - - case BUTTON_F2: - /* step through the display modes */ - drawMode ++; - drawMode = drawMode % DRAW_MODE_COUNT; - - /* lcd buffer might be rolled so that - the transition from LCD_HEIGHT to 0 - takes place in the middle of the screen. - That produces ugly results in DRAW_MODE_OUTLINE - mode. If rolling is enabled this change will - be reverted before the next update anyway.*/ - lcd_roll(0); - break; - - case BUTTON_F3: - speed = 1; - draw = true; - break; - - case BUTTON_OFF: - exit = true; - break; - } - - if (draw) { - char buf[16]; - snprintf(buf, sizeof buf, "Speed: %d", -speed); - lcd_putsxy(0, (y + LCD_HEIGHT - 8) % LCD_HEIGHT, buf); - lcd_update_rect(0, (y + LCD_HEIGHT - 8) % LCD_HEIGHT, - LCD_WIDTH, 8); - } - } - } - - /* restore to default roll position. - Looks funny if you forget to do this... */ - lcd_roll(0); - lcd_update(); - - /* standard return */ - return false; -} - -#endif /* #ifndef SIMULATOR */ - - |