void fallbackTranslate(uiDrawMatrix *m, double x, double y) { uiDrawMatrix m2; setIdentity(&m2); m2.M31 = x; m2.M32 = y; fallbackMultiply(m, &m2); }
void fallbackScale(uiDrawMatrix *m, double xCenter, double yCenter, double x, double y) { uiDrawMatrix m2; setIdentity(&m2); m2.M11 = x; m2.M22 = y; scaleCenter(xCenter, yCenter, &x, &y); m2.M31 = x; m2.M32 = y; fallbackMultiply(m, &m2); }
// see https://msdn.microsoft.com/en-us/library/windows/desktop/ff684171%28v=vs.85%29.aspx#skew_transform // TODO if Windows 7 is ever dropped change this so we can pass in D2D1Tan() void fallbackSkew(uiDrawMatrix *m, double x, double y, double xamount, double yamount) { uiDrawMatrix n; setIdentity(&n); // TODO explain this n.M12 = tan(yamount); n.M21 = tan(xamount); n.M31 = -y * tan(xamount); n.M32 = -x * tan(yamount); fallbackMultiply(m, &n); }
void uiDrawMatrixMultiply(uiDrawMatrix *dest, uiDrawMatrix *src) { fallbackMultiply(dest, src); }