Updated the way colororder is configured per led

Former-commit-id: 2a77b551c5b504f4ce9b0a179d4c20eaf6128f6b
This commit is contained in:
T. van der Zwan
2015-02-23 16:11:33 +01:00
parent e8ae9c36e6
commit 9f5caacc75
4 changed files with 70 additions and 19 deletions

View File

@@ -153,7 +153,14 @@ public slots:
public:
static ColorOrder createColorOrder(const Json::Value & deviceConfig);
static LedString createLedString(const Json::Value & ledsConfig);
/**
* Construct the 'led-string' with the integration area definition per led and the color
* ordering of the RGB channels
* @param ledsConfig The configuration of the led areas
* @param deviceOrder The default RGB channel ordering
* @return The constructed ledstring
*/
static LedString createLedString(const Json::Value & ledsConfig, const ColorOrder deviceOrder);
static MultiColorTransform * createLedColorsTransform(const unsigned ledCnt, const Json::Value & colorTransformConfig);
static ColorTransform * createColorTransform(const Json::Value & transformConfig);
@@ -188,9 +195,6 @@ private:
/// The transformation from raw colors to led colors
MultiColorTransform * _raw2ledTransform;
/// Value with the desired color byte order
ColorOrder _colorOrder;
/// The actual LedDevice
LedDevice * _device;

View File

@@ -15,9 +15,60 @@ namespace Json { class Value; }
/// Enumeration containing the possible orders of device color byte data
enum ColorOrder
{
ORDER_RGB, ORDER_RBG, ORDER_GRB, ORDER_BRG, ORDER_GBR, ORDER_BGR, ORDER_DEFAULT
ORDER_RGB, ORDER_RBG, ORDER_GRB, ORDER_BRG, ORDER_GBR, ORDER_BGR
};
inline std::string colorOrderToString(const ColorOrder colorOrder)
{
switch (colorOrder)
{
case ORDER_RGB:
return "rgb";
case ORDER_RBG:
return "rbg";
case ORDER_GRB:
return "grb";
case ORDER_BRG:
return "brg";
case ORDER_GBR:
return "gbr";
case ORDER_BGR:
return "bgr";
default:
return "not-a-colororder";
}
}
inline ColorOrder stringToColorOrder(const std::string & order)
{
if (order == "rgb")
{
return ORDER_RGB;
}
else if (order == "bgr")
{
return ORDER_BGR;
}
else if (order == "rbg")
{
return ORDER_RBG;
}
else if (order == "brg")
{
return ORDER_BRG;
}
else if (order == "gbr")
{
return ORDER_GBR;
}
else if (order == "grb")
{
return ORDER_GRB;
}
std::cout << "Unknown color order defined (" << order << "). Using RGB." << std::endl;
return ORDER_RGB;
}
///
/// The Led structure contains the definition of the image portion used to determine a single led's
/// color.