25 #include "spi/ssd1306_spi.h" 31 static uint8_t s_invertByte = 0x00000000;
32 const uint8_t *s_font6x8 = ssd1306xled_font6x8;
44 void ssd1306_setRamBlock(uint8_t x, uint8_t y, uint8_t w)
95 fill_Data ^= s_invertByte;
98 for(uint8_t m=0; m<(s_displayHeight >> 3); m++)
112 for(uint8_t m=0; m<(s_displayHeight >> 3); m++)
142 uint8_t c = ch[j] - 32;
152 if ( style == STYLE_NORMAL )
154 data = pgm_read_byte(&s_font6x8[c*6+i]);
156 else if ( style == STYLE_BOLD )
158 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i]);
164 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i + 1]);
165 data = (temp & 0xF0) | ldata;
166 ldata = (temp & 0x0F);
178 s_font6x8 = progmemFont;
201 ssd1306_setRamBlock(x1, y1 >> 3, x2 - x1 + 1);
203 for (uint8_t x = x1; x <= x2; x++)
212 ssd1306_setRamBlock(x1, y1 >> 3, 1);
215 for ( uint8_t y = ((y1 >> 3) + 1); y <= ((y2 >> 3) - 1); y++)
234 ssd1306_setRamBlock(x, y, w);
236 for(j=0; j<(h >> 3); j++)
255 ssd1306_setRamBlock(x, y, w);
257 for(j=0; j<(h >> 3); j++)
277 ssd1306_setRamBlock(x, y, w);
279 for(j=0; j<(h >> 3); j++)
311 uint8_t posy = sprite->
y >> 3;
312 uint8_t offsety = sprite->
y & 0x7;
317 for (uint8_t i=0; i < sprite->
w; i++)
327 for (uint8_t i=0; i < sprite->
w; i++)
333 sprite->
lx = sprite->
x;
334 sprite->
ly = sprite->
y;
340 uint8_t posy = sprite->
y >> 3;
341 uint8_t offsety = sprite->
y & 0x7;
344 for (uint8_t i=0; i < sprite->
w; i++)
353 for (uint8_t i=0; i < sprite->
w; i++)
364 uint8_t y1 = sprite->
ly >> 3;
365 uint8_t y2 = (sprite->
ly + 7) >> 3;
366 if (sprite->
ly < sprite->
y)
367 y2 = min(y2, (uint8_t)((sprite->
y >> 3) - 1));
369 y1 = max(y1, (sprite->
ly + 7) >> 3);
370 for(uint8_t y = y1; y <= y2; y++)
374 for(uint8_t x = sprite->
lx; x < sprite->lx + sprite->
w; x++)
380 if (sprite->
lx != sprite->
x)
382 uint8_t x1 = sprite->
lx;
383 uint8_t x2 = sprite->
lx + sprite->
w - 1;
384 if (sprite->
x < sprite->
lx)
385 x1 = max(x1, sprite->
x + sprite->
w);
387 x2 = min((uint8_t)(sprite->
x - 1), x2);
388 for(uint8_t y = sprite->
ly >> 3; y <= (sprite->
ly + 7) >> 3; y++)
392 for(uint8_t x = x1; x <= x2; x++)
403 return {x,y,w,x,y,data,
nullptr};
void ssd1306_charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style)
void ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
void ssd1306_negativeMode()
const uint8_t * data
Pointer to PROGMEM data, representing sprite image.
void ssd1306_displayOff()
uint8_t ssd1306_displayHeight()
void(* ssd1306_endTransmission)()
void ssd1306_replaceSprite(SPRITE *sprite, const uint8_t *data)
void ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
void(* ssd1306_sendByte)(uint8_t data)
void ssd1306_setFont6x8(const uint8_t *progmemFont)
void ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
void ssd1306_sendCommand(uint8_t command)
void ssd1306_positiveMode()
void ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels)
void(* ssd1306_dataStart)()
SPRITE ssd1306_createSprite(uint8_t x, uint8_t y, uint8_t w, const uint8_t *data)
void ssd1306_drawSpriteEx(uint8_t x, uint8_t y, uint8_t w, const uint8_t *sprite)
void ssd1306_fillScreen(uint8_t fill_Data)
void ssd1306_drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
void ssd1306_clearScreen()
uint8_t y
draw position Y on the screen
void ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
void ssd1306_invertMode()
uint8_t x
draw position X on the screen
uint8_t ssd1306_displayWidth()
void ssd1306_drawSprite(SPRITE *sprite)
void ssd1306_eraseTrace(SPRITE *sprite)
void ssd1306_drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
void ssd1306_eraseSprite(SPRITE *sprite)
void ssd1306_sendData(uint8_t data)
void ssd1306_setPos(uint8_t x, uint8_t y)
void ssd1306_normalMode()
void ssd1306_putPixel(uint8_t x, uint8_t y)
uint8_t lx
last draw position X on the screen
void(* ssd1306_commandStart)()
uint8_t ly
last draw position Y on the screen