LaunchpadScreen.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #pragma once
  2. #include "LaunchpadColor.h"
  3. #include "Launchpad.h"
  4. namespace midi {
  5. class LaunchpadScreen
  6. {
  7. public:
  8. typedef Launchpad::KeyCoordinate KeyCoordinate;
  9. private:
  10. LaunchpadColor colors[Launchpad::width][Launchpad::height];
  11. Launchpad* launchpad;
  12. bool active;
  13. public:
  14. LaunchpadScreen();
  15. virtual void enable();
  16. virtual void disable();
  17. bool enabled() const;
  18. void setLaunchpad(Launchpad& launchpad);
  19. protected:
  20. virtual void keyPressed(unsigned char x, unsigned char y);
  21. virtual void keyReleased(unsigned char x, unsigned char y);
  22. const LaunchpadColor& getColor(unsigned char x, unsigned char y) const;
  23. void setColor(unsigned char x, unsigned char y, const LaunchpadColor& color);
  24. void setColorAll(const LaunchpadColor& color);
  25. void sync();
  26. bool getKeyPressed(KeyCoordinate x, KeyCoordinate y);
  27. private:
  28. static void keyPressedCallback(unsigned char x, unsigned char y, void* screen);
  29. static void keyReleasedCallback(unsigned char x, unsigned char y, void* screen);
  30. };
  31. } // namespace