summaryrefslogtreecommitdiffstats
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
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.
-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;
}