39 static uint8_t s_invertByte = 0x00000000;
55 fill_Data ^= s_invertByte;
107 uint8_t text_index = 0;
108 uint8_t page_offset = 0;
124 if (page_offset == s_fixedFont.
pages)
147 uint16_t offset = (c * s_fixedFont.
pages + page_offset) * s_fixedFont.
width;
148 for( i=s_fixedFont.
width; i>0; i--)
151 if ( style == STYLE_NORMAL )
153 data = pgm_read_byte(&s_fixedFont.
data[offset]);
155 else if ( style == STYLE_BOLD )
157 uint8_t temp = pgm_read_byte(&s_fixedFont.
data[offset]);
163 uint8_t temp = pgm_read_byte(&s_fixedFont.
data[offset + 1]);
164 data = (temp & 0xF0) | ldata;
165 ldata = (temp & 0x0F);
170 x += s_fixedFont.
width;
180 uint8_t text_index = 0;
181 uint8_t page_offset = 0;
197 if (page_offset == (s_fixedFont.
pages << 1))
220 uint16_t offset = (c * s_fixedFont.
pages + (page_offset >> 1)) * s_fixedFont.
width;
221 for( i=s_fixedFont.
width; i>0; i--)
224 if ( style == STYLE_NORMAL )
226 data = pgm_read_byte(&s_fixedFont.
data[offset]);
228 else if ( style == STYLE_BOLD )
230 uint8_t temp = pgm_read_byte(&s_fixedFont.
data[offset]);
236 uint8_t temp = pgm_read_byte(&s_fixedFont.
data[offset + 1]);
237 data = (temp & 0xF0) | ldata;
238 ldata = (temp & 0x0F);
240 if (page_offset & 1) data >>= 4;
241 data = ((data & 0x01) ? 0x03: 0x00) |
242 ((data & 0x02) ? 0x0C: 0x00) |
243 ((data & 0x04) ? 0x30: 0x00) |
244 ((data & 0x08) ? 0xC0: 0x00);
249 x += (s_fixedFont.
width << 1);
264 uint8_t c = ch[j] - 32;
278 if ( style == STYLE_NORMAL )
280 data = pgm_read_byte(&s_font6x8[c*6+i]);
282 else if ( style == STYLE_BOLD )
284 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i]);
290 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i + 1]);
291 data = (temp & 0xF0) | ldata;
292 ldata = (temp & 0x0F);
306 uint8_t text_index = 0;
338 uint8_t c = ch[j] - 32;
347 if ( style == STYLE_NORMAL )
349 data = pgm_read_byte(&s_font6x8[c*6+i]);
351 else if ( style == STYLE_BOLD )
353 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i]);
359 uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i + 1]);
360 data = (temp & 0xF0) | ldata;
361 ldata = (temp & 0x0F);
364 data = ((data & 0x01) ? 0x03: 0x00) |
365 ((data & 0x02) ? 0x0C: 0x00) |
366 ((data & 0x04) ? 0x30: 0x00) |
367 ((data & 0x08) ? 0xC0: 0x00);
385 uint8_t text_end_pos = len * 6 + left;
386 if (text_end_pos <= right)
395 s_fixedFont.
width = pgm_read_byte(&progmemFont[1]);
396 s_fixedFont.
pages = (pgm_read_byte(&progmemFont[2]) + 7) >> 3;
397 s_fixedFont.
ascii_offset = pgm_read_byte(&progmemFont[3]);
398 s_fixedFont.
data = progmemFont + 4;
403 s_font6x8 = progmemFont + 4;
426 for (uint8_t x = x1; x <= x2; x++)
435 uint8_t topPage = y1 >> 3;
436 uint8_t bottomPage = y2 >> 3;
437 uint8_t height = y2-y1;
440 if (topPage == bottomPage)
448 for ( y = (topPage + 1); y <= (bottomPage - 1); y++)
471 for(j=(h >> 3); j>0; j--)
489 for(j=(h >> 3); j>0; j--)
507 for(j=(h >> 3); j>0; j--)
534 uint8_t offsety = sprite->
y & 0x7;
539 for (uint8_t i=0; i < sprite->
w; i++)
549 for (uint8_t i=0; i < sprite->
w; i++)
555 sprite->
lx = sprite->
x;
556 sprite->
ly = sprite->
y;
562 uint8_t posy = sprite->
y >> 3;
563 uint8_t offsety = sprite->
y & 0x7;
566 for (uint8_t i=sprite->
w; i > 0; i--)
575 for (uint8_t i=sprite->
w; i > 0; i--)
586 uint8_t y1 = sprite->
ly >> 3;
587 uint8_t y2 = (sprite->
ly + 7) >> 3;
588 if (sprite->
ly < sprite->
y)
589 y2 =
min(y2, (uint8_t)((sprite->
y >> 3) - 1));
590 else if (sprite->
y + 8 > sprite->
ly)
591 y1 =
max(y1, (sprite->
ly + 7) >> 3);
592 for(uint8_t y = y1; y <= y2; y++)
596 for(uint8_t x = sprite->
w; x > 0; x--)
602 if (sprite->
lx != sprite->
x)
604 uint8_t x1 = sprite->
lx;
605 uint8_t x2 = sprite->
lx + sprite->
w - 1;
606 if (sprite->
x < sprite->
lx)
607 x1 =
max(x1, sprite->
x + sprite->
w);
609 x2 =
min((uint8_t)(sprite->
x - 1), x2);
610 for(uint8_t y = sprite->
ly >> 3; y <= (sprite->
ly + 7) >> 3; y++)
614 for(uint8_t x = x2 - x1 + 1; x > 0; x--)
625 return (
SPRITE){x,y,w,x,y,data,NULL};
void ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
void ssd1306_negativeMode()
void ssd1306_setContrast(uint8_t contrast)
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_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
void ssd1306_positiveMode()
const PROGMEM uint8_t ssd1306xled_font6x8[]
uint8_t ascii_offset
ascii offset
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
void ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
void ssd1306_setFixedFont(const uint8_t *progmemFont)
uint8_t width
width in pixels
uint8_t ssd1306_printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
uint8_t ssd1306_charF6x8_eol(uint8_t left, uint8_t y, const char ch[], EFontStyle style, uint8_t right)
void ssd1306_invertMode()
uint8_t x
draw position X on the screen
void ssd1306_setFont6x8(const uint8_t *progmemFont)
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_commandStart)()
void ssd1306_normalMode()
uint8_t ssd1306_charF12x16(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
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 ssd1306_printFixed(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
const uint8_t * data
font chars bits
void(* ssd1306_sendPixels)(uint8_t data)
uint8_t pages
height in pages
uint8_t ssd1306_charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style)
uint8_t ly
last draw position Y on the screen