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


Reply via email to