37 template<
typename T_COLOR_OBJECT>
class NeoDib
41 _countPixels(countPixels),
44 _pixels = (T_COLOR_OBJECT*)malloc(
PixelsSize());
50 free((uint8_t*)_pixels);
63 for (uint16_t pixel = 0; pixel < copyCount; pixel++)
65 _pixels[pixel] = other.
Pixels()[pixel];
89 return sizeof(T_COLOR_OBJECT);
98 _pixels[indexPixel] = color;
104 uint16_t indexPixel)
const
110 return _pixels[indexPixel];
115 for (uint16_t pixel = 0; pixel <
PixelCount(); pixel++)
117 _pixels[pixel] = color;
122 template <
typename T_COLOR_FEATURE,
typename T_SHADER>
125 if (
IsDirty() || shader.IsDirty())
127 uint16_t countPixels = destBuffer.
PixelCount();
129 if (countPixels > _countPixels)
131 countPixels = _countPixels;
134 for (uint16_t indexPixel = 0; indexPixel < countPixels; indexPixel++)
136 T_COLOR_OBJECT color = shader.Apply(indexPixel, _pixels[indexPixel]);
137 T_COLOR_FEATURE::applyPixelColor(destBuffer.
Pixels, destIndexPixel + indexPixel, color);
161 const uint16_t _countPixels;
162 T_COLOR_OBJECT* _pixels;
const uint8_t NEO_DIRTY
Definition: LumitronixIFlexBus.h:32
void ResetDirty()
Definition: NeoDib.h:155
size_t PixelSize() const
Definition: NeoDib.h:87
T_COLOR_OBJECT * Pixels() const
Definition: NeoDib.h:72
void ClearTo(T_COLOR_OBJECT color)
Definition: NeoDib.h:113
T_COLOR_OBJECT GetPixelColor(uint16_t indexPixel) const
Definition: NeoDib.h:103
size_t PixelsSize() const
Definition: NeoDib.h:82
void Render(NeoBufferContext< T_COLOR_FEATURE > destBuffer, T_SHADER &shader, uint16_t destIndexPixel=0)
Definition: NeoDib.h:123
NeoDib(uint16_t countPixels)
Definition: NeoDib.h:40
bool IsDirty() const
Definition: NeoDib.h:145
void Dirty()
Definition: NeoDib.h:150
void SetPixelColor(uint16_t indexPixel, T_COLOR_OBJECT color)
Definition: NeoDib.h:92
uint16_t PixelCount() const
Definition: NeoDib.h:77
~NeoDib()
Definition: NeoDib.h:48
NeoDib & operator=(const NeoDib &other)
Definition: NeoDib.h:53
Definition: NeoBufferContext.h:32
uint8_t * Pixels
Definition: NeoBufferContext.h:43
uint16_t PixelCount() const
Definition: NeoBufferContext.h:40