FastLED 3.9.15
Loading...
Searching...
No Matches
fl::gfx Namespace Reference

Namespaces

namespace  blur_detail
 
namespace  detail
 ============================================================================
 

Classes

struct  Canvas
 Simple rectangular canvas for graphics operations Combines a pixel buffer with dimensions for cache-optimal drawing. More...
 
struct  CanvasMapped
 XYMap-backed canvas for non-rectangular or remapped layouts. More...
 

Enumerations

enum class  LineCap { FLAT , ROUND , SQUARE }
 Line cap styles for stroke operations. More...
 

Functions

template<typename Coord>
Coord aaRatio (Coord num, Coord denom, Coord inv_denom)
 Compute num/denom using the best strategy for the Coord type:
 
template<typename PixelT, bool Overwrite>
void addPixelToBuffer (PixelT *pixels, int width, int height, int x, int y, const PixelT &color)
 Internal helper: add or set pixel to rectangular buffer with bounds checking Direct row-major indexing: pixels[y * width + x] Templated on Overwrite for compile-time dispatch (no per-pixel branch).
 
void blur1d (CRGB *leds, u16 numLeds, fract8 blur_amount) FL_NOEXCEPT
 Legacy raw-pointer version of blur1d.
 
void blur1d (fl::span< CRGB > leds, fract8 blur_amount) FL_NOEXCEPT
 One-dimensional blur filter (span version).
 
void blur2d (Canvas< CRGB > &canvas, alpha8 blur_amount) FL_NOEXCEPT
 Two-dimensional blur filter (Canvas version, no XYMap).
 
