summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svx/qa/unit/customshapes.cxx18
-rw-r--r--svx/qa/unit/data/tdf141127_defaultSkewAngle.odpbin0 -> 28191 bytes
-rw-r--r--xmloff/source/draw/ximpcustomshape.cxx9
3 files changed, 27 insertions, 0 deletions
diff --git a/svx/qa/unit/customshapes.cxx b/svx/qa/unit/customshapes.cxx
index 4e3f76db74ec..811b4489569c 100644
--- a/svx/qa/unit/customshapes.cxx
+++ b/svx/qa/unit/customshapes.cxx
@@ -940,6 +940,24 @@ CPPUNIT_TEST_FIXTURE(CustomshapesTest, testTdf136176)
}
}
}
+
+CPPUNIT_TEST_FIXTURE(CustomshapesTest, testTdf141127WrongSkewDefault)
+{
+ // Load a document that has a shape in extrusion mode, but no draw:extrusion-skew attribute.
+ // Error was, that the shape uses the MS Office binary defaults and so the extruded side faces
+ // were not left/bottom, but top/right.
+ OUString sURL = m_directories.getURLFromSrc(sDataDirectory) + "tdf141127_defaultSkewAngle.odp";
+ mxComponent = loadFromDesktop(sURL, "com.sun.star.comp.presentation.PresentationDocument");
+ CPPUNIT_ASSERT_MESSAGE("Could not load document", mxComponent.is());
+ uno::Reference<drawing::XShape> xShape(getShape(0));
+ SdrObjCustomShape& rSdrCustomShape(
+ static_cast<SdrObjCustomShape&>(*GetSdrObjectFromXShape(xShape)));
+
+ // Check left/bottom of bound rect. Without fix it would be left=15994, bottom=6999.
+ tools::Rectangle aBoundRect(rSdrCustomShape.GetCurrentBoundRect());
+ CPPUNIT_ASSERT_EQUAL(tools::Long(15371), aBoundRect.Left());
+ CPPUNIT_ASSERT_EQUAL(tools::Long(7622), aBoundRect.Bottom());
+}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/qa/unit/data/tdf141127_defaultSkewAngle.odp b/svx/qa/unit/data/tdf141127_defaultSkewAngle.odp
new file mode 100644
index 000000000000..5cd0da96ec20
--- /dev/null
+++ b/svx/qa/unit/data/tdf141127_defaultSkewAngle.odp
Binary files differ
diff --git a/xmloff/source/draw/ximpcustomshape.cxx b/xmloff/source/draw/ximpcustomshape.cxx
index ebaf15651950..15d296187348 100644
--- a/xmloff/source/draw/ximpcustomshape.cxx
+++ b/xmloff/source/draw/ximpcustomshape.cxx
@@ -1286,6 +1286,15 @@ void XMLEnhancedCustomShapeContext::endFastElement(sal_Int32 )
}
}
+ //tdf#141127 Add ODF default values. Otherwise defaults from MS Office binary format are used.
+ if (!maExtrusion.empty())
+ {
+ auto it = std::find_if(maExtrusion.begin(), maExtrusion.end(),
+ [](css::beans::PropertyValue& rProp){return EASGet(rProp.Name) == EAS_Skew;} );
+ if (it == maExtrusion.end())
+ GetEnhancedParameterPair(maExtrusion, "50 45", EAS_Skew);
+ }
+
SdXMLCustomShapePropertyMerge( mrCustomShapeGeometry, maExtrusion, EASGet( EAS_Extrusion ) );
SdXMLCustomShapePropertyMerge( mrCustomShapeGeometry, maPath, EASGet( EAS_Path ) );
SdXMLCustomShapePropertyMerge( mrCustomShapeGeometry, maTextPath, EASGet( EAS_TextPath ) );