summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svddrgmt.cxx15
-rw-r--r--svx/source/svdraw/svdoashp.cxx50
-rw-r--r--svx/source/svdraw/svdobj.cxx55
-rw-r--r--svx/source/svdraw/svdocapt.cxx26
-rw-r--r--svx/source/svdraw/svdomeas.cxx48
-rw-r--r--svx/source/svdraw/svdopath.cxx62
-rw-r--r--svx/source/svdraw/svdotext.cxx50
-rw-r--r--svx/source/unodraw/unoshap2.cxx24
-rw-r--r--svx/source/unodraw/unoshape.cxx84
9 files changed, 109 insertions, 305 deletions
diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx
index 347724576bcb..be78cd90fc93 100644
--- a/svx/source/svdraw/svddrgmt.cxx
+++ b/svx/source/svdraw/svddrgmt.cxx
@@ -68,6 +68,7 @@
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <drawinglayer/attribute/sdrlineattribute.hxx>
#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+#include <svl/itempool.hxx>
#include <map>
#include <vector>
@@ -3804,17 +3805,23 @@ bool SdrDragCrop::EndSdrDrag(bool /*bCopy*/)
return false;
}
- const GraphicObject& rGraphicObject = pObj->GetGraphicObject();
- const MapMode aMapMode100thmm(MapUnit::Map100thMM);
+ const GraphicObject& rGraphicObject(pObj->GetGraphicObject());
+ // tdf#117145 Usually Writer will go the bExternal path (see above), but more correct for
+ // the future is to use the MapMode from the SdrModel/SfxItemPool if the Writer's current
+ // special handling should be unified to this path in the future. Usually it *should* be
+ // MapUnit::Map100thMM, but better do not mix up Units.
+ // Checked now what SwVirtFlyDrawObj::NbcCrop is doing - it calculates everything forced
+ // to MapUnit::Map100thMM, but extracts/packs Twips to the used SdrGrafCropItem in Writer.
+ const MapMode aMapModePool(pObj->getSdrModelFromSdrObject().GetItemPool().GetMetric(0));
Size aGraphicSize(rGraphicObject.GetPrefSize());
if(MapUnit::MapPixel == rGraphicObject.GetPrefMapMode().GetMapUnit())
{
- aGraphicSize = Application::GetDefaultDevice()->PixelToLogic(aGraphicSize, aMapMode100thmm);
+ aGraphicSize = Application::GetDefaultDevice()->PixelToLogic(aGraphicSize, aMapModePool);
}
else
{
- aGraphicSize = OutputDevice::LogicToLogic(aGraphicSize, rGraphicObject.GetPrefMapMode(), aMapMode100thmm);
+ aGraphicSize = OutputDevice::LogicToLogic(aGraphicSize, rGraphicObject.GetPrefMapMode(), aMapModePool);
}
if(0 == aGraphicSize.Width() || 0 == aGraphicSize.Height())
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index 26a947a830cb..0479eb198dcd 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -2913,31 +2913,6 @@ void SdrObjCustomShape::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix,
aGeo.nShearAngle = 0;
aGeo.RecalcTan();
- // force metric to pool metric
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplMMToTwips(aTranslate.getX()));
- aTranslate.setY(ImplMMToTwips(aTranslate.getY()));
-
- // size
- aScale.setX(ImplMMToTwips(aScale.getX()));
- aScale.setY(ImplMMToTwips(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRSetBaseGeometry: Missing unit translation to PoolMetric!");
- }
- }
- }
-
// if anchor is used, make position relative to it
if(getSdrModelFromSdrObject().IsWriter())
{
@@ -3064,31 +3039,6 @@ bool SdrObjCustomShape::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegf
}
}
- // force MapUnit to 100th mm
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplTwipsToMM(aTranslate.getX()));
- aTranslate.setY(ImplTwipsToMM(aTranslate.getY()));
-
- // size
- aScale.setX(ImplTwipsToMM(aScale.getX()));
- aScale.setY(ImplTwipsToMM(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRGetBaseGeometry: Missing unit translation to 100th mm!");
- }
- }
- }
-
// build matrix
rMatrix = basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
aScale,
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 83b627998226..dbe1b1b66c2e 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1917,11 +1917,6 @@ const SfxPoolItem& SdrObject::GetObjectItem(const sal_uInt16 nWhich) const
return GetObjectItemSet().Get(nWhich);
}
-MapUnit SdrObject::GetObjectMapUnit() const
-{
- return GetObjectItemPool().GetMetric(0);
-}
-
const SfxPoolItem& SdrObject::GetMergedItem(const sal_uInt16 nWhich) const
{
return GetMergedItemSet().Get(nWhich);
@@ -2872,31 +2867,6 @@ bool SdrObject::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPo
}
}
- // force MapUnit to 100th mm
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplTwipsToMM(aTranslate.getX()));
- aTranslate.setY(ImplTwipsToMM(aTranslate.getY()));
-
- // size
- aScale.setX(ImplTwipsToMM(aScale.getX()));
- aScale.setY(ImplTwipsToMM(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRGetBaseGeometry: Missing unit translation to 100th mm!");
- }
- }
- }
-
// build matrix
rMatrix = basegfx::utils::createScaleTranslateB2DHomMatrix(aScale, aTranslate);
@@ -2922,31 +2892,6 @@ void SdrObject::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const ba
aScale.setY(fabs(aScale.getY()));
}
- // force metric to pool metric
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplMMToTwips(aTranslate.getX()));
- aTranslate.setY(ImplMMToTwips(aTranslate.getY()));
-
- // size
- aScale.setX(ImplMMToTwips(aScale.getX()));
- aScale.setY(ImplMMToTwips(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRSetBaseGeometry: Missing unit translation to PoolMetric!");
- }
- }
- }
-
// if anchor is used, make position relative to it
if(getSdrModelFromSdrObject().IsWriter())
{
diff --git a/svx/source/svdraw/svdocapt.cxx b/svx/source/svdraw/svdocapt.cxx
index 47d51561375e..035582dda722 100644
--- a/svx/source/svdraw/svdocapt.cxx
+++ b/svx/source/svdraw/svdocapt.cxx
@@ -758,32 +758,6 @@ void SdrCaptionObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, cons
handleNegativeScale(aScale, &fRotate);
- // force metric to pool metric
- MapUnit eMapUnit(getSdrModelFromSdrObject().GetItemPool().GetMetric(0));
-
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplMMToTwips(aTranslate.getX()));
- aTranslate.setY(ImplMMToTwips(aTranslate.getY()));
-
- // size
- aScale.setX(ImplMMToTwips(aScale.getX()));
- aScale.setY(ImplMMToTwips(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRSetBaseGeometry: Missing unit translation to PoolMetric!");
- }
- }
- }
-
// if anchor is used, make position relative to it
if(getSdrModelFromSdrObject().IsWriter())
{
diff --git a/svx/source/svdraw/svdomeas.cxx b/svx/source/svdraw/svdomeas.cxx
index 9cbb15df0e17..64b1db6891ae 100644
--- a/svx/source/svdraw/svdomeas.cxx
+++ b/svx/source/svdraw/svdomeas.cxx
@@ -1392,31 +1392,6 @@ bool SdrMeasureObj::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B
}
}
- // force MapUnit to 100th mm
- MapUnit eMapUnit = getSdrModelFromSdrObject().GetItemPool().GetMetric(0);
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplTwipsToMM(aTranslate.getX()));
- aTranslate.setY(ImplTwipsToMM(aTranslate.getY()));
-
- // size
- aScale.setX(ImplTwipsToMM(aScale.getX()));
- aScale.setY(ImplTwipsToMM(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRGetBaseGeometry: Missing unit translation to 100th mm!");
- }
- }
- }
-
// build return value matrix
rMatrix = basegfx::utils::createScaleTranslateB2DHomMatrix(aScale, aTranslate);
@@ -1429,29 +1404,6 @@ void SdrMeasureObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, cons
basegfx::B2DPoint aPosA(rMatrix * basegfx::B2DPoint(0.0, 0.0));
basegfx::B2DPoint aPosB(rMatrix * basegfx::B2DPoint(1.0, 0.0));
- // force metric to pool metric
- MapUnit eMapUnit = getSdrModelFromSdrObject().GetItemPool().GetMetric(0);
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aPosA.setX(ImplMMToTwips(aPosA.getX()));
- aPosA.setY(ImplMMToTwips(aPosA.getY()));
- aPosB.setX(ImplMMToTwips(aPosB.getX()));
- aPosB.setY(ImplMMToTwips(aPosB.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRSetBaseGeometry: Missing unit translation to PoolMetric!");
- }
- }
- }
-
if( getSdrModelFromSdrObject().IsWriter() )
{
// if anchor is used, make position relative to it
diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx
index 5270b223dc77..01e5df703421 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -2894,37 +2894,6 @@ bool SdrPathObj::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DP
}
}
- // force MapUnit to 100th mm
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplTwipsToMM(aTranslate.getX()));
- aTranslate.setY(ImplTwipsToMM(aTranslate.getY()));
-
- // size
- aScale.setX(ImplTwipsToMM(aScale.getX()));
- aScale.setY(ImplTwipsToMM(aScale.getY()));
-
- // polygon
- basegfx::B2DHomMatrix aTwipsToMM;
- const double fFactorTwipsToMM(127.0 / 72.0);
- aTwipsToMM.scale(fFactorTwipsToMM, fFactorTwipsToMM);
- rPolyPolygon.transform(aTwipsToMM);
-
- break;
- }
- default:
- {
- OSL_FAIL("TRGetBaseGeometry: Missing unit translation to 100th mm!");
- }
- }
- }
-
// build return value matrix
rMatrix = basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
aScale,
@@ -2964,37 +2933,6 @@ void SdrPathObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
aGeo.nShearAngle = 0;
aGeo.RecalcTan();
- // force metric to pool metric
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplMMToTwips(aTranslate.getX()));
- aTranslate.setY(ImplMMToTwips(aTranslate.getY()));
-
- // size
- aScale.setX(ImplMMToTwips(aScale.getX()));
- aScale.setY(ImplMMToTwips(aScale.getY()));
-
- // polygon
- basegfx::B2DHomMatrix aMMToTwips;
- const double fFactorMMToTwips(72.0 / 127.0);
- aMMToTwips.scale(fFactorMMToTwips, fFactorMMToTwips);
- aNewPolyPolygon.transform(aMMToTwips);
-
- break;
- }
- default:
- {
- OSL_FAIL("TRSetBaseGeometry: Missing unit translation to PoolMetric!");
- }
- }
- }
-
if( getSdrModelFromSdrObject().IsWriter() )
{
// if anchor is used, make position relative to it
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index d221d28b1530..d45af2c7b181 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -1643,31 +1643,6 @@ bool SdrTextObj::TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DP
}
}
- // force MapUnit to 100th mm
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplTwipsToMM(aTranslate.getX()));
- aTranslate.setY(ImplTwipsToMM(aTranslate.getY()));
-
- // size
- aScale.setX(ImplTwipsToMM(aScale.getX()));
- aScale.setY(ImplTwipsToMM(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRGetBaseGeometry: Missing unit translation to 100th mm!");
- }
- }
- }
-
// build matrix
rMatrix = basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
aScale,
@@ -1708,31 +1683,6 @@ void SdrTextObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b
aGeo.nShearAngle = 0;
aGeo.RecalcTan();
- // force metric to pool metric
- const MapUnit eMapUnit(GetObjectMapUnit());
- if(eMapUnit != MapUnit::Map100thMM)
- {
- switch(eMapUnit)
- {
- case MapUnit::MapTwip :
- {
- // position
- aTranslate.setX(ImplMMToTwips(aTranslate.getX()));
- aTranslate.setY(ImplMMToTwips(aTranslate.getY()));
-
- // size
- aScale.setX(ImplMMToTwips(aScale.getX()));
- aScale.setY(ImplMMToTwips(aScale.getY()));
-
- break;
- }
- default:
- {
- OSL_FAIL("TRSetBaseGeometry: Missing unit translation to PoolMetric!");
- }
- }
- }
-
// if anchor is used, make position relative to it
if( getSdrModelFromSdrObject().IsWriter() )
{
diff --git a/svx/source/unodraw/unoshap2.cxx b/svx/source/unodraw/unoshap2.cxx
index 2c4c2999a1cf..6a726a7deca0 100644
--- a/svx/source/unodraw/unoshap2.cxx
+++ b/svx/source/unodraw/unoshap2.cxx
@@ -985,6 +985,11 @@ bool SvxShapePolyPolygon::setPropertyValueImpl( const OUString& rName, const Sfx
GetSdrObject()->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
aNewPolyPolygon = ImplSvxPointSequenceSequenceToB2DPolyPolygon(s);
+
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aNewPolyPolygon from 100thmm to app-specific
+ ForceMetricToItemPoolMetric(aNewPolyPolygon);
+
GetSdrObject()->TRSetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
}
return true;
@@ -1089,8 +1094,14 @@ bool SvxShapePolyPolygon::getPropertyValueImpl( const OUString& rName, const Sfx
basegfx::B2DHomMatrix aNewHomogenMatrix;
if(HasSdrObject())
+ {
GetSdrObject()->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aNewPolyPolygon from app-specific to 100thmm
+ ForceMetricTo100th_mm(aNewPolyPolygon);
+ }
+
drawing::PointSequenceSequence aRetval(aNewPolyPolygon.count());
B2DPolyPolygonToSvxPointSequenceSequence(aNewPolyPolygon, aRetval);
rValue <<= aRetval;
@@ -1196,8 +1207,12 @@ bool SvxShapePolyPolygonBezier::setPropertyValueImpl( const OUString& rName, con
basegfx::B2DHomMatrix aNewHomogenMatrix;
GetSdrObject()->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
- aNewPolyPolygon = basegfx::unotools::polyPolygonBezierToB2DPolyPolygon(
- *s);
+ aNewPolyPolygon = basegfx::unotools::polyPolygonBezierToB2DPolyPolygon(*s);
+
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aNewPolyPolygon from 100thmm to app-specific
+ ForceMetricToItemPoolMetric(aNewPolyPolygon);
+
GetSdrObject()->TRSetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
}
return true;
@@ -1232,6 +1247,11 @@ bool SvxShapePolyPolygonBezier::getPropertyValueImpl( const OUString& rName, con
basegfx::B2DPolyPolygon aNewPolyPolygon;
basegfx::B2DHomMatrix aNewHomogenMatrix;
GetSdrObject()->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
+
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aNewPolyPolygon from app-specific to 100thmm
+ ForceMetricTo100th_mm(aNewPolyPolygon);
+
drawing::PolyPolygonBezierCoords aRetval;
basegfx::unotools::b2DPolyPolygonToPolyPolygonBezier(aNewPolyPolygon, aRetval);
diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx
index e12bbf4c5c93..33299173e71e 100644
--- a/svx/source/unodraw/unoshape.cxx
+++ b/svx/source/unodraw/unoshape.cxx
@@ -471,7 +471,6 @@ void SvxShape::ForceMetricToItemPoolMetric(Pair& rPoint) const throw()
}
}
-// Reintroduction of fix for issue i59051 (#i108851#)
void SvxShape::ForceMetricToItemPoolMetric(basegfx::B2DPolyPolygon& rPolyPolygon) const throw()
{
DBG_TESTSOLARMUTEX();
@@ -500,6 +499,35 @@ void SvxShape::ForceMetricToItemPoolMetric(basegfx::B2DPolyPolygon& rPolyPolygon
}
}
+void SvxShape::ForceMetricToItemPoolMetric(basegfx::B2DHomMatrix& rB2DHomMatrix) const throw()
+{
+ DBG_TESTSOLARMUTEX();
+ if(HasSdrObject())
+ {
+ MapUnit eMapUnit(GetSdrObject()->getSdrModelFromSdrObject().GetItemPool().GetMetric(0));
+ if(eMapUnit != MapUnit::Map100thMM)
+ {
+ switch(eMapUnit)
+ {
+ case MapUnit::MapTwip :
+ {
+ const double fMMToTWIPS(72.0 / 127.0);
+ const basegfx::utils::B2DHomMatrixBufferedDecompose aDecomposedTransform(rB2DHomMatrix);
+ rB2DHomMatrix = basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
+ aDecomposedTransform.getScale() * fMMToTWIPS,
+ aDecomposedTransform.getShearX(),
+ aDecomposedTransform.getRotate(),
+ aDecomposedTransform.getTranslate() * fMMToTWIPS);
+ break;
+ }
+ default:
+ {
+ OSL_FAIL("Missing unit translation to PoolMetric!");
+ }
+ }
+ }
+ }
+}
void SvxShape::ForceMetricTo100th_mm(Pair& rPoint) const throw()
{
@@ -527,7 +555,6 @@ void SvxShape::ForceMetricTo100th_mm(Pair& rPoint) const throw()
}
}
-// Reintroduction of fix for issue i59051 (#i108851#)
void SvxShape::ForceMetricTo100th_mm(basegfx::B2DPolyPolygon& rPolyPolygon) const throw()
{
DBG_TESTSOLARMUTEX();
@@ -556,6 +583,36 @@ void SvxShape::ForceMetricTo100th_mm(basegfx::B2DPolyPolygon& rPolyPolygon) cons
}
}
+void SvxShape::ForceMetricTo100th_mm(basegfx::B2DHomMatrix& rB2DHomMatrix) const throw()
+{
+ DBG_TESTSOLARMUTEX();
+ MapUnit eMapUnit = MapUnit::Map100thMM;
+ if(HasSdrObject())
+ {
+ eMapUnit = GetSdrObject()->getSdrModelFromSdrObject().GetItemPool().GetMetric(0);
+ if(eMapUnit != MapUnit::Map100thMM)
+ {
+ switch(eMapUnit)
+ {
+ case MapUnit::MapTwip :
+ {
+ const double fTWIPSToMM(127.0 / 72.0);
+ const basegfx::utils::B2DHomMatrixBufferedDecompose aDecomposedTransform(rB2DHomMatrix);
+ rB2DHomMatrix = basegfx::utils::createScaleShearXRotateTranslateB2DHomMatrix(
+ aDecomposedTransform.getScale() * fTWIPSToMM,
+ aDecomposedTransform.getShearX(),
+ aDecomposedTransform.getRotate(),
+ aDecomposedTransform.getTranslate() * fTWIPSToMM);
+ break;
+ }
+ default:
+ {
+ OSL_FAIL("Missing unit translation to 100th mm!");
+ }
+ }
+ }
+ }
+}
void SvxItemPropertySet_ObtainSettingsFromPropertySet(const SvxItemPropertySet& rPropSet,
SfxItemSet& rSet, const uno::Reference< beans::XPropertySet >& xSet, const SfxItemPropertyMap* pMap )
@@ -2031,6 +2088,10 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
{
Point aVclPoint( aPnt.X, aPnt.Y );
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aVclPoint from 100thmm to app-specific
+ ForceMetricToItemPoolMetric(aVclPoint);
+
// #90763# position is relative to top left, make it absolute
basegfx::B2DPolyPolygon aNewPolyPolygon;
basegfx::B2DHomMatrix aNewHomogenMatrix;
@@ -2039,9 +2100,6 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
aVclPoint.AdjustX(basegfx::fround(aNewHomogenMatrix.get(0, 2)) );
aVclPoint.AdjustY(basegfx::fround(aNewHomogenMatrix.get(1, 2)) );
- // #88657# metric of pool maybe twips (writer)
- ForceMetricToItemPoolMetric(aVclPoint);
-
// #88491# position relative to anchor
if( GetSdrObject()->getSdrModelFromSdrObject().IsWriter() )
{
@@ -2062,6 +2120,7 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
basegfx::B2DPolyPolygon aNewPolyPolygon;
basegfx::B2DHomMatrix aNewHomogenMatrix;
+ // tdf#117145 SdrModel data is app-specific
GetSdrObject()->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
aNewHomogenMatrix.set(0, 0, aMatrix.Line1.Column1);
@@ -2074,6 +2133,10 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
aNewHomogenMatrix.set(2, 1, aMatrix.Line3.Column2);
aNewHomogenMatrix.set(2, 2, aMatrix.Line3.Column3);
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aNewHomogenMatrix from 100thmm to app-specific
+ ForceMetricToItemPoolMetric(aNewHomogenMatrix);
+
GetSdrObject()->TRSetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
return true;
}
@@ -2474,9 +2537,6 @@ bool SvxShape::getPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
aVclPoint -= GetSdrObject()->GetAnchorPos();
}
- // #88657# metric of pool maybe twips (writer)
- ForceMetricTo100th_mm(aVclPoint);
-
// #90763# pos is absolute, make it relative to top left
basegfx::B2DPolyPolygon aNewPolyPolygon;
basegfx::B2DHomMatrix aNewHomogenMatrix;
@@ -2485,6 +2545,10 @@ bool SvxShape::getPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
aVclPoint.AdjustX( -(basegfx::fround(aNewHomogenMatrix.get(0, 2))) );
aVclPoint.AdjustY( -(basegfx::fround(aNewHomogenMatrix.get(1, 2))) );
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aVclPoint from app-specific to 100thmm
+ ForceMetricTo100th_mm(aVclPoint);
+
awt::Point aPnt( aVclPoint.X(), aVclPoint.Y() );
rValue <<= aPnt;
break;
@@ -2497,6 +2561,10 @@ bool SvxShape::getPropertyValueImpl( const OUString&, const SfxItemPropertySimpl
GetSdrObject()->TRGetBaseGeometry(aNewHomogenMatrix, aNewPolyPolygon);
drawing::HomogenMatrix3 aMatrix;
+ // tdf#117145 metric of SdrModel is app-specific, metric of UNO API is 100thmm
+ // Need to adapt aNewHomogenMatrix from app-specific to 100thmm
+ ForceMetricTo100th_mm(aNewHomogenMatrix);
+
aMatrix.Line1.Column1 = aNewHomogenMatrix.get(0, 0);
aMatrix.Line1.Column2 = aNewHomogenMatrix.get(0, 1);
aMatrix.Line1.Column3 = aNewHomogenMatrix.get(0, 2);