Kaydet (Commit) 525dfeaf authored tarafından Armin Le Grand's avatar Armin Le Grand

i122395 Adapted mapping of content to more general way

üst 3f1d43bd
...@@ -2980,6 +2980,9 @@ namespace ...@@ -2980,6 +2980,9 @@ namespace
if(xSubContent.hasElements()) if(xSubContent.hasElements())
{ {
// prepare sub-content transform
basegfx::B2DHomMatrix aSubTransform;
// create SourceRange // create SourceRange
const basegfx::B2DRange aSourceRange( const basegfx::B2DRange aSourceRange(
rContent.GetPrefMapMode().GetOrigin().X(), rContent.GetPrefMapMode().GetOrigin().X(),
...@@ -2990,17 +2993,22 @@ namespace ...@@ -2990,17 +2993,22 @@ namespace
// apply mapping if aTargetRange and aSourceRange are not equal // apply mapping if aTargetRange and aSourceRange are not equal
if(!aSourceRange.equal(aTargetRange)) if(!aSourceRange.equal(aTargetRange))
{ {
basegfx::B2DHomMatrix aTransform; aSubTransform.translate(-aSourceRange.getMinX(), -aSourceRange.getMinY());
aSubTransform.scale(
aTransform.translate(-aSourceRange.getMinX(), -aSourceRange.getMinY());
aTransform.scale(
aTargetRange.getWidth() / (basegfx::fTools::equalZero(aSourceRange.getWidth()) ? 1.0 : aSourceRange.getWidth()), aTargetRange.getWidth() / (basegfx::fTools::equalZero(aSourceRange.getWidth()) ? 1.0 : aSourceRange.getWidth()),
aTargetRange.getHeight() / (basegfx::fTools::equalZero(aSourceRange.getHeight()) ? 1.0 : aSourceRange.getHeight())); aTargetRange.getHeight() / (basegfx::fTools::equalZero(aSourceRange.getHeight()) ? 1.0 : aSourceRange.getHeight()));
aTransform.translate(aTargetRange.getMinX(), aTargetRange.getMinY()); aSubTransform.translate(aTargetRange.getMinX(), aTargetRange.getMinY());
}
// apply general current transformation
aSubTransform = rPropertyHolders.Current().getTransformation() * aSubTransform;
// evtl. embed sub-content to it's transformation
if(!aSubTransform.isIdentity())
{
const drawinglayer::primitive2d::Primitive2DReference aEmbeddedTransform( const drawinglayer::primitive2d::Primitive2DReference aEmbeddedTransform(
new drawinglayer::primitive2d::TransformPrimitive2D( new drawinglayer::primitive2d::TransformPrimitive2D(
aTransform, aSubTransform,
xSubContent)); xSubContent));
xSubContent = drawinglayer::primitive2d::Primitive2DSequence(&aEmbeddedTransform, 1); xSubContent = drawinglayer::primitive2d::Primitive2DSequence(&aEmbeddedTransform, 1);
......
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