summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer/src/eventhandler.hcc
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2004-12-08 12:26:27 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2004-12-08 12:26:27 (GMT)
commit696531b4b357a83ebd17f9efda9ffdfc244bc7f9 (patch)
tree5a1326d51121f6dda58270b4cf200c8017523dd2 /Graphic_Equalizer/src/eventhandler.hcc
parent06672b2893a1abbb90c0aba5de547cb5ba8c02e0 (diff)
downloadTASS-696531b4b357a83ebd17f9efda9ffdfc244bc7f9.zip
TASS-696531b4b357a83ebd17f9efda9ffdfc244bc7f9.tar.gz
TASS-696531b4b357a83ebd17f9efda9ffdfc244bc7f9.tar.bz2
We do some init here to ensure the equalizer bars are drawn properly. This should be moved to an init function or similarly.
Added various equalizer modes.
Diffstat (limited to 'Graphic_Equalizer/src/eventhandler.hcc')
-rw-r--r--Graphic_Equalizer/src/eventhandler.hcc112
1 files changed, 67 insertions, 45 deletions
diff --git a/Graphic_Equalizer/src/eventhandler.hcc b/Graphic_Equalizer/src/eventhandler.hcc
index 6526618..e1f90ae 100644
--- a/Graphic_Equalizer/src/eventhandler.hcc
+++ b/Graphic_Equalizer/src/eventhandler.hcc
@@ -45,10 +45,6 @@ extern chan unsigned 1 maskupdate_notification;
-static rom unsigned 3 equalizer_mode_table[5] = {EQUALIZERMODE_CONVEX_FULL, EQUALIZERMODE_CONVEX_HALF, EQUALIZERMODE_PRECISE, EQUALIZERMODE_CONCAVE_HALF, EQUALIZERMODE_CONCAVE_FULL};
-
-
-
/*! \fn void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mousedata);
* \brief
*
@@ -67,15 +63,14 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo
} equalizer_levels with { block = "BlockRAM"};
unsigned 10 preset_offset;
- unsigned 10 reference_point;
+ unsigned 10 reference_point, reference_point_right;
unsigned 5 volume_left;
- unsigned 4 index_offset;
+ unsigned 4 index_offset, index_end;
+ unsigned 4 equalizer_mode_local;
unsigned 1 newmaskupdate;
- /*
- * Initialize our equalizer display pointers here, as they don't point
- * anywhere otherwise.
- */
+ load_preset(LOAD_PRESET_RESET, equalizer_levels.write);
+ reload_equalizer(events, &equalizer_levels.write[preset_offset]);
while (TRUE) {
maskupdate_notification ? newmaskupdate;
@@ -123,7 +118,6 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo
events->mode = MODE_SKIN;
} else {
events->mode = MODE_HELP;
- print_string("going to help");print_eol();
}
} else {
delay;
@@ -162,13 +156,13 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo
* Finally update the equalizer bars
* that are drawn by the display.
*/
- reload_equalizer(events, equalizer_levels.write, preset_offset);
+ reload_equalizer(events, &equalizer_levels.write[preset_offset]);
} else {
delay;
}
- if ((BUTTON_CONVEX_FULL <= events->mask) && (events->mask <= BUTTON_CONCAVE_FULL)) {
- events->equalizer_mode = (events->mask -BUTTON_CONVEX_FULL) <- 3;
+ if ((BUTTON_PRECISE <= events->mask) && (events->mask <= BUTTON_CONVEX_FULL)) {
+ events->equalizer_mode = (events->mask -BUTTON_PRECISE) <-4;
} else {
delay;
}
@@ -178,8 +172,8 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo
* demo preset values into the presets.
*/
if (BUTTON_DEMO == events->mask) {
- load_preset(ADDRESS_PRESET_DEMO_START, &equalizer_levels.write[0]);
- reload_equalizer(events, equalizer_levels.write, preset_offset);
+ load_preset(LOAD_PRESET_DEMO, equalizer_levels.write);
+ reload_equalizer(events, &equalizer_levels.write[preset_offset]);
}
/*
@@ -187,8 +181,8 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo
* reset values into the presets.
*/
if (BUTTON_RESET == events->mask) {
- load_preset(ADDRESS_PRESET_RESET_START, &equalizer_levels.write[0]);
- reload_equalizer(events, equalizer_levels.write, preset_offset);
+ load_preset(LOAD_PRESET_RESET, equalizer_levels.write);
+ reload_equalizer(events, &equalizer_levels.write[preset_offset]);
}
/*
@@ -237,40 +231,68 @@ void eventhandler_main(audiodata_t *audiodata, events_t *events, mousedata_t *mo
if ((AREA_EQUALIZER_MIN <= events->mask) && (events->mask <= AREA_EQUALIZER_MAX)) {
- events->locked_equalizer = TRUE;
- delay;
- reference_point = events->equalizer_display[(events->mask -5 -AREA_EQUALIZER_MIN) <- 7];
-
- for (index_offset = 9; index_offset != 0; index_offset--) {
- unsigned 10 average_bar;
- unsigned 7 equalizer_index;
- unsigned 4 bar_index;
-
- if (index_offset == 5) {
- reference_point = events->equalizer_display[(events->mask +5 -AREA_EQUALIZER_MIN) <- 7];
- } else {
- delay;
- }
+ if (EQUALIZERMODE_PRECISE == events->equalizer_mode) {
+ events->locked_display = TRUE;
+ equalizer_levels.write[preset_offset +(0 @ events->mask) -AREA_EQUALIZER_MIN] = equalizer_table[mousedata->y -382];
+ events->equalizer_display[(events->mask -AREA_EQUALIZER_MIN) <- 7] = mousedata->y;
+ events->locked_display = FALSE;
+ } else {
+
+ equalizer_mode_local = events->equalizer_mode +1;
+
+ events->locked_display = TRUE;
+ index_offset = ((equalizer_mode_local << 1)); /* delay; */
- if (index_offset > 5) {
- bar_index = (index_offset -5);
+ if (events->mask < (AREA_EQUALIZER_MIN +(0 @ equalizer_mode_local))) {
+ reference_point = events->equalizer_display[AREA_EQUALIZER_MIN -AREA_EQUALIZER_MIN];
+ index_offset -= (((0 @ equalizer_mode_local) -(events->mask -AREA_EQUALIZER_MIN)) <- 4);
} else {
- bar_index = (5 -index_offset);
+ reference_point = events->equalizer_display[(events->mask - (0 @ equalizer_mode_local) -AREA_EQUALIZER_MIN) <- 7];
+ index_offset -= 1;
}
- if (reference_point > mousedata->y) {
- average_bar = mousedata->y -((reference_point -mousedata->y) >> (5 - bar_index));
+ if (events->mask > (AREA_EQUALIZER_MAX -(0 @ equalizer_mode_local))) {
+ reference_point_right = events->equalizer_display[AREA_EQUALIZER_MAX -AREA_EQUALIZER_MIN];
+ index_end = (((0 @ equalizer_mode_local) -(AREA_EQUALIZER_MAX -events->mask)) <- 4) -1;
} else {
- average_bar = mousedata->y +((mousedata->y -reference_point) >> (5 - bar_index));
+ reference_point_right = events->equalizer_display[(events->mask + (0 @ equalizer_mode_local) -AREA_EQUALIZER_MIN) <- 7];
+ index_end = 0;
+ }
+ events->locked_display = FALSE;
+
+ for (; index_offset != index_end; index_offset--) {
+ unsigned 10 average_bar;
+ unsigned 7 equalizer_index;
+ unsigned 4 bar_index;
+
+ if (index_offset == equalizer_mode_local) {
+ reference_point = reference_point_right;
+ } else {
+ delay;
+ }
+
+ if (index_offset > equalizer_mode_local)
+ {
+ bar_index = (index_offset -equalizer_mode_local);
+ equalizer_index = ((events->mask -(0 @ bar_index) -AREA_EQUALIZER_MIN) <- 7);
+ } else
+ {
+ bar_index = (equalizer_mode_local -index_offset);
+ equalizer_index = ((events->mask +(0 @ bar_index) -AREA_EQUALIZER_MIN) <- 7);
+ }
+
+ if (reference_point > mousedata->y) {
+ average_bar = mousedata->y +((reference_point -mousedata->y) >> (equalizer_mode_local -bar_index));
+ } else {
+ average_bar = mousedata->y -((mousedata->y -reference_point) >> (equalizer_mode_local -bar_index));
+ }
+
+ events->locked_display = TRUE;
+ equalizer_levels.write[preset_offset +(0 @ equalizer_index)] = equalizer_table[average_bar -382];
+ events->equalizer_display[equalizer_index] = average_bar;
+ events->locked_display = FALSE;
}
-
- equalizer_index = ((events->mask +5 -(0 @ index_offset) -AREA_EQUALIZER_MIN) <- 7);
-
- events->equalizer_display[equalizer_index] = average_bar;
- equalizer_levels.write[preset_offset +(0 @ equalizer_index)] = equalizer_table[average_bar -382];
}
-
- events->locked_equalizer = FALSE;
} else {
delay;
}