Add color buffer vector to all RGBController drivers, so that color patterns may be filled in by the application and updated all at once via an UpdateLEDs function
This commit is contained in:
parent
5bc80cce96
commit
63bf13faac
13 changed files with 85 additions and 38 deletions
|
|
@ -50,10 +50,11 @@ typedef struct
|
|||
class RGBController
|
||||
{
|
||||
public:
|
||||
std::string name; /* controller name */
|
||||
std::vector<led> leds; /* LEDs */
|
||||
std::vector<zone> zones; /* Zones */
|
||||
std::vector<mode> modes; /* Modes */
|
||||
std::string name; /* controller name */
|
||||
std::vector<led> leds; /* LEDs */
|
||||
std::vector<zone> zones; /* Zones */
|
||||
std::vector<mode> modes; /* Modes */
|
||||
std::vector<RGBColor> 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;
|
||||
};
|
||||
|
|
@ -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<unsigned char> 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<unsigned char> aura_zones;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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<RGBColor> colors;
|
||||
LEDStripController* strip;
|
||||
};
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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<RGBColor> 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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue