12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*
- * Button.h
- *
- * Created on: 5 déc. 2020
- * Author: fanch
- */
- #ifndef SRC_BUTTON_H_
- #define SRC_BUTTON_H_
- #include "AbsInput.h"
- /**
- * @brief La classe qui représente les boutons du PAD
- */
- class Button : public AbsInput
- {
- public:
- Button(PadDefinition* p=NULL) : AbsInput(p, BUTTON) {m_is_pressed=false;}
- Button(const Button& b) : AbsInput(b.m_parent, b.type)
- {
- m_is_pressed=false;
- }
- virtual const Button& operator=(const AbsInput& b)
- {
- AbsInput::operator=(b);
- m_is_pressed=(dynamic_cast<const Button*>(&b))->m_is_pressed;
- return *this;
- }
- virtual ~Button(){}
- bool is_pressed() const {return m_is_pressed; }
- protected:
- bool m_is_pressed;
- virtual void _on_event(const MidiMessage* m){
- int size=m_actions.size();
- for(int i=0; i<size; i++){
- IInputEventListener* l = m_listeners[i];
- switch(m->type){
- case MidiMessage::NOTE_ON:
- m_is_pressed=true;
- l->on_press(this, *dynamic_cast<const NoteOn*>(m));
- break;
- case MidiMessage::NOTE_OFF:
- m_is_pressed=false;
- l->on_release(this, *dynamic_cast<const NoteOff*>(m));
- break;
- }
- }
- }
- };
- #endif /* SRC_BUTTON_H_ */
|