[Libreoffice-commits] core.git: oox/source

Armin Le Grand alg at apache.org
Sun Apr 27 06:05:13 PDT 2014


 oox/source/drawingml/customshapeproperties.cxx |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

New commits:
commit c764a3d978beb2e6197a8d3f7df53d81ebf72467
Author: Armin Le Grand <alg at apache.org>
Date:   Fri Apr 25 12:56:19 2014 +0000

    Resolves: #i124703# adapt coordinate range from ms relative...
    
    control points to our relative control points
    
    (cherry picked from commit 8625253da753153838554fef459ae603ca8d3ecc)
    
    Conflicts:
    	oox/source/drawingml/customshapeproperties.cxx
    
    Change-Id: I356a44fdbdcc22630811467e706bcb60c41dbc2c

diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx
index 276d5bb..0496dc3 100644
--- a/oox/source/drawingml/customshapeproperties.cxx
+++ b/oox/source/drawingml/customshapeproperties.cxx
@@ -30,6 +30,7 @@
 #include <com/sun/star/drawing/XShape.hpp>
 #include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp>
 #include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
+#include <basegfx/numeric/ftools.hxx>
 
 using namespace ::oox::core;
 using namespace ::com::sun::star;
@@ -185,7 +186,15 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi
                                     }
                                 } else if ( aAdjustmentSeq.getLength() > 0 ) {
                                     EnhancedCustomShapeAdjustmentValue aAdjustmentVal;
-                                    aAdjustmentVal.Value <<= (*aIter).maFormula.toInt32();
+
+                                    sal_Int32 nValue((*aIter).maFormula.toInt32());
+
+                                    // #i124703# The ms control point coordinates are relative to the
+                                    // object center in the range [-50000 .. 50000] while our customshapes
+                                    // use a range from [0 .. 21600], so adapt the value as needed
+                                    nValue = basegfx::fround((double(nValue) + 50000.0) * (21600.0 / 100000.0));
+
+                                    aAdjustmentVal.Value <<= nValue;
                                     aAdjustmentVal.State = PropertyState_DIRECT_VALUE;
                                     aAdjustmentVal.Name = (*aIter).maName;
                                     aAdjustmentSeq[ nIndex++ ] = aAdjustmentVal;


More information about the Libreoffice-commits mailing list