FastLED 3.9.15
Loading...
Searching...
No Matches

◆ upscale()

void fl::upscale ( const CRGB * input,
CRGB * output,
u16 inputWidth,
u16 inputHeight,
const fl::XYMap & xyMap )
inline

Definition at line 58 of file upscale.h.

59 {
60 u16 outputWidth = xyMap.getWidth();
61 u16 outputHeight = xyMap.getHeight();
62 const bool wontFit =
63 (outputWidth != xyMap.getWidth() || outputHeight != xyMap.getHeight());
64
65 // Check if we can use the optimized rectangular version
66 const bool isRectangular = (xyMap.getType() == XYMap::kLineByLine);
67
68 if (isRectangular) {
69 // Use optimized rectangular version that bypasses XY mapping
70 if (wontFit || (inputWidth & (inputWidth - 1)) ||
71 (inputHeight & (inputHeight - 1))) {
72 upscaleRectangular(input, output, inputWidth, inputHeight,
73 outputWidth, outputHeight);
74 } else {
75 upscaleRectangularPowerOf2(input, output, inputWidth, inputHeight,
76 outputWidth, outputHeight);
77 }
78 } else {
79 // Use the original XY-mapped versions
80 if (wontFit || (inputWidth & (inputWidth - 1)) ||
81 (inputHeight & (inputHeight - 1))) {
82 upscaleArbitrary(input, output, inputWidth, inputHeight, xyMap);
83 } else {
84 upscalePowerOf2(input, output, inputWidth, inputHeight, xyMap);
85 }
86 }
87}
fl::XYMap xyMap
Definition ColorBoost.h:61
@ kLineByLine
Definition xymap.h:47
void upscaleRectangular(const CRGB *input, CRGB *output, u16 inputWidth, u16 inputHeight, u16 outputWidth, u16 outputHeight)
Optimized upscale for rectangular/line-by-line XY maps.
Definition upscale.cpp:20
void upscaleRectangularPowerOf2(const CRGB *input, CRGB *output, u8 inputWidth, u8 inputHeight, u8 outputWidth, u8 outputHeight)
Optimized upscale for rectangular/line-by-line XY maps (power-of-2 version).
Definition upscale.cpp:63
void upscaleArbitrary(const CRGB *input, CRGB *output, u16 inputWidth, u16 inputHeight, const XYMap &xyMap)
Performs bilinear interpolation for upscaling an image.
Definition upscale.cpp:106
void upscalePowerOf2(const CRGB *input, CRGB *output, u8 inputWidth, u8 inputHeight, const XYMap &xyMap)
Performs bilinear interpolation for upscaling an image.
Definition upscale.cpp:170

References fl::XYMap::kLineByLine, upscaleArbitrary(), upscalePowerOf2(), upscaleRectangular(), upscaleRectangularPowerOf2(), and xyMap.

Referenced by fl::ScaleUp::expand(), and CRGB::upscale().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: