mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 931028. Transform matrices when used for painting related things should be in dev pixels and not CSS pixels. r=mattwoodrow
This commit is contained in:
parent
bb6f46baf1
commit
b2654ec621
@ -4408,7 +4408,7 @@ bool nsDisplayTransform::ComputeVisibility(nsDisplayListBuilder *aBuilder,
|
||||
* think that it's painting in its original rectangular coordinate space.
|
||||
* If we can't untransform, take the entire overflow rect */
|
||||
nsRect untransformedVisibleRect;
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
if (ShouldPrerenderTransformedContent(aBuilder, mFrame) ||
|
||||
!UntransformRectMatrix(mVisibleRect,
|
||||
GetTransform(factor),
|
||||
@ -4442,7 +4442,7 @@ void nsDisplayTransform::HitTest(nsDisplayListBuilder *aBuilder,
|
||||
* 3. Use it to transform the rect into the correct space.
|
||||
* 4. Pass that rect down through to the list's version of HitTest.
|
||||
*/
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
gfx3DMatrix matrix = GetTransform(factor);
|
||||
|
||||
if (!IsFrameVisible(mFrame, matrix)) {
|
||||
@ -4501,7 +4501,7 @@ void nsDisplayTransform::HitTest(nsDisplayListBuilder *aBuilder,
|
||||
float
|
||||
nsDisplayTransform::GetHitDepthAtPoint(const nsPoint& aPoint)
|
||||
{
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
gfx3DMatrix matrix = GetTransform(factor);
|
||||
|
||||
NS_ASSERTION(IsFrameVisible(mFrame, matrix), "We can't have hit a frame that isn't visible!");
|
||||
@ -4524,7 +4524,7 @@ nsRect nsDisplayTransform::GetBounds(nsDisplayListBuilder *aBuilder, bool* aSnap
|
||||
mFrame->GetVisualOverflowRectRelativeToSelf() :
|
||||
mStoredList.GetBounds(aBuilder, aSnap);
|
||||
*aSnap = false;
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
return nsLayoutUtils::MatrixTransformRect(untransformedBounds,
|
||||
GetTransform(factor),
|
||||
factor);
|
||||
@ -4551,7 +4551,7 @@ nsRegion nsDisplayTransform::GetOpaqueRegion(nsDisplayListBuilder *aBuilder,
|
||||
{
|
||||
*aSnap = false;
|
||||
nsRect untransformedVisible;
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
// If we're going to prerender all our content, pretend like we
|
||||
// don't have opqaue content so that everything under us is rendered
|
||||
// as well. That will increase graphics memory usage if our frame
|
||||
@ -4563,7 +4563,7 @@ nsRegion nsDisplayTransform::GetOpaqueRegion(nsDisplayListBuilder *aBuilder,
|
||||
return nsRegion();
|
||||
}
|
||||
|
||||
const gfx3DMatrix& matrix = GetTransform(nsPresContext::AppUnitsPerCSSPixel());
|
||||
const gfx3DMatrix& matrix = GetTransform(factor);
|
||||
|
||||
nsRegion result;
|
||||
gfxMatrix matrix2d;
|
||||
@ -4583,11 +4583,11 @@ nsRegion nsDisplayTransform::GetOpaqueRegion(nsDisplayListBuilder *aBuilder,
|
||||
bool nsDisplayTransform::IsUniform(nsDisplayListBuilder *aBuilder, nscolor* aColor)
|
||||
{
|
||||
nsRect untransformedVisible;
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = mFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
if (!UntransformRectMatrix(mVisibleRect, GetTransform(factor), factor, &untransformedVisible)) {
|
||||
return false;
|
||||
}
|
||||
const gfx3DMatrix& matrix = GetTransform(nsPresContext::AppUnitsPerCSSPixel());
|
||||
const gfx3DMatrix& matrix = GetTransform(factor);
|
||||
|
||||
gfxMatrix matrix2d;
|
||||
return matrix.Is2D(&matrix2d) &&
|
||||
@ -4659,7 +4659,7 @@ nsRect nsDisplayTransform::TransformRect(const nsRect &aUntransformedBounds,
|
||||
{
|
||||
NS_PRECONDITION(aFrame, "Can't take the transform based on a null frame!");
|
||||
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = aFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
return nsLayoutUtils::MatrixTransformRect
|
||||
(aUntransformedBounds,
|
||||
GetResultingTransformMatrix(aFrame, aOrigin, factor, aBoundsOverride),
|
||||
@ -4673,7 +4673,7 @@ nsRect nsDisplayTransform::TransformRectOut(const nsRect &aUntransformedBounds,
|
||||
{
|
||||
NS_PRECONDITION(aFrame, "Can't take the transform based on a null frame!");
|
||||
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = aFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
return nsLayoutUtils::MatrixTransformRectOut
|
||||
(aUntransformedBounds,
|
||||
GetResultingTransformMatrix(aFrame, aOrigin, factor, aBoundsOverride),
|
||||
@ -4711,7 +4711,7 @@ bool nsDisplayTransform::UntransformRect(const nsRect &aUntransformedBounds,
|
||||
/* Grab the matrix. If the transform is degenerate, just hand back the
|
||||
* empty rect.
|
||||
*/
|
||||
float factor = nsPresContext::AppUnitsPerCSSPixel();
|
||||
float factor = aFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
gfx3DMatrix matrix = GetResultingTransformMatrix(aFrame, aOrigin, factor);
|
||||
|
||||
return UntransformRectMatrix(aUntransformedBounds, matrix, factor, aOutRect);
|
||||
|
Loading…
Reference in New Issue
Block a user