diff --git a/DistrhoPlugin_8hpp_source.html b/DistrhoPlugin_8hpp_source.html new file mode 100644 index 00000000..0acfc337 --- /dev/null +++ b/DistrhoPlugin_8hpp_source.html @@ -0,0 +1,970 @@ + + + + + + +DISTRHO Plugin Framework: distrho/DistrhoPlugin.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ + +
+
+
+
DistrhoPlugin.hpp
+
+
+
1 /*
+
2  * DISTRHO Plugin Framework (DPF)
+
3  * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
+
4  *
+
5  * Permission to use, copy, modify, and/or distribute this software for any purpose with
+
6  * or without fee is hereby granted, provided that the above copyright notice and this
+
7  * permission notice appear in all copies.
+
8  *
+
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
+
10  * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
+
11  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+
12  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+
13  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
15  */
+
16 
+
17 #ifndef DISTRHO_PLUGIN_HPP_INCLUDED
+
18 #define DISTRHO_PLUGIN_HPP_INCLUDED
+
19 
+
20 #include "extra/d_string.hpp"
+
21 #include "src/DistrhoPluginChecks.h"
+
22 
+
23 #include <cmath>
+
24 
+
25 #ifdef DISTRHO_PROPER_CPP11_SUPPORT
+
26 # include <cstdint>
+
27 #else
+
28 # include <stdint.h>
+
29 #endif
+
30 
+
31 #ifndef M_PI
+
32 # define M_PI 3.14159265358979323846
+
33 #endif
+
34 
+
35 START_NAMESPACE_DISTRHO
+
36 
+
37 /**
+
38  @mainpage DISTRHO %Plugin Framework
+
39 
+
40  DISTRHO %Plugin Framework (or @b DPF for short)
+
41  is a plugin framework designed to make development of new plugins an easy and enjoyable task.@n
+
42  It allows developers to create plugins with custom UIs using a simple C++ API.
+
43 
+
44  @section Macros
+
45  You start by creating a "DistrhoPluginInfo.h" file describing the plugin via macros, see @ref PluginMacros.
+
46 
+
47  @section Plugin
+
48  TODO
+
49 
+
50  @section Parameters
+
51  describe input and output, automable and rt safe, boolean etc, cv
+
52 */
+
53 
+
54 /* ------------------------------------------------------------------------------------------------------------
+
55  * Plugin Macros */
+
56 
+
57 #ifdef DOXYGEN
+
58 
+
59 /**
+
60  @defgroup PluginMacros Plugin Macros
+
61 
+
62  C Macros that describe your plugin. (defined in the "DistrhoPluginInfo.h" file)
+
63 
+
64  With these macros you can tell the host what features your plugin requires.@n
+
65  Depending on which macros you enable, new functions will be available to call and/or override.
+
66 
+
67  All values are either integer or strings.@n
+
68  For boolean-like values 1 means 'on' and 0 means 'off'.
+
69 
+
70  The values defined in this file are for documentation purposes only.@n
+
71  All macros are disabled by default.
+
72 
+
73  Only 4 macros are required, they are:
+
74  - @ref DISTRHO_PLUGIN_NAME
+
75  - @ref DISTRHO_PLUGIN_NUM_INPUTS
+
76  - @ref DISTRHO_PLUGIN_NUM_OUTPUTS
+
77  - @ref DISTRHO_PLUGIN_URI
+
78  @{
+
79  */
+
80 
+
81 /**
+
82  The plugin name.@n
+
83  This is used to identify your plugin before a Plugin instance can be created.
+
84  @note This macro is required.
+
85  */
+
86 #define DISTRHO_PLUGIN_NAME "Plugin Name"
+
87 
+
88 /**
+
89  Number of audio inputs the plugin has.
+
90  @note This macro is required.
+
91  */
+
92 #define DISTRHO_PLUGIN_NUM_INPUTS 2
+
93 
+
94 /**
+
95  Number of audio outputs the plugin has.
+
96  @note This macro is required.
+
97  */
+
98 #define DISTRHO_PLUGIN_NUM_OUTPUTS 2
+
99 
+
100 /**
+
101  The plugin URI when exporting in LV2 format.
+
102  @note This macro is required.
+
103  */
+
104 #define DISTRHO_PLUGIN_URI "urn:distrho:name"
+
105 
+
106 /**
+
107  Wherever the plugin has a custom %UI.
+
108  @see DISTRHO_UI_USE_NANOVG
+
109  @see UI
+
110  */
+
111 #define DISTRHO_PLUGIN_HAS_UI 1
+
112 
+
113 /**
+
114  Wherever the plugin processing is realtime-safe.@n
+
115  TODO - list rtsafe requirements
+
116  */
+
117 #define DISTRHO_PLUGIN_IS_RT_SAFE 1
+
118 
+
119 /**
+
120  Wherever the plugin is a synth.@n
+
121  @ref DISTRHO_PLUGIN_WANT_MIDI_INPUT is automatically enabled when this is too.
+
122  @see DISTRHO_PLUGIN_WANT_MIDI_INPUT
+
123  */
+
124 #define DISTRHO_PLUGIN_IS_SYNTH 1
+
125 
+
126 /**
+
127  Enable direct access between the %UI and plugin code.
+
128  @see UI::d_getPluginInstancePointer()
+
129  @note DO NOT USE THIS UNLESS STRICTLY NECESSARY!!
+
130  Try to avoid it at all costs!
+
131  */
+
132 #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 0
+
133 
+
134 /**
+
135  Wherever the plugin introduces latency during audio or midi processing.
+
136  @see Plugin::d_setLatency(uint32_t)
+
137  */
+
138 #define DISTRHO_PLUGIN_WANT_LATENCY 1
+
139 
+
140 /**
+
141  Wherever the plugin wants MIDI input.@n
+
142  This is automatically enabled if @ref DISTRHO_PLUGIN_IS_SYNTH is true.
+
143  */
+
144 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1
+
145 
+
146 /**
+
147  Wherever the plugin wants MIDI output.
+
148  @see Plugin::d_writeMidiEvent(const MidiEvent&)
+
149  */
+
150 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1
+
151 
+
152 /**
+
153  Wherever the plugin provides its own internal programs.
+
154  @see Plugin::d_initProgramName(uint32_t, d_string&)
+
155  @see Plugin::d_setProgram(uint32_t)
+
156  */
+
157 #define DISTRHO_PLUGIN_WANT_PROGRAMS 1
+
158 
+
159 /**
+
160  Wherever the plugin uses internal non-parameter data.
+
161  @see Plugin::d_initState(uint32_t, d_string&, d_string&)
+
162  @see Plugin::d_setState(const char*, const char*)
+
163  */
+
164 #define DISTRHO_PLUGIN_WANT_STATE 1
+
165 
+
166 /**
+
167  Wherever the plugin wants time position information from the host.
+
168  @see Plugin::d_getTimePosition()
+
169  */
+
170 #define DISTRHO_PLUGIN_WANT_TIMEPOS 1
+
171 
+
172 /**
+
173  Wherever the %UI uses NanoVG for drawing instead of the default raw OpenGL calls.@n
+
174  When enabled your %UI instance will subclass @ref NanoWidget instead of @ref Widget.
+
175  */
+
176 #define DISTRHO_UI_USE_NANOVG 1
+
177 
+
178 /**
+
179  The %UI URI when exporting in LV2 format.@n
+
180  By default this is set to @ref DISTRHO_PLUGIN_URI with "#UI" as suffix.
+
181  */
+
182 #define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI"
+
183 
+
184 /** @} */
+
185 
+
186 #endif
+
187 
+
188 /* ------------------------------------------------------------------------------------------------------------
+
189  * Parameter Hints */
+
190 
+
191 /**
+
192  @defgroup ParameterHints Parameter Hints
+
193 
+
194  Various parameter hints.
+
195  @see Parameter::hints
+
196  @{
+
197  */
+
198 
+
199 /**
+
200  Parameter is automable (real-time safe).
+
201  @see Plugin::d_setParameterValue()
+
202  */
+
203 static const uint32_t kParameterIsAutomable = 0x01;
+
204 
+
205 /**
+
206  Parameter value is boolean.
+
207  It's always at either minimum or maximum value.
+
208  */
+
209 static const uint32_t kParameterIsBoolean = 0x02;
+
210 
+
211 /**
+
212  Parameter value is integer.
+
213  */
+
214 static const uint32_t kParameterIsInteger = 0x04;
+
215 
+
216 /**
+
217  Parameter value is logarithmic.
+
218  */
+
219 static const uint32_t kParameterIsLogarithmic = 0x08;
+
220 
+
221 /**
+
222  Parameter is of output type.
+
223  When unset, parameter is assumed to be of input type.
+
224 
+
225  Parameter inputs are changed by the host and must not be changed by the plugin.
+
226  The only exception being when changing programs, see Plugin::d_setProgram().
+
227  Outputs are changed by the plugin and never modified by the host.
+
228  */
+
229 static const uint32_t kParameterIsOutput = 0x10;
+
230 
+
231 /**
+
232  Parameter can be used as control voltage (LV2 only).
+
233  */
+
234 static const uint32_t kParameterIsCV = 0x20;
+
235 
+
236 /** @} */
+
237 
+
238 /* ------------------------------------------------------------------------------------------------------------
+
239  * DPF Base structs */
+
240 
+
241 /**
+
242  @defgroup BaseStructs Base Structs
+
243  @{
+
244  */
+
245 
+
246 /**
+
247  Parameter ranges.
+
248  This is used to set the default, minimum and maximum values of a parameter.
+
249 
+
250  By default a parameter has 0.0 as minimum, 1.0 as maximum and 0.0 as default.
+
251  When changing this struct values you must ensure maximum > minimum and default is within range.
+
252  */
+ +
254  /**
+
255  Default value.
+
256  */
+
257  float def;
+
258 
+
259  /**
+
260  Minimum value.
+
261  */
+
262  float min;
+
263 
+
264  /**
+
265  Maximum value.
+
266  */
+
267  float max;
+
268 
+
269  /**
+
270  Default constructor.
+
271  */
+
272  ParameterRanges() noexcept
+
273  : def(0.0f),
+
274  min(0.0f),
+
275  max(1.0f) {}
+
276 
+
277  /**
+
278  Constructor using custom values.
+
279  */
+
280  ParameterRanges(const float df, const float mn, const float mx) noexcept
+
281  : def(df),
+
282  min(mn),
+
283  max(mx) {}
+
284 
+
285  /**
+
286  Fix the default value within range.
+
287  */
+
288  void fixDefault() noexcept
+
289  {
+
290  fixValue(def);
+
291  }
+
292 
+
293  /**
+
294  Fix a value within range.
+
295  */
+
296  void fixValue(float& value) const noexcept
+
297  {
+
298  if (value < min)
+
299  value = min;
+
300  else if (value > max)
+
301  value = max;
+
302  }
+
303 
+
304  /**
+
305  Get a fixed value within range.
+
306  */
+
307  const float& getFixedValue(const float& value) const noexcept
+
308  {
+
309  if (value <= min)
+
310  return min;
+
311  if (value >= max)
+
312  return max;
+
313  return value;
+
314  }
+
315 
+
316  /**
+
317  Get a value normalized to 0.0<->1.0.
+
318  */
+
319  float getNormalizedValue(const float& value) const noexcept
+
320  {
+
321  const float normValue((value - min) / (max - min));
+
322 
+
323  if (normValue <= 0.0f)
+
324  return 0.0f;
+
325  if (normValue >= 1.0f)
+
326  return 1.0f;
+
327  return normValue;
+
328  }
+
329 
+
330  /**
+
331  Get a value normalized to 0.0<->1.0, fixed within range.
+
332  */
+
333  float getFixedAndNormalizedValue(const float& value) const noexcept
+
334  {
+
335  if (value <= min)
+
336  return 0.0f;
+
337  if (value >= max)
+
338  return 1.0f;
+
339 
+
340  const float normValue((value - min) / (max - min));
+
341 
+
342  if (normValue <= 0.0f)
+
343  return 0.0f;
+
344  if (normValue >= 1.0f)
+
345  return 1.0f;
+
346 
+
347  return normValue;
+
348  }
+
349 
+
350  /**
+
351  Get a proper value previously normalized to 0.0<->1.0.
+
352  */
+
353  float getUnnormalizedValue(const float& value) const noexcept
+
354  {
+
355  if (value <= 0.0f)
+
356  return min;
+
357  if (value >= 1.0f)
+
358  return max;
+
359 
+
360  return value * (max - min) + min;
+
361  }
+
362 };
+
363 
+
364 /**
+
365  Parameter.
+
366  */
+
367 struct Parameter {
+
368  /**
+
369  Hints describing this parameter.
+
370  @see ParameterHints
+
371  */
+
372  uint32_t hints;
+
373 
+
374  /**
+
375  The name of this parameter.
+
376  A parameter name can contain any character, but hosts might have a hard time with non-ascii ones.
+
377  The name doesn't have to be unique within a plugin instance, but it's recommended.
+
378  */
+
379  d_string name;
+
380 
+
381  /**
+
382  The symbol of this parameter.
+
383  A parameter symbol is a short restricted name used as a machine and human readable identifier.
+
384  The first character must be one of _, a-z or A-Z and subsequent characters can be from _, a-z, A-Z and 0-9.
+
385  @note: Parameter symbols MUST be unique within a plugin instance.
+
386  */
+
387  d_string symbol;
+
388 
+
389  /**
+
390  The unit of this parameter.
+
391  This means something like "dB", "kHz" and "ms".
+
392  Can be left blank if units do not apply to this parameter.
+
393  */
+
394  d_string unit;
+
395 
+
396  /**
+
397  Ranges of this parameter.
+
398  The ranges describe the default, minimum and maximum values.
+
399  */
+ +
401 
+
402  /**
+
403  Default constructor for a null parameter.
+
404  */
+
405  Parameter() noexcept
+
406  : hints(0x0),
+
407  name(),
+
408  symbol(),
+
409  unit(),
+
410  ranges() {}
+
411 };
+
412 
+
413 /**
+
414  MIDI event.
+
415  */
+
416 struct MidiEvent {
+
417  /**
+
418  Size of internal data.
+
419  */
+
420  static const uint32_t kDataSize = 4;
+
421 
+
422  /**
+
423  Time offset in frames.
+
424  */
+
425  uint32_t frame;
+
426 
+
427  /**
+
428  Number of bytes used.
+
429  */
+
430  uint32_t size;
+
431 
+
432  /**
+
433  MIDI data.
+
434  If size > kDataSize, dataExt is used (otherwise null).
+
435  */
+
436  uint8_t data[kDataSize];
+
437  const uint8_t* dataExt;
+
438 };
+
439 
+
440 /**
+
441  Time position.
+
442  The @a playing and @a frame values are always valid.
+
443  BBT values are only valid when @a bbt.valid is true.
+
444 
+
445  This struct is inspired by the JACK Transport API.
+
446  */
+
447 struct TimePosition {
+
448  /**
+
449  Wherever the host transport is playing/rolling.
+
450  */
+
451  bool playing;
+
452 
+
453  /**
+
454  Current host transport position in frames.
+
455  */
+
456  uint64_t frame;
+
457 
+
458  /**
+
459  Bar-Beat-Tick time position.
+
460  */
+
461  struct BarBeatTick {
+
462  /**
+
463  Wherever the host transport is using BBT.
+
464  If false you must not read from this struct.
+
465  */
+
466  bool valid;
+
467 
+
468  /**
+
469  Current bar.
+
470  Should always be > 0.
+
471  The first bar is bar '1'.
+
472  */
+
473  int32_t bar;
+
474 
+
475  /**
+
476  Current beat within bar.
+
477  Should always be > 0 and <= @a beatsPerBar.
+
478  The first beat is beat '1'.
+
479  */
+
480  int32_t beat;
+
481 
+
482  /**
+
483  Current tick within beat.
+
484  Should always be > 0 and <= @a ticksPerBeat.
+
485  The first tick is tick '0'.
+
486  */
+
487  int32_t tick;
+
488 
+
489  /**
+
490  Number of ticks that have elapsed between frame 0 and the first beat of the current measure.
+
491  */
+
492  double barStartTick;
+
493 
+
494  /**
+
495  Time signature "numerator".
+
496  */
+
497  float beatsPerBar;
+
498 
+
499  /**
+
500  Time signature "denominator".
+
501  */
+
502  float beatType;
+
503 
+
504  /**
+
505  Number of ticks within a bar.
+
506  Usually a moderately large integer with many denominators, such as 1920.0.
+
507  */
+
508  double ticksPerBeat;
+
509 
+
510  /**
+
511  Number of beats per minute.
+
512  */
+ +
514 
+
515  /**
+
516  Default constructor for a null BBT time position.
+
517  */
+
518  BarBeatTick() noexcept
+
519  : valid(false),
+
520  bar(0),
+
521  beat(0),
+
522  tick(0),
+
523  barStartTick(0.0),
+
524  beatsPerBar(0.0f),
+
525  beatType(0.0f),
+
526  ticksPerBeat(0.0),
+
527  beatsPerMinute(0.0) {}
+
528  } bbt;
+
529 
+
530  /**
+
531  Default constructor for a time position.
+
532  */
+
533  TimePosition() noexcept
+
534  : playing(false),
+
535  frame(0),
+
536  bbt() {}
+
537 };
+
538 
+
539 /** @} */
+
540 
+
541 /* ------------------------------------------------------------------------------------------------------------
+
542  * DPF Plugin */
+
543 
+
544 /**
+
545  DPF Plugin class from where plugin instances are created.
+
546 
+
547  The public methods (Host state) are called from the plugin to get or set host information.
+
548  They can be called from a plugin instance at anytime unless stated otherwise.
+
549  All other methods are to be implemented by the plugin and will be called by the host.
+
550 
+
551  Shortly after a plugin instance is created, the various d_init* functions will be called by the host.
+
552  Host will call d_activate() before d_run(), and d_deactivate() before the plugin instance is destroyed.
+
553  The host may call deactivate right after activate and vice-versa, but never activate/deactivate consecutively.
+
554  There is no limit on how many times d_run() is called, only that activate/deactivate will be called in between.
+
555 
+
556  The buffer size and sample rate values will remain constant between activate and deactivate.
+
557  Buffer size is only a hint though, the host might call d_run() with a higher or lower number of frames.
+
558 
+
559  Some of this class functions are only available according to some macros.
+
560 
+
561  DISTRHO_PLUGIN_WANT_PROGRAMS activates program related features.
+
562  When enabled you need to implement d_initProgramName() and d_setProgram().
+
563 
+
564  DISTRHO_PLUGIN_WANT_STATE activates internal state features.
+
565  When enabled you need to implement d_initStateKey() and d_setState().
+
566 
+
567  The process function d_run() changes wherever DISTRHO_PLUGIN_WANT_MIDI_INPUT is enabled or not.
+
568  When enabled it provides midi input events.
+
569  */
+
570 class Plugin
+
571 {
+
572 public:
+
573  /**
+
574  Plugin class constructor.
+
575  You must set all parameter values to their defaults, matching ParameterRanges::def.
+
576  If you're using states you must also set them to their defaults by calling d_setState().
+
577  */
+
578  Plugin(const uint32_t parameterCount, const uint32_t programCount, const uint32_t stateCount);
+
579 
+
580  /**
+
581  Destructor.
+
582  */
+
583  virtual ~Plugin();
+
584 
+
585  /* --------------------------------------------------------------------------------------------------------
+
586  * Host state */
+
587 
+
588  /**
+
589  Get the current buffer size that will probably be used during processing, in frames.
+
590  This value will remain constant between activate and deactivate.
+
591  @note: This value is only a hint!
+
592  Hosts might call d_run() with a higher or lower number of frames.
+
593  @see d_bufferSizeChanged(uint32_t)
+
594  */
+
595  uint32_t d_getBufferSize() const noexcept;
+
596 
+
597  /**
+
598  Get the current sample rate that will be used during processing.
+
599  This value will remain constant between activate and deactivate.
+
600  @see d_sampleRateChanged(double)
+
601  */
+
602  double d_getSampleRate() const noexcept;
+
603 
+
604 #if DISTRHO_PLUGIN_WANT_TIMEPOS
+
605  /**
+
606  Get the current host transport time position.
+
607  This function should only be called during d_run().
+
608  You can call this during other times, but the returned position is not guaranteed to be in sync.
+
609  @note: TimePos is not supported in LADSPA and DSSI plugin formats.
+
610  */
+
611  const TimePosition& d_getTimePosition() const noexcept;
+
612 #endif
+
613 
+
614 #if DISTRHO_PLUGIN_WANT_LATENCY
+
615  /**
+
616  Change the plugin audio output latency to @a frames.
+
617  This function should only be called in the constructor, d_activate() and d_run().
+
618  @note This function is only available if DISTRHO_PLUGIN_WANT_LATENCY is enabled.
+
619  */
+
620  void d_setLatency(uint32_t frames) noexcept;
+
621 #endif
+
622 
+
623 #if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
+
624  /**
+
625  Write a MIDI output event.
+
626  This function must only be called during d_run().
+
627  Returns false when the host buffer is full, in which case do not call this again until the next d_run().
+
628  */
+
629  bool d_writeMidiEvent(const MidiEvent& midiEvent) noexcept;
+
630 #endif
+
631 
+
632 protected:
+
633  /* --------------------------------------------------------------------------------------------------------
+
634  * Information */
+
635 
+
636  /**
+
637  Get the plugin name.
+
638  Returns DISTRHO_PLUGIN_NAME by default.
+
639  */
+
640  virtual const char* d_getName() const { return DISTRHO_PLUGIN_NAME; }
+
641 
+
642  /**
+
643  Get the plugin label.
+
644  A plugin label follows the same rules as Parameter::symbol, with the exception that it can start with numbers.
+
645  */
+
646  virtual const char* d_getLabel() const = 0;
+
647 
+
648  /**
+
649  Get the plugin author/maker.
+
650  */
+
651  virtual const char* d_getMaker() const = 0;
+
652 
+
653  /**
+
654  Get the plugin license name (a single line of text).
+
655  */
+
656  virtual const char* d_getLicense() const = 0;
+
657 
+
658  /**
+
659  Get the plugin version, in hexadecimal.
+
660  TODO format to be defined
+
661  */
+
662  virtual uint32_t d_getVersion() const = 0;
+
663 
+
664  /**
+
665  Get the plugin unique Id.
+
666  This value is used by LADSPA, DSSI and VST plugin formats.
+
667  */
+
668  virtual int64_t d_getUniqueId() const = 0;
+
669 
+
670  /* --------------------------------------------------------------------------------------------------------
+
671  * Init */
+
672 
+
673  /**
+
674  Initialize the parameter @a index.
+
675  This function will be called once, shortly after the plugin is created.
+
676  */
+
677  virtual void d_initParameter(uint32_t index, Parameter& parameter) = 0;
+
678 
+
679 #if DISTRHO_PLUGIN_WANT_PROGRAMS
+
680  /**
+
681  Set the name of the program @a index.
+
682  This function will be called once, shortly after the plugin is created.
+
683  Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_PROGRAMS is enabled.
+
684  */
+
685  virtual void d_initProgramName(uint32_t index, d_string& programName) = 0;
+
686 #endif
+
687 
+
688 #if DISTRHO_PLUGIN_WANT_STATE
+
689  /**
+
690  Set the state key and default value of @a index.
+
691  This function will be called once, shortly after the plugin is created.
+
692  Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_STATE is enabled.
+
693  */
+
694  virtual void d_initState(uint32_t index, d_string& stateKey, d_string& defaultStateValue) = 0;
+
695 #endif
+
696 
+
697  /* --------------------------------------------------------------------------------------------------------
+
698  * Internal data */
+
699 
+
700  /**
+
701  Get the current value of a parameter.
+
702  The host may call this function from any context, including realtime processing.
+
703  */
+
704  virtual float d_getParameterValue(uint32_t index) const = 0;
+
705 
+
706  /**
+
707  Change a parameter value.
+
708  The host may call this function from any context, including realtime processing.
+
709  When a parameter is marked as automable, you must ensure no non-realtime operations are called.
+
710  @note This function will only be called for parameter inputs.
+
711  */
+
712  virtual void d_setParameterValue(uint32_t index, float value) = 0;
+
713 
+
714 #if DISTRHO_PLUGIN_WANT_PROGRAMS
+
715  /**
+
716  Change the currently used program to @a index.
+
717  The host may call this function from any context, including realtime processing.
+
718  Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_PROGRAMS is enabled.
+
719  */
+
720  virtual void d_setProgram(uint32_t index) = 0;
+
721 #endif
+
722 
+
723 #if DISTRHO_PLUGIN_WANT_STATE
+
724  /**
+
725  Change an internal state @a key to @a value.
+
726  Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_STATE is enabled.
+
727  */
+
728  virtual void d_setState(const char* key, const char* value) = 0;
+
729 #endif
+
730 
+
731  /* --------------------------------------------------------------------------------------------------------
+
732  * Process */
+
733 
+
734  /**
+
735  Activate this plugin.
+
736  */
+
737  virtual void d_activate() {}
+
738 
+
739  /**
+
740  Deactivate this plugin.
+
741  */
+
742  virtual void d_deactivate() {}
+
743 
+
744 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT
+
745  /**
+
746  Run/process function for plugins with MIDI input.
+
747  @note: Some parameters might be null if there are no audio inputs/outputs or MIDI events.
+
748  */
+
749  virtual void d_run(const float** inputs, float** outputs, uint32_t frames,
+
750  const MidiEvent* midiEvents, uint32_t midiEventCount) = 0;
+
751 #else
+
752  /**
+
753  Run/process function for plugins without MIDI input.
+
754  @note: Some parameters might be null if there are no audio inputs or outputs.
+
755  */
+
756  virtual void d_run(const float** inputs, float** outputs, uint32_t frames) = 0;
+
757 #endif
+
758 
+
759  /* --------------------------------------------------------------------------------------------------------
+
760  * Callbacks (optional) */
+
761 
+
762  /**
+
763  Optional callback to inform the plugin about a buffer size change.
+
764  This function will only be called when the plugin is deactivated.
+
765  @note: This value is only a hint!
+
766  Hosts might call d_run() with a higher or lower number of frames.
+
767  @see d_getBufferSize()
+
768  */
+
769  virtual void d_bufferSizeChanged(uint32_t newBufferSize);
+
770 
+
771  /**
+
772  Optional callback to inform the plugin about a sample rate change.
+
773  This function will only be called when the plugin is deactivated.
+
774  @see d_getSampleRate()
+
775  */
+
776  virtual void d_sampleRateChanged(double newSampleRate);
+
777 
+
778  // -------------------------------------------------------------------------------------------------------
+
779 
+
780 private:
+
781  struct PrivateData;
+
782  PrivateData* const pData;
+
783  friend class PluginExporter;
+
784 
+
785  DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Plugin)
+
786 };
+
787 
+
788 /* ------------------------------------------------------------------------------------------------------------
+
789  * Create plugin, entry point */
+
790 
+
791 /**
+
792  TODO.
+
793  */
+
794 extern Plugin* createPlugin();
+
795 
+
796 // -----------------------------------------------------------------------------------------------------------
+
797 
+
798 END_NAMESPACE_DISTRHO
+
799 
+
800 #endif // DISTRHO_PLUGIN_HPP_INCLUDED
+
float min
Definition: DistrhoPlugin.hpp:262
+
virtual const char * d_getMaker() const =0
+
virtual void d_initState(uint32_t index, d_string &stateKey, d_string &defaultStateValue)=0
+
virtual void d_deactivate()
Definition: DistrhoPlugin.hpp:742
+
Plugin(const uint32_t parameterCount, const uint32_t programCount, const uint32_t stateCount)
+
const TimePosition & d_getTimePosition() const noexcept
+
virtual int64_t d_getUniqueId() const =0
+
Parameter() noexcept
Definition: DistrhoPlugin.hpp:405
+
uint32_t frame
Definition: DistrhoPlugin.hpp:425
+
virtual uint32_t d_getVersion() const =0
+
uint32_t size
Definition: DistrhoPlugin.hpp:430
+
bool d_writeMidiEvent(const MidiEvent &midiEvent) noexcept
+
uint8_t data[kDataSize]
Definition: DistrhoPlugin.hpp:436
+
virtual float d_getParameterValue(uint32_t index) const =0
+
virtual void d_setParameterValue(uint32_t index, float value)=0
+
virtual const char * d_getLabel() const =0
+
void fixValue(float &value) const noexcept
Definition: DistrhoPlugin.hpp:296
+
virtual void d_sampleRateChanged(double newSampleRate)
+
double ticksPerBeat
Definition: DistrhoPlugin.hpp:508
+
virtual const char * d_getName() const
Definition: DistrhoPlugin.hpp:640
+
Definition: DistrhoPlugin.hpp:416
+
int32_t bar
Definition: DistrhoPlugin.hpp:473
+
virtual void d_run(const float **inputs, float **outputs, uint32_t frames, const MidiEvent *midiEvents, uint32_t midiEventCount)=0
+
virtual const char * d_getLicense() const =0
+
#define DISTRHO_PLUGIN_NAME
Definition: DistrhoPlugin.hpp:86
+
ParameterRanges() noexcept
Definition: DistrhoPlugin.hpp:272
+
double beatsPerMinute
Definition: DistrhoPlugin.hpp:513
+
uint32_t hints
Definition: DistrhoPlugin.hpp:372
+
static const uint32_t kParameterIsCV
Definition: DistrhoPlugin.hpp:234
+
Definition: DistrhoPlugin.hpp:570
+
float getUnnormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:353
+
bool playing
Definition: DistrhoPlugin.hpp:451
+
int32_t tick
Definition: DistrhoPlugin.hpp:487
+
float beatsPerBar
Definition: DistrhoPlugin.hpp:497
+
virtual ~Plugin()
+
TimePosition() noexcept
Definition: DistrhoPlugin.hpp:533
+
virtual void d_setProgram(uint32_t index)=0
+
uint64_t frame
Definition: DistrhoPlugin.hpp:456
+
BarBeatTick() noexcept
Definition: DistrhoPlugin.hpp:518
+
static const uint32_t kParameterIsAutomable
Definition: DistrhoPlugin.hpp:203
+
virtual void d_setState(const char *key, const char *value)=0
+
float beatType
Definition: DistrhoPlugin.hpp:502
+
float getNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:319
+
float def
Definition: DistrhoPlugin.hpp:257
+
double barStartTick
Definition: DistrhoPlugin.hpp:492
+
d_string name
Definition: DistrhoPlugin.hpp:379
+
void d_setLatency(uint32_t frames) noexcept
+
d_string unit
Definition: DistrhoPlugin.hpp:394
+
ParameterRanges ranges
Definition: DistrhoPlugin.hpp:400
+
int32_t beat
Definition: DistrhoPlugin.hpp:480
+
virtual void d_initParameter(uint32_t index, Parameter &parameter)=0
+
virtual void d_bufferSizeChanged(uint32_t newBufferSize)
+
const float & getFixedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:307
+
static const uint32_t kParameterIsBoolean
Definition: DistrhoPlugin.hpp:209
+
float max
Definition: DistrhoPlugin.hpp:267
+
Definition: DistrhoPlugin.hpp:253
+
static const uint32_t kParameterIsInteger
Definition: DistrhoPlugin.hpp:214
+
Definition: DistrhoPlugin.hpp:367
+
bool valid
Definition: DistrhoPlugin.hpp:466
+
static const uint32_t kDataSize
Definition: DistrhoPlugin.hpp:420
+
d_string symbol
Definition: DistrhoPlugin.hpp:387
+
void fixDefault() noexcept
Definition: DistrhoPlugin.hpp:288
+
double d_getSampleRate() const noexcept
+
float getFixedAndNormalizedValue(const float &value) const noexcept
Definition: DistrhoPlugin.hpp:333
+
virtual void d_activate()
Definition: DistrhoPlugin.hpp:737
+
static const uint32_t kParameterIsOutput
Definition: DistrhoPlugin.hpp:229
+
Definition: DistrhoPlugin.hpp:461
+
Definition: DistrhoPlugin.hpp:447
+
virtual void d_initProgramName(uint32_t index, d_string &programName)=0
+
uint32_t d_getBufferSize() const noexcept
+
static const uint32_t kParameterIsLogarithmic
Definition: DistrhoPlugin.hpp:219
+
ParameterRanges(const float df, const float mn, const float mx) noexcept
Definition: DistrhoPlugin.hpp:280
+
+ + + + diff --git a/DistrhoUI_8hpp_source.html b/DistrhoUI_8hpp_source.html new file mode 100644 index 00000000..641449ee --- /dev/null +++ b/DistrhoUI_8hpp_source.html @@ -0,0 +1,311 @@ + + + + + + +DISTRHO Plugin Framework: distrho/DistrhoUI.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ + +
+
+
+
DistrhoUI.hpp
+
+
+
1 /*
+
2  * DISTRHO Plugin Framework (DPF)
+
3  * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
+
4  *
+
5  * Permission to use, copy, modify, and/or distribute this software for any purpose with
+
6  * or without fee is hereby granted, provided that the above copyright notice and this
+
7  * permission notice appear in all copies.
+
8  *
+
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
+
10  * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
+
11  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+
12  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+
13  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
15  */
+
16 
+
17 #ifndef DISTRHO_UI_HPP_INCLUDED
+
18 #define DISTRHO_UI_HPP_INCLUDED
+
19 
+
20 #include "extra/d_leakdetector.hpp"
+
21 #include "src/DistrhoPluginChecks.h"
+
22 
+
23 #if DISTRHO_UI_USE_NANOVG
+
24 # include "../dgl/NanoVG.hpp"
+
25 typedef DGL::NanoWidget UIWidget;
+
26 #else
+
27 # include "../dgl/Widget.hpp"
+
28 typedef DGL::Widget UIWidget;
+
29 #endif
+
30 
+
31 START_NAMESPACE_DISTRHO
+
32 
+
33 /* ------------------------------------------------------------------------------------------------------------
+
34  * DPF UI */
+
35 
+
36 /**
+
37  DPF UI class from where UI instances are created.
+
38 
+
39  TODO.
+
40 
+
41  must call setSize during construction,
+
42  */
+
43 class UI : public UIWidget
+
44 {
+
45 public:
+
46  /**
+
47  UI class constructor.
+
48  The UI should be initialized to a default state that matches the plugin side.
+
49  */
+
50  UI(uint width = 0, uint height = 0);
+
51 
+
52  /**
+
53  Destructor.
+
54  */
+
55  virtual ~UI();
+
56 
+
57  /* --------------------------------------------------------------------------------------------------------
+
58  * Host state */
+
59 
+
60  /**
+
61  Get the current sample rate used in plugin processing.
+
62  @see d_sampleRateChanged(double)
+
63  */
+
64  double d_getSampleRate() const noexcept;
+
65 
+
66  /**
+
67  TODO: Document this.
+
68  */
+
69  void d_editParameter(const uint32_t index, const bool started);
+
70 
+
71  /**
+
72  TODO: Document this.
+
73  */
+
74  void d_setParameterValue(const uint32_t index, const float value);
+
75 
+
76 #if DISTRHO_PLUGIN_WANT_STATE
+
77  /**
+
78  TODO: Document this.
+
79  */
+
80  void d_setState(const char* const key, const char* const value);
+
81 #endif
+
82 
+
83 #if DISTRHO_PLUGIN_IS_SYNTH
+
84  /**
+
85  TODO: Document this.
+
86  */
+
87  void d_sendNote(const uint8_t channel, const uint8_t note, const uint8_t velocity);
+
88 #endif
+
89 
+
90 #if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
+
91  /* --------------------------------------------------------------------------------------------------------
+
92  * Direct DSP access - DO NOT USE THIS UNLESS STRICTLY NECESSARY!! */
+
93 
+
94  /**
+
95  TODO: Document this.
+
96  */
+
97  void* d_getPluginInstancePointer() const noexcept;
+
98 #endif
+
99 
+
100 protected:
+
101  /* --------------------------------------------------------------------------------------------------------
+
102  * DSP/Plugin Callbacks */
+
103 
+
104  /**
+
105  A parameter has changed on the plugin side.
+
106  This is called by the host to inform the UI about parameter changes.
+
107  */
+
108  virtual void d_parameterChanged(uint32_t index, float value) = 0;
+
109 
+
110 #if DISTRHO_PLUGIN_WANT_PROGRAMS
+
111  /**
+
112  The current program has changed on the plugin side.
+
113  This is called by the host to inform the UI about program changes.
+
114  */
+
115  virtual void d_programChanged(uint32_t index) = 0;
+
116 #endif
+
117 
+
118 #if DISTRHO_PLUGIN_WANT_STATE
+
119  /**
+
120  A state has changed on the plugin side.
+
121  This is called by the host to inform the UI about state changes.
+
122  */
+
123  virtual void d_stateChanged(const char* key, const char* value) = 0;
+
124 #endif
+
125 
+
126  /* --------------------------------------------------------------------------------------------------------
+
127  * DSP/Plugin Callbacks (optional) */
+
128 
+
129  /**
+
130  Optional callback to inform the UI about a sample rate change on the plugin side.
+
131  @see d_getSampleRate()
+
132  */
+
133  virtual void d_sampleRateChanged(double newSampleRate);
+
134 
+
135  /* --------------------------------------------------------------------------------------------------------
+
136  * UI Callbacks (optional) */
+
137 
+
138  /**
+
139  TODO: Document this.
+
140  */
+
141  virtual void d_uiIdle() {}
+
142 
+
143  /**
+
144  File browser selected function.
+
145  @see Window::fileBrowserSelected(const char*)
+
146  */
+
147  virtual void d_uiFileBrowserSelected(const char* filename);
+
148 
+
149  /**
+
150  OpenGL window reshape function, called when parent window is resized.
+
151  You can reimplement this function for a custom OpenGL state.
+
152  @see Window::onReshape(uint,uint)
+
153  */
+
154  virtual void d_uiReshape(uint width, uint height);
+
155 
+
156  /* --------------------------------------------------------------------------------------------------------
+
157  * UI Resize Handling, internal */
+
158 
+
159  /**
+
160  OpenGL widget resize function, called when the widget is resized.
+
161  This is overriden here so the host knows when the UI is resized by you.
+
162  @see Widget::onResize(const ResizeEvent&)
+
163  */
+
164  void onResize(const ResizeEvent& ev) override;
+
165 
+
166  // -------------------------------------------------------------------------------------------------------
+
167 
+
168 private:
+
169  struct PrivateData;
+
170  PrivateData* const pData;
+
171  friend class UIExporter;
+
172  friend class UIExporterWindow;
+
173 
+
174  // these should not be used
+
175  void setAbsoluteX(int) const noexcept {}
+
176  void setAbsoluteY(int) const noexcept {}
+
177  void setAbsolutePos(int, int) const noexcept {}
+
178  void setAbsolutePos(const DGL::Point<int>&) const noexcept {}
+
179  void setNeedsFullViewport(bool) const noexcept {}
+
180 
+
181  DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(UI)
+
182 };
+
183 
+
184 /* ------------------------------------------------------------------------------------------------------------
+
185  * Create UI, entry point */
+
186 
+
187 /**
+
188  TODO.
+
189  */
+
190 extern UI* createUI();
+
191 
+
192 // -----------------------------------------------------------------------------------------------------------
+
193 
+
194 END_NAMESPACE_DISTRHO
+
195 
+
196 #endif // DISTRHO_UI_HPP_INCLUDED
+
virtual void d_sampleRateChanged(double newSampleRate)
+
void onResize(const ResizeEvent &ev) override
+
virtual ~UI()
+
virtual void d_stateChanged(const char *key, const char *value)=0
+
void * d_getPluginInstancePointer() const noexcept
+
virtual void d_parameterChanged(uint32_t index, float value)=0
+
virtual void d_uiFileBrowserSelected(const char *filename)
+
void d_setState(const char *const key, const char *const value)
+
virtual void d_programChanged(uint32_t index)=0
+
UI(uint width=0, uint height=0)
+
virtual void d_uiIdle()
Definition: DistrhoUI.hpp:141
+
void d_sendNote(const uint8_t channel, const uint8_t note, const uint8_t velocity)
+
void d_editParameter(const uint32_t index, const bool started)
+
Definition: DistrhoUI.hpp:43
+
double d_getSampleRate() const noexcept
+
void d_setParameterValue(const uint32_t index, const float value)
+
virtual void d_uiReshape(uint width, uint height)
+
+ + + + diff --git a/DistrhoUtils_8hpp_source.html b/DistrhoUtils_8hpp_source.html new file mode 100644 index 00000000..8db41485 --- /dev/null +++ b/DistrhoUtils_8hpp_source.html @@ -0,0 +1,300 @@ + + + + + + +DISTRHO Plugin Framework: distrho/DistrhoUtils.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ + +
+
+
+
DistrhoUtils.hpp
+
+
+
1 /*
+
2  * DISTRHO Plugin Framework (DPF)
+
3  * Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
+
4  *
+
5  * Permission to use, copy, modify, and/or distribute this software for any purpose with
+
6  * or without fee is hereby granted, provided that the above copyright notice and this
+
7  * permission notice appear in all copies.
+
8  *
+
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
+
10  * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
+
11  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+
12  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+
13  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
15  */
+
16 
+
17 #ifndef DISTRHO_UTILS_HPP_INCLUDED
+
18 #define DISTRHO_UTILS_HPP_INCLUDED
+
19 
+
20 #include "src/DistrhoDefines.h"
+
21 
+
22 #include <cstdarg>
+
23 #include <cstdio>
+
24 #include <cstdlib>
+
25 #include <cstring>
+
26 
+
27 #include <cmath>
+
28 #include <limits>
+
29 
+
30 #ifdef DISTRHO_PROPER_CPP11_SUPPORT
+
31 # include <cstdint>
+
32 #else
+
33 # include <stdint.h>
+
34 #endif
+
35 
+
36 #if defined(DISTRHO_OS_MAC) && ! defined(CARLA_OS_MAC)
+
37 namespace std {
+
38 inline float fmin(float __x, float __y)
+
39  { return __builtin_fminf(__x, __y); }
+
40 inline float fmax(float __x, float __y)
+
41  { return __builtin_fmaxf(__x, __y); }
+
42 inline float rint(float __x)
+
43  { return __builtin_rintf(__x); }
+
44 inline float round(float __x)
+
45  { return __builtin_roundf(__x); }
+
46 }
+
47 #endif
+
48 
+
49 // -----------------------------------------------------------------------
+
50 // misc functions
+
51 
+
52 /*
+
53  * Return a 64-bit number from 4 8-bit numbers.
+
54  */
+
55 static inline
+
56 int64_t d_cconst(const uint8_t a, const uint8_t b, const uint8_t c, const uint8_t d) noexcept
+
57 {
+
58  return (a << 24) | (b << 16) | (c << 8) | (d << 0);
+
59 }
+
60 
+
61 /*
+
62  * Dummy function.
+
63  */
+
64 static inline
+
65 void d_pass() noexcept {}
+
66 
+
67 // -----------------------------------------------------------------------
+
68 // string print functions
+
69 
+
70 /*
+
71  * Print a string to stdout with newline (gray color).
+
72  * Does nothing if DEBUG is not defined.
+
73  */
+
74 #ifndef DEBUG
+
75 # define d_debug(...)
+
76 #else
+
77 static inline
+
78 void d_debug(const char* const fmt, ...) noexcept
+
79 {
+
80  try {
+
81  ::va_list args;
+
82  ::va_start(args, fmt);
+
83  std::fprintf(stdout, "\x1b[30;1m");
+
84  std::vfprintf(stdout, fmt, args);
+
85  std::fprintf(stdout, "\x1b[0m\n");
+
86  ::va_end(args);
+
87  } catch (...) {}
+
88 }
+
89 #endif
+
90 
+
91 /*
+
92  * Print a string to stdout with newline.
+
93  */
+
94 static inline
+
95 void d_stdout(const char* const fmt, ...) noexcept
+
96 {
+
97  try {
+
98  ::va_list args;
+
99  ::va_start(args, fmt);
+
100  std::vfprintf(stdout, fmt, args);
+
101  std::fprintf(stdout, "\n");
+
102  ::va_end(args);
+
103  } catch (...) {}
+
104 }
+
105 
+
106 /*
+
107  * Print a string to stderr with newline.
+
108  */
+
109 static inline
+
110 void d_stderr(const char* const fmt, ...) noexcept
+
111 {
+
112  try {
+
113  ::va_list args;
+
114  ::va_start(args, fmt);
+
115  std::vfprintf(stderr, fmt, args);
+
116  std::fprintf(stderr, "\n");
+
117  ::va_end(args);
+
118  } catch (...) {}
+
119 }
+
120 
+
121 /*
+
122  * Print a string to stderr with newline (red color).
+
123  */
+
124 static inline
+
125 void d_stderr2(const char* const fmt, ...) noexcept
+
126 {
+
127  try {
+
128  ::va_list args;
+
129  ::va_start(args, fmt);
+
130  std::fprintf(stderr, "\x1b[31m");
+
131  std::vfprintf(stderr, fmt, args);
+
132  std::fprintf(stderr, "\x1b[0m\n");
+
133  ::va_end(args);
+
134  } catch (...) {}
+
135 }
+
136 
+
137 /*
+
138  * Print a safe assertion error message.
+
139  */
+
140 static inline
+
141 void d_safe_assert(const char* const assertion, const char* const file, const int line) noexcept
+
142 {
+
143  d_stderr2("assertion failure: \"%s\" in file %s, line %i", assertion, file, line);
+
144 }
+
145 
+
146 /*
+
147  * Print a safe exception error message.
+
148  */
+
149 static inline
+
150 void d_safe_exception(const char* const exception, const char* const file, const int line) noexcept
+
151 {
+
152  d_stderr2("exception caught: \"%s\" in file %s, line %i", exception, file, line);
+
153 }
+
154 
+
155 // -----------------------------------------------------------------------
+
156 // math functions
+
157 
+
158 /*
+
159  * Safely compare two floating point numbers.
+
160  * Returns true if they match.
+
161  */
+
162 template<typename T>
+
163 static inline
+
164 bool d_isEqual(const T& v1, const T& v2)
+
165 {
+
166  return std::abs(v1-v2) < std::numeric_limits<T>::epsilon();
+
167 }
+
168 
+
169 /*
+
170  * Safely compare two floating point numbers.
+
171  * Returns true if they don't match.
+
172  */
+
173 template<typename T>
+
174 static inline
+
175 bool d_isNotEqual(const T& v1, const T& v2)
+
176 {
+
177  return std::abs(v1-v2) >= std::numeric_limits<T>::epsilon();
+
178 }
+
179 
+
180 /*
+
181  * Safely check if a floating point number is zero.
+
182  */
+
183 template<typename T>
+
184 static inline
+
185 bool d_isZero(const T& value)
+
186 {
+
187  return std::abs(value) < std::numeric_limits<T>::epsilon();
+
188 }
+
189 
+
190 /*
+
191  * Safely check if a floating point number is not zero.
+
192  */
+
193 template<typename T>
+
194 static inline
+
195 bool d_isNotZero(const T& value)
+
196 {
+
197  return std::abs(value) >= std::numeric_limits<T>::epsilon();
+
198 }
+
199 
+
200 // -----------------------------------------------------------------------
+
201 
+
202 #endif // DISTRHO_UTILS_HPP_INCLUDED
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 00000000..dc265673 --- /dev/null +++ b/annotated.html @@ -0,0 +1,108 @@ + + + + + + +DISTRHO Plugin Framework: Class List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + +
 CMidiEvent
 CParameter
 CParameterRanges
 CPlugin
 CTimePosition
 CBarBeatTick
 CUI
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 00000000..224b29aa Binary files /dev/null and b/bc_s.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 00000000..940a0b95 Binary files /dev/null and b/bdwn.png differ diff --git a/classPlugin-members.html b/classPlugin-members.html new file mode 100644 index 00000000..0600cf39 --- /dev/null +++ b/classPlugin-members.html @@ -0,0 +1,126 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
+
Plugin Member List
+
+
+ +

