From 7bab6bcb7600a09b224e3f1beb7972d44ebee756 Mon Sep 17 00:00:00 2001 From: Oliver Schinagl Date: Thu, 6 Jan 2005 14:15:49 +0000 Subject: Because we added the skindata parameter, our header needs to know about it aswell. Added some more initilizers. Don't we need a function for this? TODO. inputgain works the opposite way then volume control so no calculation magic is needed here. We determine the mode via the image index. Found hardcoded value, replaced with proper struct element. Added table for inputgain. --- Graphic_Equalizer/src/eventhandler.hcc | 86 +++++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/Graphic_Equalizer/src/eventhandler.hcc b/Graphic_Equalizer/src/eventhandler.hcc index 95f199f..44f9a52 100644 --- a/Graphic_Equalizer/src/eventhandler.hcc +++ b/Graphic_Equalizer/src/eventhandler.hcc @@ -28,9 +28,9 @@ #include "audio.hch" #include "mouse_shared.hch" #include "eventhandler_shared.hch" +#include "display_shared.hch" #include "eventhandler.hch" #include "events.hch" -#include "display_shared.hch" #include "display.hch" #if HAVE_DEBUG @@ -56,7 +56,7 @@ extern chan unsigned 1 maskupdate_notification; * \return Never Returns. * \retval void */ -void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mousedata) { +void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mousedata, skindata_t *skindata) { mpram { ram unsigned 4 write[768]; rom unsigned 4 read[768]; @@ -65,18 +65,28 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo unsigned 10 preset_offset; unsigned 10 reference_point, reference_point_right; unsigned 5 volume_left; + unsigned 4 gain_left; unsigned 4 index_offset, index_end; unsigned 4 equalizer_mode_local; unsigned 1 newmaskupdate; - events->address_offset_index = 0; /* MASK_AREA_BACKGROUND */ + audiodata->display_log = TRUE; + + events->image = IMAGE_SKIN; events->button_demo_state = FALSE; events->button_reset_state = FALSE; + + events->inputgain_position = skindata->inputgain.bottom -10; + RC200AudioInSetGain(FALSE, 4, 4); + events->volume_position = skindata->volume.bottom -30; + RC200AudioOutSetVolume(FALSE, 0x1f -24, 0x1f -24); + load_preset(LOAD_PRESET_RESET, equalizer_levels.write); reload_equalizer(events, &equalizer_levels.write[preset_offset]); while (TRUE) { + maskupdate_notification ? newmaskupdate; /* @@ -89,8 +99,8 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo * If we are displaying the graphic visual, * any press returns to the application. */ - if (MODE_GRAPH == events->mode) { - events->mode = MODE_SKIN; + if (IMAGE_GRAPH == events->image) { + events->image = IMAGE_SKIN; events->mask = 0; } else { delay; @@ -99,10 +109,10 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo /* */ if (BUTTON_MODE == events->mask) { - if (MODE_GRAPH == events->mode) { - events->mode = MODE_SKIN; + if (IMAGE_GRAPH == events->image) { + events->image = IMAGE_SKIN; } else { - events->mode = MODE_GRAPH; + events->image = IMAGE_GRAPH; } } else { delay; @@ -112,32 +122,32 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo * If the current mask equals the help button * we set display mode to help. */ - if ((MODE_ABOUT != events->mode) && (BUTTON_HELP == events->mask)) { + if ((IMAGE_ABOUT != events->image) && (BUTTON_HELP == events->mask)) { /* * Change the mode to help if it's * currently not set, otherwise go back * to skin mode. */ - if (MODE_HELP == events->mode) { - events->mode = MODE_SKIN; + if (IMAGE_HELP == events->image) { + events->image = IMAGE_SKIN; } else { - events->mode = MODE_HELP; + events->image = IMAGE_HELP; } } else { delay; } - if ((MODE_HELP != events->mode) && (BUTTON_ABOUT == events->mask)) { + if ((IMAGE_HELP != events->image) && (BUTTON_ABOUT == events->mask)) { /* - * Change the mode to help if it's + * Change the mode to about if it's * currently not set, otherwise go back * to skin mode. */ - if (MODE_ABOUT == events->mode) { - events->mode = MODE_SKIN; + if (IMAGE_ABOUT == events->image) { + events->image = IMAGE_SKIN; } else { - events->address_offset_index = 4; - events->mode = MODE_ABOUT; + events->image_about = IMAGE_ABOUT_TOP_TASS; + events->image = IMAGE_ABOUT; } } else { delay; @@ -146,7 +156,7 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo if (BUTTON_EXIT_TO_SKIN == events->mask) { /* */ - events->mode = MODE_SKIN; + events->image = IMAGE_SKIN; } else { delay; } @@ -154,9 +164,9 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo /* */ if ((BUTTON_URL_FONTYS <= events->mask) && (events->mask <= BUTTON_URL_DETAILS)) { - events->address_offset_index = (events->mask -BUTTON_URL_FONTYS +3) <- 5; + events->image_about = (events->mask -BUTTON_URL_FONTYS) <- 5; #if HAVE_DEBUG - print_string(" address offset index: ");print_hex_value(0@events->address_offset_index);print_eol(); + print_string(" image: ");print_hex_value(0@events->image_about);print_eol(); #endif } else { delay; @@ -244,6 +254,7 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo break; case MOUSE_STATE_DOWN: + /* * If we are in the volume area we update the * volume level for both channels. @@ -262,7 +273,7 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo * RC200 call doesn't behave nicely * when passing anything else. */ - volume_left = volumecontrol_table[((mousedata->y) -65) <- 6]; + volume_left = volumecontrol_table[((mousedata->y) -skindata->volume.top) <- 6]; /* * We feel that volume gets softer the * closer it gets to the 0, and louder @@ -275,6 +286,33 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo delay; } + if (AREA_INPUTGAIN_YAXIS == events->mask) { + /* + * Copy the current Y cursor position + * to the events struct. This we then + * later use for drawing purposes. + */ + events->inputgain_position = 0 @ mousedata->y; + /* + * Look the relative y-coordinate up in + * the inputgain lookup table. We + * make a local copy here because the + * RC200 call doesn't behave nicely + * when passing anything else. + */ + gain_left = inputgain_table[((mousedata->y) -skindata->inputgain.top) <- 6]; + /* + * We feel that volume gets softer the + * closer it gets to the 0, and louder + * as it approaches 0x1f. The SetVolume + * RC200 call does this in an unnatural + * reverse way. Therefor we fix it. + */ + RC200AudioInSetGain(!gain_left, gain_left, gain_left); + } else { + delay; + } + if ((AREA_EQUALIZER_MIN <= events->mask) && (events->mask <= AREA_EQUALIZER_MAX)) { if (EQUALIZERMODE_PRECISE == events->equalizer_mode) { @@ -363,4 +401,6 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo * TODO: This table is now hardcoded. To ensure full skinability this table * should be dynamically loaded. */ -rom unsigned 5 volumecontrol_table[46] = {31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0}; +rom unsigned 5 volumecontrol_table[46] = {31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0}; + +rom unsigned 4 inputgain_table[46] = {15, 15, 15, 15, 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0}; -- cgit v0.12