#pragma once #include "LaunchpadColor.h" #include "Launchpad.h" namespace midi { class LaunchpadScreen { public: typedef Launchpad::KeyCoordinate KeyCoordinate; private: LaunchpadColor colors[Launchpad::width][Launchpad::height]; Launchpad* launchpad; bool active; public: LaunchpadScreen(); virtual void enable(); virtual void disable(); bool enabled() const; void setLaunchpad(Launchpad& launchpad); protected: virtual void keyPressed(unsigned char x, unsigned char y); virtual void keyReleased(unsigned char x, unsigned char y); const LaunchpadColor& getColor(unsigned char x, unsigned char y) const; void setColor(unsigned char x, unsigned char y, const LaunchpadColor& color); void setColorAll(const LaunchpadColor& color); void sync(); bool getKeyPressed(KeyCoordinate x, KeyCoordinate y); private: static void keyPressedCallback(unsigned char x, unsigned char y, void* screen); static void keyReleasedCallback(unsigned char x, unsigned char y, void* screen); }; } // namespace