Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/mixxxcontrol.h

Go to the documentation of this file.
00001 #ifndef _MIXXXCONTROL_H_
00002 #define _MIXXXCONTROL_H_
00003 
00004 #include <QDebug>
00005 #include "configobject.h"
00006 
00007 typedef enum {
00008     MIDI_OPT_NORMAL           = 0,
00009     MIDI_OPT_INVERT           = 1,
00010     MIDI_OPT_ROT64            = 2,
00011     MIDI_OPT_ROT64_INV        = 3,
00012     MIDI_OPT_ROT64_FAST       = 4,
00013     MIDI_OPT_DIFF             = 5,
00014     MIDI_OPT_BUTTON           = 6, // Button Down (!=00) and Button Up (00) events happen together
00015     MIDI_OPT_SWITCH           = 7, // Button Down (!=00) and Button Up (00) events happen seperately
00016     MIDI_OPT_HERC_JOG         = 8, // Generic hercules wierd range correction
00017     MIDI_OPT_SPREAD64         = 9, // Accelerated difference from 64
00018     MIDI_OPT_SELECTKNOB       = 10,// Relative knob which can be turned forever and outputs a signed value.
00019 
00020     MIDI_OPT_SOFT_TAKEOVER    = 40,// Prevents sudden changes when hardware position differs from software value
00021     
00022     MIDI_OPT_SCRIPT           = 50,// Maps a MIDI control to a custom MixxxScript function
00023 } MidiOption;
00024 
00027 class MixxxControl
00028 {
00029     public:
00030         MixxxControl(QString controlobject_group="", QString controlobject_value="",
00031                          QString controlobject_description="",
00032                          MidiOption midioption=MIDI_OPT_NORMAL);
00033         MixxxControl(QDomElement& controlNode, bool isOutputNode=false);
00034         ~MixxxControl() {};
00035         void setControlObjectGroup(QString controlobject_group) { m_strCOGroup = controlobject_group; };
00036         void setControlObjectValue(QString controlobject_value) { m_strCOValue = controlobject_value; };
00037         void setControlObjectDescription(QString controlobject_description) { m_strCODescription = controlobject_description; };
00038         void setMidiOption(MidiOption midioption) { m_midiOption = midioption; };
00039         void setThresholdMinimum(float min) { m_thresholdMinimum = min; };
00040         void setThresholdMaximum(float max) { m_thresholdMaximum = max; };
00041         QString getControlObjectGroup() const { return m_strCOGroup; };
00042         QString getControlObjectValue() const { return m_strCOValue; };
00043         QString getControlObjectDescription() const { return m_strCODescription; };
00044         MidiOption getMidiOption() const { return m_midiOption; };
00045         float getThresholdMinimum() const { return m_thresholdMinimum; };
00046         float getThresholdMaximum() const { return m_thresholdMaximum; };
00047         void serializeToXML(QDomElement& parentNode, bool isOutputNode=false) const;
00048         bool operator==(const MixxxControl& other) const {
00049             return ((m_strCOGroup == other.getControlObjectGroup()) &&
00050                     (m_strCOValue == other.getControlObjectValue()) &&
00051                     (m_strCODescription == other.getControlObjectDescription()) &&
00052                     (m_midiOption == other.getMidiOption()));
00053         };
00054         bool isNull() { return (m_strCOGroup == "" && m_strCOValue == ""); };
00055     private:
00056         QString m_strCOGroup;
00057         QString m_strCOValue;
00058         QString m_strCODescription;
00059         MidiOption m_midiOption;
00060         
00064         float m_thresholdMinimum;
00065         float m_thresholdMaximum; 
00066 };
00067 
00068 inline bool operator<(const MixxxControl &first, const MixxxControl &second)
00069 {
00070    return ((first.getControlObjectGroup() + first.getControlObjectValue()) < 
00071             (second.getControlObjectGroup() + second.getControlObjectValue()));
00072 }
00073   
00075 uint qHash(const MixxxControl& key);
00076 
00077 /*
00078 QDebug operator<<(QDebug dbg, MixxxControl& control)
00079 {
00080     dbg.space() << control.getControlObjectGroup();
00081     dbg.space() << control.getControlObjectValue();
00082     dbg.space() << control.getMidiOption();
00083 
00084     return dbg.space();
00085 }*/
00086 
00087 #endif
00088 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines