// Библиотека содержит набор функций для вывода текста.
//
// Ориентация 
// -вертикальная XDIR:
//   *y---+
//   x    |
//   |    |
//   |    |
//   |    |
//   +----+
//
// -горизонтальная YDIR:
//   *y------+
//   x       |
//   |       |
//   +-------+
//
// * - начало координат




#include "font.h"

// высота строки
#define height_string()	fontHeight 

// ширина строки
uint8_t width_string(char * text)
{
  uint8_t i=0; 
  uint8_t x=0; 
  while (text[i]!=0)
  {
    x+=pgm_read_byte(fontWidths+(text[i]-0x20));
    i++;
  }
return x;
}


#if (INCDIRECTION==XDIR)
// печатить символ
uint8_t put_char8(uint8_t x, uint8_t y, uint8_t symbol, uint8_t color, uint8_t bkcolor)
{
  uint8_t fontWidth=pgm_read_byte(fontWidths+(symbol-0x20));
  uint8_t forfontWidth=8-fontWidth;
  ls020_set_window(x,y,x+fontHeight-1,y+fontWidth-1);
  int offset=fontHeight*(symbol-0x20);
  for (uint8_t i=7; i>forfontWidth ; i--)
    for (uint8_t j=0; j<fontHeight; j++)
	  if (((pgm_read_byte(fontData+offset+j) >> i) & 0x01) == 0x01)
	    ls020_wrdata8(color);
	  else
	    ls020_wrdata8(bkcolor);
  return fontWidth; 
}
#endif

#if (INCDIRECTION==YDIR)
// печатить символ
uint8_t put_char8(uint8_t x, uint8_t y, uint8_t symbol, uint8_t color, uint8_t bkcolor)
{
  uint8_t fontWidth=pgm_read_byte(fontWidths+(symbol-0x20));
  uint8_t forfontWidth=8-fontWidth;
  ls020_set_window(x,y,x+fontHeight-1,y+fontWidth-1);
  int offset=fontHeight*(symbol-0x20);
  for (uint8_t j=0; j<fontHeight; j++)
    for (uint8_t i=forfontWidth; i<8 ; i++)
	  if (((pgm_read_byte(fontData+offset+j) >> i) & 0x01) == 0x01)
	    ls020_wrdata8(color);
	  else
	    ls020_wrdata8(bkcolor);
  return fontWidth; 
}
#endif


// печатить строку
void put_string8(uint8_t x, uint8_t y, char * text, uint8_t color, uint8_t bkcolor)
{
  uint8_t i=0; 
  while (text[i]!=0)
  {
    y+=put_char8(x,y,text[i],color,bkcolor);
    i++;
  }
}


// печатить строку из памяти
void pgm_put_string8(uint8_t x, uint8_t y, char * text, uint8_t color, uint8_t bkcolor)
{
  while (pgm_read_byte(&(*text)))
  {
    y+=put_char8(x,y,pgm_read_byte(&(*text++)),color,bkcolor);
  }
}



















