From 283cb5a8ac1617fea3167b2d632244fe2f9024e7 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Fri, 6 Mar 2020 16:54:53 -0600 Subject: [PATCH] Update RGB Fusion GPU controller to new RGBController API --- OpenRGB.cpp | 2 +- OpenRGB.pro | 8 +- RGBController/RGBController_RGBFusionGPU.cpp | 99 +++++++++++--------- RGBController/RGBController_RGBFusionGPU.h | 5 + 4 files changed, 65 insertions(+), 49 deletions(-) diff --git a/OpenRGB.cpp b/OpenRGB.cpp index 419d3c745..4daf24566 100644 --- a/OpenRGB.cpp +++ b/OpenRGB.cpp @@ -322,7 +322,7 @@ void DetectRGBControllers(void) //DetectHyperXControllers(busses, rgb_controllers); //DetectPatriotViperControllers(busses, rgb_controllers); //DetectPolychromeControllers(busses, rgb_controllers); - //DetectRGBFusionGPUControllers(busses, rgb_controllers); + DetectRGBFusionGPUControllers(busses, rgb_controllers); //DetectRGBFusionControllers(busses, rgb_controllers); //DetectMSIRGBControllers(rgb_controllers); diff --git a/OpenRGB.pro b/OpenRGB.pro index a5eff8066..3edc45005 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -49,7 +49,7 @@ INCLUDEPATH += \ # Controllers/PoseidonZRGBController/ \ # Controllers/RGBFusionController/ \ # Controllers/RGBFusion2Controller/ \ -# Controllers/RGBFusionGPUController/ \ + Controllers/RGBFusionGPUController/ \ Controllers/ThermaltakeRiingController/ \ RGBController/ \ qt/ @@ -115,8 +115,8 @@ SOURCES += \ # Controllers/RGBFusionController/RGBFusionControllerDetect.cpp \ # Controllers/RGBFusion2Controller/RGBFusion2Controller.cpp \ # Controllers/RGBFusion2Controller/RGBFusion2ControllerDetect.cpp \ -# Controllers/RGBFusionGPUController/RGBFusionGPUController.cpp \ -# Controllers/RGBFusionGPUController/RGBFusionGPUControllerDetect.cpp \ + Controllers/RGBFusionGPUController/RGBFusionGPUController.cpp \ + Controllers/RGBFusionGPUController/RGBFusionGPUControllerDetect.cpp \ Controllers/ThermaltakeRiingController/ThermaltakeRiingController.cpp \ Controllers/ThermaltakeRiingController/ThermaltakeRiingControllerDetect.cpp \ RGBController/RGBController.cpp \ @@ -143,7 +143,7 @@ SOURCES += \ # RGBController/RGBController_PoseidonZRGB.cpp \ # RGBController/RGBController_RGBFusion.cpp \ # RGBController/RGBController_RGBFusion2.cpp \ -# RGBController/RGBController_RGBFusionGPU.cpp \ + RGBController/RGBController_RGBFusionGPU.cpp \ RGBController/RGBController_ThermaltakeRiing.cpp \ HEADERS += \ diff --git a/RGBController/RGBController_RGBFusionGPU.cpp b/RGBController/RGBController_RGBFusionGPU.cpp index ea771cb7d..37cc569e7 100644 --- a/RGBController/RGBController_RGBFusionGPU.cpp +++ b/RGBController/RGBController_RGBFusionGPU.cpp @@ -9,27 +9,6 @@ #include "RGBController_RGBFusionGPU.h" - -void RGBController_RGBFusionGPU::UpdateLEDs() -{ - RGBColor color = colors[0]; - unsigned char red = RGBGetRValue(color); - unsigned char grn = RGBGetGValue(color); - unsigned char blu = RGBGetBValue(color); - - rgb_fusion->SetColor(red, grn, blu); -} - -void RGBController_RGBFusionGPU::UpdateZoneLEDs(int zone) -{ - UpdateLEDs(); -} - -void RGBController_RGBFusionGPU::UpdateSingleLED(int led) -{ - UpdateLEDs(); -} - RGBController_RGBFusionGPU::RGBController_RGBFusionGPU(RGBFusionGPUController* rgb_fusion_ptr) { rgb_fusion = rgb_fusion_ptr; @@ -87,33 +66,65 @@ RGBController_RGBFusionGPU::RGBController_RGBFusionGPU(RGBFusionGPUController* r SpectrumCycle.color_mode = MODE_COLORS_NONE; modes.push_back(SpectrumCycle); - colors.resize(1); - - zone* new_zone = new zone(); - led* new_led = new led(); - - std::vector* zone_row = new std::vector(); - - // Set zone name to channel name - new_zone->name = "GPU Zone"; - new_led->name = "GPU LED"; - - zone_row->push_back(0); - - // Aura devices can be either single or linear, never matrix - // That means only one row is needed - new_zone->map.push_back(*zone_row); - - // Push new LED to LEDs vector - leds.push_back(*new_led); - - // Push new zone to zones vector - zones.push_back(*new_zone); + SetupZones(); // Initialize active mode active_mode = 0; } +void RGBController_RGBFusionGPU::SetupZones() +{ + /*---------------------------------------------------------*\ + | This device only has one LED, so create a single zone and | + | LED for it | + \*---------------------------------------------------------*/ + zone* new_zone = new zone(); + led* new_led = new led(); + + new_zone->name = "GPU Zone"; + new_zone->type = ZONE_TYPE_SINGLE; + new_zone->leds_min = 1; + new_zone->leds_max = 1; + new_zone->leds_count = 1; + + new_led->name = "GPU LED"; + + /*---------------------------------------------------------*\ + | Push the zone and LED on to device vectors | + \*---------------------------------------------------------*/ + leds.push_back(*new_led); + zones.push_back(*new_zone); + + SetupColors(); +} + +void RGBController_RGBFusionGPU::ResizeZone(int /*zone*/, int /*new_size*/) +{ + /*---------------------------------------------------------*\ + | This device does not support resizing zones | + \*---------------------------------------------------------*/ +} + +void RGBController_RGBFusionGPU::UpdateLEDs() +{ + RGBColor color = colors[0]; + unsigned char red = RGBGetRValue(color); + unsigned char grn = RGBGetGValue(color); + unsigned char blu = RGBGetBValue(color); + + rgb_fusion->SetColor(red, grn, blu); +} + +void RGBController_RGBFusionGPU::UpdateZoneLEDs(int /*zone*/) +{ + UpdateLEDs(); +} + +void RGBController_RGBFusionGPU::UpdateSingleLED(int /*led*/) +{ + UpdateLEDs(); +} + void RGBController_RGBFusionGPU::SetCustomMode() { active_mode = 0; @@ -121,5 +132,5 @@ void RGBController_RGBFusionGPU::SetCustomMode() void RGBController_RGBFusionGPU::UpdateMode() { - rgb_fusion->SetMode(modes[active_mode].value, modes[active_mode].speed); + rgb_fusion->SetMode((unsigned char)modes[(unsigned int)active_mode].value, (unsigned char)modes[(unsigned int)active_mode].speed); } diff --git a/RGBController/RGBController_RGBFusionGPU.h b/RGBController/RGBController_RGBFusionGPU.h index fc458fb55..db31607fe 100644 --- a/RGBController/RGBController_RGBFusionGPU.h +++ b/RGBController/RGBController_RGBFusionGPU.h @@ -16,6 +16,11 @@ class RGBController_RGBFusionGPU : public RGBController { public: RGBController_RGBFusionGPU(RGBFusionGPUController* rgb_fusion_ptr); + + void SetupZones(); + + void ResizeZone(int zone, int new_size); + void UpdateLEDs(); void UpdateZoneLEDs(int zone); void UpdateSingleLED(int led);