59 {
60 u16 outputWidth =
xyMap.getWidth();
61 u16 outputHeight =
xyMap.getHeight();
62 const bool wontFit =
63 (outputWidth !=
xyMap.getWidth() || outputHeight !=
xyMap.getHeight());
64
65
67
68 if (isRectangular) {
69
70 if (wontFit || (inputWidth & (inputWidth - 1)) ||
71 (inputHeight & (inputHeight - 1))) {
73 outputWidth, outputHeight);
74 } else {
76 outputWidth, outputHeight);
77 }
78 } else {
79
80 if (wontFit || (inputWidth & (inputWidth - 1)) ||
81 (inputHeight & (inputHeight - 1))) {
83 } else {
85 }
86 }
87}
void upscaleRectangular(const CRGB *input, CRGB *output, u16 inputWidth, u16 inputHeight, u16 outputWidth, u16 outputHeight)
Optimized upscale for rectangular/line-by-line XY maps.
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).
void upscaleArbitrary(const CRGB *input, CRGB *output, u16 inputWidth, u16 inputHeight, const XYMap &xyMap)
Performs bilinear interpolation for upscaling an image.
void upscalePowerOf2(const CRGB *input, CRGB *output, u8 inputWidth, u8 inputHeight, const XYMap &xyMap)
Performs bilinear interpolation for upscaling an image.