58 {
59 u16 outputWidth =
xyMap.getWidth();
60 u16 outputHeight =
xyMap.getHeight();
61 const bool wontFit =
62 (outputWidth !=
xyMap.getWidth() || outputHeight !=
xyMap.getHeight());
63
64
66
67 if (isRectangular) {
68
69 if (wontFit || (inputWidth & (inputWidth - 1)) ||
70 (inputHeight & (inputHeight - 1))) {
72 outputWidth, outputHeight);
73 } else {
75 outputWidth, outputHeight);
76 }
77 } else {
78
79 if (wontFit || (inputWidth & (inputWidth - 1)) ||
80 (inputHeight & (inputHeight - 1))) {
82 } else {
84 }
85 }
86}
void upscaleRectangularPowerOf2(const CRGB *input, CRGB *output, u8 inputWidth, u8 inputHeight, u8 outputWidth, u8 outputHeight) FL_NO_EXCEPT
Optimized upscale for rectangular/line-by-line XY maps (power-of-2 version).
void upscaleRectangular(const CRGB *input, CRGB *output, u16 inputWidth, u16 inputHeight, u16 outputWidth, u16 outputHeight) FL_NO_EXCEPT
Optimized upscale for rectangular/line-by-line XY maps.
void upscaleArbitrary(const CRGB *input, CRGB *output, u16 inputWidth, u16 inputHeight, const XYMap &xyMap) FL_NO_EXCEPT
Performs bilinear interpolation for upscaling an image.
void upscalePowerOf2(const CRGB *input, CRGB *output, u8 inputWidth, u8 inputHeight, const XYMap &xyMap) FL_NO_EXCEPT
Performs bilinear interpolation for upscaling an image.