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

Detailed Description

============================================================================

LEGACY RASTERTARGET API (Deprecated - for backward compatibility)

============================================================================

CANVAS IMPLEMENTATIONS

Classes

struct  DiscCtx
 Disc context: bundles per-circle constants into a struct passed by reference. More...
 
struct  needs_division
 
struct  needs_division< Coord, typename voider< fl::bool_constant<(Coord::FRAC_BITS< 16)> >::type >
 
struct  RingCtx
 Ring context: bundles all per-circle constants into a struct passed by reference. More...
 
struct  StrokeCtx
 Stroke line context: bundles per-line constants into a struct passed by reference. More...
 
struct  voider
 

Functions

template<typename Coord>
Coord aaRatioDispatch (Coord num, Coord denom, Coord, fl::true_type)
 
template<typename Coord>
Coord aaRatioDispatch (Coord num, Coord, Coord inv_denom, fl::false_type)
 
void computeBandShift (fl::i32 band, fl::u8 &shift_out, fl::u16 &inv_out)
 Precompute right-shift and reciprocal multiplier for AA division.
 
template<typename PixelT, typename Coord, bool Overwrite>
void drawDiscCore (Canvas< PixelT > &canvas, const PixelT &color, Coord cx, Coord cy, Coord r)
 
template<typename PixelT, typename Coord, bool Overwrite>
void drawLineCore (Canvas< PixelT > &canvas, const PixelT &color, Coord x0, Coord y0, Coord x1, Coord y1)
 
template<typename PixelT, typename Coord, bool Overwrite>
void drawRingCore (Canvas< PixelT > &canvas, const PixelT &color, Coord cx, Coord cy, Coord r, Coord thickness)
 
template<typename PixelT, typename Coord, bool Overwrite>
void drawStrokeLineCore (Canvas< PixelT > &canvas, const PixelT &color, Coord x0, Coord y0, Coord x1, Coord y1, Coord thickness, LineCap cap)
 
const fl::u8 distanceAA_LUT[256] FL_ALIGN_PROGMEM (256)
 256-byte antialiasing lookup table Maps normalized squared distance d²/r_max² (scaled 0..255) to brightness byte Entry i = round(255 * max(0, 1 - sqrt(i/255))) Provides smooth antialiasing fringe for circles and discs
 
fl::i32 isqrt32_ceil (fl::i32 n)
 Integer square root using Newton iteration Computes ceil(sqrt(n)) for positive integers More accurate than digit-by-digit for the ceiling case.
 
fl::i32 isqrt32_floor (fl::i32 n)
 Integer square root using digit-by-digit algorithm Computes floor(sqrt(n)) for positive integers Uses only shifts, adds, and comparisons — no division.
 
template<typename PixelT, bool Overwrite>
void renderDiscRow (PixelT *buf, int w, int py, fl::i32 d2_row, const DiscCtx< PixelT > &f)
 Render one scanline of a disc using incremental d².
 
template<typename PixelT, bool Overwrite>
void renderRingRow (PixelT *buf, int w, int py, fl::i32 d2_row, const RingCtx< PixelT > &g)
 Render one scanline of a ring using incremental d² with phase-based scanning.
 
template<typename PixelT, bool Overwrite>
void renderStrokeRow (PixelT *buf, int w, int py, fl::i32 cross_start, fl::i32 dot_start, const StrokeCtx< PixelT > &sc)
 Render one scanline of a stroke line using phase-based scanning.
 
template<typename Coord>
fl::i32 toFixed8 (Coord val)
 Convert any Coord type to 8.8 fixed-point (fl::i32).
 
template<>
fl::i32 toFixed8< double > (double val)
 
template<>
fl::i32 toFixed8< fl::s16x16 > (fl::s16x16 val)
 
template<>
fl::i32 toFixed8< float > (float val)
 
template<>
fl::i32 toFixed8< int > (int val)
 
template<typename Coord>
fl::i32 toQ16 (Coord val)
 Convert any Coord type to Q16.16 raw i32 for integer inner loops.
 
template<>
fl::i32 toQ16< double > (double val)
 
template<>
fl::i32 toQ16< fl::s16x16 > (fl::s16x16 val)
 
template<>
fl::i32 toQ16< float > (float val)
 
template<>
fl::i32 toQ16< int > (int val)
 

Variables

const fl::u8 distanceAA_LUT [256]
 Distance antialiasing lookup table Maps normalized squared distance d²/r_max² (scaled 0..255) to brightness byte Entry i = round(255 * max(0, 1 - sqrt(i/255))) PROGMEM on embedded platforms, regular array on host.