Ring Shift and Rotate (#220)

This commit is contained in:
Michael Miller
2018-08-16 11:18:20 -07:00
committed by GitHub
parent 9d4138bf11
commit 940c4f37f3
2 changed files with 29 additions and 0 deletions

View File

@@ -150,6 +150,8 @@ Map KEYWORD2
MapProbe KEYWORD2 MapProbe KEYWORD2
getWidth KEYWORD2 getWidth KEYWORD2
getHeight KEYWORD2 getHeight KEYWORD2
RingPixelShift KEYWORD2
RingPixelRotate KEYWORD2
getCountOfRings KEYWORD2 getCountOfRings KEYWORD2
getPixelCountAtRing KEYWORD2 getPixelCountAtRing KEYWORD2
getPixelCount KEYWORD2 getPixelCount KEYWORD2

View File

@@ -56,6 +56,33 @@ public:
return _map(ring, pixel); return _map(ring, pixel);
} }
uint16_t RingPixelShift(uint8_t ring, uint16_t pixel, int16_t shift)
{
int32_t ringPixel = pixel;
ringPixel += shift;
if (ringPixel < 0)
{
ringPixel = 0;
}
else
{
uint16_t count = getPixelCountAtRing(ring);
if (ringPixel >= count)
{
ringPixel = count - 1;
}
}
return ringPixel;
}
uint16_t RingPixelRotate(uint8_t ring, uint16_t pixel, int16_t rotate)
{
int32_t ringPixel = pixel;
ringPixel += rotate;
return ringPixel % getPixelCountAtRing(ring);
}
uint8_t getCountOfRings() const uint8_t getCountOfRings() const
{ {
return _ringCount() - 1; // minus one as the Rings includes the extra value return _ringCount() - 1; // minus one as the Rings includes the extra value