From d60936b2e5abc0e624e6035da4dca13e62e5ad4b Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Fri, 14 Jun 2019 12:24:07 -0500 Subject: [PATCH] Use 32-bit RGBColor type (COLORREF compatible) instead of discrete red, green, and blue channels in generic RGB interface --- OpenAuraSDK/OpenAuraSDKDialog.cpp | 4 +++- OpenAuraSDK/RGBController.h | 10 +++++++++- OpenAuraSDK/RGBController_Aura.cpp | 10 +++++++--- OpenAuraSDK/RGBController_Aura.h | 2 +- OpenAuraSDK/RGBController_Corsair.cpp | 8 ++++++-- OpenAuraSDK/RGBController_Corsair.h | 2 +- 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/OpenAuraSDK/OpenAuraSDKDialog.cpp b/OpenAuraSDK/OpenAuraSDKDialog.cpp index 80b0a4f4..89bc459f 100644 --- a/OpenAuraSDK/OpenAuraSDKDialog.cpp +++ b/OpenAuraSDK/OpenAuraSDKDialog.cpp @@ -68,11 +68,13 @@ void OpenAuraSDKDialog::OnBnClickedButtonOpenaurasdkSetColorsAll() { CComboBox* controller_box = (CComboBox*)GetDlgItem(IDC_COMBO_OPENAURASDK_DEVICE); - controllers[controller_box->GetCurSel()]->SetAllLEDs( + RGBColor color = ToRGBColor( GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_R), GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_G), GetDlgItemInt(IDC_EDIT_OPENAURASDK_LED_0_B) ); + + controllers[controller_box->GetCurSel()]->SetAllLEDs(color); } diff --git a/OpenAuraSDK/RGBController.h b/OpenAuraSDK/RGBController.h index 3d54af3a..65922957 100644 --- a/OpenAuraSDK/RGBController.h +++ b/OpenAuraSDK/RGBController.h @@ -12,6 +12,14 @@ #include #include +typedef unsigned int RGBColor; + +#define RGBGetRValue(rgb) (rgb & 0x000000FF) +#define RGBGetGValue(rgb) ((rgb >> 8) & 0x000000FF) +#define RGBGetBValue(rgb) ((rgb >> 16) & 0x000000FF) + +#define ToRGBColor(r, g, b) ((b << 16) | (g << 8) | (r)) + typedef struct { std::string name; /* LED name */ @@ -49,5 +57,5 @@ public: virtual int GetMode() = 0; virtual void SetMode(int mode) = 0; - virtual void SetAllLEDs(unsigned char red, unsigned char green, unsigned char blue) = 0; + virtual void SetAllLEDs(RGBColor color) = 0; }; \ No newline at end of file diff --git a/OpenAuraSDK/RGBController_Aura.cpp b/OpenAuraSDK/RGBController_Aura.cpp index 948c1d3a..03a498f4 100644 --- a/OpenAuraSDK/RGBController_Aura.cpp +++ b/OpenAuraSDK/RGBController_Aura.cpp @@ -34,15 +34,19 @@ void RGBController_Aura::SetMode(int mode) } } -void RGBController_Aura::SetAllLEDs(unsigned char red, unsigned char green, unsigned char blue) +void RGBController_Aura::SetAllLEDs(RGBColor color) { + unsigned char red = RGBGetRValue(color); + unsigned char grn = RGBGetGValue(color); + unsigned char blu = RGBGetBValue(color); + if (GetMode() == 0) { - aura->SetAllColorsDirect(red, green, blue); + aura->SetAllColorsDirect(red, grn, blu); } else { - aura->SetAllColorsEffect(red, green, blue); + aura->SetAllColorsEffect(red, grn, blu); } } diff --git a/OpenAuraSDK/RGBController_Aura.h b/OpenAuraSDK/RGBController_Aura.h index 95516e13..eed844ef 100644 --- a/OpenAuraSDK/RGBController_Aura.h +++ b/OpenAuraSDK/RGBController_Aura.h @@ -18,7 +18,7 @@ public: RGBController_Aura(AuraController* aura_ptr); int GetMode(); void SetMode(int mode); - void SetAllLEDs(unsigned char red, unsigned char green, unsigned char blue); + void SetAllLEDs(RGBColor color); private: AuraController* aura; diff --git a/OpenAuraSDK/RGBController_Corsair.cpp b/OpenAuraSDK/RGBController_Corsair.cpp index d43d331d..3a23afe3 100644 --- a/OpenAuraSDK/RGBController_Corsair.cpp +++ b/OpenAuraSDK/RGBController_Corsair.cpp @@ -19,9 +19,13 @@ void RGBController_Corsair::SetMode(int mode) corsair->SetMode(mode); } -void RGBController_Corsair::SetAllLEDs(unsigned char red, unsigned char green, unsigned char blue) +void RGBController_Corsair::SetAllLEDs(RGBColor color) { - corsair->SetAllColorsDirect(red, green, blue); + unsigned char red = RGBGetRValue(color); + unsigned char grn = RGBGetGValue(color); + unsigned char blu = RGBGetBValue(color); + + corsair->SetAllColorsDirect(red, grn, blu); } RGBController_Corsair::RGBController_Corsair(CorsairController* corsair_ptr) diff --git a/OpenAuraSDK/RGBController_Corsair.h b/OpenAuraSDK/RGBController_Corsair.h index 29663e09..272bbd02 100644 --- a/OpenAuraSDK/RGBController_Corsair.h +++ b/OpenAuraSDK/RGBController_Corsair.h @@ -18,7 +18,7 @@ public: RGBController_Corsair(CorsairController* corsair_ptr); int GetMode(); void SetMode(int mode); - void SetAllLEDs(unsigned char red, unsigned char green, unsigned char blue); + void SetAllLEDs(RGBColor color); private: CorsairController* corsair;