Author: alg
Date: Thu May 30 09:30:24 2013
New Revision: 1487800
URL: http://svn.apache.org/r1487800
Log:
i122395 Adapted mapping of content to more general way
Modified:
openoffice/trunk/main/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
Modified:
openoffice/trunk/main/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/drawinglayer/source/primitive2d/metafileprimitive2d.cxx?rev=1487800&r1=1487799&r2=1487800&view=diff
==============================================================================
---
openoffice/trunk/main/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
(original)
+++
openoffice/trunk/main/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
Thu May 30 09:30:24 2013
@@ -2980,6 +2980,9 @@ namespace
if(xSubContent.hasElements())
{
+ // prepare sub-content transform
+ basegfx::B2DHomMatrix aSubTransform;
+
// create SourceRange
const basegfx::B2DRange aSourceRange(
rContent.GetPrefMapMode().GetOrigin().X(),
@@ -2990,20 +2993,25 @@ namespace
// apply mapping if aTargetRange and
aSourceRange are not equal
if(!aSourceRange.equal(aTargetRange))
{
- basegfx::B2DHomMatrix aTransform;
-
-
aTransform.translate(-aSourceRange.getMinX(), -aSourceRange.getMinY());
- aTransform.scale(
+
aSubTransform.translate(-aSourceRange.getMinX(), -aSourceRange.getMinY());
+ aSubTransform.scale(
aTargetRange.getWidth() /
(basegfx::fTools::equalZero(aSourceRange.getWidth()) ? 1.0 :
aSourceRange.getWidth()),
aTargetRange.getHeight() /
(basegfx::fTools::equalZero(aSourceRange.getHeight()) ? 1.0 :
aSourceRange.getHeight()));
-
aTransform.translate(aTargetRange.getMinX(), aTargetRange.getMinY());
-
- const
drawinglayer::primitive2d::Primitive2DReference aEmbeddedTransform(
- new
drawinglayer::primitive2d::TransformPrimitive2D(
- aTransform,
-
xSubContent));
+
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(
+ new
drawinglayer::primitive2d::TransformPrimitive2D(
+ aSubTransform,
+ xSubContent));
- xSubContent =
drawinglayer::primitive2d::Primitive2DSequence(&aEmbeddedTransform, 1);
+ xSubContent =
drawinglayer::primitive2d::Primitive2DSequence(&aEmbeddedTransform, 1);
}
// check if
gradient is a real gradient