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; }
void _HYGraphicPane::DrawArc (_HYRect rectDesc, int s, int f) { _DrawArc (rectDesc,s,f); }