mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	* LedDevice - Address clang findings * Fix Windows Warnings * Ensure newInput is initialised * Clean-up unused elements for Plaform Capture * Fix initialization problem and spellings * Address clang findings and spelling corrections * LedDevice clean-ups * Cleanups * Align that getLedCount is int * Have "display" as default for Grabbers * Fix config during start-up for missing elements * Framegrabber Clean-up - Remove non supported grabbers from selection, filter valid options * Typo * Framegrabber.json - Fix property numbering * Preselect active Grabbertype * Sort Grabbernames * Align options with selected element * Fix deletion of pointer to incomplete type 'BonjourBrowserWrapper' * Address macOS compile warnings * Have default layout = 1 LED only to avoid errors as in #673 * Address lgtm findings * Address finding that params passed to LedDevice discovery were not considered * Cleanups after merging with latest master * Update Changelog * Address lgtm findings * Fix comment * Test Fix * Fix Python Warning * Handle Dummy Device assignment correctly * Address delete called on non-final 'commandline::Option' that has virtual functions but non-virtual destructor * Correct that QTimer.start accepts only int * Have Release Python GIL & reset threat state chnage downward compatible * Correct format specifier * LedDevice - add assertions * Readonly DB - Fix merge issue * Smoothing - Fix wrong defaults * LedDevice - correct assertion * Show smoothing config set# in debug and related values. * Suppress error on windows, if default file is "/dev/null" * CMAKE - Allow to define QT_BASE_DIR dynamically via environment-variable * Ignore Visual Studio specific files Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <utils/ColorRgb.h>
 | |
| #include <utils/ColorRgbw.h>
 | |
| #include <utils/RgbToRgbw.h>
 | |
| #include <utils/Logger.h>
 | |
| 
 | |
| namespace RGBW {
 | |
| 
 | |
| WhiteAlgorithm stringToWhiteAlgorithm(const QString& str)
 | |
| {
 | |
| 	if (str == "subtract_minimum")
 | |
| 	{
 | |
| 		return WhiteAlgorithm::SUBTRACT_MINIMUM;
 | |
| 	}
 | |
| 	if (str == "sub_min_warm_adjust")
 | |
| 	{
 | |
| 		return WhiteAlgorithm::SUB_MIN_WARM_ADJUST;
 | |
| 	}
 | |
| 	if (str == "sub_min_cool_adjust")
 | |
| 	{
 | |
| 		return WhiteAlgorithm::SUB_MIN_COOL_ADJUST;
 | |
| 	}
 | |
| 	if (str.isEmpty() || str == "white_off")
 | |
| 	{
 | |
| 		return WhiteAlgorithm::WHITE_OFF;
 | |
| 	}
 | |
| 	return WhiteAlgorithm::INVALID;
 | |
| }
 | |
| 
 | |
| void Rgb_to_Rgbw(ColorRgb input, ColorRgbw * output, WhiteAlgorithm algorithm)
 | |
| {
 | |
| 	switch (algorithm)
 | |
| 	{
 | |
| 		case WhiteAlgorithm::SUBTRACT_MINIMUM:
 | |
| 		{
 | |
| 			output->white = static_cast<uint8_t>(qMin(qMin(input.red, input.green), input.blue));
 | |
| 			output->red   = input.red   - output->white;
 | |
| 			output->green = input.green - output->white;
 | |
| 			output->blue  = input.blue  - output->white;
 | |
| 			break;
 | |
| 		}
 | |
| 
 | |
| 		case WhiteAlgorithm::SUB_MIN_WARM_ADJUST:
 | |
| 		{
 | |
| 			// http://forum.garagecube.com/viewtopic.php?t=10178
 | |
| 			// warm white
 | |
| 			const double F1(0.274);
 | |
| 			const double F2(0.454);
 | |
| 			const double F3(2.333);
 | |
| 
 | |
| 			output->white = static_cast<uint8_t>(qMin(input.red*F1,qMin(input.green*F2,input.blue*F3)));
 | |
| 			output->red   = input.red   - static_cast<uint8_t>(output->white/F1);
 | |
| 			output->green = input.green - static_cast<uint8_t>(output->white/F2);
 | |
| 			output->blue  = input.blue  - static_cast<uint8_t>(output->white/F3);
 | |
| 			break;
 | |
| 		}
 | |
| 
 | |
| 		case WhiteAlgorithm::SUB_MIN_COOL_ADJUST:
 | |
| 		{
 | |
| 			// http://forum.garagecube.com/viewtopic.php?t=10178
 | |
| 			// cold white
 | |
| 			const double F1(0.299);
 | |
| 			const double F2(0.587);
 | |
| 			const double F3(0.114);
 | |
| 
 | |
| 			output->white = static_cast<uint8_t>(qMin(input.red*F1,qMin(input.green*F2,input.blue*F3)));
 | |
| 			output->red   = input.red   - static_cast<uint8_t>(output->white/F1);
 | |
| 			output->green = input.green - static_cast<uint8_t>(output->white/F2);
 | |
| 			output->blue  = input.blue  - static_cast<uint8_t>(output->white/F3);
 | |
| 			break;
 | |
| 		}
 | |
| 
 | |
| 		case WhiteAlgorithm::WHITE_OFF:
 | |
| 		{
 | |
| 			output->red = input.red;
 | |
| 			output->green = input.green;
 | |
| 			output->blue = input.blue;
 | |
| 			output->white = 0;
 | |
| 			break;
 | |
| 		}
 | |
| 		default:
 | |
| 			break;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| };
 |