summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oox/source/drawingml/shape.cxx2
-rw-r--r--oox/source/export/drawingml.cxx6
-rw-r--r--sd/qa/unit/data/odg/glow.odgbin8297 -> 8873 bytes
-rw-r--r--sd/qa/unit/export-tests-ooxml2.cxx8
-rw-r--r--sd/qa/unit/export-tests.cxx4
-rw-r--r--sd/qa/unit/import-tests.cxx8
-rw-r--r--svx/source/sdr/primitive2d/sdrdecompositiontools.cxx2
-rw-r--r--svx/source/sidebar/glow/GlowPropertyPanel.cxx13
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport7.cxx10
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
index 11d697c491da..9020f663b92c 100644
--- a/sd/qa/unit/data/odg/glow.odg
+++ b/sd/qa/unit/data/odg/glow.odg
Binary files differ
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");