void blur2d (CRGB *leds, u8 width, u8 height, fract8 blur_amount) FL_NOEXCEPT FASTLED_DEPRECATED("Use blur2d(...
 Legacy version of blur2d, which does not require an XYMap but instead implicitly binds to XY() function.
 
void blur2d (CRGB *leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
 Legacy raw-pointer version of blur2d.
 
void blur2d (fl::span< CRGB > leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
 Two-dimensional blur filter (span version).
 
 BLUR_INST_F16 (0, 0, CRGB) BLUR_INST_F16(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F16 (0, 1, CRGB16) BLUR_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB BLUR_INST_F16 (0, 2, CRGB) BLUR_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F16 (0, 3, CRGB16) BLUR_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB CRGB BLUR_INST_F16 (0, 4, CRGB) BLUR_INST_F16(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 BLUR_INST_F16 (1, 0, CRGB16) BLUR_INST_F16(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 BLUR_INST_F16 (1, 1, CRGB16) BLUR_INST_F16(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F16 (1, 2, CRGB16) BLUR_INST_F16(2
 
CRGB CRGB CRGB BLUR_INST_F16 (2, 0, CRGB) BLUR_INST_F16(3
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB BLUR_INST_F16 (2, 1, CRGB) BLUR_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F16 (3, 0, CRGB16) BLUR_INST_F16(4
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 BLUR_INST_F16 (3, 3, CRGB16) BLUR_INST_F16(4
 
CRGB CRGB CRGB CRGB BLUR_INST_F16 (4, 0, CRGB) BLUR_INST_F16(0
 
CRGB CRGB BLUR_INST_F16 (4, 4, CRGB) BLUR_INST_F16(1
 
 BLUR_INST_F8 (0, 0, CRGB) BLUR_INST_F8(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F8 (0, 1, CRGB16) BLUR_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB BLUR_INST_F8 (0, 2, CRGB) BLUR_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F8 (0, 3, CRGB16) BLUR_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB CRGB BLUR_INST_F8 (0, 4, CRGB) BLUR_INST_F8(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 BLUR_INST_F8 (1, 0, CRGB16) BLUR_INST_F8(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 BLUR_INST_F8 (1, 1, CRGB16) BLUR_INST_F8(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F8 (1, 2, CRGB16) BLUR_INST_F8(2
 
CRGB CRGB CRGB BLUR_INST_F8 (2, 0, CRGB) BLUR_INST_F8(3
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB BLUR_INST_F8 (2, 1, CRGB) BLUR_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 BLUR_INST_F8 (3, 0, CRGB16) BLUR_INST_F8(4
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 BLUR_INST_F8 (3, 3, CRGB16) BLUR_INST_F8(4
 
CRGB CRGB CRGB CRGB BLUR_INST_F8 (4, 0, CRGB) BLUR_INST_F8(0
 
CRGB CRGB BLUR_INST_F8 (4, 4, CRGB) BLUR_INST_F8(1
 
 BLUR_MAPPED_INST_F16 (0, 0, CRGB) BLUR_MAPPED_INST_F16(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F16 (0, 1, CRGB16) BLUR_MAPPED_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F16 (0, 2, CRGB) BLUR_MAPPED_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F16 (0, 3, CRGB16) BLUR_MAPPED_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F16 (0, 4, CRGB) BLUR_MAPPED_INST_F16(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F16 (1, 0, CRGB16) BLUR_MAPPED_INST_F16(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 BLUR_MAPPED_INST_F16 (1, 1, CRGB16) BLUR_MAPPED_INST_F16(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F16 (1, 2, CRGB16) BLUR_MAPPED_INST_F16(2
 
CRGB CRGB CRGB BLUR_MAPPED_INST_F16 (2, 0, CRGB) BLUR_MAPPED_INST_F16(3
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F16 (2, 1, CRGB) BLUR_MAPPED_INST_F16(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F16 (3, 0, CRGB16) BLUR_MAPPED_INST_F16(4
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 BLUR_MAPPED_INST_F16 (3, 3, CRGB16) BLUR_MAPPED_INST_F16(4
 
CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F16 (4, 0, CRGB) BLUR_MAPPED_INST_F16(0
 
CRGB CRGB BLUR_MAPPED_INST_F16 (4, 4, CRGB) BLUR_MAPPED_INST_F16(1
 
 BLUR_MAPPED_INST_F8 (0, 0, CRGB) BLUR_MAPPED_INST_F8(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F8 (0, 1, CRGB16) BLUR_MAPPED_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F8 (0, 2, CRGB) BLUR_MAPPED_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F8 (0, 3, CRGB16) BLUR_MAPPED_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F8 (0, 4, CRGB) BLUR_MAPPED_INST_F8(1
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F8 (1, 0, CRGB16) BLUR_MAPPED_INST_F8(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 BLUR_MAPPED_INST_F8 (1, 1, CRGB16) BLUR_MAPPED_INST_F8(2
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F8 (1, 2, CRGB16) BLUR_MAPPED_INST_F8(2
 
CRGB CRGB CRGB BLUR_MAPPED_INST_F8 (2, 0, CRGB) BLUR_MAPPED_INST_F8(3
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F8 (2, 1, CRGB) BLUR_MAPPED_INST_F8(0
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 CRGB16 CRGB16 BLUR_MAPPED_INST_F8 (3, 0, CRGB16) BLUR_MAPPED_INST_F8(4
 
CRGB CRGB CRGB CRGB CRGB CRGB CRGB CRGB16 CRGB16 BLUR_MAPPED_INST_F8 (3, 3, CRGB16) BLUR_MAPPED_INST_F8(4
 
CRGB CRGB CRGB CRGB BLUR_MAPPED_INST_F8 (4, 0, CRGB) BLUR_MAPPED_INST_F8(0
 
CRGB CRGB BLUR_MAPPED_INST_F8 (4, 4, CRGB) BLUR_MAPPED_INST_F8(1
 
void blurColumns (Canvas< CRGB > &canvas, alpha8 blur_amount) FL_NOEXCEPT
 Perform a blur1d() on every column of a rectangular matrix (Canvas version).
 
void blurColumns (CRGB *leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
 Legacy raw-pointer version of blurColumns.
 
void blurColumns (fl::span< CRGB > leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
 Perform a blur1d() on every column of a rectangular matrix (span version).
 
template<int hRadius, int vRadius, typename RGB_T>
void blurGaussian (Canvas< RGB_T > &canvas) FL_NOEXCEPT
 Convenience overload with no dimming.
 
template<int hRadius, int vRadius, typename RGB_T>
void blurGaussian (Canvas< RGB_T > &canvas, alpha16 dimFactor) FL_NOEXCEPT
 Higher-precision dim overload (UNORM16).
 
template<int hRadius, int vRadius, typename RGB_T>
void blurGaussian (Canvas< RGB_T > &canvas, alpha8 dimFactor) FL_NOEXCEPT
 Compile-time Gaussian blur with independent H/V radii.
 
template<int hRadius, int vRadius, typename RGB_T>
void blurGaussian (CanvasMapped< RGB_T > &canvas) FL_NOEXCEPT
 
template<int hRadius, int vRadius, typename RGB_T>
void blurGaussian (CanvasMapped< RGB_T > &canvas, alpha16 dimFactor) FL_NOEXCEPT
 Higher-precision dim overload for CanvasMapped (UNORM16).
 
template<int hRadius, int vRadius, typename RGB_T>
void blurGaussian (CanvasMapped< RGB_T > &canvas, alpha8 dimFactor) FL_NOEXCEPT
 XYMap-backed Gaussian blur (non-optimized, per-pixel path).
 
template<int hRadius, int vRadius, typename RGB_T, typename AlphaT>
FL_OPTIMIZE_FUNCTION void blurGaussianImpl (Canvas< RGB_T > &canvas, AlphaT alpha)
 
template<int hRadius, int vRadius, typename RGB_T, typename AlphaT>
FL_OPTIMIZE_FUNCTION void blurGaussianMappedImpl (CanvasMapped< RGB_T > &canvas, AlphaT alpha)
 
void blurRows (Canvas< CRGB > &canvas, alpha8 blur_amount) FL_NOEXCEPT
 Perform a blur1d() on every row of a rectangular matrix (Canvas version).
 
void blurRows (CRGB *leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
 Legacy raw-pointer version of blurRows.
 
void blurRows (fl::span< CRGB > leds, u8 width, u8 height, fract8 blur_amount, const XYMap &xymap) FL_NOEXCEPT
 Perform a blur1d() on every row of a rectangular matrix (span version).
 
template<typename T>
fl::u8 coordToU8 (T alpha)
 sqrt is provided by fl::sqrt overloads in math.h for:
 
template<>
fl::u8 coordToU8< double > (double alpha)
 
template<>
fl::u8 coordToU8< fl::s16x16 > (fl::s16x16 alpha)
 
template<>
fl::u8 coordToU8< float > (float alpha)
 
template<>
fl::u8 coordToU8< int > (int alpha)
 
template<typename PixelT, typename Coord>
void drawDisc (Canvas< PixelT > &canvas, const PixelT &color, Coord cx, Coord cy, Coord r, fl::DrawMode mode=fl::DrawMode::DRAW_MODE_BLEND) FL_NOEXCEPT
 
template<typename PixelT, typename Coord>
void drawLine (Canvas< PixelT > &canvas, const PixelT &color, Coord x0, Coord y0, Coord x1, Coord y1, fl::DrawMode mode)
 ============================================================================
 
template<typename PixelT, typename Coord>
void drawRing (Canvas< PixelT > &canvas, const PixelT &color, Coord cx, Coord cy, Coord r, Coord thickness, fl::DrawMode mode=fl::DrawMode::DRAW_MODE_BLEND) FL_NOEXCEPT
 
template<typename PixelT, typename Coord>
void drawStrokeLine (Canvas< PixelT > &canvas, const PixelT &color, Coord x0, Coord y0, Coord x1, Coord y1, Coord thickness, LineCap cap, fl::DrawMode mode=fl::DrawMode::DRAW_MODE_BLEND) FL_NOEXCEPT
 
template<typename T>
fromFrac (int p, int q)
 Convert rational p/q to Coord without float.
 
template<>
fl::s16x16 fromFrac< fl::s16x16 > (int p, int q)
 
template<typename T>
fromInt (int n)
 Convert an integer to Coord without float intermediate.
 
template<>
fl::s16x16 fromInt< fl::s16x16 > (int n)
 
template<typename T>
halfOf (T val)
 Divide Coord by 2 using shift (avoids expensive division on embedded).
 
template<>
double halfOf< double > (double val)
 
template<>
fl::s16x16 halfOf< fl::s16x16 > (fl::s16x16 val)
 
template<>
float halfOf< float > (float val)
 
template<>
int halfOf< int > (int val)
 
template<typename T>
int toInt (const T &val)
 Helper to convert any coordinate type to int Supports: s16x16 (via to_int()), float, int, and other arithmetic types.
 
template<>
int toInt< double > (const double &val)
 
template<>
int toInt< float > (const float &val)
 
template<>
int toInt< int > (const int &val)
 

Variables

CRGB BLUR_INST_F16 (2, 2, CRGB) BLUR_INST_F16(3
 
CRGB BLUR_INST_F8 (2, 2, CRGB) BLUR_INST_F8(3
 
CRGB BLUR_MAPPED_INST_F16 (2, 2, CRGB) BLUR_MAPPED_INST_F16(3
 
CRGB BLUR_MAPPED_INST_F8 (2, 2, CRGB) BLUR_MAPPED_INST_F8(3
 
void const XYMap &xymap instead