فهرست منبع

Launchpad: store last color set

Fabian Peter Hammerle 11 سال پیش
والد
کامیت
14cb22d1e3
2فایلهای تغییر یافته به همراه28 افزوده شده و 0 حذف شده
  1. 17 0
      Launchpad.cpp
  2. 11 0
      Launchpad.h

+ 17 - 0
Launchpad.cpp

@@ -11,6 +11,11 @@ LaunchpadColor::LaunchpadColor(unsigned char r, unsigned char g)
 {
 }
 
+bool LaunchpadColor::operator==(const LaunchpadColor& color) const
+{
+	return red == color.red && green == color.green;
+}
+
 Launchpad::Launchpad()
 	: midiin(), midiout(), keyPressedCallback(0), keyReleasedCallback(0)
 {
@@ -60,6 +65,15 @@ void Launchpad::midiMessageCallback(double timeStamp, MidiMessage &message, void
 		}
 	}
 }
+bool Launchpad::issetColor(unsigned char x, unsigned char y) const
+{
+	return colorSet[x][y];
+}
+
+const LaunchpadColor& Launchpad::getColor(unsigned char x, unsigned char y) const
+{
+	return colors[x][y];
+}
 
 void Launchpad::setColor(unsigned char x, unsigned char y, const LaunchpadColor& color)
 {
@@ -81,6 +95,9 @@ void Launchpad::setColor(unsigned char x, unsigned char y, const LaunchpadColor&
 			velocity
 			));
 	}
+
+	colors[x][y] = color;
+	colorSet[x][y] = true;
 }
 
 void Launchpad::keyPressed(unsigned char x, unsigned char y)

+ 11 - 0
Launchpad.h

@@ -9,12 +9,21 @@ public:
 
 	LaunchpadColor();
 	LaunchpadColor(unsigned char r, unsigned char g);
+
+	bool operator==(const LaunchpadColor& color) const;
 };
 
 class Launchpad
 {
 public:
 	typedef void (*KeyEventCallback)(unsigned char x, unsigned char y);
+	
+	static const unsigned char width = 9;
+	static const unsigned char height = 9;
+
+private:
+	LaunchpadColor colors[width][height];
+	bool colorSet[width][height];
 
 protected:
 	MidiIn midiin;
@@ -26,6 +35,8 @@ public:
 
 	Launchpad();
 
+	bool issetColor(unsigned char x, unsigned char y) const;
+	const LaunchpadColor& getColor(unsigned char x, unsigned char y) const;
 	void setColor(unsigned char x, unsigned char y, const LaunchpadColor& color);
 
 protected: