Kaydet (Commit) e0d8fb0c authored tarafından Armin Le Grand's avatar Armin Le Grand Kaydeden (comit) Caolán McNamara

Related: #i121801# Corrected objectBoundingBox case for GradientTransform

(cherry picked from commit f03ec481)

Change-Id: Icb3e2cefda2fd5fe9a2dcf501e5e07881961932e
üst b7a425aa
...@@ -408,15 +408,19 @@ namespace drawinglayer ...@@ -408,15 +408,19 @@ namespace drawinglayer
// gradient vector defined by Start,End // gradient vector defined by Start,End
const basegfx::B2DVector aVector(getEnd() - getStart()); const basegfx::B2DVector aVector(getEnd() - getStart());
const double fVectorLength(aVector.getLength()); const double fVectorLength(aVector.getLength());
basegfx::B2DHomMatrix aUnitGradientToGradient;
aUnitGradientToGradient.scale(fVectorLength, 1.0); aUnitGradientToObject.scale(fVectorLength, 1.0);
aUnitGradientToGradient.rotate(atan2(aVector.getY(), aVector.getX())); aUnitGradientToObject.rotate(atan2(aVector.getY(), aVector.getX()));
aUnitGradientToGradient.translate(getStart().getX(), getStart().getY()); aUnitGradientToObject.translate(getStart().getX(), getStart().getY());
if(!getGradientTransform().isIdentity())
{
aUnitGradientToObject = getGradientTransform() * aUnitGradientToObject;
}
// create full transform from unit gradient coordinates to object coordinates // create full transform from unit gradient coordinates to object coordinates
// including the SvgGradient transformation // including the SvgGradient transformation
aUnitGradientToObject = aObjectTransform * aUnitGradientToGradient; aUnitGradientToObject = aObjectTransform * aUnitGradientToObject;
} }
else else
{ {
...@@ -428,11 +432,11 @@ namespace drawinglayer ...@@ -428,11 +432,11 @@ namespace drawinglayer
aUnitGradientToObject.scale(aVector.getLength(), 1.0); aUnitGradientToObject.scale(aVector.getLength(), 1.0);
aUnitGradientToObject.rotate(atan2(aVector.getY(), aVector.getX())); aUnitGradientToObject.rotate(atan2(aVector.getY(), aVector.getX()));
aUnitGradientToObject.translate(aStart.getX(), aStart.getY()); aUnitGradientToObject.translate(aStart.getX(), aStart.getY());
}
if(!getGradientTransform().isIdentity()) if(!getGradientTransform().isIdentity())
{ {
aUnitGradientToObject = getGradientTransform() * aUnitGradientToObject; aUnitGradientToObject = getGradientTransform() * aUnitGradientToObject;
}
} }
// create inverse from it // create inverse from it
...@@ -745,14 +749,17 @@ namespace drawinglayer ...@@ -745,14 +749,17 @@ namespace drawinglayer
{ {
// interpret in unit coordinate system -> object aspect ratio will scale result // interpret in unit coordinate system -> object aspect ratio will scale result
// create unit transform from unit vector to given linear gradient vector // create unit transform from unit vector to given linear gradient vector
basegfx::B2DHomMatrix aUnitGradientToGradient; aUnitGradientToObject.scale(getRadius(), getRadius());
aUnitGradientToObject.translate(getStart().getX(), getStart().getY());
aUnitGradientToGradient.scale(getRadius(), getRadius()); if(!getGradientTransform().isIdentity())
aUnitGradientToGradient.translate(getStart().getX(), getStart().getY()); {
aUnitGradientToObject = getGradientTransform() * aUnitGradientToObject;
}
// create full transform from unit gradient coordinates to object coordinates // create full transform from unit gradient coordinates to object coordinates
// including the SvgGradient transformation // including the SvgGradient transformation
aUnitGradientToObject = aObjectTransform * aUnitGradientToGradient; aUnitGradientToObject = aObjectTransform * aUnitGradientToObject;
} }
else else
{ {
...@@ -764,11 +771,11 @@ namespace drawinglayer ...@@ -764,11 +771,11 @@ namespace drawinglayer
aUnitGradientToObject.scale(fRadius, fRadius); aUnitGradientToObject.scale(fRadius, fRadius);
aUnitGradientToObject.translate(aStart.getX(), aStart.getY()); aUnitGradientToObject.translate(aStart.getX(), aStart.getY());
}
if(!getGradientTransform().isIdentity()) if(!getGradientTransform().isIdentity())
{ {
aUnitGradientToObject = getGradientTransform() * aUnitGradientToObject; aUnitGradientToObject = getGradientTransform() * aUnitGradientToObject;
}
} }
// create inverse from it // create inverse from it
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment