#include "LaunchpadScreen.h" #include namespace midi { void LaunchpadScreen::keyPressed(unsigned char x, unsigned char y) { } void LaunchpadScreen::keyReleased(unsigned char x, unsigned char y) { } const LaunchpadColor& LaunchpadScreen::getColor(unsigned char x, unsigned char y) const { return colors[x][y]; } void LaunchpadScreen::setColor(unsigned char x, unsigned char y, const LaunchpadColor& color) { if(active && (!launchpad->issetColor(x, y) || launchpad->getColor(x, y) != color)) { launchpad->setColor(x, y, color); } colors[x][y] = color; } void LaunchpadScreen::setColorAll(const LaunchpadColor& color) { for(unsigned char x = 0; x < Launchpad::width; x++) { for(unsigned char y = 0; y < Launchpad::height; y++) { if(x != 8 || y != 8) { setColor(x, y, color); } } } } void LaunchpadScreen::sync() { for(unsigned char x = 0; x < Launchpad::width; x++) { for(unsigned char y = 0; y < Launchpad::height; y++) { if((x != 8 || y != 8) && (!launchpad->issetColor(x, y) || launchpad->getColor(x, y) != colors[x][y])) { launchpad->setColor(x, y, colors[x][y]); } } } } LaunchpadScreen::LaunchpadScreen() : launchpad(0), active(false) { } void LaunchpadScreen::enable() { if(!launchpad) { throw "no launchpad set"; } launchpad->keyEventCallbackData = (void*)this; launchpad->keyPressedCallback = keyPressedCallback; launchpad->keyReleasedCallback = keyReleasedCallback; sync(); active = true; } void LaunchpadScreen::disable() { launchpad->keyPressedCallback = 0; launchpad->keyReleasedCallback = 0; launchpad->keyEventCallbackData = 0; active = false; } bool LaunchpadScreen::enabled() const { return active; } void LaunchpadScreen::setLaunchpad(Launchpad& l) { if(enabled()) { disable(); launchpad = &l; enable(); } else { launchpad = &l; } } void LaunchpadScreen::keyPressedCallback(unsigned char x, unsigned char y, void* screen) { ((LaunchpadScreen*)screen)->keyPressed(x, y); } void LaunchpadScreen::keyReleasedCallback(unsigned char x, unsigned char y, void* screen) { ((LaunchpadScreen*)screen)->keyReleased(x, y); } } // namespace