diff options
Diffstat (limited to 'Graphic_Equalizer/doc/html/eventhandler_8hcc-source.html')
-rw-r--r-- | Graphic_Equalizer/doc/html/eventhandler_8hcc-source.html | 277 |
1 files changed, 277 insertions, 0 deletions
diff --git a/Graphic_Equalizer/doc/html/eventhandler_8hcc-source.html b/Graphic_Equalizer/doc/html/eventhandler_8hcc-source.html new file mode 100644 index 0000000..24170bf --- /dev/null +++ b/Graphic_Equalizer/doc/html/eventhandler_8hcc-source.html @@ -0,0 +1,277 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>Graphic Equalizer: C:/Project Marcel & Oliver/Graphic_Equalizer/src/eventhandler.hcc Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.9.1 --> +<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="globals.html">Globals</a></div> +<div class="nav"> +<a class="el" href="dir_000000.html">C:</a> / <a class="el" href="dir_000001.html">Project Marcel & Oliver</a> / <a class="el" href="dir_000002.html">Graphic_Equalizer</a> / <a class="el" href="dir_000004.html">src</a></div> +<h1>eventhandler.hcc</h1><a href="eventhandler_8hcc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 +00021 <span class="comment">/******** System Includes *************/</span> +00022 <span class="preprocessor">#include <stdlib.hch></span> +00023 +00024 <span class="preprocessor">#include "pal_master.hch"</span> +00025 +00026 <span class="comment">/******** Application Includes ********/</span> +00027 <span class="preprocessor">#include "<a class="code" href="configuration_8hch.html">configuration.hch</a>"</span> +00028 <span class="preprocessor">#include "<a class="code" href="audio_8hch.html">audio.hch</a>"</span> +00029 <span class="preprocessor">#include "<a class="code" href="mouse__shared_8hch.html">mouse_shared.hch</a>"</span> +00030 <span class="preprocessor">#include "<a class="code" href="eventhandler__shared_8hch.html">eventhandler_shared.hch</a>"</span> +00031 <span class="preprocessor">#include "<a class="code" href="eventhandler_8hch.html">eventhandler.hch</a>"</span> +00032 <span class="preprocessor">#include "<a class="code" href="events_8hch.html">events.hch</a>"</span> +00033 <span class="preprocessor">#include "<a class="code" href="display__shared_8hch.html">display_shared.hch</a>"</span> +00034 <span class="preprocessor">#include "<a class="code" href="display_8hch.html">display.hch</a>"</span> +00035 +00036 <span class="preprocessor">#if HAVE_DEBUG</span> +00037 <span class="preprocessor"></span><span class="preprocessor"> #include "debug.hch"</span> +00038 <span class="preprocessor">#endif</span> +00039 <span class="preprocessor"></span> +00040 +00041 +00042 <span class="comment">/*</span> +00043 <span class="comment"> */</span> +00044 <span class="keyword">extern</span> chan <span class="keywordtype">unsigned</span> 1 maskupdate_notification; +00045 +00046 +00047 +00048 <span class="keyword">static</span> rom <span class="keywordtype">unsigned</span> 3 equalizer_mode_table[5] = {EQUALIZERMODE_CONVEX_FULL, EQUALIZERMODE_CONVEX_HALF, EQUALIZERMODE_PRECISE, EQUALIZERMODE_CONCAVE_HALF, EQUALIZERMODE_CONCAVE_FULL}; +00049 +00050 +00051 +<a name="l00063"></a><a class="code" href="eventhandler_8hcc.html#a3">00063</a> <span class="keywordtype">void</span> <a class="code" href="eventhandler_8hcc.html#a3">eventhandler_main</a>(audiodata_t *audiodata, events_t *events, mousedata_t *mousedata) { +00064 mpram { +00065 ram <span class="keywordtype">unsigned</span> 4 write[768]; +00066 rom <span class="keywordtype">unsigned</span> 4 read[768]; +00067 } equalizer_levels with { block = <span class="stringliteral">"BlockRAM"</span>}; +00068 +00069 <span class="keywordtype">unsigned</span> 10 preset_offset; +00070 <span class="keywordtype">unsigned</span> 10 reference_point; +00071 <span class="keywordtype">unsigned</span> 5 volume_left; +00072 <span class="keywordtype">unsigned</span> 4 index_offset; +00073 <span class="keywordtype">unsigned</span> 1 newmaskupdate; +00074 +00075 <span class="comment">/*</span> +00076 <span class="comment"> * Initialize our equalizer display pointers here, as they don't point</span> +00077 <span class="comment"> * anywhere otherwise.</span> +00078 <span class="comment"> */</span> +00079 +00080 <span class="keywordflow">while</span> (TRUE) { +00081 maskupdate_notification ? newmaskupdate; +00082 +00083 <span class="comment">/*</span> +00084 <span class="comment"> * First we determine what mousestate we currently have. Then</span> +00085 <span class="comment"> * we check where we are to decide what to do.</span> +00086 <span class="comment"> */</span> +00087 <span class="keywordflow">switch</span> (mousedata->state) { +00088 <span class="keywordflow">case</span> MOUSE_STATE_ON_PRESS: +00089 <span class="comment">/*</span> +00090 <span class="comment"> * If we are displaying the graphic visual,</span> +00091 <span class="comment"> * any press returns to the application.</span> +00092 <span class="comment"> */</span> +00093 <span class="keywordflow">if</span> (MODE_GRAPH == events->mode) { +00094 events->mode = MODE_SKIN; +00095 events->mask = 0; +00096 } <span class="keywordflow">else</span> { +00097 delay; +00098 } +00099 +00100 <span class="comment">/*</span> +00101 <span class="comment"> */</span> +00102 <span class="keywordflow">if</span> (BUTTON_MODE == events->mask) { +00103 <span class="keywordflow">if</span> (MODE_GRAPH == events->mode) { +00104 events->mode = MODE_SKIN; +00105 } <span class="keywordflow">else</span> { +00106 events->mode = MODE_GRAPH; +00107 } +00108 } <span class="keywordflow">else</span> { +00109 delay; +00110 } +00111 +00112 <span class="comment">/*</span> +00113 <span class="comment"> * If the current mask equals the help button</span> +00114 <span class="comment"> * we set display mode to help.</span> +00115 <span class="comment"> */</span> +00116 <span class="keywordflow">if</span> (BUTTON_HELP == events->mask) { +00117 <span class="comment">/*</span> +00118 <span class="comment"> * Change the mode to help if it's</span> +00119 <span class="comment"> * currently not set, otherwise go back</span> +00120 <span class="comment"> * to skin mode.</span> +00121 <span class="comment"> */</span> +00122 <span class="keywordflow">if</span> (MODE_HELP == events->mode) { +00123 events->mode = MODE_SKIN; +00124 } <span class="keywordflow">else</span> { +00125 events->mode = MODE_HELP; +00126 print_string(<span class="stringliteral">"going to help"</span>);print_eol(); +00127 } +00128 } <span class="keywordflow">else</span> { +00129 delay; +00130 } +00131 +00132 <span class="comment">/*</span> +00133 <span class="comment"> * The Preset buttons span from 1 to 6 so if</span> +00134 <span class="comment"> * the mask one of those, we'll change the</span> +00135 <span class="comment"> * pointer to point to the current preset.</span> +00136 <span class="comment"> */</span> +00137 <span class="keywordflow">if</span> ((BUTTON_PRESET_1 <= events->mask) && (events->mask <= BUTTON_PRESET_6)) { +00138 <span class="comment">/*</span> +00139 <span class="comment"> * The active preset is determined by</span> +00140 <span class="comment"> * the mask minus an offset. Hence</span> +00141 <span class="comment"> * ranging our active preset from 0 to</span> +00142 <span class="comment"> * 6.</span> +00143 <span class="comment"> */</span> +00144 events->active_preset = 0 @ (events->mask -BUTTON_PRESET_1); +00145 <span class="comment">/*</span> +00146 <span class="comment"> * Each equalizer is 128 bands wide,</span> +00147 <span class="comment"> * thus we need to add 128 * the preset</span> +00148 <span class="comment"> * for each different preset. This</span> +00149 <span class="comment"> * offset is calculated here.</span> +00150 <span class="comment"> */</span> +00151 preset_offset = events->active_preset << 7; +00152 <span class="comment">/*</span> +00153 <span class="comment"> * We set the pointer to the active</span> +00154 <span class="comment"> * part of the array by using the</span> +00155 <span class="comment"> * preset offset as our index. Hence</span> +00156 <span class="comment"> * depending on the selected preset</span> +00157 <span class="comment"> * we point to 0, 128, 256, 384, 512</span> +00158 <span class="comment"> * or 640.</span> +00159 <span class="comment"> */</span> +00160 audiodata->equalizer_levels_ptr = &equalizer_levels.read[preset_offset]; +00161 <span class="comment">/*</span> +00162 <span class="comment"> * Finally update the equalizer bars</span> +00163 <span class="comment"> * that are drawn by the display.</span> +00164 <span class="comment"> */</span> +00165 <a class="code" href="display_8hcc.html#a4">reload_equalizer</a>(events, equalizer_levels.write, preset_offset); +00166 } <span class="keywordflow">else</span> { +00167 delay; +00168 } +00169 +00170 <span class="keywordflow">if</span> ((BUTTON_CONVEX_FULL <= events->mask) && (events->mask <= BUTTON_CONCAVE_FULL)) { +00171 events->equalizer_mode = (events->mask -BUTTON_CONVEX_FULL) <- 3; +00172 } <span class="keywordflow">else</span> { +00173 delay; +00174 } +00175 +00176 <span class="comment">/*</span> +00177 <span class="comment"> * If the demo button was pressed load the</span> +00178 <span class="comment"> * demo preset values into the presets.</span> +00179 <span class="comment"> */</span> +00180 <span class="keywordflow">if</span> (BUTTON_DEMO == events->mask) { +00181 <a class="code" href="events_8hcc.html#a2">load_preset</a>(ADDRESS_PRESET_DEMO_START, &equalizer_levels.write[0]); +00182 <a class="code" href="display_8hcc.html#a4">reload_equalizer</a>(events, equalizer_levels.write, preset_offset); +00183 } +00184 +00185 <span class="comment">/*</span> +00186 <span class="comment"> * If the reset button was pressed load the</span> +00187 <span class="comment"> * reset values into the presets.</span> +00188 <span class="comment"> */</span> +00189 <span class="keywordflow">if</span> (BUTTON_RESET == events->mask) { +00190 <a class="code" href="events_8hcc.html#a2">load_preset</a>(ADDRESS_PRESET_RESET_START, &equalizer_levels.write[0]); +00191 <a class="code" href="display_8hcc.html#a4">reload_equalizer</a>(events, equalizer_levels.write, preset_offset); +00192 } +00193 +00194 <span class="comment">/*</span> +00195 <span class="comment"> * If the current mask equals the log button,</span> +00196 <span class="comment"> * we flip the display_log bit.</span> +00197 <span class="comment"> */</span> +00198 <span class="keywordflow">if</span> (BUTTON_LOG == events->mask) { +00199 audiodata->display_log = !audiodata->display_log; +00200 } <span class="keywordflow">else</span> { +00201 delay; +00202 } +00203 +00204 <span class="keywordflow">break</span>; +00205 +00206 <span class="keywordflow">case</span> MOUSE_STATE_DOWN: +00207 <span class="comment">/*</span> +00208 <span class="comment"> * If we are in the volume area we update the</span> +00209 <span class="comment"> * volume level for both channels.</span> +00210 <span class="comment"> */</span> +00211 <span class="keywordflow">if</span> (AREA_VOLUME_YAXIS == events->mask) { +00212 <span class="comment">/*</span> +00213 <span class="comment"> * Copy the current Y cursor position</span> +00214 <span class="comment"> * to the events struct. This we then</span> +00215 <span class="comment"> * later use for drawing purposes.</span> +00216 <span class="comment"> */</span> +00217 events->volume_position = 0 @ mousedata->y; +00218 <span class="comment">/*</span> +00219 <span class="comment"> * Look the relative y-coordinate up in</span> +00220 <span class="comment"> * the volumecontrol lookup table. We</span> +00221 <span class="comment"> * make a local copy here because the</span> +00222 <span class="comment"> * RC200 call doesn't behave nicely</span> +00223 <span class="comment"> * when passing anything else.</span> +00224 <span class="comment"> */</span> +00225 volume_left = volumecontrol_table[((mousedata->y) -65) <- 6]; +00226 <span class="comment">/*</span> +00227 <span class="comment"> * We feel that volume gets softer the</span> +00228 <span class="comment"> * closer it gets to the 0, and louder</span> +00229 <span class="comment"> * as it approaches 0x1f. The SetVolume</span> +00230 <span class="comment"> * RC200 call does this in an unnatural</span> +00231 <span class="comment"> * reverse way. Therefor we fix it.</span> +00232 <span class="comment"> */</span> +00233 RC200AudioOutSetVolume(!volume_left, 0x1f -volume_left, 0x1f -volume_left); +00234 } <span class="keywordflow">else</span> { +00235 delay; +00236 } +00237 +00238 <span class="keywordflow">if</span> ((AREA_EQUALIZER_MIN <= events->mask) && (events->mask <= AREA_EQUALIZER_MAX)) { +00239 +00240 events->locked_equalizer = TRUE; +00241 delay; +00242 reference_point = events->equalizer_display[(events->mask -5 -AREA_EQUALIZER_MIN) <- 7]; +00243 +00244 <span class="keywordflow">for</span> (index_offset = 9; index_offset != 0; index_offset--) { +00245 <span class="keywordtype">unsigned</span> 10 average_bar; +00246 <span class="keywordtype">unsigned</span> 7 equalizer_index; +00247 <span class="keywordtype">unsigned</span> 4 bar_index; +00248 +00249 <span class="keywordflow">if</span> (index_offset == 5) { +00250 reference_point = events->equalizer_display[(events->mask +5 -AREA_EQUALIZER_MIN) <- 7]; +00251 } <span class="keywordflow">else</span> { +00252 delay; +00253 } +00254 +00255 <span class="keywordflow">if</span> (index_offset > 5) { +00256 bar_index = (index_offset -5); +00257 } <span class="keywordflow">else</span> { +00258 bar_index = (5 -index_offset); +00259 } +00260 +00261 <span class="keywordflow">if</span> (reference_point > mousedata->y) { +00262 average_bar = mousedata->y -((reference_point -mousedata->y) >> (5 - bar_index)); +00263 } <span class="keywordflow">else</span> { +00264 average_bar = mousedata->y +((mousedata->y -reference_point) >> (5 - bar_index)); +00265 } +00266 +00267 equalizer_index = ((events->mask +5 -(0 @ index_offset) -AREA_EQUALIZER_MIN) <- 7); +00268 +00269 events->equalizer_display[equalizer_index] = average_bar; +00270 equalizer_levels.write[preset_offset +(0 @ equalizer_index)] = equalizer_table[average_bar -382]; +00271 } +00272 +00273 events->locked_equalizer = FALSE; +00274 } <span class="keywordflow">else</span> { +00275 delay; +00276 } +00277 +00278 <span class="keywordflow">break</span>; +00279 +00280 <span class="keywordflow">default</span>: +00281 <span class="keywordflow">break</span>; +00282 } +00283 } +00284 } <span class="comment">/* --- eventhandler_main() --- */</span> +00285 +00286 +00287 +00288 <span class="comment">/*</span> +00289 <span class="comment"> * Volume Control lookuptable.</span> +00290 <span class="comment"> * TODO: This table is now hardcoded. To ensure full skinability this table</span> +00291 <span class="comment"> * should be dynamically loaded.</span> +00292 <span class="comment"> */</span> +00293 rom <span class="keywordtype">unsigned</span> 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}; +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Nov 29 12:04:47 2004 for Graphic Equalizer by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address> +</body> +</html> |