diff options
-rw-r--r-- | oox/source/drawingml/shape.cxx | 2 | ||||
-rw-r--r-- | oox/source/export/drawingml.cxx | 6 | ||||
-rw-r--r-- | sd/qa/unit/data/odg/glow.odg | bin | 8297 -> 8873 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests-ooxml2.cxx | 8 | ||||
-rw-r--r-- | sd/qa/unit/export-tests.cxx | 4 | ||||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 8 | ||||
-rw-r--r-- | svx/source/sdr/primitive2d/sdrdecompositiontools.cxx | 2 | ||||
-rw-r--r-- | svx/source/sidebar/glow/GlowPropertyPanel.cxx | 13 | ||||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 10 |
9 files changed, 25 insertions, 28 deletions
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index 959f99ecffb4..92629b2419b5 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1470,7 +1470,7 @@ Reference< XShape > const & Shape::createAndInsert( { uno::Reference<beans::XPropertySet> propertySet (mxShape, uno::UNO_QUERY); propertySet->setPropertyValue("GlowEffect", makeAny(true)); - propertySet->setPropertyValue("GlowEffectRad", makeAny(static_cast<sal_Int32>(aEffectProperties.maGlow.moGlowRad.get()))); + propertySet->setPropertyValue("GlowEffectRad", makeAny(convertEmuToHmm(aEffectProperties.maGlow.moGlowRad.get()))); propertySet->setPropertyValue("GlowEffectColor", makeAny(aEffectProperties.maGlow.moGlowColor.getColor(rGraphicHelper))); propertySet->setPropertyValue("GlowEffectTransparency", makeAny(aEffectProperties.maGlow.moGlowColor.getTransparency())); } diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 17b56e8e4f91..aebd6901c864 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -3635,7 +3635,7 @@ void DrawingML::WriteShapeEffect( const OUString& sName, const Sequence< Propert } else if( rOuterShdwProp.Name == "rad" ) { - sal_Int32 nVal = 0; + sal_Int64 nVal = 0; rOuterShdwProp.Value >>= nVal; aOuterShdwAttrList->add( XML_rad, OString::number( nVal ).getStr() ); } @@ -3846,9 +3846,11 @@ void DrawingML::WriteGlowEffect(const Reference< XPropertySet >& rXPropSet) if(!hasGlow) return; + sal_Int32 nRad = 0; + rXPropSet->getPropertyValue("GlowEffectRad") >>= nRad; Sequence< PropertyValue > aGlowAttribs(1); aGlowAttribs[0].Name = "rad"; - aGlowAttribs[0].Value = rXPropSet->getPropertyValue("GlowEffectRad"); + aGlowAttribs[0].Value <<= oox::drawingml::convertHmmToEmu(nRad); Sequence< PropertyValue > aGlowProps(3); aGlowProps[0].Name = "Attribs"; aGlowProps[0].Value <<= aGlowAttribs; diff --git a/sd/qa/unit/data/odg/glow.odg b/sd/qa/unit/data/odg/glow.odg Binary files differindex 11d697c491da..9020f663b92c 100644 --- a/sd/qa/unit/data/odg/glow.odg +++ b/sd/qa/unit/data/odg/glow.odg diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx index a530631761a4..6bb672641d56 100644 --- a/sd/qa/unit/export-tests-ooxml2.cxx +++ b/sd/qa/unit/export-tests-ooxml2.cxx @@ -2855,15 +2855,15 @@ void SdOOXMLExportTest2::testShapeGlowEffect() bool bHasGlow = false; xShape->getPropertyValue("GlowEffect") >>= bHasGlow; CPPUNIT_ASSERT(bHasGlow); - sal_Int64 nRadius = -1; + sal_Int32 nRadius = -1; xShape->getPropertyValue("GlowEffectRad") >>= nRadius; - CPPUNIT_ASSERT_EQUAL(sal_Int64(139700l), nRadius); + CPPUNIT_ASSERT_EQUAL(sal_Int32(388), nRadius); // 139700 EMU = 388.0556 mm/100 Color nColor; xShape->getPropertyValue("GlowEffectColor") >>= nColor; CPPUNIT_ASSERT_EQUAL(Color(0xFFC000), nColor); - sal_uInt16 nTransparency; + sal_Int16 nTransparency; xShape->getPropertyValue("GlowEffectTransparency") >>= nTransparency; - CPPUNIT_ASSERT_EQUAL(sal_uInt16(60), nTransparency); + CPPUNIT_ASSERT_EQUAL(sal_Int16(60), nTransparency); } void SdOOXMLExportTest2::testTdf119087() diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 2f8dd6056a8e..516eaf6df3c9 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -1272,7 +1272,7 @@ void SdExportTest::testGlow() CPPUNIT_ASSERT(bGlowEffect); sal_Int32 nGlowEffectRad = 0; CPPUNIT_ASSERT(xShape->getPropertyValue("GlowEffectRad") >>= nGlowEffectRad); - CPPUNIT_ASSERT_EQUAL(sal_Int32(190500), nGlowEffectRad); // 15 pt = 190500 EMU + CPPUNIT_ASSERT_EQUAL(sal_Int32(529), nGlowEffectRad); // 15 pt = 529.166... mm/100 sal_Int32 nGlowEffectColor = 0; CPPUNIT_ASSERT(xShape->getPropertyValue("GlowEffectColor") >>= nGlowEffectColor); CPPUNIT_ASSERT_EQUAL(sal_Int32(0x00FF4000), nGlowEffectColor); // "Brick" @@ -1294,7 +1294,7 @@ void SdExportTest::testGlow() assertXPath( pXmlDoc, "/office:document-content/office:automatic-styles/style:style[2]/style:graphic-properties", - "glow-radius", "190.5cm"); // ??? + "glow-radius", "0.529cm"); assertXPath( pXmlDoc, "/office:document-content/office:automatic-styles/style:style[2]/style:graphic-properties", diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index e0a20087308a..591ec734c77c 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -3115,15 +3115,15 @@ void SdImportTest::testShapeGlowEffectPPTXImpoer() bool bHasGlow = false; xShape->getPropertyValue("GlowEffect") >>= bHasGlow; CPPUNIT_ASSERT(bHasGlow); - sal_Int64 nRadius = -1; + sal_Int32 nRadius = -1; xShape->getPropertyValue("GlowEffectRad") >>= nRadius; - CPPUNIT_ASSERT_EQUAL(sal_Int64(139700l), nRadius); + CPPUNIT_ASSERT_EQUAL(sal_Int32(388), nRadius); // 139700 EMU = 388.0556 mm/100 Color nColor; xShape->getPropertyValue("GlowEffectColor") >>= nColor; CPPUNIT_ASSERT_EQUAL(Color(0xFFC000), nColor); - sal_uInt16 nTransparency; + sal_Int16 nTransparency; xShape->getPropertyValue("GlowEffectTransparency") >>= nTransparency; - CPPUNIT_ASSERT_EQUAL(sal_uInt16(60), nTransparency); + CPPUNIT_ASSERT_EQUAL(sal_Int16(60), nTransparency); } CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx index 193d94492756..e4f67c0ed665 100644 --- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx +++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx @@ -540,7 +540,7 @@ namespace drawinglayer::primitive2d const uno::Sequence< beans::PropertyValue > xViewParameters; geometry::ViewInformation2D aViewInformation2D(xViewParameters); aRetval[0] = Primitive2DReference( - new GlowPrimitive2D(rGlow.getColor(), rGlow.getRadius() / 360.0, rContent)); + new GlowPrimitive2D(rGlow.getColor(), rGlow.getRadius(), rContent)); aRetval[1] = Primitive2DReference(new GroupPrimitive2D(rContent)); return aRetval; } diff --git a/svx/source/sidebar/glow/GlowPropertyPanel.cxx b/svx/source/sidebar/glow/GlowPropertyPanel.cxx index ef3a1951e128..74a3d26d84ba 100644 --- a/svx/source/sidebar/glow/GlowPropertyPanel.cxx +++ b/svx/source/sidebar/glow/GlowPropertyPanel.cxx @@ -21,15 +21,6 @@ #include <svx/xcolit.hxx> #include <rtl/math.hxx> -namespace -{ -sal_Int32 EMU2Pt(sal_Int32 nEMU) -{ - return static_cast<sal_Int32>(rtl::math::round(nEMU / 12700.0)); -} -sal_Int32 Pt2EMU(sal_Int32 nPt) { return nPt * 12700; } -} - namespace svx::sidebar { GlowPropertyPanel::GlowPropertyPanel(vcl::Window* pParent, @@ -96,7 +87,7 @@ IMPL_LINK_NOARG(GlowPropertyPanel, ModifyGlowColorHdl, ColorListBox&, void) IMPL_LINK_NOARG(GlowPropertyPanel, ModifyGlowRadiusHdl, weld::MetricSpinButton&, void) { - SdrMetricItem aItem(SDRATTR_GLOW_RAD, Pt2EMU(mxGlowRadius->get_value(FieldUnit::POINT))); + SdrMetricItem aItem(SDRATTR_GLOW_RAD, mxGlowRadius->get_value(FieldUnit::MM_100TH)); mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_RADIUS, SfxCallMode::RECORD, { &aItem }); } @@ -159,7 +150,7 @@ void GlowPropertyPanel::NotifyItemUpdate(sal_uInt16 nSID, SfxItemState eState, const SdrMetricItem* pRadiusItem = dynamic_cast<const SdrMetricItem*>(pState); if (pRadiusItem) { - mxGlowRadius->set_value(EMU2Pt(pRadiusItem->GetValue()), FieldUnit::POINT); + mxGlowRadius->set_value(pRadiusItem->GetValue(), FieldUnit::MM_100TH); } } } diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index e52e250046a4..a799d69ddf6e 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -246,9 +246,13 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testShapeEffectPreservation, "shape-effect-p 0 ); // should not be present // 7th shape with several effects: glow, inner shadow and reflection - assertXPath(pXmlDoc, "/w:document/w:body/w:p[8]/w:r/mc:AlternateContent/mc:Choice/w:drawing/" - "wp:anchor/a:graphic/a:graphicData/wps:wsp/wps:spPr/a:effectLst/a:glow", - "rad", "63500"); + // We import glow radius (in EMU in OOXML) into integral mm100 internal representation, then + // export back into EMUs. This results in inaccuracies. + OUString rad = getXPath(pXmlDoc, + "/w:document/w:body/w:p[8]/w:r/mc:AlternateContent/mc:Choice/w:drawing/" + "wp:anchor/a:graphic/a:graphicData/wps:wsp/wps:spPr/a:effectLst/a:glow", + "rad"); + CPPUNIT_ASSERT_DOUBLES_EQUAL(63500, rad.toInt64(), 150); // actually, it returns 63360 assertXPath(pXmlDoc, "/w:document/w:body/w:p[8]/w:r/mc:AlternateContent/mc:Choice/w:drawing/" "wp:anchor/a:graphic/a:graphicData/wps:wsp/wps:spPr/a:effectLst/a:glow/a:srgbClr", "val", "eb2722"); |