Bug 695832 - Perpsective origin offset should be relative to the transform origin. r=roc

This commit is contained in:
Matt Woodrow 2011-10-31 13:38:46 +13:00
parent 8d8eabc208
commit 42dcd2e02c

View File

@ -2482,13 +2482,6 @@ gfxPoint3D GetDeltaToMozPerspectiveOrigin(const nsIFrame* aFrame,
*coords[index] = NSAppUnitsToFloatPixels(coord.GetCoordValue(), aFactor);
}
}
/**
* An offset of (0,0) results in the perspective-origin being at the centre of the element,
* so include a shift of the centre point to (0,0).
*/
result.x -= NSAppUnitsToFloatPixels(boundingRect.width, aFactor)/2;
result.y -= NSAppUnitsToFloatPixels(boundingRect.height, aFactor)/2;
return result;
}
@ -2551,7 +2544,10 @@ nsDisplayTransform::GetResultingTransformMatrix(const nsIFrame* aFrame,
perspective._34 =
-1.0 / NSAppUnitsToFloatPixels(parentDisp->mChildPerspective.GetCoordValue(),
aFactor);
result = result * nsLayoutUtils::ChangeMatrixBasis(toPerspectiveOrigin, perspective);
/* At the point when perspective is applied, we have been translated to the transform origin.
* The translation to the perspective origin is the difference between these values.
*/
result = result * nsLayoutUtils::ChangeMatrixBasis(toPerspectiveOrigin - toMozOrigin, perspective);
}
if (aFrame->Preserves3D() && nsLayoutUtils::Are3DTransformsEnabled()) {