This is the complete list of members for Plugin, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
d_activate()Plugininlineprotectedvirtual
d_bufferSizeChanged(uint32_t newBufferSize)Pluginprotectedvirtual
d_deactivate()Plugininlineprotectedvirtual
d_getBufferSize() const noexceptPlugin
d_getLabel() const =0Pluginprotectedpure virtual
d_getLicense() const =0Pluginprotectedpure virtual
d_getMaker() const =0Pluginprotectedpure virtual
d_getName() const Plugininlineprotectedvirtual
d_getParameterValue(uint32_t index) const =0Pluginprotectedpure virtual
d_getSampleRate() const noexceptPlugin
d_getTimePosition() const noexceptPlugin
d_getUniqueId() const =0Pluginprotectedpure virtual
d_getVersion() const =0Pluginprotectedpure virtual
d_initParameter(uint32_t index, Parameter &parameter)=0Pluginprotectedpure virtual
d_initProgramName(uint32_t index, d_string &programName)=0Pluginprotectedpure virtual
d_initState(uint32_t index, d_string &stateKey, d_string &defaultStateValue)=0Pluginprotectedpure virtual
d_run(const float **inputs, float **outputs, uint32_t frames, const MidiEvent *midiEvents, uint32_t midiEventCount)=0Pluginprotectedpure virtual
d_sampleRateChanged(double newSampleRate)Pluginprotectedvirtual
d_setLatency(uint32_t frames) noexceptPlugin
d_setParameterValue(uint32_t index, float value)=0Pluginprotectedpure virtual
d_setProgram(uint32_t index)=0Pluginprotectedpure virtual
d_setState(const char *key, const char *value)=0Pluginprotectedpure virtual
d_writeMidiEvent(const MidiEvent &midiEvent) noexceptPlugin
Plugin(const uint32_t parameterCount, const uint32_t programCount, const uint32_t stateCount)Plugin
PluginExporter (defined in Plugin)Pluginfriend
~Plugin()Pluginvirtual
+ + + + diff --git a/classPlugin.html b/classPlugin.html new file mode 100644 index 00000000..1c6fdfa4 --- /dev/null +++ b/classPlugin.html @@ -0,0 +1,888 @@ + + + + + + +DISTRHO Plugin Framework: Plugin Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
+Public Member Functions | +Protected Member Functions | +Friends | +List of all members
+
+
Plugin Class Referenceabstract
+
+
+ +

