tdf#128952 Set the position of shape for 180 deg.

If the rotation value is 180, 540, 900... degree with mirror
pShape->GetRotateAngle() returns 0. In that control 0 means
no rotation but that is not true. For that cases (180, 540, 900)
after the angle conversition GetRotateAngle() returns 0. We should
recalculate the position for 0 too.

Change-Id: I14e981235b2d6cd8382d4c9e151bccd2e73a3fd9
Reviewed-on: https://gerrit.libreoffice.org/83468
Tested-by: Jenkins
Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
(cherry picked from commit aca2e4d270f472b2cbdb9084a55f1855529ea705)
Reviewed-on: https://gerrit.libreoffice.org/83534
Reviewed-by: Andras Timar <andras.timar@collabora.com>
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 2cc160d..6ca1e78 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1647,7 +1647,7 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
    {
        SdrObject* pShape = GetSdrObjectFromXShape( rXShape );
        nRotation = pShape ? pShape->GetRotateAngle() : 0;
        if ( nRotation != 0 && GetDocumentType() != DOCUMENT_DOCX )
        if ( GetDocumentType() != DOCUMENT_DOCX )
        {
            int faccos=bFlipV ? -1 : 1;
            int facsin=bFlipH ? -1 : 1;
diff --git a/sd/qa/unit/data/pptx/tdf128952.pptx b/sd/qa/unit/data/pptx/tdf128952.pptx
new file mode 100644
index 0000000..242a3ee
--- /dev/null
+++ b/sd/qa/unit/data/pptx/tdf128952.pptx
Binary files differ
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx
index 05d7d3a..ddc41b5 100644
--- a/sd/qa/unit/export-tests-ooxml1.cxx
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
@@ -80,6 +80,7 @@ public:
    void testParaMarginAndindentation();
    void testTdf111884();
    void testTdf112633();
    void testTdf128952();
    void testCustomXml();
    void testTdf94238();
    void testPictureTransparency();
@@ -116,6 +117,7 @@ public:
    CPPUNIT_TEST(testParaMarginAndindentation);
    CPPUNIT_TEST(testTdf111884);
    CPPUNIT_TEST(testTdf112633);
    CPPUNIT_TEST(testTdf128952);
    CPPUNIT_TEST(testCustomXml);
    CPPUNIT_TEST(testTdf94238);
    CPPUNIT_TEST(testTdf125554);
@@ -812,6 +814,21 @@ void SdOOXMLExportTest1::testTdf112633()
    CPPUNIT_ASSERT_EQUAL(true, bool(xNameAccess->hasByName("ppt/media/hdphoto1.wdp")));
}

void SdOOXMLExportTest1::testTdf128952()
{
    ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf128952.pptx"), PPTX);
    utl::TempFile tempFile;
    xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
    xDocShRef->DoClose();

    xmlDocPtr pXmlDoc = parseExport(tempFile, "ppt/slides/slide1.xml");

    assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:xfrm/a:off", "x", "360");
    assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:xfrm/a:off", "y", "-360");
    assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:xfrm/a:ext", "cx", "1919880");
    assertXPath(pXmlDoc, "/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:xfrm/a:ext", "cy", "1462680");
}

void SdOOXMLExportTest1::testCustomXml()
{
    // Load document and export it to a temporary file