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

◆ draw() [1/2]

bool fl::video::VideoImpl::draw ( fl::u32 now,
fl::span< CRGB > leds )

Definition at line 89 of file video_impl.cpp.hpp.

89 {
90 if (!mTime) {
92 mTime->setSpeed(mTimeScale);
93 mTime->reset(now);
94 }
95 now = mTime->update(now);
96 if (!mStream) {
97 FL_WARN("no stream");
98 return false;
99 }
100 bool ok = updateBufferIfNecessary(mPrevNow, now);
101 mPrevNow = now;
102 if (!ok) {
103 FL_WARN("updateBufferIfNecessary failed");
104 return false;
105 }
106 mFrameInterpolator->draw(now, leds);
107
108 fl::u32 time = mTime->time();
109 fl::u32 brightness = 255;
110 // Compute fade in/out brightness.
111 if (mFadeInTime || mFadeOutTime) {
112 brightness = 255;
113 if (time <= mFadeInTime) {
114 if (mFadeInTime == 0) {
115 brightness = 255;
116 } else {
117 brightness = time * 255 / mFadeInTime;
118 }
119 } else if (mFadeOutTime) {
120 i32 frames_remaining = mStream->framesRemaining();
121 if (frames_remaining < 0) {
122 // -1 means this is a stream.
123 brightness = 255;
124 } else {
125 FrameTracker &frame_tracker =
126 mFrameInterpolator->getFrameTracker();
127 fl::u32 micros_per_frame =
128 frame_tracker.microsecondsPerFrame();
129 fl::u32 millis_left =
130 (frames_remaining * micros_per_frame) / 1000;
131 if (millis_left < mFadeOutTime) {
132 brightness = millis_left * 255 / mFadeOutTime;
133 }
134 }
135 }
136 }
137 if (brightness < 255) {
138 if (brightness == 0) {
139 for (size_t i = 0; i < mPixelsPerFrame; ++i) {
140 leds[i] = CRGB::Black;
141 }
142 } else {
143 for (size_t i = 0; i < mPixelsPerFrame; ++i) {
145 }
146 }
147 }
148 return true;
149}
fl::CRGB leds[NUM_LEDS]
fl::UISlider brightness("Brightness", BRIGHTNESS, 0, 255)
fl::TimeWarpPtr mTime
Definition video_impl.h:70
FrameInterpolatorPtr mFrameInterpolator
Definition video_impl.h:69
PixelStreamPtr mStream
Definition video_impl.h:67
bool updateBufferIfNecessary(fl::u32 prev, fl::u32 now)
#define FL_WARN(X)
Definition log.h:276
fl::u64 time() FL_NOEXCEPT
Alias for millis64() - returns 64-bit millisecond time.
Definition chrono.h:346
shared_ptr< T > make_shared(Args &&... args) FL_NOEXCEPT
Definition shared_ptr.h:414
video::FrameTracker FrameTracker
CRGB & nscale8(u8 scaledown) FL_NOEXCEPT
Scale down a RGB to N/256ths of its current brightness, using "plain math" dimming rules.
Definition crgb.cpp.hpp:88
@ Black
<div style='background:#000000;width:4em;height:4em;'></div>
Definition crgb.h:510

References fl::CRGB::Black, brightness, FL_WARN, leds, fl::make_shared(), mFadeInTime, mFadeOutTime, mFrameInterpolator, fl::video::FrameTracker::microsecondsPerFrame(), mPixelsPerFrame, mPrevNow, mStream, mTime, mTimeScale, fl::time(), and updateBufferIfNecessary().

Referenced by draw().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: