MCPcopy Create free account
hub / github.com/FastLED/FastLED / Canvas

Class Canvas

src/fl/gfx/gfx.h:51–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49/// All methods are force-inlined delegates — zero overhead.
50template<typename RGB_T>
51class Canvas {
52 gfx::Canvas<RGB_T> mImpl;
53
54 public:
55 FASTLED_FORCE_INLINE Canvas(fl::span<RGB_T> buf, int w, int h) : mImpl(buf, w, h) {}
56 FASTLED_FORCE_INLINE Canvas(fl::shared_ptr<RGB_T> ptr, int w, int h) : mImpl(ptr, w, h) {}
57
58 FASTLED_FORCE_INLINE int size() const { return mImpl.size(); }
59 FASTLED_FORCE_INLINE RGB_T& at(int x, int y) { return mImpl.at(x, y); }
60 FASTLED_FORCE_INLINE const RGB_T& at(int x, int y) const { return mImpl.at(x, y); }
61 FASTLED_FORCE_INLINE bool has(int x, int y) const { return mImpl.has(x, y); }
62
63 template<int hRadius, int vRadius>
64 FASTLED_FORCE_INLINE void blurGaussian(alpha8 dimFactor) {
65 mImpl.template blurGaussian<hRadius, vRadius>(dimFactor);
66 }
67
68 template<int hRadius, int vRadius>
69 FASTLED_FORCE_INLINE void blurGaussian(alpha16 dimFactor) {
70 mImpl.template blurGaussian<hRadius, vRadius>(dimFactor);
71 }
72
73 template<int hRadius, int vRadius>
74 FASTLED_FORCE_INLINE void blurGaussian() {
75 mImpl.template blurGaussian<hRadius, vRadius>();
76 }
77
78 template<typename Coord>
79 FASTLED_FORCE_INLINE void drawLine(const RGB_T& color, Coord x0, Coord y0, Coord x1, Coord y1,
80 DrawMode mode = DrawMode::DRAW_MODE_BLEND) {
81 mImpl.drawLine(color, x0, y0, x1, y1, mode);
82 }
83
84 template<typename Coord>
85 FASTLED_FORCE_INLINE void drawDisc(const RGB_T& color, Coord cx, Coord cy, Coord r,
86 DrawMode mode = DrawMode::DRAW_MODE_BLEND) {
87 mImpl.drawDisc(color, cx, cy, r, mode);
88 }
89
90 template<typename Coord>
91 FASTLED_FORCE_INLINE void drawRing(const RGB_T& color, Coord cx, Coord cy, Coord r, Coord thickness,
92 DrawMode mode = DrawMode::DRAW_MODE_BLEND) {
93 mImpl.drawRing(color, cx, cy, r, thickness, mode);
94 }
95
96 template<typename Coord>
97 FASTLED_FORCE_INLINE void drawStrokeLine(const RGB_T& color, Coord x0, Coord y0, Coord x1, Coord y1,
98 Coord thickness, LineCap cap = LineCap::FLAT,
99 DrawMode mode = DrawMode::DRAW_MODE_BLEND) {
100 mImpl.drawStrokeLine(color, x0, y0, x1, y1, thickness, cap, mode);
101 }
102};
103
104/// @brief Convenience alias for CRGB canvas — use fl::CanvasRGB for no-template syntax.
105class CanvasRGB : protected Canvas<CRGB> {

Callers

nothing calls this directly

Calls 1

atMethod · 0.45

Tested by

no test coverage detected