void UnConvert(struct XYspace *S, /* relevant coordinate space */ struct fractpoint *pt, /* device coordinates */ double *xp, double *yp) /* where to store resulting x,y */ { double x,y; CoerceInverse(S); x = pt->x; y = pt->y; *xp = S->tofract.inverse[0][0] * x + S->tofract.inverse[1][0] * y; *yp = S->tofract.inverse[0][1] * x + S->tofract.inverse[1][1] * y; }
void UnConvert( register struct XYspace *S, /* relevant coordinate space */ register struct fractpoint *pt, /* device coordinates */ DOUBLE *xp, DOUBLE *yp) /* where to store resulting x,y */ { DOUBLE x,y; CoerceInverse(S); x = pt->x; y = pt->y; *xp = S->tofract.inverse[0][0] * x + S->tofract.inverse[1][0] * y; *yp = S->tofract.inverse[0][1] * x + S->tofract.inverse[1][1] * y; }
void InitSpaces(void) { IDENTITY->type = SPACETYPE; FillOutFcns(IDENTITY); contexts[NULLCONTEXT].normal[1][0] = contexts[NULLCONTEXT].normal[0][1] = contexts[NULLCONTEXT].inverse[1][0] = contexts[NULLCONTEXT].inverse[0][1] = 0.0; contexts[NULLCONTEXT].normal[0][0] = contexts[NULLCONTEXT].normal[1][1] = contexts[NULLCONTEXT].inverse[0][0] = contexts[NULLCONTEXT].inverse[1][1] = 1.0; USER->flag |= ISIMMORTAL(ON); CoerceInverse(USER); }