Ejemplo n.º 1
0
void GraphicsLib::fillRect(int_least16_t x0, int_least16_t y0, int_least16_t w, int_least16_t h, uint_least16_t color)
{
    uint_least32_t size;

    if(x0   >= lcd_width)  {
        x0 = lcd_width-1;
    }
    if(y0   >= lcd_height) {
        y0 = lcd_height-1;
    }
    if(x0+w >= lcd_width)  {
        w  = lcd_width-x0;
    }
    if(y0+h >= lcd_height) {
        h  = lcd_height-y0;
    }

    setArea(x0, y0, x0+w-1, y0+h-1);

    drawStart();

    for(size=((uint_least32_t)w*h); size!=0; size--)
    {
        draw(color);
    }

    drawStop();

    return;
}
Ejemplo n.º 2
0
void GraphicsLib::drawPixel(int_least16_t x0, int_least16_t y0, uint_least16_t color)
{
    if((x0 >= lcd_width) ||
            (y0 >= lcd_height))
    {
        return;
    }

    setArea(x0, y0, x0, y0);

    drawStart();
    draw(color);
    drawStop();

    return;
}
Ejemplo n.º 3
0
void MI0283QT9::drawPixel(uint16_t x0, uint16_t y0, uint16_t color)
{
  if((x0 >= lcd_width) ||
     (y0 >= lcd_height))
  {
    return;
  }

  setCursor(x0, y0);

  drawStart();
  draw(color);
  drawStop();

  return;
}
Ejemplo n.º 4
0
void MI0283QT2::clear(uint16_t color)
{
  uint16_t size;

  setArea(0, 0, lcd_width-1, lcd_height-1);

  drawStart();
  for(size=(320UL*240UL/8UL); size!=0; size--)
  {
    draw(color); //1
    draw(color); //2
    draw(color); //3
    draw(color); //4
    draw(color); //5
    draw(color); //6
    draw(color); //7
    draw(color); //8
  }
  drawStop();

  return;
}
Ejemplo n.º 5
0
void GraphicsLib::fillScreen(uint_least16_t color)
{
    uint_least32_t size;

    setArea(0, 0, lcd_width-1, lcd_height-1);

    drawStart();
    for(size=(((uint_least32_t)lcd_width*lcd_height)/8UL); size!=0; size--)
    {
        draw(color); //1
        draw(color); //2
        draw(color); //3
        draw(color); //4
        draw(color); //5
        draw(color); //6
        draw(color); //7
        draw(color); //8
    }
    drawStop();

    return;
}
Ejemplo n.º 6
0
int_least16_t GraphicsLib::drawChar(int_least16_t x, int_least16_t y, char c, uint_least16_t color, uint_least16_t bg, uint_least8_t size)
{
    int_least16_t ret, pos;
#if FONT_WIDTH <= 8
    uint_least8_t data, mask;
#elif FONT_WIDTH <= 16
    uint_least16_t data, mask;
#elif FONT_WIDTH <= 32
    uint_least32_t data, mask;
#endif
    uint_least8_t i, j, width, height;
    const PROGMEM uint8_t *ptr;

#if FONT_WIDTH <= 8
    pos = (c-FONT_START)*(8*FONT_HEIGHT/8);
#elif FONT_WIDTH <= 16
    pos = (c-FONT_START)*(16*FONT_HEIGHT/8);
#elif FONT_WIDTH <= 32
    pos = (c-FONT_START)*(32*FONT_HEIGHT/8);
#endif
    ptr    = &font_PGM[pos];
    width  = FONT_WIDTH;
    height = FONT_HEIGHT;
    size   = size&0x7F;

    if(size <= 1)
    {
        ret = x+width;
        if((ret-1) >= lcd_width)
        {
            return lcd_width+1;
        }
        else if((y+height-1) >= lcd_height)
        {
            return lcd_width+1;
        }

        setArea(x, y, (x+width-1), (y+height-1));

        drawStart();
        for(; height!=0; height--)
        {
#if FONT_WIDTH <= 8
            data = pgm_read_byte(ptr);
            ptr+=1;
#elif FONT_WIDTH <= 16
            data = pgm_read_word(ptr);
            ptr+=2;
#elif FONT_WIDTH <= 32
            data = pgm_read_dword(ptr);
            ptr+=4;
#endif
            for(mask=(1<<(width-1)); mask!=0; mask>>=1)
            {
                if(data & mask)
                {
                    draw(color);
                }
                else
                {
                    draw(bg);
                }
            }
        }
        drawStop();
    }
Ejemplo n.º 7
0
uint16_t MI0283QT9::drawChar(uint16_t x, uint16_t y, char c, uint8_t size, uint16_t color, uint16_t bg_color)
{
  uint16_t ret;
#if FONT_WIDTH <= 8
  uint8_t data, mask;
#elif FONT_WIDTH <= 16
  uint16_t data, mask;
#elif FONT_WIDTH <= 32
  uint32_t data, mask;
#endif
  uint8_t i, j, width, height;
  const prog_uint8_t *ptr;

  i      = (uint8_t)c;
#if FONT_WIDTH <= 8
  ptr    = &font_PGM[(i-FONT_START)*(8*FONT_HEIGHT/8)];
#elif FONT_WIDTH <= 16
  ptr    = &font_PGM[(i-FONT_START)*(16*FONT_HEIGHT/8)];
#elif FONT_WIDTH <= 32
  ptr    = &font_PGM[(i-FONT_START)*(32*FONT_HEIGHT/8)];
#endif
  width  = FONT_WIDTH;
  height = FONT_HEIGHT;

  if(size <= 1)
  {
    ret = x+width;
    if((ret-1) >= lcd_width)
    {
      return lcd_width+1;
    }
    else if((y+height-1) >= lcd_height)
    {
      return lcd_width+1;
    }

    setArea(x, y, (x+width-1), (y+height-1));

    drawStart();
    for(; height!=0; height--)
    {
#if FONT_WIDTH <= 8
      data = pgm_read_byte(ptr); ptr+=1;
#elif FONT_WIDTH <= 16
      data = pgm_read_word(ptr); ptr+=2;
#elif FONT_WIDTH <= 32
      data = pgm_read_dword(ptr); ptr+=4;
#endif
      for(mask=(1<<(width-1)); mask!=0; mask>>=1)
      {
        if(data & mask)
        {
          draw(color);
        }
        else
        {
          draw(bg_color);
        }
      }
    }
    drawStop();
  }
Ejemplo n.º 8
0
void MI0283QT9::fillRect(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color)
{
  uint32_t size;
  uint16_t tmp, i;

  if(x0 > x1)
  {
    tmp = x0;
    x0  = x1;
    x1  = tmp;
  }
  if(y0 > y1)
  {
    tmp = y0;
    y0  = y1;
    y1  = tmp;
  }

  if(x1 >= lcd_width)
  {
    x1 = lcd_width-1;
  }
  if(y1 >= lcd_height)
  {
    y1 = lcd_height-1;
  }

  setArea(x0, y0, x1, y1);

  drawStart();
  size = (uint32_t)(1+(x1-x0)) * (uint32_t)(1+(y1-y0));
  tmp  = size/8;
  if(tmp != 0)
  {
    for(i=tmp; i!=0; i--)
    {
      draw(color); //1
      draw(color); //2
      draw(color); //3
      draw(color); //4
      draw(color); //5
      draw(color); //6
      draw(color); //7
      draw(color); //8
    }
    for(i=size%8; i!=0; i--)
    {
      draw(color);
    }
  }
  else
  {
    for(i=size; i!=0; i--)
    {
      draw(color);
    }
  }
  drawStop();

  return;
}