feat: Implement LED offset in HyperionProcessor
This commit is contained in:
parent
845dc5c0a6
commit
da1890f237
@ -9,7 +9,8 @@ HyperionProcessor::HyperionProcessor(const LedLayout &layout, const QJsonObject
|
||||
_borderDetector(config.value("blackborderdetector").toObject()),
|
||||
_lastImageSize(0, 0),
|
||||
_colorSmoother(config.value("smoothing").toObject()),
|
||||
_colorAlgorithm(config.value("colorAlgorithm").toString("mean_sqrt")) // Default to mean_sqrt
|
||||
_colorAlgorithm(config.value("colorAlgorithm").toString("mean_sqrt")),
|
||||
_offset(config.value("offset").toInt(0)) // Default offset is 0
|
||||
{
|
||||
}
|
||||
|
||||
@ -40,7 +41,20 @@ QVector<QColor> HyperionProcessor::process(const QImage &image)
|
||||
QVector<QColor> calculatedColors = calculateLedColors(image);
|
||||
|
||||
// 4. Apply smoothing
|
||||
return _colorSmoother.smooth(calculatedColors);
|
||||
QVector<QColor> finalColors = _colorSmoother.smooth(calculatedColors);
|
||||
|
||||
// 5. Apply offset if needed
|
||||
if (_offset != 0 && !finalColors.isEmpty()) {
|
||||
QVector<QColor> shiftedColors(finalColors.size());
|
||||
int totalLeds = finalColors.size();
|
||||
|
||||
for (int i = 0; i < totalLeds; ++i) {
|
||||
shiftedColors[i] = finalColors[(i + _offset) % totalLeds];
|
||||
}
|
||||
return shiftedColors;
|
||||
}
|
||||
|
||||
return finalColors;
|
||||
}
|
||||
|
||||
void HyperionProcessor::buildLedMap(int imageWidth, int imageHeight, const BlackBorder &border)
|
||||
|
||||
@ -29,6 +29,7 @@ private:
|
||||
LedLayout _layout;
|
||||
QJsonObject _config;
|
||||
QString _colorAlgorithm;
|
||||
int _offset;
|
||||
|
||||
BlackBorderDetector _borderDetector;
|
||||
BlackBorder _lastBorder;
|
||||
|
||||
1
main.cpp
1
main.cpp
@ -181,6 +181,7 @@ int main(int argc, char *argv[])
|
||||
processorConfig["blackborderdetector"] = blackBorderDetectorConfig;
|
||||
processorConfig["smoothing"] = smoothingConfig;
|
||||
processorConfig["colorAlgorithm"] = qgetenv("HYPERION_GRABBER_COLOR_ALGORITHM").isEmpty() ? QString("mean_sqrt") : QString(qgetenv("HYPERION_GRABBER_COLOR_ALGORITHM"));
|
||||
processorConfig["offset"] = qgetenv("HYPERION_GRABBER_OFFSET").isEmpty() ? 0 : qgetenv("HYPERION_GRABBER_OFFSET").toInt();
|
||||
|
||||
QString wledColorOrder = qgetenv("HYPERION_GRABBER_WLED_COLOR_ORDER").isEmpty() ? QString("GRB") : QString(qgetenv("HYPERION_GRABBER_WLED_COLOR_ORDER"));
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user