Select Git revision
-
Tóth Miklós Tibor authoredTóth Miklós Tibor authored
spiframe.cpp 1.42 KiB
#include "spiframe.h"
bool SpiFrame::LedCoordToPixel(const MxFrame &mxframe, int bitpos,
int colorbit, enum Color color, int column)
{
int y = 2*bitpos;
int x = column;
if (column >= 32)
{
x = 63 - column;
y = bitpos + 1;
}
if (color == RED)
{
return mxframe.pixels[x][y].red() & (1 << colorbit);
}
else if (color == GREEN)
{
return mxframe.pixels[x][y].green() & (1 << colorbit);
}
else if (color == BLUE)
{
return mxframe.pixels[x][y].blue() & (1 << colorbit);
}
return false;
}
SpiFrame::SpiFrame()
{
}
SpiFrame::SpiFrame(const MxFrame& mxframe)
{
this->length = mxframe.length;
for (int i = 0; i < 64*24; i++) {
data[i] = 0;
}
for (int column = 0; column < 64; column++) {
for (int bitpos = 0; bitpos < 13; bitpos++) {
for (int colorbit = 0; colorbit < 8; colorbit++) {
data[column * 24 + colorbit] |=
(LedCoordToPixel(mxframe, bitpos, colorbit, RED, column) ? 1 : 0) << bitpos;
data[column * 24 + colorbit + 8] |=
(LedCoordToPixel(mxframe, bitpos, colorbit, GREEN, column) ? 1 : 0) << bitpos;
data[column * 24 + colorbit + 16] |=
(LedCoordToPixel(mxframe, bitpos, colorbit, BLUE, column) ? 1 : 0) << bitpos;
}
}
}
}