sTodo-m5paper-client/libraries/FastLED/src/fl/bilinear_expansion.h
2025-06-30 21:41:49 +02:00

82 lines
3.4 KiB
C++

/// @file bilinear_expansion.h
/// @brief Demonstrates how to mix noise generation with color palettes on a
/// 2D LED matrix
#pragma once
#include <stdint.h>
#include "crgb.h"
#include "fl/deprecated.h"
#include "fl/namespace.h"
#include "fl/upscale.h"
#include "fl/xymap.h"
namespace fl {
/// @brief Performs bilinear interpolation for upscaling an image.
/// @param output The output grid to write into the interpolated values.
/// @param input The input grid to read from.
/// @param inputWidth The width of the input grid.
/// @param inputHeight The height of the input grid.
/// @param xyMap The XYMap to use to determine where to write the pixel. If the
/// pixel is mapped outside of the range then it is clipped.
void bilinearExpandArbitrary(const CRGB *input, CRGB *output,
uint16_t inputWidth, uint16_t inputHeight,
fl::XYMap xyMap)
FASTLED_DEPRECATED("use upscaleArbitrary from upscale.h");
void bilinearExpandPowerOf2(const CRGB *input, CRGB *output, uint8_t inputWidth,
uint8_t inputHeight, fl::XYMap xyMap)
FASTLED_DEPRECATED("use upscalePowerOf2 from upscale.h");
void bilinearExpand(const CRGB *input, CRGB *output, uint16_t inputWidth,
uint16_t inputHeight, fl::XYMap xyMap)
FASTLED_DEPRECATED("use upscale from upscale.h");
void bilinearExpandFloat(const CRGB *input, CRGB *output, uint8_t inputWidth,
uint8_t inputHeight, fl::XYMap xyMap)
FASTLED_DEPRECATED("use upscaleFloat from upscale.h");
void bilinearExpandArbitraryFloat(const CRGB *input, CRGB *output,
uint16_t inputWidth, uint16_t inputHeight,
fl::XYMap xyMap)
FASTLED_DEPRECATED("use upscaleArbitraryFloat from upscale.h");
uint8_t bilinearInterpolateFloat(uint8_t v00, uint8_t v10, uint8_t v01,
uint8_t v11, float dx, float dy)
FASTLED_DEPRECATED("use upscaleFloat from upscale.h");
////////////////// Inline definitions for backward compatibility ///////////////////////
inline void bilinearExpandArbitrary(const CRGB *input, CRGB *output,
uint16_t inputWidth, uint16_t inputHeight,
fl::XYMap xyMap) {
upscaleArbitrary(input, output, inputWidth, inputHeight, xyMap);
}
inline void bilinearExpandPowerOf2(const CRGB *input, CRGB *output,
uint8_t inputWidth, uint8_t inputHeight,
fl::XYMap xyMap) {
upscalePowerOf2(input, output, inputWidth, inputHeight, xyMap);
}
inline void bilinearExpand(const CRGB *input, CRGB *output, uint16_t inputWidth,
uint16_t inputHeight, fl::XYMap xyMap) {
upscale(input, output, inputWidth, inputHeight, xyMap);
}
inline void bilinearExpandArbitraryFloat(const CRGB *input, CRGB *output,
uint16_t inputWidth,
uint16_t inputHeight,
fl::XYMap xyMap) {
upscaleArbitraryFloat(input, output, inputWidth, inputHeight, xyMap);
}
inline uint8_t bilinearInterpolateFloat(uint8_t v00, uint8_t v10, uint8_t v01,
uint8_t v11, float dx, float dy) {
return upscaleFloat(v00, v10, v01, v11, dx, dy);
}
} // namespace fl