#pragma once // STL includes #include #include // Local includes #include // QT includes #include // Forward class declarations namespace Json { class Value; } /// Enumeration containing the possible orders of device color byte data enum class ColorOrder { ORDER_RGB, ORDER_RBG, ORDER_GRB, ORDER_BRG, ORDER_GBR, ORDER_BGR }; inline QString colorOrderToString(ColorOrder colorOrder) { switch (colorOrder) { case ColorOrder::ORDER_RGB: return "rgb"; case ColorOrder::ORDER_RBG: return "rbg"; case ColorOrder::ORDER_GRB: return "grb"; case ColorOrder::ORDER_BRG: return "brg"; case ColorOrder::ORDER_GBR: return "gbr"; case ColorOrder::ORDER_BGR: return "bgr"; default: return "not-a-colororder"; } } inline ColorOrder stringToColorOrder(const QString & order) { if (order == "rgb") { return ColorOrder::ORDER_RGB; } else if (order == "bgr") { return ColorOrder::ORDER_BGR; } else if (order == "rbg") { return ColorOrder::ORDER_RBG; } else if (order == "brg") { return ColorOrder::ORDER_BRG; } else if (order == "gbr") { return ColorOrder::ORDER_GBR; } else if (order == "grb") { return ColorOrder::ORDER_GRB; } std::cout << "Unknown color order defined (" << order.toStdString() << "). Using RGB." << std::endl; return ColorOrder::ORDER_RGB; } /// /// The Led structure contains the definition of the image portion used to determine a single led's /// color. /// @verbatim /// |--------------------image--| /// | minX maxX | /// | |-----|minY | /// | | | | /// | |-----|maxY | /// | | /// | | /// | | /// |---------------------------| /// @endverbatim /// struct Led { /// The minimum vertical scan line included for this leds color double minX_frac; /// The maximum vertical scan line included for this leds color double maxX_frac; /// The minimum horizontal scan line included for this leds color double minY_frac; /// The maximum horizontal scan line included for this leds color double maxY_frac; /// the color order ColorOrder colorOrder; }; /// /// The LedString contains the image integration information of the leds /// class LedString { public: /// /// Returns the led specifications /// /// @return The list with led specifications /// std::vector& leds(); /// /// Returns the led specifications /// /// @return The list with led specifications /// const std::vector& leds() const; private: /// The list with led specifications std::vector mLeds; };