mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1156456 patch 3 - Send transform origin and perspective origin to layer in device pixels rather than CSS pixels. r=birtles
This commit is contained in:
parent
a29e961fde
commit
cc896f3f84
@ -406,18 +406,9 @@ SampleValue(float aPortion, Animation& aAnimation, StyleAnimationValue& aStart,
|
||||
|
||||
TransformData& data = aAnimation.data().get_TransformData();
|
||||
nsPoint origin = data.origin();
|
||||
// we expect all our transform data to arrive in css pixels, so here we must
|
||||
// adjust to dev pixels.
|
||||
double cssPerDev = double(nsDeviceContext::AppUnitsPerCSSPixel())
|
||||
/ double(data.appUnitsPerDevPixel());
|
||||
// we expect all our transform data to arrive in device pixels
|
||||
Point3D transformOrigin = data.transformOrigin();
|
||||
transformOrigin.x = transformOrigin.x * cssPerDev;
|
||||
transformOrigin.y = transformOrigin.y * cssPerDev;
|
||||
transformOrigin.z = transformOrigin.z * cssPerDev;
|
||||
Point3D perspectiveOrigin = data.perspectiveOrigin();
|
||||
perspectiveOrigin.x = perspectiveOrigin.x * cssPerDev;
|
||||
perspectiveOrigin.y = perspectiveOrigin.y * cssPerDev;
|
||||
perspectiveOrigin.z = perspectiveOrigin.z * cssPerDev;
|
||||
nsDisplayTransform::FrameTransformProperties props(interpolatedList,
|
||||
transformOrigin,
|
||||
perspectiveOrigin,
|
||||
|
@ -720,9 +720,7 @@ LayerTransactionParent::RecvGetAnimationTransform(PLayerParent* aParent,
|
||||
Point3D(NS_round(NSAppUnitsToFloatPixels(data.origin().x, scale)),
|
||||
NS_round(NSAppUnitsToFloatPixels(data.origin().y, scale)),
|
||||
0.0f);
|
||||
double cssPerDev =
|
||||
double(nsDeviceContext::AppUnitsPerCSSPixel()) / double(scale);
|
||||
transformOrigin = data.transformOrigin() * cssPerDev;
|
||||
transformOrigin = data.transformOrigin();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -154,9 +154,9 @@ struct AnimationSegment {
|
||||
struct TransformData {
|
||||
// the origin of the frame being transformed in app units
|
||||
nsPoint origin;
|
||||
// the transform-origin property for the transform in css pixels
|
||||
// the transform-origin property for the transform in device pixels
|
||||
Point3D transformOrigin;
|
||||
// the perspective-origin property for the transform in css pixels
|
||||
// the perspective-origin property for the transform in device pixels
|
||||
Point3D perspectiveOrigin;
|
||||
nsRect bounds;
|
||||
nscoord perspective;
|
||||
|
@ -530,8 +530,9 @@ nsDisplayListBuilder::AddAnimationsAndTransitionsToLayer(Layer* aLayer,
|
||||
AnimationData data;
|
||||
if (aProperty == eCSSProperty_transform) {
|
||||
nsRect bounds = nsDisplayTransform::GetFrameBoundsForTransform(aFrame);
|
||||
// all data passed directly to the compositor should be in css pixels
|
||||
float scale = nsDeviceContext::AppUnitsPerCSSPixel();
|
||||
// all data passed directly to the compositor should be in dev pixels
|
||||
int32_t devPixelsToAppUnits = aFrame->PresContext()->AppUnitsPerDevPixel();
|
||||
float scale = devPixelsToAppUnits;
|
||||
Point3D offsetToTransformOrigin =
|
||||
nsDisplayTransform::GetDeltaToTransformOrigin(aFrame, scale, &bounds);
|
||||
Point3D offsetToPerspectiveOrigin =
|
||||
@ -557,7 +558,7 @@ nsDisplayListBuilder::AddAnimationsAndTransitionsToLayer(Layer* aLayer,
|
||||
|
||||
data = TransformData(origin, offsetToTransformOrigin,
|
||||
offsetToPerspectiveOrigin, bounds, perspective,
|
||||
aFrame->PresContext()->AppUnitsPerDevPixel());
|
||||
devPixelsToAppUnits);
|
||||
} else if (aProperty == eCSSProperty_opacity) {
|
||||
data = null_t();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user