-
-
Notifications
You must be signed in to change notification settings - Fork 257
NeoBuffer object API
NeoBuffer represents an image container object that stores the data in a NeoPixel native format for faster rendering. The primary use of this class is to contain an image and have it rendered to a NeoPixelBus.
This will define the object with the given Method, and construct it to the width and height.
Valid Method objects are the NeoBufferMethod and NeoBufferProgmemMethod.
The optional pixels will either be copied into the Ram buffer (for NeoBufferMethod) or become the referenced data (NeoBufferProgmemMethod).
NeoPixelBuffer<NeoPixelBufferProgmemMethod<NeoGrbFeature>> image(myImageWidth, myImageHeight, myImage);
This will return the number of pixels in the buffer.
This will return the width in pixels of the buffer.
This will return the height in pixels of the buffer.
This will set the color to the given pixel.
- x- the horizontal pixel position.
- y - the vertical pixel position.
- color - a color object to use, RgbColor, HslColor, and HsbColor will all work and if the NeoPixelBus object was created with the NeoRgbwFeature the RgbwColor will also work.
This will return the color of the given pixel.
- x - the horizontal pixel position.
- y - the vertical pixel position.
- <return>, a color object, RgbColor or RgbwColor.
This will clear all pixels to the given color.
- color - a color object to use, RgbColor, HslColor, and HsbColor will all work and if the NeoPixelBus object was created with the NeoRgbwFeature the RgbwColor will also work.
This will render this image to the destBuffer at indexPixel. This is a linear rendering, not a 2D image rendering.
- destBuffer - Another NeoBuffer or NeoPixelBus.
- indexPixel - the location to start the render at.
void Blt(NeoBufferContext destBuffer, int16_t xDest, int16_t yDest, int16_t xSrc, int16_t ySrc, int16_t wSrc, int16_t hSrc, LayoutMapCallback layoutMap)
This will render part of this image to the destBuffer at given location. This is a 2d image rendering.
- destBuffer - Another NeoBuffer or NeoPixelBus.
- xDest - the upper left location in the destination to render to.
- yDest- the upper left location in the destination to render to.
- xSrc - the upper left location in the source to render from.
- ySrc - the upper left location in the source to render from.
- wSrc - the width to render.
- hSrc - the height to render.
- layoutMap - a layoutMap callback that implements the destinations mapping routine (see below).
This will render all of this image to the destBuffer at a given location. This is a 2d image rendering.
- destBuffer - Another NeoBuffer or NeoPixelBus.
- xDest - the upper left location in the destination to render to.
- yDest - the upper left location in the destination to render to.
- layoutMap - a layoutMap callback that implements the destinations mapping routine (see below).
As the consumer of certain methods, you will need to implement this and pass it into those methods. You are expected to translate the x,y location of the destination to a linear index value. If you have implemented NeoTopology
, NeoTiles
, or NeoMosaic
; you can just call the MapProbe()
method on them and return what they provide.
NeoTopology<RowMajorLayout> topo(16,16); // 16x16 matrix panel
uint16_t MyLayoutMap(int16_t x, int16_t y)
{
return topo.MapProbe(x, y);
}
If you implement your own, make sure to handle out of range values beyond your edges including negative values and return PixelIndex_OutOfBounds
for these cases.