ggiOvlSetCoordBase sets the units used by future calls to ggiOvl* functions on the provided object ovl, not including the x,y,w,h parameters passed in the current call. (TODO: current unit #defines)
The parameters x,y set the origin offset for the object ovl. Coordinates passed to any future calls on ovl will be subject to translation from this point of reference. The parameters w,h are anologous to that for sizing operations; generally you should leave them alone by setting them to 0; most people will never need them.
Example 1. Center a sprite at 50mm, 50mm and spiral it out from there
ggiOvlSetCoordBase(GA_COORDBASE_MILLIMETERS, 0, 0, 0, 0); ggiOvlGetSize(sprite, &sx, &sy); ggiOvlSetCoordBase(ovl, GA_COORDBASE_RESET, 50 - sx/2, 50 - sy/2, 0, 0); for (i = 0; i < 500; i++) { /* Note lack of "+ offset" in below. Handy, eh? */ ggiOvlSetPos(ovl, sin(i/100) * i / 10, cos(i/100) * i / 10); }