FastLED 3.10.8
Loading...
Searching...
No Matches

◆ draw() [1/2]

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

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

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

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

+ Here is the call graph for this function: