37 uint16_t spriteHeight,
39 _method(width, height, pixels),
40 _spriteHeight(spriteHeight),
41 _spriteCount(height / spriteHeight)
52 return _method.Width();
68 typename T_BUFFER_METHOD::ColorObject color)
70 _method.SetPixelColor(pixelIndex(indexSprite, x, y), color);
73 typename T_BUFFER_METHOD::ColorObject
GetPixelColor(uint16_t indexSprite,
77 return _method.GetPixelColor(pixelIndex(indexSprite, x, y));
80 void ClearTo(
typename T_BUFFER_METHOD::ColorObject color)
82 _method.ClearTo(color);
89 uint16_t destPixelCount = destBuffer.
PixelCount();
91 if (indexPixel >= destPixelCount)
97 if (indexSprite >= _spriteCount)
102 uint16_t copyCount = destPixelCount - indexPixel;
109 uint8_t* pDest = T_BUFFER_METHOD::ColorFeature::getPixelAddress(destBuffer.
Pixels, indexPixel);
110 const uint8_t* pSrc = T_BUFFER_METHOD::ColorFeature::getPixelAddress(_method.Pixels(), pixelIndex(indexSprite, 0, 0));
111 _method.CopyPixels(pDest, pSrc, copyCount);
117 uint16_t indexSprite,
120 if (indexSprite >= _spriteCount)
124 uint16_t destPixelCount = destBuffer.
PixelCount();
128 for (int16_t srcX = 0; srcX <
SpriteWidth(); srcX++)
130 uint16_t indexDest = layoutMap(srcX + x, srcY + y);
132 if (indexDest < destPixelCount)
134 const uint8_t* pSrc = T_BUFFER_METHOD::ColorFeature::getPixelAddress(_method.Pixels(), pixelIndex(indexSprite, srcX, srcY));
135 uint8_t* pDest = T_BUFFER_METHOD::ColorFeature::getPixelAddress(destBuffer.
Pixels, indexDest);
137 _method.CopyPixels(pDest, pSrc, 1);
145 T_BUFFER_METHOD _method;
147 const uint16_t _spriteHeight;
148 const uint16_t _spriteCount;
150 uint16_t pixelIndex(uint16_t indexSprite,
156 if (indexSprite < _spriteCount &&
std::function< uint16_t(int16_t x, int16_t y)> LayoutMapCallback
Definition: LayoutMapCallback.h:39
const uint16_t PixelIndex_OutOfBounds
Definition: LumitronixIFlexBus.h:33
#define PGM_VOID_P
Definition: NeoUtil.h:42
Definition: NeoVerticalSpriteSheet.h:33
void Blt(NeoBufferContext< typename T_BUFFER_METHOD::ColorFeature > destBuffer, uint16_t indexPixel, uint16_t indexSprite)
Definition: NeoVerticalSpriteSheet.h:85
uint16_t SpriteCount() const
Definition: NeoVerticalSpriteSheet.h:60
NeoVerticalSpriteSheet(uint16_t width, uint16_t height, uint16_t spriteHeight, PGM_VOID_P pixels)
Definition: NeoVerticalSpriteSheet.h:35
uint16_t SpriteHeight() const
Definition: NeoVerticalSpriteSheet.h:55
uint16_t SpriteWidth() const
Definition: NeoVerticalSpriteSheet.h:50
void ClearTo(typename T_BUFFER_METHOD::ColorObject color)
Definition: NeoVerticalSpriteSheet.h:80
void Blt(NeoBufferContext< typename T_BUFFER_METHOD::ColorFeature > destBuffer, int16_t x, int16_t y, uint16_t indexSprite, LayoutMapCallback layoutMap)
Definition: NeoVerticalSpriteSheet.h:114
void SetPixelColor(uint16_t indexSprite, int16_t x, int16_t y, typename T_BUFFER_METHOD::ColorObject color)
Definition: NeoVerticalSpriteSheet.h:65
T_BUFFER_METHOD::ColorObject GetPixelColor(uint16_t indexSprite, int16_t x, int16_t y) const
Definition: NeoVerticalSpriteSheet.h:73
Definition: NeoBufferContext.h:32
uint8_t * Pixels
Definition: NeoBufferContext.h:43
uint16_t PixelCount() const
Definition: NeoBufferContext.h:40