FastFX  1.1.0
LED Strip Animation and Effects Framework for Arduino
FFXFrameProvider Class Reference

#include <FFXFrameProvider.h>

Public Member Functions

 FFXFrameProvider (FFXSegment *initSegment, CRGB *fdLEDBuffer, CRGB *initFrame)
 
 FFXFrameProvider (FFXSegment *initSegment, CRGB *initFrame)
 
 FFXFrameProvider (FFXSegment *initSegment)
 
 ~FFXFrameProvider ()
 
CRGB * getCurrentFrame ()
 
bool getCrossFade ()
 
void setCrossFade (boolean newValue)
 
bool getCrossFadePref ()
 
bool setCrossFadePref (boolean newValue)
 
void checkCrossFade (FFXBase *effect)
 
FFXBase::FadeType getFadeMethodUp ()
 
FFXBase::FadeType getFadeMethodDown ()
 
void setFadeMethod (FFXBase::FadeType newValueUp, FFXBase::FadeType newValueDown)
 
unsigned long getCrossFadeThreshold ()
 
uint8_t getLastBlendSteps ()
 
uint8_t getLastBlendAmount ()
 
void updateFrame (CRGB *destLEDs, FFXBase *effect)
 
void updateFrame (FFXBase *effect)
 
void getLastFrame (CRGB *destLEDs, uint16_t startIdx, uint16_t endIdx)
 

Protected Member Functions

void step (FFXBase *effect)
 
CRGB * getNextFrameBuffer ()
 
CRGB * getCurrentFrameBuffer ()
 

Detailed Description

FFXFrameProvider - Controls the fetching of frames that get displayed by the FXController. There are several "modes" of operation that can be utilized:

Direct mode - (Crossfade=false AND constructed with FASTLed framebuffer passed in the constructor)

This is the most efficient usage.  It uses a single buffer (CRGB[]) that is passed in the constructor.
This is typically the array of CRGB used by fastLED for display and allocates no additional heap.

Indirect modes - Indirect modes use independent buffer(s) where pixel data is written and maintained. This means that each frame is calculated independently from what is in the FastLED display buffer. This can be useful for overlaying or mixing effects.

without crossfade - Uses a single buffer, remains independent of any changes made to the fastLED display buffer.

with crossfade - Uses 2 buffers to smooth animated effects.  A second buffer is used to "smooth" transitions from frame to frame - uses multiple 
cycles to blend from the current frame to the next one.  The number of blend steps between frames depends on the available time between frames and 
the FrameViewController will fill as many steps as it can in that time.  

Constructor & Destructor Documentation

◆ FFXFrameProvider() [1/3]

FFXFrameProvider::FFXFrameProvider ( FFXSegment initSegment,
CRGB *  fdLEDBuffer,
CRGB *  initFrame 
)

◆ FFXFrameProvider() [2/3]

FFXFrameProvider::FFXFrameProvider ( FFXSegment initSegment,
CRGB *  initFrame 
)
inline

◆ FFXFrameProvider() [3/3]

FFXFrameProvider::FFXFrameProvider ( FFXSegment initSegment)
inline

◆ ~FFXFrameProvider()

FFXFrameProvider::~FFXFrameProvider ( )
inline

Member Function Documentation

◆ checkCrossFade()

void FFXFrameProvider::checkCrossFade ( FFXBase effect)

◆ getCrossFade()

bool FFXFrameProvider::getCrossFade ( )
inline

◆ getCrossFadePref()

bool FFXFrameProvider::getCrossFadePref ( )
inline

◆ getCrossFadeThreshold()

unsigned long FFXFrameProvider::getCrossFadeThreshold ( )
inline

◆ getCurrentFrame()

CRGB* FFXFrameProvider::getCurrentFrame ( )
inline

◆ getCurrentFrameBuffer()

CRGB* FFXFrameProvider::getCurrentFrameBuffer ( )
inlineprotected

◆ getFadeMethodDown()

FFXBase::FadeType FFXFrameProvider::getFadeMethodDown ( )
inline

◆ getFadeMethodUp()

FFXBase::FadeType FFXFrameProvider::getFadeMethodUp ( )
inline

◆ getLastBlendAmount()

uint8_t FFXFrameProvider::getLastBlendAmount ( )
inline

◆ getLastBlendSteps()

uint8_t FFXFrameProvider::getLastBlendSteps ( )
inline

◆ getLastFrame()

void FFXFrameProvider::getLastFrame ( CRGB *  destLEDs,
uint16_t  startIdx,
uint16_t  endIdx 
)

◆ getNextFrameBuffer()

CRGB* FFXFrameProvider::getNextFrameBuffer ( )
inlineprotected

◆ setCrossFade()

void FFXFrameProvider::setCrossFade ( boolean  newValue)

◆ setCrossFadePref()

bool FFXFrameProvider::setCrossFadePref ( boolean  newValue)
inline

◆ setFadeMethod()

void FFXFrameProvider::setFadeMethod ( FFXBase::FadeType  newValueUp,
FFXBase::FadeType  newValueDown 
)
inline

◆ step()

void FFXFrameProvider::step ( FFXBase effect)
protected

◆ updateFrame() [1/2]

void FFXFrameProvider::updateFrame ( CRGB *  destLEDs,
FFXBase effect 
)

◆ updateFrame() [2/2]

void FFXFrameProvider::updateFrame ( FFXBase effect)
inline