diff --git a/RGBController/RGBController.h b/RGBController/RGBController.h index 5e38da4b..5f2ec90c 100644 --- a/RGBController/RGBController.h +++ b/RGBController/RGBController.h @@ -50,10 +50,11 @@ typedef struct class RGBController { public: - std::string name; /* controller name */ - std::vector leds; /* LEDs */ - std::vector zones; /* Zones */ - std::vector modes; /* Modes */ + std::string name; /* controller name */ + std::vector leds; /* LEDs */ + std::vector zones; /* Zones */ + std::vector modes; /* Modes */ + std::vector colors; /* Color buffer */ virtual int GetMode() = 0; virtual void SetMode(int mode) = 0; @@ -61,4 +62,5 @@ public: virtual void SetAllLEDs(RGBColor color) = 0; virtual void SetAllZoneLEDs(int zone, RGBColor color) = 0; virtual void SetLED(int led, RGBColor color) = 0; + virtual void UpdateLEDs() = 0; }; \ No newline at end of file diff --git a/RGBController/RGBController_Aura.cpp b/RGBController/RGBController_Aura.cpp index 12673d1b..c1b55342 100644 --- a/RGBController/RGBController_Aura.cpp +++ b/RGBController/RGBController_Aura.cpp @@ -93,6 +93,25 @@ void RGBController_Aura::SetLED(int led, RGBColor color) } } +void RGBController_Aura::UpdateLEDs() +{ + for(int led = 0; led < colors.size(); led++) + { + unsigned char red = RGBGetRValue(colors[led]); + unsigned char grn = RGBGetGValue(colors[led]); + unsigned char blu = RGBGetBValue(colors[led]); + + if (GetMode() == 0) + { + aura->SetLEDColorDirect(led, red, grn, blu); + } + else + { + aura->SetLEDColorEffect(led, red, grn, blu); + } + } +} + RGBController_Aura::RGBController_Aura(AuraController * aura_ptr) { std::vector aura_channels; @@ -133,6 +152,7 @@ RGBController_Aura::RGBController_Aura(AuraController * aura_ptr) new_led->name = aura->GetChannelName(i); leds.push_back(*new_led); + colors.push_back(0x00000000); } std::vector aura_zones; diff --git a/RGBController/RGBController_Aura.h b/RGBController/RGBController_Aura.h index cb666dba..71fc528e 100644 --- a/RGBController/RGBController_Aura.h +++ b/RGBController/RGBController_Aura.h @@ -22,6 +22,7 @@ public: void SetAllLEDs(RGBColor color); void SetAllZoneLEDs(int zone, RGBColor color); void SetLED(int led, RGBColor color); + void UpdateLEDs(); private: AuraController* aura; diff --git a/RGBController/RGBController_Corsair.cpp b/RGBController/RGBController_Corsair.cpp index b7ada07d..acda80c3 100644 --- a/RGBController/RGBController_Corsair.cpp +++ b/RGBController/RGBController_Corsair.cpp @@ -57,6 +57,11 @@ void RGBController_Corsair::SetLED(int led, RGBColor color) corsair->SetLEDColor(led, red, grn, blu); } +void RGBController_Corsair::UpdateLEDs() +{ + +} + RGBController_Corsair::RGBController_Corsair(CorsairController* corsair_ptr) { corsair = corsair_ptr; @@ -81,6 +86,7 @@ RGBController_Corsair::RGBController_Corsair(CorsairController* corsair_ptr) new_led->name = "Corsair LED"; leds.push_back(*new_led); + colors.push_back(0x00000000); } zone new_zone; diff --git a/RGBController/RGBController_Corsair.h b/RGBController/RGBController_Corsair.h index a1aa9841..e27edc1d 100644 --- a/RGBController/RGBController_Corsair.h +++ b/RGBController/RGBController_Corsair.h @@ -22,6 +22,7 @@ public: void SetAllLEDs(RGBColor color); void SetAllZoneLEDs(int zone, RGBColor color); void SetLED(int led, RGBColor color); + void UpdateLEDs(); private: CorsairController* corsair; diff --git a/RGBController/RGBController_CorsairPro.cpp b/RGBController/RGBController_CorsairPro.cpp index 093cb02e..ebb3985c 100644 --- a/RGBController/RGBController_CorsairPro.cpp +++ b/RGBController/RGBController_CorsairPro.cpp @@ -93,6 +93,11 @@ void RGBController_CorsairPro::SetLED(int led, RGBColor color) corsair->ApplyColors(); } +void RGBController_CorsairPro::UpdateLEDs() +{ + +} + RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair_ptr) { corsair = corsair_ptr; @@ -124,6 +129,7 @@ RGBController_CorsairPro::RGBController_CorsairPro(CorsairProController* corsair new_led->name = "Corsair Pro LED"; leds.push_back(*new_led); + colors.push_back(0x00000000); } zone new_zone; diff --git a/RGBController/RGBController_CorsairPro.h b/RGBController/RGBController_CorsairPro.h index 225564e7..9ba7174c 100644 --- a/RGBController/RGBController_CorsairPro.h +++ b/RGBController/RGBController_CorsairPro.h @@ -22,6 +22,7 @@ public: void SetAllLEDs(RGBColor color); void SetAllZoneLEDs(int zone, RGBColor color); void SetLED(int led, RGBColor color); + void UpdateLEDs(); private: CorsairProController* corsair; diff --git a/RGBController/RGBController_HyperX.cpp b/RGBController/RGBController_HyperX.cpp index 492b89cc..fdbd0756 100644 --- a/RGBController/RGBController_HyperX.cpp +++ b/RGBController/RGBController_HyperX.cpp @@ -57,6 +57,11 @@ void RGBController_HyperX::SetLED(int led, RGBColor color) hyperx->SetLEDColor(led, red, grn, blu); } +void RGBController_HyperX::UpdateLEDs() +{ + +} + RGBController_HyperX::RGBController_HyperX(HyperXController* hyperx_ptr) { hyperx = hyperx_ptr; @@ -86,6 +91,7 @@ RGBController_HyperX::RGBController_HyperX(HyperXController* hyperx_ptr) new_led->name = "HyperX LED"; leds.push_back(*new_led); + colors.push_back(0x00000000); } zone new_zone; diff --git a/RGBController/RGBController_HyperX.h b/RGBController/RGBController_HyperX.h index a11fba98..8115366c 100644 --- a/RGBController/RGBController_HyperX.h +++ b/RGBController/RGBController_HyperX.h @@ -22,6 +22,7 @@ public: void SetAllLEDs(RGBColor color); void SetAllZoneLEDs(int zone, RGBColor color); void SetLED(int led, RGBColor color); + void UpdateLEDs(); private: HyperXController* hyperx; diff --git a/RGBController/RGBController_LEDStrip.cpp b/RGBController/RGBController_LEDStrip.cpp index 53f49f5e..5243bc36 100644 --- a/RGBController/RGBController_LEDStrip.cpp +++ b/RGBController/RGBController_LEDStrip.cpp @@ -78,5 +78,10 @@ void RGBController_LEDStrip::SetLED(int led, RGBColor color) { colors[led] = color; + strip->SetLEDs(colors); +} + +void RGBController_LEDStrip::UpdateLEDs() +{ strip->SetLEDs(colors); } \ No newline at end of file diff --git a/RGBController/RGBController_LEDStrip.h b/RGBController/RGBController_LEDStrip.h index 02b1ab22..87356af6 100644 --- a/RGBController/RGBController_LEDStrip.h +++ b/RGBController/RGBController_LEDStrip.h @@ -22,8 +22,8 @@ public: void SetAllLEDs(RGBColor color); void SetAllZoneLEDs(int zone, RGBColor color); void SetLED(int led, RGBColor color); + void UpdateLEDs(); private: - std::vector colors; LEDStripController* strip; }; \ No newline at end of file diff --git a/RGBController/RGBController_OpenRazer.cpp b/RGBController/RGBController_OpenRazer.cpp index 4a2f7733..4c23bdc6 100644 --- a/RGBController/RGBController_OpenRazer.cpp +++ b/RGBController/RGBController_OpenRazer.cpp @@ -90,7 +90,7 @@ void RGBController_OpenRazer::SetCustomMode() SetMode(RAZER_MODE_CUSTOM); } -void RGBController_OpenRazer::Output() +void RGBController_OpenRazer::UpdateLEDs() { switch(type) { @@ -107,7 +107,7 @@ void RGBController_OpenRazer::Output() } else { - output_array_size = 3 + (color_buffer.size() * 3); + output_array_size = 3 + (colors.size() * 3); output_offset = 3; } @@ -118,14 +118,14 @@ void RGBController_OpenRazer::Output() { output_array[0] = 0; output_array[1] = 0; - output_array[2] = color_buffer.size() - 1; + output_array[2] = colors.size() - 1; } - for(int i = 0; i < color_buffer.size(); i++) + for(int i = 0; i < colors.size(); i++) { - output_array[(i * 3) + 0 + output_offset] = (char)RGBGetRValue(color_buffer[i]); - output_array[(i * 3) + 1 + output_offset] = (char)RGBGetGValue(color_buffer[i]); - output_array[(i * 3) + 2 + output_offset] = (char)RGBGetBValue(color_buffer[i]); + output_array[(i * 3) + 0 + output_offset] = (char)RGBGetRValue(colors[i]); + output_array[(i * 3) + 1 + output_offset] = (char)RGBGetGValue(colors[i]); + output_array[(i * 3) + 2 + output_offset] = (char)RGBGetBValue(colors[i]); } if(type == RAZER_TYPE_MATRIX_NOFRAME) @@ -149,14 +149,14 @@ void RGBController_OpenRazer::Output() char output_array[output_array_size]; char update_value = 0; - output_array[0] = (char)RGBGetRValue(color_buffer[0]); - output_array[1] = (char)RGBGetGValue(color_buffer[0]); - output_array[2] = (char)RGBGetBValue(color_buffer[0]); + output_array[0] = (char)RGBGetRValue(colors[0]); + output_array[1] = (char)RGBGetGValue(colors[0]); + output_array[2] = (char)RGBGetBValue(colors[0]); logo_led_rgb.write(output_array, output_array_size); - output_array[0] = (char)RGBGetRValue(color_buffer[1]); - output_array[1] = (char)RGBGetGValue(color_buffer[1]); - output_array[2] = (char)RGBGetBValue(color_buffer[1]); + output_array[0] = (char)RGBGetRValue(colors[1]); + output_array[1] = (char)RGBGetGValue(colors[1]); + output_array[2] = (char)RGBGetBValue(colors[1]); scroll_led_rgb.write(output_array, output_array_size); logo_led_rgb.flush(); @@ -173,12 +173,12 @@ void RGBController_OpenRazer::Output() void RGBController_OpenRazer::SetAllLEDs(RGBColor color) { - for(int i = 0; i < color_buffer.size(); i++) + for(int i = 0; i < colors.size(); i++) { - color_buffer[i] = color; + colors[i] = color; } - Output(); + UpdateLEDs(); } void RGBController_OpenRazer::SetAllZoneLEDs(int zone, RGBColor color) @@ -187,18 +187,18 @@ void RGBController_OpenRazer::SetAllZoneLEDs(int zone, RGBColor color) { for (int y = 0; y < zones[zone].map[x].size(); y++) { - color_buffer[zones[zone].map[x][y]] = color; + colors[zones[zone].map[x][y]] = color; } } - Output(); + UpdateLEDs(); } void RGBController_OpenRazer::SetLED(int led, RGBColor color) { - color_buffer[led] = color; + colors[led] = color; - Output(); + UpdateLEDs(); } static std::string GetDeviceTypeString(std::string dev_path) @@ -339,7 +339,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for (int i = 0; i < 16; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } for (int i = 0; i < 7; i++) @@ -414,7 +414,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for (int i = 0; i < 21; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } for (int i = 0; i < 9; i++) @@ -489,7 +489,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for (int i = 0; i < 2; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } led logo_led; @@ -525,7 +525,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for(int i = 0; i < 12; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } for (int i = 0; i < 12; i++) @@ -555,7 +555,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for (int i = 0; i < 1; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } led logo_led; @@ -579,7 +579,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for(int i = 0; i < 9; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } for (int i = 0; i < 1; i++) @@ -627,7 +627,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for(int i = 0; i < 15; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } for (int i = 0; i < 15; i++) @@ -657,7 +657,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for (int i = 0; i < 1; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } led logo_led; @@ -681,7 +681,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for(int i = 0; i < 15; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } for (int i = 0; i < 15; i++) @@ -712,7 +712,7 @@ RGBController_OpenRazer::RGBController_OpenRazer(std::string dev_path) for (int i = 0; i < 1; i++) { RGBColor new_color = 0x00000000; - color_buffer.push_back(new_color); + colors.push_back(new_color); } led logo_led; diff --git a/RGBController/RGBController_OpenRazer.h b/RGBController/RGBController_OpenRazer.h index 3912f92e..80931506 100644 --- a/RGBController/RGBController_OpenRazer.h +++ b/RGBController/RGBController_OpenRazer.h @@ -66,16 +66,14 @@ public: void SetAllLEDs(RGBColor color); void SetAllZoneLEDs(int zone, RGBColor color); void SetLED(int led, RGBColor color); + void UpdateLEDs(); unsigned int device; private: - std::vector color_buffer; - void SetupMatrixDevice(std::string dev_path); void SetupNonMatrixDevice(std::string dev_path); unsigned int GetTypeFromDeviceName(std::string dev_name); - void Output(); unsigned int type;