Signed-off-by: myperworld <myperworld@126.com>
This commit is contained in:
1 parent
0986832fd1
commit
aacd052c06
3403 files changed
+597376
-12
No files matched your search
@@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
|
||||
#include "fl/stdint.h"
|
||||
|
||||
#include "crgb.h"
|
||||
#include "detail/draw_context.h"
|
||||
#include "detail/transition.h"
|
||||
#include "fl/namespace.h"
|
||||
#include "fl/memory.h"
|
||||
#include "fl/str.h"
|
||||
#include "fl/unused.h"
|
||||
|
||||
namespace fl {
|
||||
|
||||
FASTLED_SMART_PTR(Fx);
|
||||
|
||||
// Abstract base class for effects on a strip/grid of LEDs.
|
||||
class Fx {
|
||||
public:
|
||||
// Alias DrawContext for use within Fx
|
||||
using DrawContext = _DrawContext;
|
||||
|
||||
Fx(uint16_t numLeds) : mNumLeds(numLeds) {}
|
||||
|
||||
/// @param now The current time in milliseconds. Fx writers are encouraged
|
||||
/// to use this instead of millis() directly as this will more deterministic
|
||||
/// behavior.
|
||||
virtual void
|
||||
draw(DrawContext context) = 0; // This is the only function that needs to be
|
||||
// implemented everything else is optional.
|
||||
|
||||
// If true then this fx has a fixed frame rate and the fps parameter will be
|
||||
// set to the frame rate.
|
||||
virtual bool hasFixedFrameRate(float *fps) const {
|
||||
FASTLED_UNUSED(fps);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get the name of the current fx.
|
||||
virtual fl::string fxName() const = 0;
|
||||
|
||||
// Called when the fx is paused, usually when a transition has finished.
|
||||
virtual void pause(fl::u32 now) { FASTLED_UNUSED(now); }
|
||||
virtual void resume(fl::u32 now) {
|
||||
FASTLED_UNUSED(now);
|
||||
} // Called when the fx is resumed after a pause,
|
||||
// usually when a transition has started.
|
||||
|
||||
uint16_t getNumLeds() const { return mNumLeds; }
|
||||
|
||||
protected:
|
||||
virtual ~Fx() {} // Protected destructor
|
||||
uint16_t mNumLeds;
|
||||
};
|
||||
|
||||
} // namespace fl
|
||||
Reference in new issue
Block a user