#include <DistrhoPlugin.hpp>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

 Plugin (const uint32_t parameterCount, const uint32_t programCount, const uint32_t stateCount)
 
virtual ~Plugin ()
 
uint32_t d_getBufferSize () const noexcept
 
double d_getSampleRate () const noexcept
 
const TimePositiond_getTimePosition () const noexcept
 
void d_setLatency (uint32_t frames) noexcept
 
bool d_writeMidiEvent (const MidiEvent &midiEvent) noexcept
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual const char * d_getName () const
 
virtual const char * d_getLabel () const =0
 
virtual const char * d_getMaker () const =0
 
virtual const char * d_getLicense () const =0
 
virtual uint32_t d_getVersion () const =0
 
virtual int64_t d_getUniqueId () const =0
 
virtual void d_initParameter (uint32_t index, Parameter &parameter)=0
 
virtual void d_initProgramName (uint32_t index, d_string &programName)=0
 
virtual void d_initState (uint32_t index, d_string &stateKey, d_string &defaultStateValue)=0
 
virtual float d_getParameterValue (uint32_t index) const =0
 
virtual void d_setParameterValue (uint32_t index, float value)=0
 
virtual void d_setProgram (uint32_t index)=0
 
virtual void d_setState (const char *key, const char *value)=0
 
