55 _method(pin, countPixels, T_COLOR_FEATURE::
PixelSize, T_COLOR_FEATURE::SettingsSize)
62 _method(pin, countPixels, T_COLOR_FEATURE::
PixelSize, T_COLOR_FEATURE::SettingsSize, channel)
69 _method(pinClock, pinData, countPixels, T_COLOR_FEATURE::
PixelSize, T_COLOR_FEATURE::SettingsSize)
73 LumitronixIFlexBus(uint16_t countPixels, uint8_t pinClock, uint8_t pinData, uint8_t pinLatch, uint8_t pinOutputEnable = NOT_A_PIN) :
76 _method(pinClock, pinData, pinLatch, pinOutputEnable, countPixels, T_COLOR_FEATURE::
PixelSize, T_COLOR_FEATURE::SettingsSize)
83 _method(countPixels, T_COLOR_FEATURE::
PixelSize, T_COLOR_FEATURE::SettingsSize)
104 void Begin(int8_t sck, int8_t miso, int8_t mosi, int8_t ss)
106 _method.Initialize(sck, miso, mosi, ss);
111 void Begin(int8_t sck, int8_t dat0, int8_t dat1, int8_t dat2, int8_t dat3, int8_t ss)
113 _method.Initialize(sck, dat0, dat1, dat2, dat3, ss);
118 void Begin(int8_t sck, int8_t dat0, int8_t dat1, int8_t dat2, int8_t dat3, int8_t dat4, int8_t dat5, int8_t dat6, int8_t dat7, int8_t ss)
120 _method.Initialize(sck, dat0, dat1, dat2, dat3, dat4, dat5, dat6, dat7, ss);
124 void Show(
bool maintainBufferConsistency =
true)
131 _method.Update(maintainBufferConsistency);
138 return _method.IsReadyToUpdate();
163 return _method.getDataSize() - T_COLOR_FEATURE::SettingsSize;
168 return T_COLOR_FEATURE::PixelSize;
176 void SetPixelColor(uint16_t indexPixel,
typename T_COLOR_FEATURE::ColorObject color)
180 T_COLOR_FEATURE::applyPixelColor(
_pixels(), indexPixel, color);
185 typename T_COLOR_FEATURE::ColorObject
GetPixelColor(uint16_t indexPixel)
const
189 return T_COLOR_FEATURE::retrievePixelColor(
_pixels(), indexPixel);
199 void ClearTo(
typename T_COLOR_FEATURE::ColorObject color)
201 uint8_t temp[T_COLOR_FEATURE::PixelSize];
204 T_COLOR_FEATURE::applyPixelColor(temp, 0, color);
206 T_COLOR_FEATURE::replicatePixel(pixels, temp,
_countPixels);
211 void ClearTo(
typename T_COLOR_FEATURE::ColorObject color, uint16_t first, uint16_t last)
217 uint8_t temp[T_COLOR_FEATURE::PixelSize];
219 uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, first);
221 T_COLOR_FEATURE::applyPixelColor(temp, 0, color);
223 T_COLOR_FEATURE::replicatePixel(pFront, temp, last - first + 1);
237 void RotateLeft(uint16_t rotationCount, uint16_t first, uint16_t last)
242 (last - first) >= rotationCount)
257 void ShiftLeft(uint16_t shiftCount, uint16_t first, uint16_t last)
262 (last - first) >= shiftCount)
277 void RotateRight(uint16_t rotationCount, uint16_t first, uint16_t last)
282 (last - first) >= rotationCount)
297 void ShiftRight(uint16_t shiftCount, uint16_t first, uint16_t last)
302 (last - first) >= shiftCount)
320 T_COLOR_FEATURE::applySettings(
_method.getData(),
_method.getDataSize(), settings);
326 _method.applySettings(settings);
337 total += color.CalcTotalTenthMilliAmpere(settings);
352 return T_COLOR_FEATURE::pixels(
_method.getData(),
_method.getDataSize());
358 return T_COLOR_FEATURE::pixels(
_method.getData(),
_method.getDataSize());
361 void _rotateLeft(uint16_t rotationCount, uint16_t first, uint16_t last)
364 uint8_t temp[rotationCount * T_COLOR_FEATURE::PixelSize];
367 uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, first);
369 T_COLOR_FEATURE::movePixelsInc(temp, pFront, rotationCount);
375 pFront = T_COLOR_FEATURE::getPixelAddress(pixels, last - (rotationCount - 1));
376 T_COLOR_FEATURE::movePixelsInc(pFront, temp, rotationCount);
381 void _shiftLeft(uint16_t shiftCount, uint16_t first, uint16_t last)
383 uint16_t front = first + shiftCount;
384 uint16_t count = last - front + 1;
387 uint8_t* pFirst = T_COLOR_FEATURE::getPixelAddress(pixels, first);
388 uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, front);
390 T_COLOR_FEATURE::movePixelsInc(pFirst, pFront, count);
395 void _rotateRight(uint16_t rotationCount, uint16_t first, uint16_t last)
398 uint8_t temp[rotationCount * T_COLOR_FEATURE::PixelSize];
401 uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, last - (rotationCount - 1));
403 T_COLOR_FEATURE::movePixelsDec(temp, pFront, rotationCount);
409 pFront = T_COLOR_FEATURE::getPixelAddress(pixels, first);
410 T_COLOR_FEATURE::movePixelsDec(pFront, temp, rotationCount);
415 void _shiftRight(uint16_t shiftCount, uint16_t first, uint16_t last)
417 uint16_t front = first + shiftCount;
418 uint16_t count = last - front + 1;
421 uint8_t* pFirst = T_COLOR_FEATURE::getPixelAddress(pixels, first);
422 uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, front);
424 T_COLOR_FEATURE::movePixelsDec(pFront, pFirst, count);
const uint16_t PixelIndex_OutOfBounds
Definition: LumitronixIFlexBus.h:33
const uint8_t NEO_DIRTY
Definition: LumitronixIFlexBus.h:32
NeoBusChannel
Definition: NeoBusChannel.h:12
Definition: LumitronixIFlexBus.h:47
void SetMethodSettings(const typename T_METHOD::SettingsObject &settings)
Definition: LumitronixIFlexBus.h:324
void _rotateRight(uint16_t rotationCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:395
void RotateRight(uint16_t rotationCount)
Definition: LumitronixIFlexBus.h:269
LumitronixIFlexBus(uint16_t countPixels, uint8_t pin)
Definition: LumitronixIFlexBus.h:52
void ResetDirty()
Definition: LumitronixIFlexBus.h:151
bool IsDirty() const
Definition: LumitronixIFlexBus.h:141
void Dirty()
Definition: LumitronixIFlexBus.h:146
uint8_t * Pixels()
Definition: LumitronixIFlexBus.h:156
void _shiftRight(uint16_t shiftCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:415
T_COLOR_FEATURE::ColorObject GetPixelColor(uint16_t indexPixel) const
Definition: LumitronixIFlexBus.h:185
void ShiftLeft(uint16_t shiftCount)
Definition: LumitronixIFlexBus.h:248
void SetPixelSettings(const typename T_COLOR_FEATURE::SettingsObject &settings)
Definition: LumitronixIFlexBus.h:318
LumitronixIFlexBus(uint16_t countPixels, uint8_t pinClock, uint8_t pinData, uint8_t pinLatch, uint8_t pinOutputEnable=NOT_A_PIN)
Definition: LumitronixIFlexBus.h:73
void ShiftRight(uint16_t shiftCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:297
T_METHOD _method
Definition: LumitronixIFlexBus.h:347
void _shiftLeft(uint16_t shiftCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:381
LumitronixIFlexBus(uint16_t countPixels, uint8_t pinClock, uint8_t pinData)
Definition: LumitronixIFlexBus.h:66
uint8_t * _pixels()
Definition: LumitronixIFlexBus.h:349
uint32_t CalcTotalMilliAmpere(const typename T_COLOR_FEATURE::ColorObject::SettingsObject &settings)
Definition: LumitronixIFlexBus.h:330
uint8_t _state
Definition: LumitronixIFlexBus.h:346
uint16_t PixelCount() const
Definition: LumitronixIFlexBus.h:171
void SwapPixelColor(uint16_t indexPixelOne, uint16_t indexPixelTwo)
Definition: LumitronixIFlexBus.h:309
bool CanShow() const
Definition: LumitronixIFlexBus.h:136
void ShiftRight(uint16_t shiftCount)
Definition: LumitronixIFlexBus.h:288
void RotateRight(uint16_t rotationCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:277
void Begin(int8_t sck, int8_t dat0, int8_t dat1, int8_t dat2, int8_t dat3, int8_t ss)
Definition: LumitronixIFlexBus.h:111
const uint16_t _countPixels
Definition: LumitronixIFlexBus.h:344
const uint8_t * _pixels() const
Definition: LumitronixIFlexBus.h:355
void SetPixelColor(uint16_t indexPixel, typename T_COLOR_FEATURE::ColorObject color)
Definition: LumitronixIFlexBus.h:176
size_t PixelsSize() const
Definition: LumitronixIFlexBus.h:161
void ClearTo(typename T_COLOR_FEATURE::ColorObject color, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:211
LumitronixIFlexBus(uint16_t countPixels)
Definition: LumitronixIFlexBus.h:80
void Show(bool maintainBufferConsistency=true)
Definition: LumitronixIFlexBus.h:124
virtual void Begin()
Definition: LumitronixIFlexBus.h:97
void Begin(int8_t sck, int8_t miso, int8_t mosi, int8_t ss)
Definition: LumitronixIFlexBus.h:104
void RotateLeft(uint16_t rotationCount)
Definition: LumitronixIFlexBus.h:229
void ClearTo(typename T_COLOR_FEATURE::ColorObject color)
Definition: LumitronixIFlexBus.h:199
void Begin(int8_t sck, int8_t dat0, int8_t dat1, int8_t dat2, int8_t dat3, int8_t dat4, int8_t dat5, int8_t dat6, int8_t dat7, int8_t ss)
Definition: LumitronixIFlexBus.h:118
void RotateLeft(uint16_t rotationCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:237
void ShiftLeft(uint16_t shiftCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:257
LumitronixIFlexBus(uint16_t countPixels, uint8_t pin, NeoBusChannel channel)
Definition: LumitronixIFlexBus.h:59
~LumitronixIFlexBus()
Definition: LumitronixIFlexBus.h:87
void _rotateLeft(uint16_t rotationCount, uint16_t first, uint16_t last)
Definition: LumitronixIFlexBus.h:361
size_t PixelSize() const
Definition: LumitronixIFlexBus.h:166
Definition: NeoBufferContext.h:32