33 static uint8_t s_invertByte = 0x00000000;
34 const uint8_t *s_font6x8 = ssd1306xled_font6x8;
48 fill_Data ^= s_invertByte;
96 uint8_t c = ch[j] - 32;
106 if ( style == STYLE_NORMAL )
108 data = pgm_read_byte(&s_font6x8[c*6+i]);
110 else if ( style == STYLE_BOLD )
112 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i]);
118 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i + 1]);
119 data = (temp & 0xF0) | ldata;
120 ldata = (temp & 0x0F);
138 uint8_t text_end_pos = len * 6 + left;
139 if (text_end_pos <= right)
148 s_font6x8 = progmemFont;
171 for (uint8_t x = x1; x <= x2; x++)
184 for ( y = ((y1 >> 3) + 1); y <= ((y2 >> 3) - 1); y++)
207 for(j=0; j<(h >> 3); j++)
223 for(j=0; j<(h >> 3); j++)
240 for(j=0; j<(h >> 3); j++)
267 uint8_t posy = sprite->
y >> 3;
268 uint8_t offsety = sprite->
y & 0x7;
273 for (uint8_t i=0; i < sprite->
w; i++)
283 for (uint8_t i=0; i < sprite->
w; i++)
289 sprite->
lx = sprite->
x;
290 sprite->
ly = sprite->
y;
296 uint8_t posy = sprite->
y >> 3;
297 uint8_t offsety = sprite->
y & 0x7;
300 for (uint8_t i=0; i < sprite->
w; i++)
309 for (uint8_t i=0; i < sprite->
w; i++)
320 uint8_t y1 = sprite->
ly >> 3;
321 uint8_t y2 = (sprite->
ly + 7) >> 3;
322 if (sprite->
ly < sprite->
y)
323 y2 = min(y2, (uint8_t)((sprite->
y >> 3) - 1));
325 y1 = max(y1, (sprite->
ly + 7) >> 3);
326 for(uint8_t y = y1; y <= y2; y++)
330 for(uint8_t x = sprite->
lx; x < sprite->lx + sprite->
w; x++)
336 if (sprite->
lx != sprite->
x)
338 uint8_t x1 = sprite->
lx;
339 uint8_t x2 = sprite->
lx + sprite->
w - 1;
340 if (sprite->
x < sprite->
lx)
341 x1 = max(x1, sprite->
x + sprite->
w);
343 x2 = min((uint8_t)(sprite->
x - 1), x2);
344 for(uint8_t y = sprite->
ly >> 3; y <= (sprite->
ly + 7) >> 3; y++)
348 for(uint8_t x = x1; x <= x2; x++)
359 return {x,y,w,x,y,data,
nullptr};
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_sendByte)(uint8_t data)
void ssd1306_displayOff()
void(* ssd1306_dataStart)()
void(* ssd1306_endTransmission)()
uint8_t ssd1306_displayHeight()
void ssd1306_replaceSprite(SPRITE *sprite, const uint8_t *data)
void ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
void(* ssd1306_nextRamPage)()
void ssd1306_setFont6x8(const uint8_t *progmemFont)
uint8_t ssd1306_charF6x8_eol(uint8_t left, uint8_t y, const char ch[], EFontStyle style, uint8_t right)
void ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
void ssd1306_positiveMode()
void ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels)
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_sendCommand(uint8_t command)
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
uint8_t ssd1306_charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style)
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_normalMode()
void(* ssd1306_setRamBlock)(uint8_t x, uint8_t y, uint8_t w)
void ssd1306_putPixel(uint8_t x, uint8_t y)
uint8_t lx
last draw position X on the screen
uint8_t ly
last draw position Y on the screen