virtual void d_activate ()
 
virtual void d_deactivate ()
 
virtual void d_run (const float **inputs, float **outputs, uint32_t frames, const MidiEvent *midiEvents, uint32_t midiEventCount)=0
 
virtual void d_bufferSizeChanged (uint32_t newBufferSize)
 
virtual void d_sampleRateChanged (double newSampleRate)
 
+ + + +

+Friends

+class PluginExporter
 
+

Detailed Description

+

DPF Plugin class from where plugin instances are created.

+

The public methods (Host state) are called from the plugin to get or set host information. They can be called from a plugin instance at anytime unless stated otherwise. All other methods are to be implemented by the plugin and will be called by the host.

+

Shortly after a plugin instance is created, the various d_init* functions will be called by the host. Host will call d_activate() before d_run(), and d_deactivate() before the plugin instance is destroyed. The host may call deactivate right after activate and vice-versa, but never activate/deactivate consecutively. There is no limit on how many times d_run() is called, only that activate/deactivate will be called in between.

+

The buffer size and sample rate values will remain constant between activate and deactivate. Buffer size is only a hint though, the host might call d_run() with a higher or lower number of frames.

+

Some of this class functions are only available according to some macros.

+

DISTRHO_PLUGIN_WANT_PROGRAMS activates program related features. When enabled you need to implement d_initProgramName() and d_setProgram().

+

DISTRHO_PLUGIN_WANT_STATE activates internal state features. When enabled you need to implement d_initStateKey() and d_setState().

+

The process function d_run() changes wherever DISTRHO_PLUGIN_WANT_MIDI_INPUT is enabled or not. When enabled it provides midi input events.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Plugin::Plugin (const uint32_t parameterCount,
const uint32_t programCount,
const uint32_t stateCount 
)
+
+

Plugin class constructor. You must set all parameter values to their defaults, matching ParameterRanges::def. If you're using states you must also set them to their defaults by calling d_setState().

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual Plugin::~Plugin ()
+
+virtual
+
+

Destructor.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
uint32_t Plugin::d_getBufferSize () const
+
+noexcept
+
+

Get the current buffer size that will probably be used during processing, in frames. This value will remain constant between activate and deactivate.

Note
: This value is only a hint! Hosts might call d_run() with a higher or lower number of frames.
+
See also
d_bufferSizeChanged(uint32_t)
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
double Plugin::d_getSampleRate () const
+
+noexcept
+
+

Get the current sample rate that will be used during processing. This value will remain constant between activate and deactivate.

See also
d_sampleRateChanged(double)
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
const TimePosition& Plugin::d_getTimePosition () const
+
+noexcept
+
+

Get the current host transport time position. This function should only be called during d_run(). You can call this during other times, but the returned position is not guaranteed to be in sync.

Note
: TimePos is not supported in LADSPA and DSSI plugin formats.
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void Plugin::d_setLatency (uint32_t frames)
+
+noexcept
+
+

Change the plugin audio output latency to frames. This function should only be called in the constructor, d_activate() and d_run().

Note
This function is only available if DISTRHO_PLUGIN_WANT_LATENCY is enabled.
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
bool Plugin::d_writeMidiEvent (const MidiEventmidiEvent)
+
+noexcept
+
+

Write a MIDI output event. This function must only be called during d_run(). Returns false when the host buffer is full, in which case do not call this again until the next d_run().

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual const char* Plugin::d_getName () const
+
+inlineprotectedvirtual
+
+

Get the plugin name. Returns DISTRHO_PLUGIN_NAME by default.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual const char* Plugin::d_getLabel () const
+
+protectedpure virtual
+
+

Get the plugin label. A plugin label follows the same rules as Parameter::symbol, with the exception that it can start with numbers.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual const char* Plugin::d_getMaker () const
+
+protectedpure virtual
+
+

Get the plugin author/maker.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual const char* Plugin::d_getLicense () const
+
+protectedpure virtual
+
+

Get the plugin license name (a single line of text).

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual uint32_t Plugin::d_getVersion () const
+
+protectedpure virtual
+
+

Get the plugin version, in hexadecimal. TODO format to be defined

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual int64_t Plugin::d_getUniqueId () const
+
+protectedpure virtual
+
+

Get the plugin unique Id. This value is used by LADSPA, DSSI and VST plugin formats.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Plugin::d_initParameter (uint32_t index,
Parameterparameter 
)
+
+protectedpure virtual
+
+

Initialize the parameter index. This function will be called once, shortly after the plugin is created.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Plugin::d_initProgramName (uint32_t index,
d_string & programName 
)
+
+protectedpure virtual
+
+

Set the name of the program index. This function will be called once, shortly after the plugin is created. Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_PROGRAMS is enabled.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Plugin::d_initState (uint32_t index,
d_string & stateKey,
d_string & defaultStateValue 
)
+
+protectedpure virtual
+
+

Set the state key and default value of index. This function will be called once, shortly after the plugin is created. Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_STATE is enabled.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual float Plugin::d_getParameterValue (uint32_t index) const
+
+protectedpure virtual
+
+

Get the current value of a parameter. The host may call this function from any context, including realtime processing.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Plugin::d_setParameterValue (uint32_t index,
float value 
)
+
+protectedpure virtual
+
+

Change a parameter value. The host may call this function from any context, including realtime processing. When a parameter is marked as automable, you must ensure no non-realtime operations are called.

Note
This function will only be called for parameter inputs.
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Plugin::d_setProgram (uint32_t index)
+
+protectedpure virtual
+
+

Change the currently used program to index. The host may call this function from any context, including realtime processing. Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_PROGRAMS is enabled.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Plugin::d_setState (const char * key,
const char * value 
)
+
+protectedpure virtual
+
+

Change an internal state key to value. Must be implemented by your plugin class only if DISTRHO_PLUGIN_WANT_STATE is enabled.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual void Plugin::d_activate ()
+
+inlineprotectedvirtual
+
+

Activate this plugin.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual void Plugin::d_deactivate ()
+
+inlineprotectedvirtual
+
+

Deactivate this plugin.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Plugin::d_run (const float ** inputs,
float ** outputs,
uint32_t frames,
const MidiEventmidiEvents,
uint32_t midiEventCount 
)
+
+protectedpure virtual
+
+

Run/process function for plugins with MIDI input.

Note
: Some parameters might be null if there are no audio inputs/outputs or MIDI events.
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Plugin::d_bufferSizeChanged (uint32_t newBufferSize)
+
+protectedvirtual
+
+

Optional callback to inform the plugin about a buffer size change. This function will only be called when the plugin is deactivated.

Note
: This value is only a hint! Hosts might call d_run() with a higher or lower number of frames.
+
See also
d_getBufferSize()
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Plugin::d_sampleRateChanged (double newSampleRate)
+
+protectedvirtual
+
+

Optional callback to inform the plugin about a sample rate change. This function will only be called when the plugin is deactivated.

See also
d_getSampleRate()
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classUI-members.html b/classUI-members.html new file mode 100644 index 00000000..e8a387ca --- /dev/null +++ b/classUI-members.html @@ -0,0 +1,118 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
+
UI Member List
+
+
+ +

This is the complete list of members for UI, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
d_editParameter(const uint32_t index, const bool started)UI
d_getPluginInstancePointer() const noexceptUI
d_getSampleRate() const noexceptUI
d_parameterChanged(uint32_t index, float value)=0UIprotectedpure virtual
d_programChanged(uint32_t index)=0UIprotectedpure virtual
d_sampleRateChanged(double newSampleRate)UIprotectedvirtual
d_sendNote(const uint8_t channel, const uint8_t note, const uint8_t velocity)UI
d_setParameterValue(const uint32_t index, const float value)UI
d_setState(const char *const key, const char *const value)UI
d_stateChanged(const char *key, const char *value)=0UIprotectedpure virtual
d_uiFileBrowserSelected(const char *filename)UIprotectedvirtual
d_uiIdle()UIinlineprotectedvirtual
d_uiReshape(uint width, uint height)UIprotectedvirtual
onResize(const ResizeEvent &ev) overrideUIprotected
UI(uint width=0, uint height=0)UI
UIExporter (defined in UI)UIfriend
UIExporterWindow (defined in UI)UIfriend
~UI()UIvirtual
+ + + + diff --git a/classUI.html b/classUI.html new file mode 100644 index 00000000..38df7505 --- /dev/null +++ b/classUI.html @@ -0,0 +1,611 @@ + + + + + + +DISTRHO Plugin Framework: UI Class Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
+Public Member Functions | +Protected Member Functions | +Friends | +List of all members
+
+
UI Class Referenceabstract
+
+
+ +

#include <DistrhoUI.hpp>

+
+Inheritance diagram for UI:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UI (uint width=0, uint height=0)
 
virtual ~UI ()
 
double d_getSampleRate () const noexcept
 
void d_editParameter (const uint32_t index, const bool started)
 
void d_setParameterValue (const uint32_t index, const float value)
 
void d_setState (const char *const key, const char *const value)
 
void d_sendNote (const uint8_t channel, const uint8_t note, const uint8_t velocity)
 
void * d_getPluginInstancePointer () const noexcept
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void d_parameterChanged (uint32_t index, float value)=0
 
virtual void d_programChanged (uint32_t index)=0
 
virtual void d_stateChanged (const char *key, const char *value)=0
 
virtual void d_sampleRateChanged (double newSampleRate)
 
virtual void d_uiIdle ()
 
virtual void d_uiFileBrowserSelected (const char *filename)
 
virtual void d_uiReshape (uint width, uint height)
 
void onResize (const ResizeEvent &ev) override
 
+ + + + + +

+Friends

+class UIExporter
 
+class UIExporterWindow
 
+

Detailed Description

+

DPF UI class from where UI instances are created.

+

TODO.

+

must call setSize during construction,

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
UI::UI (uint width = 0,
uint height = 0 
)
+
+

UI class constructor. The UI should be initialized to a default state that matches the plugin side.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual UI::~UI ()
+
+virtual
+
+

Destructor.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
double UI::d_getSampleRate () const
+
+noexcept
+
+

Get the current sample rate used in plugin processing.

See also
d_sampleRateChanged(double)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void UI::d_editParameter (const uint32_t index,
const bool started 
)
+
+

TODO: Document this.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void UI::d_setParameterValue (const uint32_t index,
const float value 
)
+
+

TODO: Document this.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void UI::d_setState (const char *const key,
const char *const value 
)
+
+

TODO: Document this.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void UI::d_sendNote (const uint8_t channel,
const uint8_t note,
const uint8_t velocity 
)
+
+

TODO: Document this.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void* UI::d_getPluginInstancePointer () const
+
+noexcept
+
+

TODO: Document this.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void UI::d_parameterChanged (uint32_t index,
float value 
)
+
+protectedpure virtual
+
+

A parameter has changed on the plugin side. This is called by the host to inform the UI about parameter changes.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void UI::d_programChanged (uint32_t index)
+
+protectedpure virtual
+
+

The current program has changed on the plugin side. This is called by the host to inform the UI about program changes.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void UI::d_stateChanged (const char * key,
const char * value 
)
+
+protectedpure virtual
+
+

A state has changed on the plugin side. This is called by the host to inform the UI about state changes.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void UI::d_sampleRateChanged (double newSampleRate)
+
+protectedvirtual
+
+

Optional callback to inform the UI about a sample rate change on the plugin side.

See also
d_getSampleRate()
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual void UI::d_uiIdle ()
+
+inlineprotectedvirtual
+
+

TODO: Document this.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void UI::d_uiFileBrowserSelected (const char * filename)
+
+protectedvirtual
+
+

File browser selected function.

See also
Window::fileBrowserSelected(const char*)
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void UI::d_uiReshape (uint width,
uint height 
)
+
+protectedvirtual
+
+

OpenGL window reshape function, called when parent window is resized. You can reimplement this function for a custom OpenGL state.

See also
Window::onReshape(uint,uint)
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void UI::onResize (const ResizeEvent & ev)
+
+overrideprotected
+
+

OpenGL widget resize function, called when the widget is resized. This is overriden here so the host knows when the UI is resized by you.

See also
Widget::onResize(const ResizeEvent&)
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classUI.png b/classUI.png new file mode 100644 index 00000000..4e2f7d37 Binary files /dev/null and b/classUI.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 00000000..c6d1f234 --- /dev/null +++ b/classes.html @@ -0,0 +1,113 @@ + + + + + + +DISTRHO Plugin Framework: Class Index + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
Class Index
+
+
+
B | M | P | T | U
+ + + + + + + + +
  B  
+
  P  
+
Plugin   
  U  
+
  T  
+
TimePosition::BarBeatTick   Parameter   UI   
  M  
+
ParameterRanges   TimePosition   
MidiEvent   
+
B | M | P | T | U
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 00000000..98cc2c90 Binary files /dev/null and b/closed.png differ diff --git a/dir_37257469cca17bab24b582e18a78eb75.html b/dir_37257469cca17bab24b582e18a78eb75.html new file mode 100644 index 00000000..9815dd13 --- /dev/null +++ b/dir_37257469cca17bab24b582e18a78eb75.html @@ -0,0 +1,107 @@ + + + + + + +DISTRHO Plugin Framework: distrho Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ + +
+
+
+
distrho Directory Reference
+
+
+ + + + + + + + + + + + +

+Files

file  DistrhoPlugin.hpp [code]
 
file  DistrhoPluginMain.cpp
 
file  DistrhoUI.hpp [code]
 
file  DistrhoUIMain.cpp
 
file  DistrhoUtils.hpp [code]
 
