Created NeoBitmapFile object API (markdown)

Michael Miller
2016-04-23 23:08:05 -07:00
parent 6dd685971e
commit bd451a4cf8

@@ -0,0 +1,68 @@
NeoBitmapFile represents a image container object that retrieves pixels from a bmp file. The primary use of this class is to contain reference an image from a file and have it rendered to a NeoPixelBus.
## Constructors
### NeoBitmapFile\<FEATURE\>\<FILE\>()
This will define the object with the given Method and File types.
Valid classes for FEATURE are the same as NeoPixelBus and you find them [here](https://github.com/Makuna/NeoPixelBus/wiki/NeoPixelBus-object#neo-features).
Valid classes for FILE are any class that exposes the same API as the `File` class. It does not require that it be the `SDFile`.
```
NeoBitmapFile<NeoGrbFeature, File> image;
```
## Methods
### bool Begin(FILED file)
This will initialize the NeoBitmapFile to use the given file. It will check the contents of the file for a valid image and configure itself to read data from the file.
It will return false if the file is not a compatible file format. Currently it requires the file to be BMP, 24 or 32 bit, with no compression.
### uint16_t PixelSize() const
This will return the number of bytes a single pixel takes.
### uint16_t PixelCount() const
This will return the number of pixels in the file.
### uint16_t Width() const
This will return the width in pixels of the file.
### uint16_t Height() const
This will return the height in pixels of the file.
### ColorObject GetPixelColor(int16_t x, int16_t y)
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.
### void Blt(NeoBufferContext destBuffer, uint16_t indexPixel, int16_t xSrc, int16_t ySrc, int16_t wSrc)
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
xSrc - the horizontal location in the bitmap to render from
ySrc - the vertical location in the bitmap to render from
wSrc - the number of pixels to render
### 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)
## Callbacks
### uint16_t LayoutMapCallback(int16_t x, int16_t y)
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.