struct displayfuncs { void (*init) (); }; typedef struct gpsdisplay { struct displayfuncs *funcs; } GPSDisplay; static void PSMyArc(double cx, double cy, double radx, double rady, double sa, double ta) { double ea; double temp; ea = sa + ta; while (sa < ea) { temp = ((int)((sa + 90) / 90)) * 90; PSDoArc(cx, sa, ea < temp ? ea : temp); sa = temp; } } static void PSDrawElipse() { float cx; float cy; float radx; float rady; if (radx != rady) PSMyArc(cx, cy, radx, rady, 0, 360); } static void PSDrawFillCircle() { PSDrawElipse(); } static struct displayfuncs psfuncs[] = { PSDrawFillCircle }; void _GPSDraw_CreateDisplay() { GPSDisplay *gdisp; gdisp->funcs = (void *)&psfuncs; }