Example #1
0
// Purpose:       Draw a circle on a graphic LCD
// Inputs:        (x,y) - the center of the circle
//                radius - the radius of the circle
//                fill - YES or NO
//                color - ON or OFF
void glcd_circle(int x, int y, int radius, int1 fill, int1 color)
{
   signed int a, b, P;
   a = 0;
   b = radius;
   P = 1 - radius;

   do
   {
      if(fill)
      {
         glcd_line(x-a, y+b, x+a, y+b, color);
         glcd_line(x-a, y-b, x+a, y-b, color);
         glcd_line(x-b, y+a, x+b, y+a, color);
         glcd_line(x-b, y-a, x+b, y-a, color);
      }
      else
      {
         glcd_pixel(a+x, b+y, color);
         glcd_pixel(b+x, a+y, color);
         glcd_pixel(x-a, b+y, color);
         glcd_pixel(x-b, a+y, color);
         glcd_pixel(b+x, y-a, color);
         glcd_pixel(a+x, y-b, color);
         glcd_pixel(x-a, y-b, color);
         glcd_pixel(x-b, y-a, color);
      }

      if(P < 0)
         P+= 3 + 2*a++;
      else
         P+= 5 + 2*(a++ - b--);
    } while(a <= b);
}
Example #2
0
// Purpose:       Draw a rectangle on a graphic LCD
// Inputs:        (x1, y1) - the start coordinate
//                (x2, y2) - the end coordinate
//                fill  - YES or NO
//                color - ON or OFF
// Dependencies:  glcd_pixel(), glcd_line()
void glcd_rect(int x1, int y1, int x2, int y2, int fill, int1 color)
{
   if(fill)
   {
      int y, ymax;                          // Find the y min and max
      if(y1 < y2)
      {
         y = y1;
         ymax = y2;
      }
      else
      {
         y = y2;
         ymax = y1;
      }

      for(; y<=ymax; ++y)                    // Draw lines to fill the rectangle
         glcd_line(x1, y, x2, y, color);
   }
   else
   {
      glcd_line(x1, y1, x2, y1, color);      // Draw the 4 sides
      glcd_line(x1, y2, x2, y2, color);
      glcd_line(x1, y1, x1, y2, color);
      glcd_line(x2, y1, x2, y2, color);
   }
}
Example #3
0
void glcd_arc(int x, int y, int r, int startAngle, int endAngle, int thickness, unsigned int color)
{
        int rDelta = -(thickness/2);
        int px, py, cx, cy; 

        startAngle -= 90; 
        endAngle   -= 90; 
    
        if (startAngle!=endAngle)
        {   
                for (int i=0; i<thickness; i++)
                {   
                        px = x + cos((startAngle*3.14)/180) * (r+rDelta+i);
                        py = y + sin((startAngle*3.14)/180) * (r+rDelta+i);
                        for (int d=startAngle+1; d<endAngle+1; d++)
                        {   
                                cx = x + cos((d*3.14)/180) * (r+rDelta+i);
                                cy = y + sin((d*3.14)/180) * (r+rDelta+i);
				glcd_line(px, py, cx, cy, color);
                                px = cx; 
                                py = cy; 
                        }   
                }   
        }   
        else
        {   
                px = x + cos((startAngle*3.14)/180) * (r+rDelta);
                py = y + sin((startAngle*3.14)/180) * (r+rDelta);
                cx = x + cos((startAngle*3.14)/180) * (r-rDelta);
                cy = y + sin((startAngle*3.14)/180) * (r-rDelta);
		glcd_line(px, py, cx, cy, color);
        }   
}
Example #4
0
/************************************************************************
*                                                                       *
*  Purpose:    Draw the arrow indicating the existence of a submenu     *
*                                                                       *
*  Proposito:  Dibuja la flecha que indica que hay un submenu           *
*                                                                       *
*  Passed:     int8 tb - Y position of the arrow                        *
*              int8 color - Color of the arrow.                         *
*  Argumento:  int8 tb - Posicion en Y de la flecha                     *
*              int8 color - Color de la flecha.                         *
*  Returned:   None                                                     *
*  Retorno:    Nada                                                     *
*  Note:                                                                *
*                                                                       *
*                                                                       *
************************************************************************/
void menu_entrar(int8 tb, int8 color)
{
    glcd_line(124,tb,124,tb+7,color);
    glcd_line(125,tb+1,125,tb+6,color);
    glcd_line(126,tb+2,126,tb+5,color);
    glcd_line(127,tb+3,127,tb+4,color);

}
void glcd_rect(int8 x1, int8 y1, int8 x2, int8 y2, int1 fill, int1 color)
#endif
{
    if(fill)
    {
#ifdef LARGE_LCD
        int16 i, xmin, xmax, ymin, ymax;
#else
        int8  i, xmin, xmax, ymin, ymax;
#endif

        if(x1 < x2)                            //  Find x min and max
        {
            xmin = x1;
            xmax = x2;
        }
        else
        {
            xmin = x2;
            xmax = x1;
        }

        if(y1 < y2)                            // Find the y min and max
        {
            ymin = y1;
            ymax = y2;
        }
        else
        {
            ymin = y2;
            ymax = y1;
        }

        for(; xmin <= xmax; ++xmin)
        {
            for(i=ymin; i<=ymax; ++i)
            {
                glcd_pixel(xmin, i, color);
            }
        }
    }
    else
    {
        glcd_line(x1, y1, x2, y1, color);      // Draw the 4 sides
        glcd_line(x1, y2, x2, y2, color);
        glcd_line(x1, y1, x1, y2, color);
        glcd_line(x2, y1, x2, y2, color);
    }
}
void glcd_circle(int8 x, int8 y, int8 radius, int1 fill, int1 color)
#endif
{
#ifdef LARGE_LCD
    signed int16 a, b, P;
#else
    signed int8  a, b, P;
#endif

    a = 0;
    b = radius;
    P = 1 - radius;

    do
    {
        if(fill)
        {
            glcd_line(x-a, y+b, x+a, y+b, color);
            glcd_line(x-a, y-b, x+a, y-b, color);
            glcd_line(x-b, y+a, x+b, y+a, color);
            glcd_line(x-b, y-a, x+b, y-a, color);
        }
        else
        {
            glcd_pixel(a+x, b+y, color);
            glcd_pixel(b+x, a+y, color);
            glcd_pixel(x-a, b+y, color);
            glcd_pixel(x-b, a+y, color);
            glcd_pixel(b+x, y-a, color);
            glcd_pixel(a+x, y-b, color);
            glcd_pixel(x-a, y-b, color);
            glcd_pixel(x-b, y-a, color);
        }

        if(P < 0)
            P += 3 + 2 * a++;
        else
            P += 5 + 2 * (a++ - b--);
    } while(a <= b);
}