Const and Warning Correctness

const method correctness
fix some warnings
Missing Render method added back
Fix examples to use new NeoShaderBase
This commit is contained in:
Michael Miller
2018-08-16 12:35:49 -07:00
parent 940c4f37f3
commit e4b47d435e
6 changed files with 41 additions and 22 deletions

View File

@ -36,12 +36,12 @@ const RgbColor White(255);
const RgbColor Black(0); const RgbColor Black(0);
// define a custom shader object that provides brightness support // define a custom shader object that provides brightness support
// based upon the NeoBitsBase // based upon the NeoShaderBase
template<typename T_COLOR_FEATURE> class BrightnessShader : public NeoBitsBase template<typename T_COLOR_FEATURE> class BrightnessShader : public NeoShaderBase
{ {
public: public:
BrightnessShader(): BrightnessShader():
NeoBitsBase(), NeoShaderBase(),
_brightness(255) // default to full bright _brightness(255) // default to full bright
{} {}

View File

@ -34,12 +34,12 @@ const RgbColor White(255);
const RgbColor Black(0); const RgbColor Black(0);
// define a custom shader object that provides brightness support // define a custom shader object that provides brightness support
// based upon the NeoBitsBase // based upon the NeoShaderBase
class BrightnessShader : public NeoBitsBase class BrightnessShader : public NeoShaderBase
{ {
public: public:
BrightnessShader(): BrightnessShader():
NeoBitsBase(), NeoShaderBase(),
_brightness(255) // default to full bright _brightness(255) // default to full bright
{} {}

View File

@ -75,12 +75,11 @@ public:
_width(0), _width(0),
_height(0), _height(0),
_sizeRow(0), _sizeRow(0),
_bottomToTop(true), _bytesPerPixel(0),
_bytesPerPixel(0) _bottomToTop(true)
{ {
} }
~NeoBitmapFile() ~NeoBitmapFile()
{ {
_file.close(); _file.close();
@ -205,7 +204,7 @@ public:
{ {
for (int16_t x = 0; x < wSrc && indexPixel < destPixelCount; x++, indexPixel++) for (int16_t x = 0; x < wSrc && indexPixel < destPixelCount; x++, indexPixel++)
{ {
if (xSrc < _width) if ((uint16_t)xSrc < _width)
{ {
if (readPixel(&color)) if (readPixel(&color))
{ {
@ -239,7 +238,7 @@ public:
{ {
for (int16_t x = 0; x < wSrc; x++) for (int16_t x = 0; x < wSrc; x++)
{ {
if (xFile < _width) if ((uint16_t)xFile < _width)
{ {
if (readPixel(&color)) if (readPixel(&color))
{ {
@ -268,26 +267,26 @@ private:
uint8_t _bytesPerPixel; uint8_t _bytesPerPixel;
bool _bottomToTop; bool _bottomToTop;
int16_t constrainX(int16_t x) int16_t constrainX(int16_t x) const
{ {
if (x < 0) if (x < 0)
{ {
x = 0; x = 0;
} }
else if (x >= _width) else if ((uint16_t)x >= _width)
{ {
x = _width - 1; x = _width - 1;
} }
return x; return x;
}; };
int16_t constrainY(int16_t y) int16_t constrainY(int16_t y) const
{ {
if (y < 0) if (y < 0)
{ {
y = 0; y = 0;
} }
else if (y >= _height) else if ((uint16_t)y >= _height)
{ {
y = _height - 1; y = _height - 1;
} }

View File

@ -133,19 +133,38 @@ public:
Blt(destBuffer, xDest, yDest, 0, 0, Width(), Height(), layoutMap); Blt(destBuffer, xDest, yDest, 0, 0, Width(), Height(), layoutMap);
} }
template <typename T_SHADER> void Render(NeoBufferContext<typename T_BUFFER_METHOD::ColorFeature> destBuffer, T_SHADER& shader)
{
uint16_t countPixels = destBuffer.PixelCount();
if (countPixels > _method.PixelCount())
{
countPixels = _method.PixelCount();
}
for (uint16_t indexPixel = 0; indexPixel < countPixels; indexPixel++)
{
typename T_BUFFER_METHOD::ColorObject color;
shader.Apply(indexPixel, (uint8_t*)(&color), _method.Pixels() + (indexPixel * _method.PixelSize()));
T_BUFFER_METHOD::ColorFeature::applyPixelColor(destBuffer.Pixels, indexPixel, color);
}
}
private: private:
T_BUFFER_METHOD _method; T_BUFFER_METHOD _method;
uint16_t pixelIndex( uint16_t pixelIndex(
int16_t x, int16_t x,
int16_t y) int16_t y) const
{ {
uint16_t result = PixelIndex_OutOfBounds; uint16_t result = PixelIndex_OutOfBounds;
if (x >= 0 && if (x >= 0 &&
x < Width() && (uint16_t)x < Width() &&
y >= 0 && y >= 0 &&
y < Height()) (uint16_t)y < Height())
{ {
result = x + y * Width(); result = x + y * Width();
} }

View File

@ -123,6 +123,7 @@ public:
if (IsDirty() || shader.IsDirty()) if (IsDirty() || shader.IsDirty())
{ {
uint16_t countPixels = destBuffer.PixelCount(); uint16_t countPixels = destBuffer.PixelCount();
if (countPixels > _countPixels) if (countPixels > _countPixels)
{ {
countPixels = _countPixels; countPixels = _countPixels;

View File

@ -146,15 +146,15 @@ private:
uint16_t pixelIndex(uint16_t indexSprite, uint16_t pixelIndex(uint16_t indexSprite,
int16_t x, int16_t x,
int16_t y) int16_t y) const
{ {
uint16_t result = PixelIndex_OutOfBounds; uint16_t result = PixelIndex_OutOfBounds;
if (indexSprite < _spriteCount && if (indexSprite < _spriteCount &&
x >= 0 && x >= 0 &&
x < SpriteWidth() && (uint16_t)x < SpriteWidth() &&
y >= 0 && y >= 0 &&
y < SpriteHeight()) (uint16_t)y < SpriteHeight())
{ {
result = x + y * SpriteWidth() + indexSprite * _spriteHeight * SpriteWidth(); result = x + y * SpriteWidth() + indexSprite * _spriteHeight * SpriteWidth();
} }