X-Git-Url: http://git.rot13.org/?p=Arduino;a=blobdiff_plain;f=Hub08_LedMatrix%2FLEDMatrix.cpp;h=8cae64e11d6336c2438e15a53d2f18d003eb8120;hp=133cfb2b05b4fbeec867f3498856204263a142f0;hb=6bc2030a3b0a0a4c9dc7203a325fdfacdae55be6;hpb=4f5a8a5db6a57e8f6b5a3787678f292c81600ae4 diff --git a/Hub08_LedMatrix/LEDMatrix.cpp b/Hub08_LedMatrix/LEDMatrix.cpp index 133cfb2..8cae64e 100644 --- a/Hub08_LedMatrix/LEDMatrix.cpp +++ b/Hub08_LedMatrix/LEDMatrix.cpp @@ -47,6 +47,7 @@ LEDMatrix::LEDMatrix(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t oe, uin #if USE_SPI SPI.begin(); #endif + buffer = 0; } void LEDMatrix::begin(uint8_t *displaybuf, uint16_t width, uint16_t height) @@ -135,6 +136,9 @@ void LEDMatrix::scan() } uint8_t *head = displaybuf + row * (width / 8); + + if ( buffer ) head += (width/8) * height; + for (uint8_t line = 0; line < (height / 16); line++) { uint8_t *ptr = head; head += width * 2; // width * 16 / 8 @@ -173,6 +177,18 @@ void LEDMatrix::scan() row = (row + 1) & 0x0F; } +uint8_t *LEDMatrix::offscreen_buffer() +{ + uint8_t *buff = displaybuf; + if ( ! buffer ) buff += (width/8) * height; + return buff; +} + +void LEDMatrix::swap() +{ + buffer = ! buffer; +} + void LEDMatrix::on() { state = 1;