+
+ + + + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 00000000..02e8b015 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1440 @@ +/* The standard CSS for doxygen 1.8.8 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('ftv2doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doxygen.png b/doxygen.png new file mode 100644 index 00000000..3ff17d80 Binary files /dev/null and b/doxygen.png differ diff --git a/doxygen_sqlite3.db b/doxygen_sqlite3.db new file mode 100644 index 00000000..4c95977b Binary files /dev/null and b/doxygen_sqlite3.db differ diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 00000000..85e18369 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +DISTRHO Plugin Framework: File List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + +
  distrho
 DistrhoPlugin.hpp
 DistrhoUI.hpp
 DistrhoUtils.hpp
+
+
+ + + + diff --git a/ftv2blank.png b/ftv2blank.png new file mode 100644 index 00000000..63c605bb Binary files /dev/null and b/ftv2blank.png differ diff --git a/ftv2doc.png b/ftv2doc.png new file mode 100644 index 00000000..17edabff Binary files /dev/null and b/ftv2doc.png differ diff --git a/ftv2folderclosed.png b/ftv2folderclosed.png new file mode 100644 index 00000000..bb8ab35e Binary files /dev/null and b/ftv2folderclosed.png differ diff --git a/ftv2folderopen.png b/ftv2folderopen.png new file mode 100644 index 00000000..d6c7f676 Binary files /dev/null and b/ftv2folderopen.png differ diff --git a/ftv2lastnode.png b/ftv2lastnode.png new file mode 100644 index 00000000..63c605bb Binary files /dev/null and b/ftv2lastnode.png differ diff --git a/ftv2link.png b/ftv2link.png new file mode 100644 index 00000000..17edabff Binary files /dev/null and b/ftv2link.png differ diff --git a/ftv2mlastnode.png b/ftv2mlastnode.png new file mode 100644 index 00000000..0b63f6d3 Binary files /dev/null and b/ftv2mlastnode.png differ diff --git a/ftv2mnode.png b/ftv2mnode.png new file mode 100644 index 00000000..0b63f6d3 Binary files /dev/null and b/ftv2mnode.png differ diff --git a/ftv2node.png b/ftv2node.png new file mode 100644 index 00000000..63c605bb Binary files /dev/null and b/ftv2node.png differ diff --git a/ftv2plastnode.png b/ftv2plastnode.png new file mode 100644 index 00000000..c6ee22f9 Binary files /dev/null and b/ftv2plastnode.png differ diff --git a/ftv2pnode.png b/ftv2pnode.png new file mode 100644 index 00000000..c6ee22f9 Binary files /dev/null and b/ftv2pnode.png differ diff --git a/ftv2splitbar.png b/ftv2splitbar.png new file mode 100644 index 00000000..fe895f2c Binary files /dev/null and b/ftv2splitbar.png differ diff --git a/ftv2vertline.png b/ftv2vertline.png new file mode 100644 index 00000000..63c605bb Binary files /dev/null and b/ftv2vertline.png differ diff --git a/functions.html b/functions.html new file mode 100644 index 00000000..6f95944e --- /dev/null +++ b/functions.html @@ -0,0 +1,396 @@ + + + + + + +DISTRHO Plugin Framework: Class Members + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- k -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- ~ -

+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 00000000..7257d4ab --- /dev/null +++ b/functions_func.html @@ -0,0 +1,294 @@ + + + + + + +DISTRHO Plugin Framework: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+  + +

- b -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- o -

+ + +

- p -

+ + +

- t -

+ + +

- u -

+ + +

- ~ -

+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 00000000..917b56a7 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,169 @@ + + + + + + +DISTRHO Plugin Framework: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+ + + + diff --git a/group__BaseStructs.html b/group__BaseStructs.html new file mode 100644 index 00000000..42cd5e59 --- /dev/null +++ b/group__BaseStructs.html @@ -0,0 +1,106 @@ + + + + + + +DISTRHO Plugin Framework: Base Structs + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+ +
+
Base Structs
+
+
+ + + + + + + + + + + + +

+Classes

struct  ParameterRanges
 
struct  Parameter
 
struct  MidiEvent
 
struct  TimePosition
 
struct  TimePosition::BarBeatTick
 
+

Detailed Description

+
+ + + + diff --git a/group__ParameterHints.html b/group__ParameterHints.html new file mode 100644 index 00000000..301fe7a6 --- /dev/null +++ b/group__ParameterHints.html @@ -0,0 +1,237 @@ + + + + + + +DISTRHO Plugin Framework: Parameter Hints + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+ +
+
Parameter Hints
+
+
+ + + + + + + + + + + + + + +

+Variables

static const uint32_t kParameterIsAutomable = 0x01
 
static const uint32_t kParameterIsBoolean = 0x02
 
static const uint32_t kParameterIsInteger = 0x04
 
static const uint32_t kParameterIsLogarithmic = 0x08
 
static const uint32_t kParameterIsOutput = 0x10
 
static const uint32_t kParameterIsCV = 0x20
 
+

Detailed Description

+

Various parameter hints.

See also
Parameter::hints
+

Variable Documentation

+ +
+
+ + + + + +
+ + + + +
const uint32_t kParameterIsAutomable = 0x01
+
+static
+
+

Parameter is automable (real-time safe).

See also
Plugin::d_setParameterValue()
+ +
+
+ +
+
+ + + + + +
+ + + + +
const uint32_t kParameterIsBoolean = 0x02
+
+static
+
+

Parameter value is boolean. It's always at either minimum or maximum value.

+ +
+
+ +
+
+ + + + + +
+ + + + +
const uint32_t kParameterIsInteger = 0x04
+
+static
+
+

Parameter value is integer.

+ +
+
+ +
+
+ + + + + +
+ + + + +
const uint32_t kParameterIsLogarithmic = 0x08
+
+static
+
+

Parameter value is logarithmic.

+ +
+
+ +
+
+ + + + + +
+ + + + +
const uint32_t kParameterIsOutput = 0x10
+
+static
+
+

Parameter is of output type. When unset, parameter is assumed to be of input type.

+

Parameter inputs are changed by the host and must not be changed by the plugin. The only exception being when changing programs, see Plugin::d_setProgram(). Outputs are changed by the plugin and never modified by the host.

+ +
+
+ +
+
+ + + + + +
+ + + + +
const uint32_t kParameterIsCV = 0x20
+
+static
+
+

Parameter can be used as control voltage (LV2 only).

+ +
+
+
+ + + + diff --git a/group__PluginMacros.html b/group__PluginMacros.html new file mode 100644 index 00000000..b8de176d --- /dev/null +++ b/group__PluginMacros.html @@ -0,0 +1,363 @@ + + + + + + +DISTRHO Plugin Framework: Plugin Macros + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+ +
+
Plugin Macros
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define DISTRHO_PLUGIN_NAME   "Plugin Name"
 
#define DISTRHO_PLUGIN_NUM_INPUTS   2
 
#define DISTRHO_PLUGIN_NUM_OUTPUTS   2
 
#define DISTRHO_PLUGIN_URI   "urn:distrho:name"
 
#define DISTRHO_PLUGIN_HAS_UI   1
 
#define DISTRHO_PLUGIN_IS_RT_SAFE   1
 
#define DISTRHO_PLUGIN_IS_SYNTH   1
 
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS   0
 
#define DISTRHO_PLUGIN_WANT_LATENCY   1
 
#define DISTRHO_PLUGIN_WANT_MIDI_INPUT   1
 
#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT   1
 
#define DISTRHO_PLUGIN_WANT_PROGRAMS   1
 
#define DISTRHO_PLUGIN_WANT_STATE   1
 
#define DISTRHO_PLUGIN_WANT_TIMEPOS   1
 
#define DISTRHO_UI_USE_NANOVG   1
 
#define DISTRHO_UI_URI   DISTRHO_PLUGIN_URI "#UI"
 
+

Detailed Description

+

C Macros that describe your plugin. (defined in the "DistrhoPluginInfo.h" file)

+

With these macros you can tell the host what features your plugin requires.
+Depending on which macros you enable, new functions will be available to call and/or override.

+

All values are either integer or strings.
+For boolean-like values 1 means 'on' and 0 means 'off'.

+

The values defined in this file are for documentation purposes only.
+All macros are disabled by default.

+

Only 4 macros are required, they are:

+

Macro Definition Documentation

+ +
+
+ + + + +
#define DISTRHO_PLUGIN_NAME   "Plugin Name"
+
+

The plugin name.
+This is used to identify your plugin before a Plugin instance can be created.

Note
This macro is required.
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_NUM_INPUTS   2
+
+

Number of audio inputs the plugin has.

Note
This macro is required.
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_NUM_OUTPUTS   2
+
+

Number of audio outputs the plugin has.

Note
This macro is required.
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_URI   "urn:distrho:name"
+
+

The plugin URI when exporting in LV2 format.

Note
This macro is required.
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_HAS_UI   1
+
+

Wherever the plugin has a custom UI.

See also
DISTRHO_UI_USE_NANOVG
+
+UI
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_IS_RT_SAFE   1
+
+

Wherever the plugin processing is realtime-safe.
+TODO - list rtsafe requirements

+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_IS_SYNTH   1
+
+

Wherever the plugin is a synth.
+DISTRHO_PLUGIN_WANT_MIDI_INPUT is automatically enabled when this is too.

See also
DISTRHO_PLUGIN_WANT_MIDI_INPUT
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS   0
+
+

Enable direct access between the UI and plugin code.

See also
UI::d_getPluginInstancePointer()
+
Note
DO NOT USE THIS UNLESS STRICTLY NECESSARY!! Try to avoid it at all costs!
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_LATENCY   1
+
+

Wherever the plugin introduces latency during audio or midi processing.

See also
Plugin::d_setLatency(uint32_t)
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_MIDI_INPUT   1
+
+

Wherever the plugin wants MIDI input.
+This is automatically enabled if DISTRHO_PLUGIN_IS_SYNTH is true.

+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT   1
+
+

Wherever the plugin wants MIDI output.

See also
Plugin::d_writeMidiEvent(const MidiEvent&)
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_PROGRAMS   1
+
+

Wherever the plugin provides its own internal programs.

See also
Plugin::d_initProgramName(uint32_t, d_string&)
+
+Plugin::d_setProgram(uint32_t)
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_STATE   1
+
+

Wherever the plugin uses internal non-parameter data.

See also
Plugin::d_initState(uint32_t, d_string&, d_string&)
+
+Plugin::d_setState(const char*, const char*)
+ +
+
+ +
+
+ + + + +
#define DISTRHO_PLUGIN_WANT_TIMEPOS   1
+
+

Wherever the plugin wants time position information from the host.

See also
Plugin::d_getTimePosition()
+ +
+
+ +
+
+ + + + +
#define DISTRHO_UI_USE_NANOVG   1
+
+

Wherever the UI uses NanoVG for drawing instead of the default raw OpenGL calls.
+When enabled your UI instance will subclass NanoWidget instead of Widget.

+ +
+
+ +
+
+ + + + +
#define DISTRHO_UI_URI   DISTRHO_PLUGIN_URI "#UI"
+
+

The UI URI when exporting in LV2 format.
+By default this is set to DISTRHO_PLUGIN_URI with "#UI" as suffix.

+ +
+
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 00000000..a70ab487 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,109 @@ + + + + + + +DISTRHO Plugin Framework: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + +
 CTimePosition::BarBeatTick
 CMidiEvent
 CParameter
 CParameterRanges
 CPlugin
 CTimePosition
 CUIWidget
 CUI
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 00000000..ad263ea4 --- /dev/null +++ b/index.html @@ -0,0 +1,100 @@ + + + + + + +DISTRHO Plugin Framework: DISTRHO Plugin Framework + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + +
+ +
+ All Classes Functions Variables Modules Pages
+ + +
+ +
+ +
+
+
DISTRHO Plugin Framework
+
+
+

DISTRHO Plugin Framework (or DPF for short) is a plugin framework designed to make development of new plugins an easy and enjoyable task.
+It allows developers to create plugins with custom UIs using a simple C++ API.

+

+Macros

+

You start by creating a "DistrhoPluginInfo.h" file describing the plugin via macros, see Plugin Macros.

+

+Plugin

+

TODO

+

+Parameters

+

describe input and output, automable and rt safe, boolean etc, cv

+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 00000000..92dbb494 --- /dev/null +++ b/jquery.js @@ -0,0 +1,31 @@ +/* + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/* + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); diff --git a/modules.html b/modules.html new file mode 100644 index 00000000..c83e8cb9 --- /dev/null +++ b/modules.html @@ -0,0 +1,96 @@ + + + + + + +DISTRHO Plugin Framework: Modules + + + + + + + + + +
+
+
+ + + + + +
+
DISTRHO Plugin Framework +
+
+ + + + + + + + + + +
+ +
+ +
+
+
Modules
+
+
+
Here is a list of all modules:
+
+ + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 00000000..72a58a52 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 00000000..2093a237 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 00000000..33389b10 Binary files /dev/null and b/nav_h.png differ diff --git a/open.png b/open.png new file mode 100644 index 00000000..30f75c7e Binary files /dev/null and b/open.png differ diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 00000000..6f4ddc39 --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 00000000..dd24aa07 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['bar',['bar',['../structTimePosition_1_1BarBeatTick.html#ad104eba852516842d8c4776f9d495d21',1,'TimePosition::BarBeatTick']]], + ['barbeattick',['BarBeatTick',['../structTimePosition_1_1BarBeatTick.html',1,'TimePosition']]], + ['barbeattick',['BarBeatTick',['../structTimePosition_1_1BarBeatTick.html#abff8c9586a4e82694e7d6bac3e8da1ef',1,'TimePosition::BarBeatTick']]], + ['barstarttick',['barStartTick',['../structTimePosition_1_1BarBeatTick.html#a5205e95c8f8021006bde2eae774d5b62',1,'TimePosition::BarBeatTick']]], + ['base_20structs',['Base Structs',['../group__BaseStructs.html',1,'']]], + ['beat',['beat',['../structTimePosition_1_1BarBeatTick.html#af4be3edce420539cbb21bc1b0278201c',1,'TimePosition::BarBeatTick']]], + ['beatsperbar',['beatsPerBar',['../structTimePosition_1_1BarBeatTick.html#a4805c98ceeedca9fb886de068c50cb88',1,'TimePosition::BarBeatTick']]], + ['beatsperminute',['beatsPerMinute',['../structTimePosition_1_1BarBeatTick.html#af7cb9ae9b30da287828ebddee5caff2f',1,'TimePosition::BarBeatTick']]], + ['beattype',['beatType',['../structTimePosition_1_1BarBeatTick.html#a3d0f3681391ab7d3d37abcae24c72257',1,'TimePosition::BarBeatTick']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 00000000..fce68bd6 --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 00000000..f9085fa8 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['d_5factivate',['d_activate',['../classPlugin.html#a15df4876febf5909fe040d401fc704d0',1,'Plugin']]], + ['d_5fbuffersizechanged',['d_bufferSizeChanged',['../classPlugin.html#a2c6ac454e24b667d54eaaf63da252627',1,'Plugin']]], + ['d_5fdeactivate',['d_deactivate',['../classPlugin.html#a5c008d623e558e7266aecaff22fc787a',1,'Plugin']]], + ['d_5feditparameter',['d_editParameter',['../classUI.html#a768b898d1e063d5c0112197b99ccba99',1,'UI']]], + ['d_5fgetbuffersize',['d_getBufferSize',['../classPlugin.html#aa0feb17c3dcf13a106505eb6d6b2a3ac',1,'Plugin']]], + ['d_5fgetlabel',['d_getLabel',['../classPlugin.html#ae512b28d1b274a055de33812cf094d81',1,'Plugin']]], + ['d_5fgetlicense',['d_getLicense',['../classPlugin.html#ae9333c170accfd2a237448a4579d5fef',1,'Plugin']]], + ['d_5fgetmaker',['d_getMaker',['../classPlugin.html#a0eaf2f46f04d60526622afb5a86e026c',1,'Plugin']]], + ['d_5fgetname',['d_getName',['../classPlugin.html#a0f8fb7aa5ab05ba246e158b1024dd031',1,'Plugin']]], + ['d_5fgetparametervalue',['d_getParameterValue',['../classPlugin.html#af088f855761b67489f19f42fbb585088',1,'Plugin']]], + ['d_5fgetplugininstancepointer',['d_getPluginInstancePointer',['../classUI.html#a5393f505fc8702905c15c70c9fcf0d48',1,'UI']]], + ['d_5fgetsamplerate',['d_getSampleRate',['../classPlugin.html#ace888940905e8875284e07c52bf7404f',1,'Plugin::d_getSampleRate()'],['../classUI.html#ab6cbe4dcade92f7f49d4405e51ee639c',1,'UI::d_getSampleRate()']]], + ['d_5fgettimeposition',['d_getTimePosition',['../classPlugin.html#ade0a082a3a2936286537a04f4b972225',1,'Plugin']]], + ['d_5fgetuniqueid',['d_getUniqueId',['../classPlugin.html#aea77208248b36c7b8c9dc57ee68ae97a',1,'Plugin']]], + ['d_5fgetversion',['d_getVersion',['../classPlugin.html#af9251f8d90e4df43c6387bd111487e4e',1,'Plugin']]], + ['d_5finitparameter',['d_initParameter',['../classPlugin.html#a3f93a8eb97db3dc9984c357c5ffca5ec',1,'Plugin']]], + ['d_5finitprogramname',['d_initProgramName',['../classPlugin.html#a8a1792b7c5c6a3fd9cd626c7156ec3b6',1,'Plugin']]], + ['d_5finitstate',['d_initState',['../classPlugin.html#a65f9f9d4a30b0a56dfa42703c0b4db76',1,'Plugin']]], + ['d_5fparameterchanged',['d_parameterChanged',['../classUI.html#a9599da33720f4648e9ce78cc18249b07',1,'UI']]], + ['d_5fprogramchanged',['d_programChanged',['../classUI.html#a7d703d2caff4765f270686b8428a2fa0',1,'UI']]], + ['d_5frun',['d_run',['../classPlugin.html#af67102a7c6d19a8530ce0e3293e55667',1,'Plugin']]], + ['d_5fsampleratechanged',['d_sampleRateChanged',['../classPlugin.html#a469b53e1c1417a32d766cf96d1b3c45e',1,'Plugin::d_sampleRateChanged()'],['../classUI.html#a18f4b84a973405fc098e69047e0d1994',1,'UI::d_sampleRateChanged()']]], + ['d_5fsendnote',['d_sendNote',['../classUI.html#a621c381126d8e2f0124199b82cdcd456',1,'UI']]], + ['d_5fsetlatency',['d_setLatency',['../classPlugin.html#a7816b45ffb52b0a6308cabb792b1a56f',1,'Plugin']]], + ['d_5fsetparametervalue',['d_setParameterValue',['../classPlugin.html#a4cdd613f58a013429094700f3d83904a',1,'Plugin::d_setParameterValue()'],['../classUI.html#a310a08018194f82937ca92bed4e77f1f',1,'UI::d_setParameterValue()']]], + ['d_5fsetprogram',['d_setProgram',['../classPlugin.html#a1d001e50781b35df23f6d9a218f5f804',1,'Plugin']]], + ['d_5fsetstate',['d_setState',['../classPlugin.html#ad9c46a36cab96f52a0370043093bca68',1,'Plugin::d_setState()'],['../classUI.html#ac32cb7fd88c642eadebf64137acd910e',1,'UI::d_setState()']]], + ['d_5fstatechanged',['d_stateChanged',['../classUI.html#a7f508ebffec7a5168b532ccb9d81df70',1,'UI']]], + ['d_5fuifilebrowserselected',['d_uiFileBrowserSelected',['../classUI.html#ab10300e34b40d6b447b1213813f474c0',1,'UI']]], + ['d_5fuiidle',['d_uiIdle',['../classUI.html#aa320b8d3e826394dad9f7c36692f9b6c',1,'UI']]], + ['d_5fuireshape',['d_uiReshape',['../classUI.html#aaf729415450434ad6690db93fd936bbf',1,'UI']]], + ['d_5fwritemidievent',['d_writeMidiEvent',['../classPlugin.html#afa10aea18e4036b4a7487f2779d92e0f',1,'Plugin']]], + ['data',['data',['../structMidiEvent.html#aba54410d44eef48c10516f29452ef3a9',1,'MidiEvent']]], + ['def',['def',['../structParameterRanges.html#aa0aba68115bcfff25c35b2da2f7aed4c',1,'ParameterRanges']]], + ['distrho_5fplugin_5fhas_5fui',['DISTRHO_PLUGIN_HAS_UI',['../group__PluginMacros.html#gacf8a1af679c09637ba0bdc5f4f8e37dd',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fis_5frt_5fsafe',['DISTRHO_PLUGIN_IS_RT_SAFE',['../group__PluginMacros.html#ga82546dd199fcea338b113f2f6da84ced',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fis_5fsynth',['DISTRHO_PLUGIN_IS_SYNTH',['../group__PluginMacros.html#ga854bde6b6fdb0d47182149dbab0fed72',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fname',['DISTRHO_PLUGIN_NAME',['../group__PluginMacros.html#ga888482a9f695c2ca2f433e5f3172dcc4',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fnum_5finputs',['DISTRHO_PLUGIN_NUM_INPUTS',['../group__PluginMacros.html#ga5f4f3d9a5dc3c23882d158e636319998',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fnum_5foutputs',['DISTRHO_PLUGIN_NUM_OUTPUTS',['../group__PluginMacros.html#ga917195804ebcb2bb48c9fad52b20b3ca',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5furi',['DISTRHO_PLUGIN_URI',['../group__PluginMacros.html#ga9cc186448134e6a1956474b3878c97a8',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5fdirect_5faccess',['DISTRHO_PLUGIN_WANT_DIRECT_ACCESS',['../group__PluginMacros.html#gac6873a3950f52f3fde8e386af63b69a1',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5flatency',['DISTRHO_PLUGIN_WANT_LATENCY',['../group__PluginMacros.html#gad6b0ebf10e048f4742f29735da4d4930',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5fmidi_5finput',['DISTRHO_PLUGIN_WANT_MIDI_INPUT',['../group__PluginMacros.html#gadf2e2eb7550e4116001c816adfb04a70',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5fmidi_5foutput',['DISTRHO_PLUGIN_WANT_MIDI_OUTPUT',['../group__PluginMacros.html#ga548522eb91344a45841a5a95ff4f8073',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5fprograms',['DISTRHO_PLUGIN_WANT_PROGRAMS',['../group__PluginMacros.html#gad95e24b17f196260cee15255fdb5b677',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5fstate',['DISTRHO_PLUGIN_WANT_STATE',['../group__PluginMacros.html#ga255f43cc0997af8b56abcca260c875e0',1,'DistrhoPlugin.hpp']]], + ['distrho_5fplugin_5fwant_5ftimepos',['DISTRHO_PLUGIN_WANT_TIMEPOS',['../group__PluginMacros.html#ga496610b956d931b1940d07da48d123f2',1,'DistrhoPlugin.hpp']]], + ['distrho_5fui_5furi',['DISTRHO_UI_URI',['../group__PluginMacros.html#ga420a88022da249b9f38a6046998dbd7c',1,'DistrhoPlugin.hpp']]], + ['distrho_5fui_5fuse_5fnanovg',['DISTRHO_UI_USE_NANOVG',['../group__PluginMacros.html#gad49e79936a2aa5afa089cbc051426ccd',1,'DistrhoPlugin.hpp']]], + ['distrho_20_25plugin_20framework',['DISTRHO %Plugin Framework',['../index.html',1,'']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 00000000..1ee90b94 --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 00000000..adc245e8 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['fixdefault',['fixDefault',['../structParameterRanges.html#a17519e584ccc28e87b73bfbd1a81cf10',1,'ParameterRanges']]], + ['fixvalue',['fixValue',['../structParameterRanges.html#a1dac84c100f420bfc529a4d2ea60dc7c',1,'ParameterRanges']]], + ['frame',['frame',['../structMidiEvent.html#aca2f6590b33bd2175ab71f985747d88e',1,'MidiEvent::frame()'],['../structTimePosition.html#aa3606d1c518c7ebe6335bc19f72b015b',1,'TimePosition::frame()']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 00000000..85c4a815 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 00000000..3e12653c --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['getfixedandnormalizedvalue',['getFixedAndNormalizedValue',['../structParameterRanges.html#a82698a1e07b1b04ccb5df0de4db0d0be',1,'ParameterRanges']]], + ['getfixedvalue',['getFixedValue',['../structParameterRanges.html#acd3d977c154ddb3138f36c0b6d2b7626',1,'ParameterRanges']]], + ['getnormalizedvalue',['getNormalizedValue',['../structParameterRanges.html#ad16ef939c1caa2f51e9a4041f769f86e',1,'ParameterRanges']]], + ['getunnormalizedvalue',['getUnnormalizedValue',['../structParameterRanges.html#a992f75a925b3cd5e66544087708ea3c3',1,'ParameterRanges']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 00000000..56eb97ca --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 00000000..81142290 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hints',['hints',['../structParameter.html#a397fb977f0c6cbec31df4f141ca3f5b3',1,'Parameter']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 00000000..d085ca8e --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 00000000..567f5fcb --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['kdatasize',['kDataSize',['../structMidiEvent.html#a9e23ce17777c2ff5190670d3262129b9',1,'MidiEvent']]], + ['kparameterisautomable',['kParameterIsAutomable',['../group__ParameterHints.html#ga04161ef926442aa08ae7aa6847078ad9',1,'DistrhoPlugin.hpp']]], + ['kparameterisboolean',['kParameterIsBoolean',['../group__ParameterHints.html#gaafca30df903781d2e1c2491808e17c8d',1,'DistrhoPlugin.hpp']]], + ['kparameteriscv',['kParameterIsCV',['../group__ParameterHints.html#ga1eae4d034f2ff1bc14035d87c4b63b14',1,'DistrhoPlugin.hpp']]], + ['kparameterisinteger',['kParameterIsInteger',['../group__ParameterHints.html#ga76a82c93efe6ad728c9f0cb4ef33a2b9',1,'DistrhoPlugin.hpp']]], + ['kparameterislogarithmic',['kParameterIsLogarithmic',['../group__ParameterHints.html#gabc539ecbfe420246a33f93aed32b8a3b',1,'DistrhoPlugin.hpp']]], + ['kparameterisoutput',['kParameterIsOutput',['../group__ParameterHints.html#ga0a3633c93e8589f4b3e6124bb97ad8d4',1,'DistrhoPlugin.hpp']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 00000000..7a31022e --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 00000000..488b3673 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['max',['max',['../structParameterRanges.html#a175c78c905c598df929a4450e4d2a2a0',1,'ParameterRanges']]], + ['midievent',['MidiEvent',['../structMidiEvent.html',1,'']]], + ['min',['min',['../structParameterRanges.html#a63c40988463a8ace9d0e9e55a00f3c7b',1,'ParameterRanges']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 00000000..f83a2807 --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 00000000..e5a4f1dd --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['name',['name',['../structParameter.html#a2e75f234cbbda1ed0517075e67d27191',1,'Parameter']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 00000000..e0bfa825 --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 00000000..7f17b943 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['onresize',['onResize',['../classUI.html#a8de15be030bbdf0eb81461349cb1cc77',1,'UI']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 00000000..5cf41a6c --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 00000000..37a0973b --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parameter',['Parameter',['../structParameter.html',1,'Parameter'],['../structParameter.html#a12ced87d6d832deccb6c8ce2c8313b2e',1,'Parameter::Parameter()']]], + ['parameter_20hints',['Parameter Hints',['../group__ParameterHints.html',1,'']]], + ['parameterranges',['ParameterRanges',['../structParameterRanges.html',1,'ParameterRanges'],['../structParameterRanges.html#adb9b2712df3401eb0c5e11362d865d4e',1,'ParameterRanges::ParameterRanges() noexcept'],['../structParameterRanges.html#aad2afc730bee791aab1811744a48f99d',1,'ParameterRanges::ParameterRanges(const float df, const float mn, const float mx) noexcept']]], + ['playing',['playing',['../structTimePosition.html#a35db424bdf8ec01102a4fa6346c45574',1,'TimePosition']]], + ['plugin',['Plugin',['../classPlugin.html',1,'Plugin'],['../classPlugin.html#a3096e491376cb9378be55915d748de57',1,'Plugin::Plugin()']]], + ['plugin_20macros',['Plugin Macros',['../group__PluginMacros.html',1,'']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 00000000..37a04963 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 00000000..dfd71ae3 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ranges',['ranges',['../structParameter.html#a2d0c81e4fb8fad18d920ef6ecd4a64db',1,'Parameter']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 00000000..75bc6454 --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 00000000..177a1a52 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['size',['size',['../structMidiEvent.html#a48b420a6dbca6502113b92c336a3041e',1,'MidiEvent']]], + ['symbol',['symbol',['../structParameter.html#a0b5193e6131f65878dfb6fe4d9f5e970',1,'Parameter']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 00000000..02310815 --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 00000000..048a36f8 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tick',['tick',['../structTimePosition_1_1BarBeatTick.html#ad38d7364a5441f1f49c3538f5691a299',1,'TimePosition::BarBeatTick']]], + ['ticksperbeat',['ticksPerBeat',['../structTimePosition_1_1BarBeatTick.html#ab8cfc3f2709a79e733e58556712da062',1,'TimePosition::BarBeatTick']]], + ['timeposition',['TimePosition',['../structTimePosition.html',1,'TimePosition'],['../structTimePosition.html#aee816daeed95cf309ded1087a0c800ae',1,'TimePosition::TimePosition()']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 00000000..97c55da2 --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 00000000..828230dd --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ui',['UI',['../classUI.html',1,'UI'],['../classUI.html#ad3425075e4a23234a8568d1893b54f22',1,'UI::UI()']]], + ['unit',['unit',['../structParameter.html#aa9ee36848d60d8ddd9185b9a3f2ce93f',1,'Parameter']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 00000000..3afc519b --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 00000000..35de575c --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['valid',['valid',['../structTimePosition_1_1BarBeatTick.html#a45a05047e923285af0fbeacb371e3f4e',1,'TimePosition::BarBeatTick']]] +]; diff --git a/search/all_f.html b/search/all_f.html new file mode 100644 index 00000000..0e2f45e4 --- /dev/null +++ b/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 00000000..0177647d --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_7eplugin',['~Plugin',['../classPlugin.html#a89814b8f0b1c91e49140d42eb8331383',1,'Plugin']]], + ['_7eui',['~UI',['../classUI.html#a47e7b6111faba049dfee4738d067cc42',1,'UI']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 00000000..a7b6a289 --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 00000000..3c72e37f --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['barbeattick',['BarBeatTick',['../structTimePosition_1_1BarBeatTick.html',1,'TimePosition']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 00000000..1adf16d8 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 00000000..ddfccd9f --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['midievent',['MidiEvent',['../structMidiEvent.html',1,'']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 00000000..b5828d9c --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 00000000..cab226e0 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['parameter',['Parameter',['../structParameter.html',1,'']]], + ['parameterranges',['ParameterRanges',['../structParameterRanges.html',1,'']]], + ['plugin',['Plugin',['../classPlugin.html',1,'']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 00000000..c42a9a14 --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 00000000..46482ad6 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timeposition',['TimePosition',['../structTimePosition.html',1,'']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 00000000..6a7e824a --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 00000000..bd668277 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ui',['UI',['../classUI.html',1,'']]] +]; diff --git a/search/close.png b/search/close.png new file mode 100644 index 00000000..9342d3df Binary files /dev/null and b/search/close.png differ diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 00000000..36aa6a65 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 00000000..12f6451c --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['barbeattick',['BarBeatTick',['../structTimePosition_1_1BarBeatTick.html#abff8c9586a4e82694e7d6bac3e8da1ef',1,'TimePosition::BarBeatTick']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 00000000..4985f9bd --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 00000000..aec04922 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['d_5factivate',['d_activate',['../classPlugin.html#a15df4876febf5909fe040d401fc704d0',1,'Plugin']]], + ['d_5fbuffersizechanged',['d_bufferSizeChanged',['../classPlugin.html#a2c6ac454e24b667d54eaaf63da252627',1,'Plugin']]], + ['d_5fdeactivate',['d_deactivate',['../classPlugin.html#a5c008d623e558e7266aecaff22fc787a',1,'Plugin']]], + ['d_5feditparameter',['d_editParameter',['../classUI.html#a768b898d1e063d5c0112197b99ccba99',1,'UI']]], + ['d_5fgetbuffersize',['d_getBufferSize',['../classPlugin.html#aa0feb17c3dcf13a106505eb6d6b2a3ac',1,'Plugin']]], + ['d_5fgetlabel',['d_getLabel',['../classPlugin.html#ae512b28d1b274a055de33812cf094d81',1,'Plugin']]], + ['d_5fgetlicense',['d_getLicense',['../classPlugin.html#ae9333c170accfd2a237448a4579d5fef',1,'Plugin']]], + ['d_5fgetmaker',['d_getMaker',['../classPlugin.html#a0eaf2f46f04d60526622afb5a86e026c',1,'Plugin']]], + ['d_5fgetname',['d_getName',['../classPlugin.html#a0f8fb7aa5ab05ba246e158b1024dd031',1,'Plugin']]], + ['d_5fgetparametervalue',['d_getParameterValue',['../classPlugin.html#af088f855761b67489f19f42fbb585088',1,'Plugin']]], + ['d_5fgetplugininstancepointer',['d_getPluginInstancePointer',['../classUI.html#a5393f505fc8702905c15c70c9fcf0d48',1,'UI']]], + ['d_5fgetsamplerate',['d_getSampleRate',['../classPlugin.html#ace888940905e8875284e07c52bf7404f',1,'Plugin::d_getSampleRate()'],['../classUI.html#ab6cbe4dcade92f7f49d4405e51ee639c',1,'UI::d_getSampleRate()']]], + ['d_5fgettimeposition',['d_getTimePosition',['../classPlugin.html#ade0a082a3a2936286537a04f4b972225',1,'Plugin']]], + ['d_5fgetuniqueid',['d_getUniqueId',['../classPlugin.html#aea77208248b36c7b8c9dc57ee68ae97a',1,'Plugin']]], + ['d_5fgetversion',['d_getVersion',['../classPlugin.html#af9251f8d90e4df43c6387bd111487e4e',1,'Plugin']]], + ['d_5finitparameter',['d_initParameter',['../classPlugin.html#a3f93a8eb97db3dc9984c357c5ffca5ec',1,'Plugin']]], + ['d_5finitprogramname',['d_initProgramName',['../classPlugin.html#a8a1792b7c5c6a3fd9cd626c7156ec3b6',1,'Plugin']]], + ['d_5finitstate',['d_initState',['../classPlugin.html#a65f9f9d4a30b0a56dfa42703c0b4db76',1,'Plugin']]], + ['d_5fparameterchanged',['d_parameterChanged',['../classUI.html#a9599da33720f4648e9ce78cc18249b07',1,'UI']]], + ['d_5fprogramchanged',['d_programChanged',['../classUI.html#a7d703d2caff4765f270686b8428a2fa0',1,'UI']]], + ['d_5frun',['d_run',['../classPlugin.html#af67102a7c6d19a8530ce0e3293e55667',1,'Plugin']]], + ['d_5fsampleratechanged',['d_sampleRateChanged',['../classPlugin.html#a469b53e1c1417a32d766cf96d1b3c45e',1,'Plugin::d_sampleRateChanged()'],['../classUI.html#a18f4b84a973405fc098e69047e0d1994',1,'UI::d_sampleRateChanged()']]], + ['d_5fsendnote',['d_sendNote',['../classUI.html#a621c381126d8e2f0124199b82cdcd456',1,'UI']]], + ['d_5fsetlatency',['d_setLatency',['../classPlugin.html#a7816b45ffb52b0a6308cabb792b1a56f',1,'Plugin']]], + ['d_5fsetparametervalue',['d_setParameterValue',['../classPlugin.html#a4cdd613f58a013429094700f3d83904a',1,'Plugin::d_setParameterValue()'],['../classUI.html#a310a08018194f82937ca92bed4e77f1f',1,'UI::d_setParameterValue()']]], + ['d_5fsetprogram',['d_setProgram',['../classPlugin.html#a1d001e50781b35df23f6d9a218f5f804',1,'Plugin']]], + ['d_5fsetstate',['d_setState',['../classPlugin.html#ad9c46a36cab96f52a0370043093bca68',1,'Plugin::d_setState()'],['../classUI.html#ac32cb7fd88c642eadebf64137acd910e',1,'UI::d_setState()']]], + ['d_5fstatechanged',['d_stateChanged',['../classUI.html#a7f508ebffec7a5168b532ccb9d81df70',1,'UI']]], + ['d_5fuifilebrowserselected',['d_uiFileBrowserSelected',['../classUI.html#ab10300e34b40d6b447b1213813f474c0',1,'UI']]], + ['d_5fuiidle',['d_uiIdle',['../classUI.html#aa320b8d3e826394dad9f7c36692f9b6c',1,'UI']]], + ['d_5fuireshape',['d_uiReshape',['../classUI.html#aaf729415450434ad6690db93fd936bbf',1,'UI']]], + ['d_5fwritemidievent',['d_writeMidiEvent',['../classPlugin.html#afa10aea18e4036b4a7487f2779d92e0f',1,'Plugin']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 00000000..152b4ed0 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 00000000..9bef7282 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fixdefault',['fixDefault',['../structParameterRanges.html#a17519e584ccc28e87b73bfbd1a81cf10',1,'ParameterRanges']]], + ['fixvalue',['fixValue',['../structParameterRanges.html#a1dac84c100f420bfc529a4d2ea60dc7c',1,'ParameterRanges']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 00000000..3c01efab --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 00000000..3e12653c --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['getfixedandnormalizedvalue',['getFixedAndNormalizedValue',['../structParameterRanges.html#a82698a1e07b1b04ccb5df0de4db0d0be',1,'ParameterRanges']]], + ['getfixedvalue',['getFixedValue',['../structParameterRanges.html#acd3d977c154ddb3138f36c0b6d2b7626',1,'ParameterRanges']]], + ['getnormalizedvalue',['getNormalizedValue',['../structParameterRanges.html#ad16ef939c1caa2f51e9a4041f769f86e',1,'ParameterRanges']]], + ['getunnormalizedvalue',['getUnnormalizedValue',['../structParameterRanges.html#a992f75a925b3cd5e66544087708ea3c3',1,'ParameterRanges']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 00000000..c9e43d83 --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 00000000..7f17b943 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['onresize',['onResize',['../classUI.html#a8de15be030bbdf0eb81461349cb1cc77',1,'UI']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 00000000..9e9d5c53 --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 00000000..87a57e71 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['parameter',['Parameter',['../structParameter.html#a12ced87d6d832deccb6c8ce2c8313b2e',1,'Parameter']]], + ['parameterranges',['ParameterRanges',['../structParameterRanges.html#adb9b2712df3401eb0c5e11362d865d4e',1,'ParameterRanges::ParameterRanges() noexcept'],['../structParameterRanges.html#aad2afc730bee791aab1811744a48f99d',1,'ParameterRanges::ParameterRanges(const float df, const float mn, const float mx) noexcept']]], + ['plugin',['Plugin',['../classPlugin.html#a3096e491376cb9378be55915d748de57',1,'Plugin']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 00000000..9e23fe58 --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 00000000..ae965bd9 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['timeposition',['TimePosition',['../structTimePosition.html#aee816daeed95cf309ded1087a0c800ae',1,'TimePosition']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 00000000..f7ccd597 --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 00000000..c17c0582 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ui',['UI',['../classUI.html#ad3425075e4a23234a8568d1893b54f22',1,'UI']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 00000000..596279ed --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 00000000..0177647d --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_7eplugin',['~Plugin',['../classPlugin.html#a89814b8f0b1c91e49140d42eb8331383',1,'Plugin']]], + ['_7eui',['~UI',['../classUI.html#a47e7b6111faba049dfee4738d067cc42',1,'UI']]] +]; diff --git a/search/groups_0.html b/search/groups_0.html new file mode 100644 index 00000000..e38d5827 --- /dev/null +++ b/search/groups_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 00000000..e61dfdea --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['base_20structs',['Base Structs',['../group__BaseStructs.html',1,'']]] +]; diff --git a/search/groups_1.html b/search/groups_1.html new file mode 100644 index 00000000..342911cd --- /dev/null +++ b/search/groups_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 00000000..4cb07cd3 --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['parameter_20hints',['Parameter Hints',['../group__ParameterHints.html',1,'']]], + ['plugin_20macros',['Plugin Macros',['../group__PluginMacros.html',1,'']]] +]; diff --git a/search/mag_sel.png b/search/mag_sel.png new file mode 100644 index 00000000..81f6040a Binary files /dev/null and b/search/mag_sel.png differ diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 00000000..b1ded27e --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 00000000..582ce942 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 00000000..e0343924 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['distrho_20_25plugin_20framework',['DISTRHO %Plugin Framework',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 00000000..4d7612ff --- /dev/null +++ b/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 00000000..9e1fb3ac --- /dev/null +++ b/search/search.js @@ -0,0 +1,803 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "bdfghkmnoprstuv~", + 1: "bmptu", + 2: "bdfgoptu~", + 3: "bdfhkmnprstuv", + 4: "bp", + 5: "d" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "functions", + 3: "variables", + 4: "groups", + 5: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 00000000..d91b9800 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['bar',['bar',['../structTimePosition_1_1BarBeatTick.html#ad104eba852516842d8c4776f9d495d21',1,'TimePosition::BarBeatTick']]], + ['barstarttick',['barStartTick',['../structTimePosition_1_1BarBeatTick.html#a5205e95c8f8021006bde2eae774d5b62',1,'TimePosition::BarBeatTick']]], + ['beat',['beat',['../structTimePosition_1_1BarBeatTick.html#af4be3edce420539cbb21bc1b0278201c',1,'TimePosition::BarBeatTick']]], + ['beatsperbar',['beatsPerBar',['../structTimePosition_1_1BarBeatTick.html#a4805c98ceeedca9fb886de068c50cb88',1,'TimePosition::BarBeatTick']]], + ['beatsperminute',['beatsPerMinute',['../structTimePosition_1_1BarBeatTick.html#af7cb9ae9b30da287828ebddee5caff2f',1,'TimePosition::BarBeatTick']]], + ['beattype',['beatType',['../structTimePosition_1_1BarBeatTick.html#a3d0f3681391ab7d3d37abcae24c72257',1,'TimePosition::BarBeatTick']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 00000000..cef7a9e3 --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 00000000..77615e7b --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data',['data',['../structMidiEvent.html#aba54410d44eef48c10516f29452ef3a9',1,'MidiEvent']]], + ['def',['def',['../structParameterRanges.html#aa0aba68115bcfff25c35b2da2f7aed4c',1,'ParameterRanges']]] +]; diff --git a/search/variables_2.html b/search/variables_2.html new file mode 100644 index 00000000..b299c29c --- /dev/null +++ b/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_2.js b/search/variables_2.js new file mode 100644 index 00000000..6d7833a6 --- /dev/null +++ b/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frame',['frame',['../structMidiEvent.html#aca2f6590b33bd2175ab71f985747d88e',1,'MidiEvent::frame()'],['../structTimePosition.html#aa3606d1c518c7ebe6335bc19f72b015b',1,'TimePosition::frame()']]] +]; diff --git a/search/variables_3.html b/search/variables_3.html new file mode 100644 index 00000000..a7d21864 --- /dev/null +++ b/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_3.js b/search/variables_3.js new file mode 100644 index 00000000..81142290 --- /dev/null +++ b/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hints',['hints',['../structParameter.html#a397fb977f0c6cbec31df4f141ca3f5b3',1,'Parameter']]] +]; diff --git a/search/variables_4.html b/search/variables_4.html new file mode 100644 index 00000000..2f6da691 --- /dev/null +++ b/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_4.js b/search/variables_4.js new file mode 100644 index 00000000..567f5fcb --- /dev/null +++ b/search/variables_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['kdatasize',['kDataSize',['../structMidiEvent.html#a9e23ce17777c2ff5190670d3262129b9',1,'MidiEvent']]], + ['kparameterisautomable',['kParameterIsAutomable',['../group__ParameterHints.html#ga04161ef926442aa08ae7aa6847078ad9',1,'DistrhoPlugin.hpp']]], + ['kparameterisboolean',['kParameterIsBoolean',['../group__ParameterHints.html#gaafca30df903781d2e1c2491808e17c8d',1,'DistrhoPlugin.hpp']]], + ['kparameteriscv',['kParameterIsCV',['../group__ParameterHints.html#ga1eae4d034f2ff1bc14035d87c4b63b14',1,'DistrhoPlugin.hpp']]], + ['kparameterisinteger',['kParameterIsInteger',['../group__ParameterHints.html#ga76a82c93efe6ad728c9f0cb4ef33a2b9',1,'DistrhoPlugin.hpp']]], + ['kparameterislogarithmic',['kParameterIsLogarithmic',['../group__ParameterHints.html#gabc539ecbfe420246a33f93aed32b8a3b',1,'DistrhoPlugin.hpp']]], + ['kparameterisoutput',['kParameterIsOutput',['../group__ParameterHints.html#ga0a3633c93e8589f4b3e6124bb97ad8d4',1,'DistrhoPlugin.hpp']]] +]; diff --git a/search/variables_5.html b/search/variables_5.html new file mode 100644 index 00000000..6deb0562 --- /dev/null +++ b/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_5.js b/search/variables_5.js new file mode 100644 index 00000000..3e17e7eb --- /dev/null +++ b/search/variables_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['max',['max',['../structParameterRanges.html#a175c78c905c598df929a4450e4d2a2a0',1,'ParameterRanges']]], + ['min',['min',['../structParameterRanges.html#a63c40988463a8ace9d0e9e55a00f3c7b',1,'ParameterRanges']]] +]; diff --git a/search/variables_6.html b/search/variables_6.html new file mode 100644 index 00000000..43a19b6a --- /dev/null +++ b/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_6.js b/search/variables_6.js new file mode 100644 index 00000000..e5a4f1dd --- /dev/null +++ b/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['name',['name',['../structParameter.html#a2e75f234cbbda1ed0517075e67d27191',1,'Parameter']]] +]; diff --git a/search/variables_7.html b/search/variables_7.html new file mode 100644 index 00000000..22b439ee --- /dev/null +++ b/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_7.js b/search/variables_7.js new file mode 100644 index 00000000..7b83b4ab --- /dev/null +++ b/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['playing',['playing',['../structTimePosition.html#a35db424bdf8ec01102a4fa6346c45574',1,'TimePosition']]] +]; diff --git a/search/variables_8.html b/search/variables_8.html new file mode 100644 index 00000000..cf7a26e7 --- /dev/null +++ b/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_8.js b/search/variables_8.js new file mode 100644 index 00000000..dfd71ae3 --- /dev/null +++ b/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ranges',['ranges',['../structParameter.html#a2d0c81e4fb8fad18d920ef6ecd4a64db',1,'Parameter']]] +]; diff --git a/search/variables_9.html b/search/variables_9.html new file mode 100644 index 00000000..4efc5aac --- /dev/null +++ b/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_9.js b/search/variables_9.js new file mode 100644 index 00000000..177a1a52 --- /dev/null +++ b/search/variables_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['size',['size',['../structMidiEvent.html#a48b420a6dbca6502113b92c336a3041e',1,'MidiEvent']]], + ['symbol',['symbol',['../structParameter.html#a0b5193e6131f65878dfb6fe4d9f5e970',1,'Parameter']]] +]; diff --git a/search/variables_a.html b/search/variables_a.html new file mode 100644 index 00000000..04a9a321 --- /dev/null +++ b/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_a.js b/search/variables_a.js new file mode 100644 index 00000000..48968290 --- /dev/null +++ b/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tick',['tick',['../structTimePosition_1_1BarBeatTick.html#ad38d7364a5441f1f49c3538f5691a299',1,'TimePosition::BarBeatTick']]], + ['ticksperbeat',['ticksPerBeat',['../structTimePosition_1_1BarBeatTick.html#ab8cfc3f2709a79e733e58556712da062',1,'TimePosition::BarBeatTick']]] +]; diff --git a/search/variables_b.html b/search/variables_b.html new file mode 100644 index 00000000..02bb87b4 --- /dev/null +++ b/search/variables_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_b.js b/search/variables_b.js new file mode 100644 index 00000000..187fc6f9 --- /dev/null +++ b/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unit',['unit',['../structParameter.html#aa9ee36848d60d8ddd9185b9a3f2ce93f',1,'Parameter']]] +]; diff --git a/search/variables_c.html b/search/variables_c.html new file mode 100644 index 00000000..7118dd09 --- /dev/null +++ b/search/variables_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/variables_c.js b/search/variables_c.js new file mode 100644 index 00000000..35de575c --- /dev/null +++ b/search/variables_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['valid',['valid',['../structTimePosition_1_1BarBeatTick.html#a45a05047e923285af0fbeacb371e3f4e',1,'TimePosition::BarBeatTick']]] +]; diff --git a/structMidiEvent-members.html b/structMidiEvent-members.html new file mode 100644 index 00000000..1841c519 --- /dev/null +++ b/structMidiEvent-members.html @@ -0,0 +1,105 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
MidiEvent Member List
+
+
+ +

This is the complete list of members for MidiEvent, including all inherited members.

+ + + + + + +
dataMidiEvent
dataExt (defined in MidiEvent)MidiEvent
frameMidiEvent
kDataSizeMidiEventstatic
sizeMidiEvent
+ + + + diff --git a/structMidiEvent.html b/structMidiEvent.html new file mode 100644 index 00000000..ac551497 --- /dev/null +++ b/structMidiEvent.html @@ -0,0 +1,187 @@ + + + + + + +DISTRHO Plugin Framework: MidiEvent Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+ +
+ +

#include <DistrhoPlugin.hpp>

+ + + + + + + + + + +

+Public Attributes

uint32_t frame
 
uint32_t size
 
uint8_t data [kDataSize]
 
+const uint8_t * dataExt
 
+ + + +

+Static Public Attributes

static const uint32_t kDataSize = 4
 
+

Detailed Description

+

MIDI event.

+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
const uint32_t MidiEvent::kDataSize = 4
+
+static
+
+

Size of internal data.

+ +
+
+ +
+
+ + + + +
uint32_t MidiEvent::frame
+
+

Time offset in frames.

+ +
+
+ +
+
+ + + + +
uint32_t MidiEvent::size
+
+

Number of bytes used.

+ +
+
+ +
+
+ + + + +
uint8_t MidiEvent::data[kDataSize]
+
+

MIDI data. If size > kDataSize, dataExt is used (otherwise null).

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/structParameter-members.html b/structParameter-members.html new file mode 100644 index 00000000..fde08b3a --- /dev/null +++ b/structParameter-members.html @@ -0,0 +1,106 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
Parameter Member List
+
+
+ +

This is the complete list of members for Parameter, including all inherited members.

+ + + + + + + +
hintsParameter
nameParameter
Parameter() noexceptParameterinline
rangesParameter
symbolParameter
unitParameter
+ + + + diff --git a/structParameter.html b/structParameter.html new file mode 100644 index 00000000..ce7c7d68 --- /dev/null +++ b/structParameter.html @@ -0,0 +1,218 @@ + + + + + + +DISTRHO Plugin Framework: Parameter Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+ +
+ +

#include <DistrhoPlugin.hpp>

+ + + + +

+Public Member Functions

 Parameter () noexcept
 
+ + + + + + + + + + + +

+Public Attributes

uint32_t hints
 
d_string name
 
d_string symbol
 
d_string unit
 
ParameterRanges ranges
 
+

Detailed Description

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
Parameter::Parameter ()
+
+inlinenoexcept
+
+

Default constructor for a null parameter.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
uint32_t Parameter::hints
+
+

Hints describing this parameter.

See also
Parameter Hints
+ +
+
+ +
+
+ + + + +
d_string Parameter::name
+
+

The name of this parameter. A parameter name can contain any character, but hosts might have a hard time with non-ascii ones. The name doesn't have to be unique within a plugin instance, but it's recommended.

+ +
+
+ +
+
+ + + + +
d_string Parameter::symbol
+
+

The symbol of this parameter. A parameter symbol is a short restricted name used as a machine and human readable identifier. The first character must be one of _, a-z or A-Z and subsequent characters can be from _, a-z, A-Z and 0-9.

Note
: Parameter symbols MUST be unique within a plugin instance.
+ +
+
+ +
+
+ + + + +
d_string Parameter::unit
+
+

The unit of this parameter. This means something like "dB", "kHz" and "ms". Can be left blank if units do not apply to this parameter.

+ +
+
+ +
+
+ + + + +
ParameterRanges Parameter::ranges
+
+

Ranges of this parameter. The ranges describe the default, minimum and maximum values.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/structParameterRanges-members.html b/structParameterRanges-members.html new file mode 100644 index 00000000..d6014e77 --- /dev/null +++ b/structParameterRanges-members.html @@ -0,0 +1,111 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
ParameterRanges Member List
+
+
+ +

This is the complete list of members for ParameterRanges, including all inherited members.

+ + + + + + + + + + + + +
defParameterRanges
fixDefault() noexceptParameterRangesinline
fixValue(float &value) const noexceptParameterRangesinline
getFixedAndNormalizedValue(const float &value) const noexceptParameterRangesinline
getFixedValue(const float &value) const noexceptParameterRangesinline
getNormalizedValue(const float &value) const noexceptParameterRangesinline
getUnnormalizedValue(const float &value) const noexceptParameterRangesinline
maxParameterRanges
minParameterRanges
ParameterRanges() noexceptParameterRangesinline
ParameterRanges(const float df, const float mn, const float mx) noexceptParameterRangesinline
+ + + + diff --git a/structParameterRanges.html b/structParameterRanges.html new file mode 100644 index 00000000..6c23dff4 --- /dev/null +++ b/structParameterRanges.html @@ -0,0 +1,394 @@ + + + + + + +DISTRHO Plugin Framework: ParameterRanges Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
ParameterRanges Struct Reference
+
+
+ +

#include <DistrhoPlugin.hpp>

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ParameterRanges () noexcept
 
 ParameterRanges (const float df, const float mn, const float mx) noexcept
 
void fixDefault () noexcept
 
void fixValue (float &value) const noexcept
 
const float & getFixedValue (const float &value) const noexcept
 
float getNormalizedValue (const float &value) const noexcept
 
float getFixedAndNormalizedValue (const float &value) const noexcept
 
float getUnnormalizedValue (const float &value) const noexcept
 
+ + + + + + + +

+Public Attributes

float def
 
float min
 
float max
 
+

Detailed Description

+

Parameter ranges. This is used to set the default, minimum and maximum values of a parameter.

+

By default a parameter has 0.0 as minimum, 1.0 as maximum and 0.0 as default. When changing this struct values you must ensure maximum > minimum and default is within range.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
ParameterRanges::ParameterRanges ()
+
+inlinenoexcept
+
+

Default constructor.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ParameterRanges::ParameterRanges (const float df,
const float mn,
const float mx 
)
+
+inlinenoexcept
+
+

Constructor using custom values.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
void ParameterRanges::fixDefault ()
+
+inlinenoexcept
+
+

Fix the default value within range.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void ParameterRanges::fixValue (float & value) const
+
+inlinenoexcept
+
+

Fix a value within range.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
const float& ParameterRanges::getFixedValue (const float & value) const
+
+inlinenoexcept
+
+

Get a fixed value within range.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
float ParameterRanges::getNormalizedValue (const float & value) const
+
+inlinenoexcept
+
+

Get a value normalized to 0.0<->1.0.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
float ParameterRanges::getFixedAndNormalizedValue (const float & value) const
+
+inlinenoexcept
+
+

Get a value normalized to 0.0<->1.0, fixed within range.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
float ParameterRanges::getUnnormalizedValue (const float & value) const
+
+inlinenoexcept
+
+

Get a proper value previously normalized to 0.0<->1.0.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
float ParameterRanges::def
+
+

Default value.

+ +
+
+ +
+
+ + + + +
float ParameterRanges::min
+
+

Minimum value.

+ +
+
+ +
+
+ + + + +
float ParameterRanges::max
+
+

Maximum value.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/structTimePosition-members.html b/structTimePosition-members.html new file mode 100644 index 00000000..b13b26c7 --- /dev/null +++ b/structTimePosition-members.html @@ -0,0 +1,104 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
TimePosition Member List
+
+
+ +

This is the complete list of members for TimePosition, including all inherited members.

+ + + + + +
bbt (defined in TimePosition)TimePosition
frameTimePosition
playingTimePosition
TimePosition() noexceptTimePositioninline
+ + + + diff --git a/structTimePosition.html b/structTimePosition.html new file mode 100644 index 00000000..50eb6f12 --- /dev/null +++ b/structTimePosition.html @@ -0,0 +1,183 @@ + + + + + + +DISTRHO Plugin Framework: TimePosition Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ +
+ +
+ +

#include <DistrhoPlugin.hpp>

+ + + + +

+Classes

struct  BarBeatTick
 
+ + + +

+Public Member Functions

 TimePosition () noexcept
 
+ + + + + + + +

+Public Attributes

bool playing
 
uint64_t frame
 
+struct TimePosition::BarBeatTick bbt
 
+

Detailed Description

+

Time position. The playing and frame values are always valid. BBT values are only valid when bbt.valid is true.

+

This struct is inspired by the JACK Transport API.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
TimePosition::TimePosition ()
+
+inlinenoexcept
+
+

Default constructor for a time position.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
bool TimePosition::playing
+
+

Wherever the host transport is playing/rolling.

+ +
+
+ +
+
+ + + + +
uint64_t TimePosition::frame
+
+

Current host transport position in frames.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/structTimePosition_1_1BarBeatTick-members.html b/structTimePosition_1_1BarBeatTick-members.html new file mode 100644 index 00000000..226edf03 --- /dev/null +++ b/structTimePosition_1_1BarBeatTick-members.html @@ -0,0 +1,114 @@ + + + + + + +DISTRHO Plugin Framework: Member List + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
TimePosition::BarBeatTick Member List
+
+ + + + + diff --git a/structTimePosition_1_1BarBeatTick.html b/structTimePosition_1_1BarBeatTick.html new file mode 100644 index 00000000..e0183949 --- /dev/null +++ b/structTimePosition_1_1BarBeatTick.html @@ -0,0 +1,282 @@ + + + + + + +DISTRHO Plugin Framework: TimePosition::BarBeatTick Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
DISTRHO Plugin Framework +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
TimePosition::BarBeatTick Struct Reference
+
+
+ +

#include <DistrhoPlugin.hpp>

+ + + + +

+Public Member Functions

 BarBeatTick () noexcept
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

bool valid
 
int32_t bar
 
int32_t beat
 
int32_t tick
 
double barStartTick
 
float beatsPerBar
 
float beatType
 
double ticksPerBeat
 
double beatsPerMinute
 
+

Detailed Description

+

Bar-Beat-Tick time position.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
TimePosition::BarBeatTick::BarBeatTick ()
+
+inlinenoexcept
+
+

Default constructor for a null BBT time position.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
bool TimePosition::BarBeatTick::valid
+
+

Wherever the host transport is using BBT. If false you must not read from this struct.

+ +
+
+ +
+
+ + + + +
int32_t TimePosition::BarBeatTick::bar
+
+

Current bar. Should always be > 0. The first bar is bar '1'.

+ +
+
+ +
+
+ + + + +
int32_t TimePosition::BarBeatTick::beat
+
+

Current beat within bar. Should always be > 0 and <= beatsPerBar. The first beat is beat '1'.

+ +
+
+ +
+
+ + + + +
int32_t TimePosition::BarBeatTick::tick
+
+

Current tick within beat. Should always be > 0 and <= ticksPerBeat. The first tick is tick '0'.

+ +
+
+ +
+
+ + + + +
double TimePosition::BarBeatTick::barStartTick
+
+

Number of ticks that have elapsed between frame 0 and the first beat of the current measure.

+ +
+
+ +
+
+ + + + +
float TimePosition::BarBeatTick::beatsPerBar
+
+

Time signature "numerator".

+ +
+
+ +
+
+ + + + +
float TimePosition::BarBeatTick::beatType
+
+

Time signature "denominator".

+ +
+
+ +
+
+ + + + +
double TimePosition::BarBeatTick::ticksPerBeat
+
+

Number of ticks within a bar. Usually a moderately large integer with many denominators, such as 1920.0.

+ +
+
+ +
+
+ + + + +
double TimePosition::BarBeatTick::beatsPerMinute
+
+

Number of beats per minute.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 00000000..3b443fc6 Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 00000000..e08320fb Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 00000000..3b725c41 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 00000000..e2b4a863 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 00000000..fd5cb705 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 00000000..ab478c95 Binary files /dev/null and b/tab_s.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 00000000..9cf578f2 --- /dev/null +++ b/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +}