mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	Merge remote-tracking branch 'refs/remotes/origin/Beta'
Former-commit-id: 5bdbda1406bb0ddb99440502584604b85b0f3063
This commit is contained in:
		@@ -5,7 +5,7 @@
 | 
				
			|||||||
	/// Device configuration contains the following fields: 
 | 
						/// Device configuration contains the following fields: 
 | 
				
			||||||
	/// * 'name'       : The user friendly name of the device (only used for display purposes)
 | 
						/// * 'name'       : The user friendly name of the device (only used for display purposes)
 | 
				
			||||||
	/// * 'type'       : The type of the device or leds (known types for now are
 | 
						/// * 'type'       : The type of the device or leds (known types for now are
 | 
				
			||||||
	/// APA102, Adalight, AmbiLed, Atmo, Hyperion-USBASP-WS2801, Hyperion-USBASP-WS2812, Lightberry, Lightpack, LPD6803, LPD8806, Multi-Lightpack, P9813, Paintpack, PhilipsHUE, PiBlaster, SEDU, Test, ThinkerForge, TPM2, WS2801, WS2812b, None)
 | 
						/// APA102, Adalight, AmbiLed, Atmo, Hyperion-USBASP-WS2801, Hyperion-USBASP-WS2812, Lightberry, Lightpack, LPD6803, LPD8806, Multi-Lightpack, P9813, Paintpack, PhilipsHUE, PiBlaster, SEDU, file, ThinkerForge, TPM2, WS2801, WS2812b, None)
 | 
				
			||||||
	/// * [device type specific configuration]
 | 
						/// * [device type specific configuration]
 | 
				
			||||||
	/// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
 | 
						/// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
 | 
				
			||||||
	"device" :
 | 
						"device" :
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@
 | 
				
			|||||||
	/// Device configuration contains the following fields: 
 | 
						/// Device configuration contains the following fields: 
 | 
				
			||||||
	/// * 'name'       : The user friendly name of the device (only used for display purposes)
 | 
						/// * 'name'       : The user friendly name of the device (only used for display purposes)
 | 
				
			||||||
	/// * 'type'       : The type of the device or leds (known types for now are 'ws2801', 'ldp8806',
 | 
						/// * 'type'       : The type of the device or leds (known types for now are 'ws2801', 'ldp8806',
 | 
				
			||||||
	///                  'lpd6803', 'sedu', 'adalight', 'lightpack', 'test' and 'none')
 | 
						///                  'lpd6803', 'sedu', 'adalight', 'lightpack', 'file' and 'none')
 | 
				
			||||||
	/// * 'output'     : The output specification depends on selected device. This can for example be the
 | 
						/// * 'output'     : The output specification depends on selected device. This can for example be the
 | 
				
			||||||
	///                  device specifier, device serial number, or the output file name
 | 
						///                  device specifier, device serial number, or the output file name
 | 
				
			||||||
	/// * 'rate'       : The baudrate of the output to the device
 | 
						/// * 'rate'       : The baudrate of the output to the device
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ SET(Leddevice_QT_HEADERS
 | 
				
			|||||||
		${CURRENT_SOURCE_DIR}/LedDevicePhilipsHue.h
 | 
							${CURRENT_SOURCE_DIR}/LedDevicePhilipsHue.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedHIDDevice.h
 | 
							${CURRENT_SOURCE_DIR}/LedHIDDevice.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceRawHID.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceRawHID.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceTest.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceFile.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceFadeCandy.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceFadeCandy.h
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,7 +34,7 @@ SET(Leddevice_HEADERS
 | 
				
			|||||||
		${CURRENT_SOURCE_DIR}/LedDevicePaintpack.h
 | 
							${CURRENT_SOURCE_DIR}/LedDevicePaintpack.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDevicePiBlaster.h
 | 
							${CURRENT_SOURCE_DIR}/LedDevicePiBlaster.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceSedu.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceSedu.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceTest.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceFile.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceFadeCandy.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceFadeCandy.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceUdp.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceUdp.h
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceHyperionUsbasp.h
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceHyperionUsbasp.h
 | 
				
			||||||
@@ -58,7 +58,7 @@ SET(Leddevice_SOURCES
 | 
				
			|||||||
		${CURRENT_SOURCE_DIR}/LedDevicePaintpack.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDevicePaintpack.cpp
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDevicePiBlaster.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDevicePiBlaster.cpp
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceSedu.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceSedu.cpp
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceTest.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceFile.cpp
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceFadeCandy.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceFadeCandy.cpp
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceUdp.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceUdp.cpp
 | 
				
			||||||
		${CURRENT_SOURCE_DIR}/LedDeviceHyperionUsbasp.cpp
 | 
							${CURRENT_SOURCE_DIR}/LedDeviceHyperionUsbasp.cpp
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
#include "LedDevicePaintpack.h"
 | 
					#include "LedDevicePaintpack.h"
 | 
				
			||||||
#include "LedDevicePiBlaster.h"
 | 
					#include "LedDevicePiBlaster.h"
 | 
				
			||||||
#include "LedDeviceSedu.h"
 | 
					#include "LedDeviceSedu.h"
 | 
				
			||||||
#include "LedDeviceTest.h"
 | 
					#include "LedDeviceFile.h"
 | 
				
			||||||
#include "LedDeviceFadeCandy.h"
 | 
					#include "LedDeviceFadeCandy.h"
 | 
				
			||||||
#include "LedDeviceUdp.h"
 | 
					#include "LedDeviceUdp.h"
 | 
				
			||||||
#include "LedDeviceHyperionUsbasp.h"
 | 
					#include "LedDeviceHyperionUsbasp.h"
 | 
				
			||||||
@@ -275,10 +275,10 @@ LedDevice * LedDeviceFactory::construct(const Json::Value & deviceConfig)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		device = new LedDeviceAtmoOrb(output, switchOffOnBlack, transitiontime, port, numLeds, orbIds);
 | 
							device = new LedDeviceAtmoOrb(output, switchOffOnBlack, transitiontime, port, numLeds, orbIds);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
	else if (type == "test")
 | 
						else if (type == "file")
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		const std::string output = deviceConfig["output"].asString();
 | 
							const std::string output = deviceConfig.get("output", "/dev/null").asString();
 | 
				
			||||||
		device = new LedDeviceTest(output);
 | 
							device = new LedDeviceFile(output);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if (type == "fadecandy")
 | 
						else if (type == "fadecandy")
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31
									
								
								libsrc/leddevice/LedDeviceFile.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								libsrc/leddevice/LedDeviceFile.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					// Local-Hyperion includes
 | 
				
			||||||
 | 
					#include "LedDeviceFile.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LedDeviceFile::LedDeviceFile(const std::string& output) :
 | 
				
			||||||
 | 
						_ofs(output.empty()?"/dev/null":output.c_str())
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// empty
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LedDeviceFile::~LedDeviceFile()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// empty
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int LedDeviceFile::write(const std::vector<ColorRgb> & ledValues)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						_ofs << "[";
 | 
				
			||||||
 | 
						for (const ColorRgb& color : ledValues)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							_ofs << color;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						_ofs << "]" << std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int LedDeviceFile::switchOff()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -10,18 +10,18 @@
 | 
				
			|||||||
/// Implementation of the LedDevice that write the led-colors to an
 | 
					/// Implementation of the LedDevice that write the led-colors to an
 | 
				
			||||||
/// ASCII-textfile('/home/pi/LedDevice.out')
 | 
					/// ASCII-textfile('/home/pi/LedDevice.out')
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
class LedDeviceTest : public LedDevice
 | 
					class LedDeviceFile : public LedDevice
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	///
 | 
						///
 | 
				
			||||||
	/// Constructs the test-device, which opens an output stream to the file
 | 
						/// Constructs the test-device, which opens an output stream to the file
 | 
				
			||||||
	///
 | 
						///
 | 
				
			||||||
	LedDeviceTest(const std::string& output);
 | 
						LedDeviceFile(const std::string& output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	///
 | 
						///
 | 
				
			||||||
	/// Destructor of this test-device
 | 
						/// Destructor of this test-device
 | 
				
			||||||
	///
 | 
						///
 | 
				
			||||||
	virtual ~LedDeviceTest();
 | 
						virtual ~LedDeviceFile();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	///
 | 
						///
 | 
				
			||||||
	/// Writes the given led-color values to the output stream
 | 
						/// Writes the given led-color values to the output stream
 | 
				
			||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
// Local-Hyperion includes
 | 
					 | 
				
			||||||
#include "LedDeviceTest.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LedDeviceTest::LedDeviceTest(const std::string& output) :
 | 
					 | 
				
			||||||
	_ofs(output.empty()?"/home/pi/LedDevice.out":output.c_str())
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	// empty
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LedDeviceTest::~LedDeviceTest()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	// empty
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int LedDeviceTest::write(const std::vector<ColorRgb> & ledValues)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	_ofs << "[";
 | 
					 | 
				
			||||||
	for (const ColorRgb& color : ledValues)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		_ofs << color;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	_ofs << "]" << std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int LedDeviceTest::switchOff()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -79,7 +79,7 @@ int main(int argc, char * argv[])
 | 
				
			|||||||
		SwitchParameter<>  & argHelp       = parameters.add<SwitchParameter<> >('h', "help"      , "Show this help message and exit");
 | 
							SwitchParameter<>  & argHelp       = parameters.add<SwitchParameter<> >('h', "help"      , "Show this help message and exit");
 | 
				
			||||||
		StringParameter    & argIdC        = parameters.add<StringParameter>   ('y', "qualifier" , "Identifier(qualifier) of the correction to set");
 | 
							StringParameter    & argIdC        = parameters.add<StringParameter>   ('y', "qualifier" , "Identifier(qualifier) of the correction to set");
 | 
				
			||||||
		CorrectionParameter & argCorrection  = parameters.add<CorrectionParameter>('Y', "correction" , "Set the correction of the leds (requires 3 space seperated values between 0 and 255)");
 | 
							CorrectionParameter & argCorrection  = parameters.add<CorrectionParameter>('Y', "correction" , "Set the correction of the leds (requires 3 space seperated values between 0 and 255)");
 | 
				
			||||||
		StringParameter    & argIdT        = parameters.add<StringParameter>   ('z', "qualifier" , "Identifier(qualifier) of the temperature to set");
 | 
							StringParameter    & argIdT        = parameters.add<StringParameter>   ('z', "qualifier" , "Identifier(qualifier) of the temperature correction to set");
 | 
				
			||||||
		CorrectionParameter & argTemperature  = parameters.add<CorrectionParameter>('Z', "temperature" , "Set the temperature correction of the leds (requires 3 space seperated values between 0 and 255)");
 | 
							CorrectionParameter & argTemperature  = parameters.add<CorrectionParameter>('Z', "temperature" , "Set the temperature correction of the leds (requires 3 space seperated values between 0 and 255)");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// set the default values
 | 
							// set the default values
 | 
				
			||||||
@@ -100,9 +100,10 @@ int main(int argc, char * argv[])
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// check if at least one of the available color transforms is set
 | 
							// check if at least one of the available color transforms is set
 | 
				
			||||||
		bool colorTransform = argSaturation.isSet() || argValue.isSet() || argSaturationL.isSet() || argLuminance.isSet() || argThreshold.isSet() || argGamma.isSet() || argBlacklevel.isSet() || argWhitelevel.isSet();
 | 
							bool colorTransform = argSaturation.isSet() || argValue.isSet() || argSaturationL.isSet() || argLuminance.isSet() || argThreshold.isSet() || argGamma.isSet() || argBlacklevel.isSet() || argWhitelevel.isSet();
 | 
				
			||||||
 | 
							bool colorModding = colorTransform || argCorrection.isSet() || argTemperature.isSet();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		// check that exactly one command was given
 | 
							// check that exactly one command was given
 | 
				
			||||||
        	int commandCount = count({argColor.isSet(), argImage.isSet(), argEffect.isSet(), argServerInfo.isSet(), argClear.isSet(), argClearAll.isSet(), colorTransform, argCorrection.isSet(), argTemperature.isSet()});
 | 
					        	int commandCount = count({argColor.isSet(), argImage.isSet(), argEffect.isSet(), argServerInfo.isSet(), argClear.isSet(), argClearAll.isSet(), colorModding});
 | 
				
			||||||
		if (commandCount != 1)
 | 
							if (commandCount != 1)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			std::cerr << (commandCount == 0 ? "No command found." : "Multiple commands found.") << " Provide exactly one of the following options:" << std::endl;
 | 
								std::cerr << (commandCount == 0 ? "No command found." : "Multiple commands found.") << " Provide exactly one of the following options:" << std::endl;
 | 
				
			||||||
@@ -112,7 +113,7 @@ int main(int argc, char * argv[])
 | 
				
			|||||||
			std::cerr << "  " << argServerInfo.usageLine() << std::endl;
 | 
								std::cerr << "  " << argServerInfo.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argClear.usageLine() << std::endl;
 | 
								std::cerr << "  " << argClear.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argClearAll.usageLine() << std::endl;
 | 
								std::cerr << "  " << argClearAll.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "one or more of the available color transformations:" << std::endl;
 | 
								std::cerr << "or one or more of the available color modding operations:" << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argId.usageLine() << std::endl;
 | 
								std::cerr << "  " << argId.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argSaturation.usageLine() << std::endl;
 | 
								std::cerr << "  " << argSaturation.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argValue.usageLine() << std::endl;
 | 
								std::cerr << "  " << argValue.usageLine() << std::endl;
 | 
				
			||||||
@@ -122,10 +123,8 @@ int main(int argc, char * argv[])
 | 
				
			|||||||
			std::cerr << "  " << argGamma.usageLine() << std::endl;
 | 
								std::cerr << "  " << argGamma.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argBlacklevel.usageLine() << std::endl;
 | 
								std::cerr << "  " << argBlacklevel.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argWhitelevel.usageLine() << std::endl;
 | 
								std::cerr << "  " << argWhitelevel.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "one or more of the available color corrections:" << std::endl;
 | 
					 | 
				
			||||||
			std::cerr << "  " << argIdC.usageLine() << std::endl;
 | 
								std::cerr << "  " << argIdC.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argCorrection.usageLine() << std::endl;
 | 
								std::cerr << "  " << argCorrection.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "or one or more of the available color temperature adjustment:" << std::endl;
 | 
					 | 
				
			||||||
			std::cerr << "  " << argIdT.usageLine() << std::endl;
 | 
								std::cerr << "  " << argIdT.usageLine() << std::endl;
 | 
				
			||||||
			std::cerr << "  " << argTemperature.usageLine() << std::endl;
 | 
								std::cerr << "  " << argTemperature.usageLine() << std::endl;
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
@@ -160,23 +159,50 @@ int main(int argc, char * argv[])
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			connection.clearAll();
 | 
								connection.clearAll();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else if (colorTransform)
 | 
							else if (colorModding)
 | 
				
			||||||
		{
 | 
							{	
 | 
				
			||||||
			std::string transId;
 | 
								if (argCorrection.isSet())
 | 
				
			||||||
			double saturation, value, saturationL, luminance;
 | 
								{
 | 
				
			||||||
			ColorTransformValues threshold, gamma, blacklevel, whitelevel;
 | 
									std::string corrId;
 | 
				
			||||||
 | 
									ColorCorrectionValues correction;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (argId.isSet())         transId    = argId.getValue();
 | 
									if (argIdC.isSet())	corrId    = argIdC.getValue();
 | 
				
			||||||
			if (argSaturation.isSet()) saturation = argSaturation.getValue();
 | 
									if (argCorrection.isSet())  correction = argCorrection.getValue();
 | 
				
			||||||
			if (argValue.isSet())      value      = argValue.getValue();
 | 
					
 | 
				
			||||||
			if (argSaturationL.isSet()) saturationL = argSaturationL.getValue();
 | 
									connection.setCorrection(
 | 
				
			||||||
			if (argLuminance.isSet())  luminance      = argLuminance.getValue();
 | 
											argIdC.isSet()		? &corrId : nullptr,
 | 
				
			||||||
			if (argThreshold.isSet())  threshold  = argThreshold.getValue();
 | 
											argCorrection.isSet()   ? &correction  : nullptr);
 | 
				
			||||||
			if (argGamma.isSet())      gamma      = argGamma.getValue();
 | 
								}
 | 
				
			||||||
			if (argBlacklevel.isSet()) blacklevel = argBlacklevel.getValue();
 | 
						
 | 
				
			||||||
			if (argWhitelevel.isSet()) whitelevel = argWhitelevel.getValue();
 | 
								if (argTemperature.isSet())
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									std::string tempId;
 | 
				
			||||||
 | 
									ColorCorrectionValues temperature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (argIdT.isSet())	tempId    = argIdT.getValue();
 | 
				
			||||||
 | 
									if (argTemperature.isSet())  temperature = argTemperature.getValue();
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			connection.setTransform(
 | 
									connection.setTemperature(
 | 
				
			||||||
 | 
											argIdT.isSet()		? &tempId : nullptr,
 | 
				
			||||||
 | 
											argTemperature.isSet()  ? &temperature  : nullptr);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (colorTransform)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									std::string transId;
 | 
				
			||||||
 | 
									double saturation, value, saturationL, luminance;
 | 
				
			||||||
 | 
									ColorTransformValues threshold, gamma, blacklevel, whitelevel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (argId.isSet())         transId    = argId.getValue();
 | 
				
			||||||
 | 
									if (argSaturation.isSet()) saturation = argSaturation.getValue();
 | 
				
			||||||
 | 
									if (argValue.isSet())      value      = argValue.getValue();
 | 
				
			||||||
 | 
									if (argSaturationL.isSet()) saturationL = argSaturationL.getValue();
 | 
				
			||||||
 | 
									if (argLuminance.isSet())  luminance      = argLuminance.getValue();
 | 
				
			||||||
 | 
									if (argThreshold.isSet())  threshold  = argThreshold.getValue();
 | 
				
			||||||
 | 
									if (argGamma.isSet())      gamma      = argGamma.getValue();
 | 
				
			||||||
 | 
									if (argBlacklevel.isSet()) blacklevel = argBlacklevel.getValue();
 | 
				
			||||||
 | 
									if (argWhitelevel.isSet()) whitelevel = argWhitelevel.getValue();
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
									connection.setTransform(
 | 
				
			||||||
						argId.isSet()         ? &transId    : nullptr,
 | 
											argId.isSet()         ? &transId    : nullptr,
 | 
				
			||||||
						argSaturation.isSet() ? &saturation : nullptr,
 | 
											argSaturation.isSet() ? &saturation : nullptr,
 | 
				
			||||||
						argValue.isSet()      ? &value      : nullptr,
 | 
											argValue.isSet()      ? &value      : nullptr,
 | 
				
			||||||
@@ -186,30 +212,7 @@ int main(int argc, char * argv[])
 | 
				
			|||||||
						argGamma.isSet()      ? &gamma      : nullptr,
 | 
											argGamma.isSet()      ? &gamma      : nullptr,
 | 
				
			||||||
						argBlacklevel.isSet() ? &blacklevel : nullptr,
 | 
											argBlacklevel.isSet() ? &blacklevel : nullptr,
 | 
				
			||||||
						argWhitelevel.isSet() ? &whitelevel : nullptr);
 | 
											argWhitelevel.isSet() ? &whitelevel : nullptr);
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
		else if (argCorrection.isSet())
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			std::string corrId;
 | 
					 | 
				
			||||||
			ColorCorrectionValues correction;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (argIdC.isSet())	corrId    = argIdC.getValue();
 | 
					 | 
				
			||||||
			if (argCorrection.isSet())  correction = argCorrection.getValue();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			connection.setCorrection(
 | 
					 | 
				
			||||||
						argIdC.isSet()		? &corrId : nullptr,
 | 
					 | 
				
			||||||
						argCorrection.isSet()   ? &correction  : nullptr);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		else if (argTemperature.isSet())
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			std::string tempId;
 | 
					 | 
				
			||||||
			ColorCorrectionValues temperature;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (argIdT.isSet())	tempId    = argIdT.getValue();
 | 
					 | 
				
			||||||
			if (argTemperature.isSet())  temperature = argTemperature.getValue();
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			connection.setTemperature(
 | 
					 | 
				
			||||||
						argIdT.isSet()		? &tempId : nullptr,
 | 
					 | 
				
			||||||
						argTemperature.isSet()  ? &temperature  : nullptr);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	catch (const std::runtime_error & e)
 | 
						catch (const std::runtime_error & e)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user