FastLED 3.9.15
Loading...
Searching...
No Matches

◆ traverseGridSegment()

template<typename GridVisitor>
void fl::traverseGridSegment ( const vec2f & start,
const vec2f & end,
GridVisitor & visitor )
inline

Traverse a grid segment by selecting the cells that are crossed.

This version will select the fastest integer implementation based on the length of the segment. Most of the time it will call traverseGridSegment16() since segment spans are typically < 256 pixels.

Template Parameters
GridVisitor
Parameters
startstart point
endend point
visitorcalled for each cell visited.

Fully tested.

Definition at line 275 of file traverse_grid.h.

276 {
277 float dx = ABS(end.x - start.x);
278 float dy = ABS(end.y - start.y);
279 float maxRange = MAX(dx, dy);
280
281 // if (maxRange < 256.0f) {
282 // // Use Q8.8 (16-bit signed) if within ±127
283 // traverseGridSegment16(start, end, visitor);
284 // }
285 // else if (maxRange < 16777216.0f) {
286 // // Use Q24.8 (32-bit signed) if within ±8 million
287 // traverseGridSegment32(start, end, visitor);
288 // }
289 // else {
290 // // Fall back to floating-point
291 // traverseGridSegment(start, end, visitor);
292 // }
293
294 if (maxRange < 256.0f) {
295 // Use Q8.8 (16-bit signed) if within ±127
296 traverseGridSegment16(start, end, visitor);
297 } else {
298 // Use Q24.8 (32-bit signed) if within ±8 million
299 traverseGridSegment32(start, end, visitor);
300 }
301}
#define ABS(x)
Definition math_macros.h:19
#define MAX(a, b)
Definition math_macros.h:11
void traverseGridSegment16(const vec2f &start, const vec2f &end, GridVisitor &visitor)
Traverse a grid segment using fixed-point 8.8 arithmetic.
void traverseGridSegment32(const vec2f &start, const vec2f &end, GridVisitor &visitor)

References ABS, MAX, traverseGridSegment16(), traverseGridSegment32(), fl::vec2< T >::x, and fl::vec2< T >::y.

+ Here is the call graph for this function: