예제 #1
0
void GL_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1) {
  int aEnd;
  a0+=360;
	a1+=360;
	while (a0>=360) {
    a0 -= 360;
    a1 -= 360;
	}
/* Do first quadrant 0-90 degree */
DoFirst:
  if (a1<=0)
	  return;
	if (a0<90) {
    if (a0<0)
		  a0=0;
    aEnd = (a1<90) ? a1 : 90;
    _DrawArc(x0,y0,rx,ry,a0,aEnd, 1, -1);
	}
  a1-=90;
	a0-=90;
/* Do second quadrant 90-180 degree */
  if (a1<=0)
	  return;
	if (a0<90) {
    if (a0<0)
		  a0=0;
    aEnd = (a1<90) ? a1 : 90;
    _DrawArc(x0,y0,rx,ry,90-aEnd, 90-a0,-1,-1);
	}
  a1-=90;
	a0-=90;
/* Do third quadrant 180-270 degree */
  if (a1<=0)
	  return;
	if (a0<90) {
    if (a0<0)
		  a0=0;
    aEnd = (a1<90) ? a1 : 90;
    _DrawArc(x0,y0,rx,ry,a0,aEnd, -1, 1);
	}
  a1-=90;
	a0-=90;
/* Do last quadrant 270-360 degree */
  if (a1<=0)
	  return;
	if (a0<90) {
    if (a0<0)
		  a0=0;
    aEnd = (a1<90) ? a1 : 90;
    _DrawArc(x0,y0,rx,ry,90-aEnd, 90-a0,1,1);
	}
  a1-=90;
	a0-=90;
goto DoFirst;
}
예제 #2
0
void _HYGraphicPane::DrawArc (_HYRect rectDesc, int s, int f)
{
	_DrawArc (rectDesc,s,f);
}