mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
First working version with some test executables
This commit is contained in:
41
include/hyperion/Hyperion.h
Normal file
41
include/hyperion/Hyperion.h
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
// hyperion-utils includes
|
||||
#include <utils/RgbImage.h>
|
||||
|
||||
#include <hyperion/LedString.h>
|
||||
#include <hyperion/ImageToLedsMap.h>
|
||||
#include <hyperion/LedDevice.h>
|
||||
|
||||
class Hyperion
|
||||
{
|
||||
public:
|
||||
Hyperion(const Json::Value& jsonConfig);
|
||||
|
||||
~Hyperion();
|
||||
|
||||
void setInputSize(const unsigned width, const unsigned height);
|
||||
|
||||
RgbImage& image()
|
||||
{
|
||||
return *mImage;
|
||||
}
|
||||
|
||||
void commit();
|
||||
|
||||
void operator() (const RgbImage& inputImage);
|
||||
|
||||
void setColor(const RgbColor& color);
|
||||
|
||||
private:
|
||||
void applyTransform(std::vector<RgbColor>& colors) const;
|
||||
|
||||
LedString mLedString;
|
||||
|
||||
RgbImage* mImage;
|
||||
|
||||
ImageToLedsMap mLedsMap;
|
||||
|
||||
LedDevice* mDevice;
|
||||
};
|
27
include/hyperion/ImageToLedsMap.h
Normal file
27
include/hyperion/ImageToLedsMap.h
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
// hyperion-utils includes
|
||||
#include <utils/RgbImage.h>
|
||||
|
||||
// hyperion includes
|
||||
#include <hyperion/LedString.h>
|
||||
|
||||
class ImageToLedsMap
|
||||
{
|
||||
public:
|
||||
|
||||
ImageToLedsMap();
|
||||
|
||||
void createMapping(const RgbImage& image, const std::vector<Led>& leds);
|
||||
|
||||
std::vector<RgbColor> getMeanLedColor();
|
||||
|
||||
RgbColor findMeanColor(const std::vector<const RgbColor*>& colors);
|
||||
|
||||
std::vector<RgbColor> getMedianLedColor();
|
||||
|
||||
RgbColor findMedianColor(std::vector<const RgbColor*>& colors);
|
||||
private:
|
||||
std::vector<std::vector<const RgbColor*> > mColorsMap;
|
||||
};
|
27
include/hyperion/LedDevice.h
Normal file
27
include/hyperion/LedDevice.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
// STL incldues
|
||||
#include <vector>
|
||||
|
||||
// Utility includes
|
||||
#include <utils/RgbColor.h>
|
||||
|
||||
class LedDevice
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Empty virtual destructor for pure virtual base class
|
||||
*/
|
||||
virtual ~LedDevice()
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the RGB-Color values to the leds.
|
||||
*
|
||||
* @param[in] ledValues The RGB-color per led
|
||||
*/
|
||||
virtual int write(const std::vector<RgbColor>& ledValues) = 0;
|
||||
};
|
72
include/hyperion/LedString.h
Normal file
72
include/hyperion/LedString.h
Normal file
@@ -0,0 +1,72 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
// STL includes
|
||||
#include <ctime>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Local includes
|
||||
#include <utils/RgbColor.h>
|
||||
|
||||
// Forward class declarations
|
||||
namespace Json { class Value; }
|
||||
|
||||
/**
|
||||
* The Led structure contains the definition of the image portion used to determine a single led's
|
||||
* color.
|
||||
* <pre>
|
||||
* |--------------------image--|
|
||||
* | minX maxX |
|
||||
* | |-----|maxY |
|
||||
* | | | |
|
||||
* | |-----|minY |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* |---------------------------|
|
||||
* <endpre>
|
||||
*/
|
||||
struct Led
|
||||
{
|
||||
/** The index of the led */
|
||||
unsigned index;
|
||||
|
||||
/** 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;
|
||||
};
|
||||
|
||||
class LedString
|
||||
{
|
||||
public:
|
||||
static LedString construct(const Json::Value& ledConfig, const Json::Value& colorConfig);
|
||||
|
||||
LedString();
|
||||
|
||||
~LedString();
|
||||
|
||||
const std::vector<Led>& leds() const;
|
||||
|
||||
private:
|
||||
std::vector<Led> mLeds;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Color adjustements per color
|
||||
*/
|
||||
struct
|
||||
{
|
||||
/** The color gradient */
|
||||
double gamma;
|
||||
/** The color offset */
|
||||
double adjust;
|
||||
/** The minimum required level for the led to turn on */
|
||||
double blacklevel;
|
||||
} red, green, blue;
|
||||
};
|
Reference in New Issue
Block a user