Base scale on 1.0, not on 100.0
Simplifies things by avoiding many repeated multiplications / divisions by 100 during calculations. Change-Id: Ib063d343549139c8d83e5b06570dc61f39ea0df6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165666 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
@@ -780,34 +780,34 @@ private:
|
||||
|
||||
double scaleXSpacingValue(tools::Long nXValue) const
|
||||
{
|
||||
if (!maStatus.DoStretch() || maScalingParameters.fSpacingX == 100.0)
|
||||
if (!maStatus.DoStretch() || maScalingParameters.fSpacingX == 1.0)
|
||||
return nXValue;
|
||||
|
||||
return double(nXValue) * (maScalingParameters.fSpacingX / 100.0);
|
||||
return double(nXValue) * maScalingParameters.fSpacingX;
|
||||
}
|
||||
|
||||
double scaleYSpacingValue(sal_uInt16 nYValue) const
|
||||
{
|
||||
if (!maStatus.DoStretch() || maScalingParameters.fSpacingY == 100.0)
|
||||
if (!maStatus.DoStretch() || maScalingParameters.fSpacingY == 1.0)
|
||||
return nYValue;
|
||||
|
||||
return double(nYValue) * (maScalingParameters.fSpacingY / 100.0);
|
||||
return double(nYValue) * maScalingParameters.fSpacingY;
|
||||
}
|
||||
|
||||
double scaleXFontValue(tools::Long nXValue) const
|
||||
{
|
||||
if (!maStatus.DoStretch() || (maScalingParameters.fFontX == 100.0))
|
||||
if (!maStatus.DoStretch() || (maScalingParameters.fFontX == 1.0))
|
||||
return nXValue;
|
||||
|
||||
return double(nXValue) * (maScalingParameters.fFontX / 100.0);
|
||||
return double(nXValue) * maScalingParameters.fFontX;
|
||||
}
|
||||
|
||||
double scaleYFontValue(sal_uInt16 nYValue) const
|
||||
{
|
||||
if (!maStatus.DoStretch() || (maScalingParameters.fFontY == 100.0))
|
||||
if (!maStatus.DoStretch() || (maScalingParameters.fFontY == 1.0))
|
||||
return nYValue;
|
||||
|
||||
return double(nYValue) * (maScalingParameters.fFontY / 100.0);
|
||||
return double(nYValue) * maScalingParameters.fFontY;
|
||||
}
|
||||
|
||||
void setRoundToNearestPt(bool bRound) { mbRoundToNearestPt = bRound; }
|
||||
|
||||
@@ -447,19 +447,19 @@ namespace
|
||||
{
|
||||
constexpr std::array<ScalingParameters, 13> constScaleLevels =
|
||||
{
|
||||
ScalingParameters{100.0, 100.0, 100.0, 90.0 },
|
||||
ScalingParameters{ 92.5, 92.5, 100.0, 90.0 },
|
||||
ScalingParameters{ 92.5, 92.5, 100.0, 80.0 },
|
||||
ScalingParameters{ 85.0, 85.0, 100.0, 90.0 },
|
||||
ScalingParameters{ 85.0, 85.0, 100.0, 80.0 },
|
||||
ScalingParameters{ 77.5, 77.5, 100.0, 80.0 },
|
||||
ScalingParameters{ 70.0, 70.0, 100.0, 80.0 },
|
||||
ScalingParameters{ 62.5, 62.5, 100.0, 80.0 },
|
||||
ScalingParameters{ 55.0, 55.0, 100.0, 80.0 },
|
||||
ScalingParameters{ 47.5, 47.5, 100.0, 80.0 },
|
||||
ScalingParameters{ 40.0, 40.0, 100.0, 80.0 },
|
||||
ScalingParameters{ 32.5, 32.5, 100.0, 80.0 },
|
||||
ScalingParameters{ 25.0, 25.0, 100.0, 80.0 },
|
||||
ScalingParameters{ 1.000, 1.000, 1.0, 0.9 },
|
||||
ScalingParameters{ 0.925, 0.925, 1.0, 0.9 },
|
||||
ScalingParameters{ 0.925, 0.925, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.850, 0.850, 1.0, 0.9 },
|
||||
ScalingParameters{ 0.850, 0.850, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.775, 0.775, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.700, 0.700, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.625, 0.625, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.550, 0.550, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.475, 0.475, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.400, 0.400, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.325, 0.325, 1.0, 0.8 },
|
||||
ScalingParameters{ 0.250, 0.250, 1.0, 0.8 },
|
||||
};
|
||||
|
||||
} // end anonymous ns
|
||||
@@ -1069,8 +1069,8 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
|
||||
tools::Long nCurPos = nTmpWidth + nStartX;
|
||||
// consider scaling
|
||||
double fFontScalingX = maScalingParameters.fFontX;
|
||||
if (maStatus.DoStretch() && (fFontScalingX != 100.0))
|
||||
nCurPos = basegfx::fround(double(nCurPos) * 100.0 / std::max(fFontScalingX, 1.0));
|
||||
if (maStatus.DoStretch() && (fFontScalingX != 1.0))
|
||||
nCurPos = basegfx::fround(double(nCurPos) / std::max(fFontScalingX, 0.01));
|
||||
|
||||
short nAllSpaceBeforeText = short(rLRItem.GetTextLeft());
|
||||
aCurrentTab.aTabStop = pNode->GetContentAttribs().FindTabStop( nCurPos - nAllSpaceBeforeText , maEditDoc.GetDefTab() );
|
||||
@@ -1593,7 +1593,7 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
|
||||
sal_uInt16 nPropLineSpace = rLSItem.GetPropLineSpace();
|
||||
double fProportionalScale = double(nPropLineSpace) / 100.0;
|
||||
constexpr const double f80Percent = 8.0 / 10.0;
|
||||
double fSpacingFactor = maScalingParameters.fSpacingY / 100.0;
|
||||
double fSpacingFactor = maScalingParameters.fSpacingY;
|
||||
if (nPropLineSpace && nPropLineSpace < 100)
|
||||
{
|
||||
// Adapted code from sw/source/core/text/itrform2.cxx
|
||||
@@ -1617,9 +1617,9 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
|
||||
}
|
||||
else if (rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Off)
|
||||
{
|
||||
if (maScalingParameters.fSpacingY < 100.0)
|
||||
if (maScalingParameters.fSpacingY < 1.0)
|
||||
{
|
||||
double fSpacingFactor = maScalingParameters.fSpacingY / 100.0;
|
||||
double fSpacingFactor = maScalingParameters.fSpacingY;
|
||||
sal_uInt16 nPropLineSpace = basegfx::fround(100.0 * fSpacingFactor);
|
||||
if (nPropLineSpace && nPropLineSpace < 100)
|
||||
{
|
||||
@@ -3085,14 +3085,14 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, sal_Int32 nPos, SvxFont& rFo
|
||||
|
||||
if (maStatus.DoStretch())
|
||||
{
|
||||
if (maScalingParameters.fFontY != 100.0)
|
||||
if (maScalingParameters.fFontY != 1.0)
|
||||
{
|
||||
double fHeightRounded = roundToNearestPt(aRealSz.Height());
|
||||
double fNewHeight = fHeightRounded * (maScalingParameters.fFontY / 100.0);
|
||||
double fNewHeight = fHeightRounded * maScalingParameters.fFontY;
|
||||
fNewHeight = roundToNearestPt(fNewHeight);
|
||||
aRealSz.setHeight(basegfx::fround(fNewHeight));
|
||||
}
|
||||
if (maScalingParameters.fFontX != 100.0)
|
||||
if (maScalingParameters.fFontX != 1.0)
|
||||
{
|
||||
auto fFontX = maScalingParameters.fFontX;
|
||||
auto fFontY = maScalingParameters.fFontY;
|
||||
@@ -3103,7 +3103,7 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, sal_Int32 nPos, SvxFont& rFo
|
||||
else
|
||||
{
|
||||
double fWidthRounded = roundToNearestPt(aRealSz.Width());
|
||||
double fNewWidth = fWidthRounded * (fFontX / 100.0);
|
||||
double fNewWidth = fWidthRounded * fFontX;
|
||||
fNewWidth = roundToNearestPt(fNewWidth);
|
||||
aRealSz.setWidth(basegfx::fround(fNewWidth));
|
||||
|
||||
@@ -3120,15 +3120,15 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, sal_Int32 nPos, SvxFont& rFo
|
||||
>0 >100 > (Proportional)
|
||||
<0 >100 < (The amount, thus disproportional)
|
||||
*/
|
||||
if (nKerning < 0 && fFontX > 100.0)
|
||||
if (nKerning < 0 && fFontX > 1.0)
|
||||
{
|
||||
// disproportional
|
||||
nKerning = basegfx::fround((double(nKerning) * 100.0) / fFontX);
|
||||
nKerning = basegfx::fround(nKerning / fFontX);
|
||||
}
|
||||
else if ( nKerning )
|
||||
{
|
||||
// Proportional
|
||||
nKerning = basegfx::fround((double(nKerning) * fFontX) / 100.0);
|
||||
nKerning = basegfx::fround(nKerning * fFontX);
|
||||
}
|
||||
rFont.SetFixKerning( static_cast<short>(nKerning) );
|
||||
}
|
||||
|
||||
@@ -846,10 +846,8 @@ vcl::Font Outliner::ImpCalcBulletFont( sal_Int32 nPara ) const
|
||||
|
||||
// Use original scale...
|
||||
|
||||
double fFontScaleY = pFmt->GetBulletRelSize() * (getScalingParameters().fFontY / 100.0);
|
||||
double fScaledLineHeight = aStdFont.GetFontSize().Height();
|
||||
fScaledLineHeight *= fFontScaleY * 10;
|
||||
fScaledLineHeight /= 1000.0;
|
||||
double fFontScaleY = pFmt->GetBulletRelSize() / 100.0 * getScalingParameters().fFontY;
|
||||
double fScaledLineHeight = aStdFont.GetFontSize().Height() * fFontScaleY;
|
||||
|
||||
aBulletFont.SetAlignment( ALIGN_BOTTOM );
|
||||
aBulletFont.SetFontSize(Size(0, basegfx::fround(fScaledLineHeight)));
|
||||
@@ -891,7 +889,7 @@ void Outliner::PaintBullet(sal_Int32 nPara, const Point& rStartPos, const Point&
|
||||
|
||||
tools::Rectangle aBulletArea( ImpCalcBulletArea( nPara, true, false ) );
|
||||
|
||||
double fSpacingFactorX = getScalingParameters().fSpacingX / 100.0;
|
||||
double fSpacingFactorX = getScalingParameters().fSpacingX;
|
||||
|
||||
tools::Long nStretchBulletX = basegfx::fround(double(aBulletArea.Left()) * fSpacingFactorX);
|
||||
tools::Long nStretchBulletWidth = basegfx::fround(double(aBulletArea.GetWidth()) * fSpacingFactorX);
|
||||
|
||||
@@ -158,21 +158,15 @@ struct ParagraphInfos
|
||||
|
||||
struct ScalingParameters
|
||||
{
|
||||
double fFontX = 100.0;
|
||||
double fFontY = 100.0;
|
||||
double fSpacingX = 100.0;
|
||||
double fSpacingY = 100.0;
|
||||
double fFontX = 1.0;
|
||||
double fFontY = 1.0;
|
||||
double fSpacingX = 1.0;
|
||||
double fSpacingY = 1.0;
|
||||
|
||||
bool operator==(const ScalingParameters& rOther) const
|
||||
{
|
||||
return fFontX == rOther.fFontX
|
||||
&& fFontY == rOther.fFontY
|
||||
&& fSpacingX == rOther.fSpacingX
|
||||
&& fSpacingY == rOther.fSpacingY;
|
||||
}
|
||||
bool operator==(const ScalingParameters& rOther) const = default;
|
||||
bool areValuesDefault()
|
||||
{
|
||||
return fFontX == 100.0 && fFontY == 100.0 && fSpacingX == 100.0 && fSpacingY == 100.0;
|
||||
return fFontX == 1.0 && fFontY == 1.0 && fSpacingX == 1.0 && fSpacingY == 1.0;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -240,8 +240,8 @@ ContextHandlerRef TextBodyPropertiesContext::onCreateContext( sal_Int32 aElement
|
||||
mrTextBodyProp.maPropertyMap.setProperty(PROP_TextAutoGrowHeight, false);
|
||||
mrTextBodyProp.mnFontScale = rAttribs.getInteger(XML_fontScale, 100000);
|
||||
mrTextBodyProp.mnSpacingScale = rAttribs.getInteger(XML_lnSpcReduction, 100000);
|
||||
mrTextBodyProp.maPropertyMap.setProperty(PROP_TextFitToSizeFontScale, double(mrTextBodyProp.mnFontScale) / 1000.0);
|
||||
mrTextBodyProp.maPropertyMap.setProperty(PROP_TextFitToSizeSpacingScale, 100.0 - double(mrTextBodyProp.mnSpacingScale) / 1000.0);
|
||||
mrTextBodyProp.maPropertyMap.setProperty(PROP_TextFitToSizeFontScale, mrTextBodyProp.mnFontScale / 100000.0);
|
||||
mrTextBodyProp.maPropertyMap.setProperty(PROP_TextFitToSizeSpacingScale, 1.0 - mrTextBodyProp.mnSpacingScale / 100000.0);
|
||||
break;
|
||||
}
|
||||
case A_TOKEN( spAutoFit ):
|
||||
|
||||
@@ -4271,8 +4271,8 @@ void DrawingML::WriteText(const Reference<XInterface>& rXIface, bool bBodyPr, bo
|
||||
SdrTextObj* pTextObject = DynCastSdrTextObj(pTextShape->GetSdrObject());
|
||||
if (pTextObject)
|
||||
{
|
||||
nFontScale = sal_Int32(pTextObject->GetFontScale() * 1000.0);
|
||||
nSpacingReduction = sal_Int32((100.0 - pTextObject->GetSpacingScale()) * 1000.0);
|
||||
nFontScale = sal_Int32(pTextObject->GetFontScale() * 100000.0);
|
||||
nSpacingReduction = sal_Int32((1.0 - pTextObject->GetSpacingScale()) * 100000.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,8 +44,8 @@ CPPUNIT_TEST_FIXTURE(TextFittingTest, testTest)
|
||||
auto pTextObject = DynCastSdrTextObj(pPage->GetObj(0));
|
||||
CPPUNIT_ASSERT(pTextObject);
|
||||
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(100.0, pTextObject->GetFontScale(), 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(100.0, pTextObject->GetSpacingScale(), 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, pTextObject->GetFontScale(), 1E-4);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, pTextObject->GetSpacingScale(), 1E-4);
|
||||
|
||||
{
|
||||
OutlinerParaObject* pOutlinerParagraphObject = pTextObject->GetOutlinerParaObject();
|
||||
@@ -73,16 +73,16 @@ CPPUNIT_TEST_FIXTURE(TextFittingTest, testTest)
|
||||
Scheduler::ProcessEventsToIdle();
|
||||
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), rEditEngine.GetParagraphCount());
|
||||
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(92.5, rEditEngine.getScalingParameters().fFontY, 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(80.0, rEditEngine.getScalingParameters().fSpacingY, 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(0.925, rEditEngine.getScalingParameters().fFontY, 1E-4);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(0.8, rEditEngine.getScalingParameters().fSpacingY, 1E-4);
|
||||
|
||||
// Add paragraph 5
|
||||
rEditView.SetSelection(ESelection(4, 0, 4, 0));
|
||||
rEditView.InsertText(u"\nD5"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), rEditEngine.GetParagraphCount());
|
||||
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(70.0, rEditEngine.getScalingParameters().fFontY, 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(80.0, rEditEngine.getScalingParameters().fSpacingY, 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(0.7, rEditEngine.getScalingParameters().fFontY, 1E-4);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(0.8, rEditEngine.getScalingParameters().fSpacingY, 1E-4);
|
||||
|
||||
// Add paragraph 6
|
||||
rEditView.SetSelection(ESelection(5, 0, 5, 0));
|
||||
@@ -104,17 +104,17 @@ CPPUNIT_TEST_FIXTURE(TextFittingTest, testTest)
|
||||
rEditView.DeleteSelected();
|
||||
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), rEditEngine.GetParagraphCount());
|
||||
|
||||
// We are back to 100%
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(100.0, rEditEngine.getScalingParameters().fFontY, 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(100.0, rEditEngine.getScalingParameters().fSpacingY, 1E-2);
|
||||
// not ideal - scaling should be 100%, but close enough
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, rEditEngine.getScalingParameters().fFontY, 1E-4);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, rEditEngine.getScalingParameters().fSpacingY, 1E-4);
|
||||
|
||||
// are we still in text edit mode?
|
||||
CPPUNIT_ASSERT_EQUAL(true, pView1->IsTextEdit());
|
||||
pView1->SdrEndTextEdit();
|
||||
CPPUNIT_ASSERT_EQUAL(false, pView1->IsTextEdit());
|
||||
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(100.0, pTextObject->GetFontScale(), 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(100.0, pTextObject->GetSpacingScale(), 1E-2);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, pTextObject->GetFontScale(), 1E-4);
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, pTextObject->GetSpacingScale(), 1E-4);
|
||||
}
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
||||
|
||||
@@ -180,7 +180,7 @@ void NotesEditWindow::SetDrawingArea(weld::DrawingArea* pDrawingArea)
|
||||
// For setGlobalScale to work correctly EEControlBits::STRETCHING must be set.
|
||||
mrParentWindow.GetOutliner()->SetControlWord(mrParentWindow.GetOutliner()->GetControlWord()
|
||||
| EEControlBits::STRETCHING);
|
||||
mrParentWindow.GetOutliner()->setScalingParameters({ 30.0, 30.0 });
|
||||
mrParentWindow.GetOutliner()->setScalingParameters({ 0.30, 0.30 });
|
||||
|
||||
provideNoteText();
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet )
|
||||
case SID_ATTR_CHAR_STRIKEOUT:
|
||||
case SID_ATTR_CHAR_CASEMAP:
|
||||
{
|
||||
double stretchY = 100.0;
|
||||
double stretchY = 1.0;
|
||||
SvxScriptSetItem aSetItem( nSlotId, GetPool() );
|
||||
aSetItem.GetItemSet().Put( aAttrSet, false );
|
||||
|
||||
@@ -207,7 +207,7 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet )
|
||||
if( nSlotId == SID_ATTR_CHAR_FONTHEIGHT )
|
||||
{
|
||||
SvxFontHeightItem aFontItem = dynamic_cast<const SvxFontHeightItem&>(*pI);
|
||||
aFontItem.SetHeight(aFontItem.GetHeight() * (stretchY / 100.0), 100, aFontItem.GetPropUnit());
|
||||
aFontItem.SetHeight(aFontItem.GetHeight() * stretchY, 100, aFontItem.GetPropUnit());
|
||||
aFontItem.SetWhich(nWhich);
|
||||
aAttrSet.Put( aFontItem );
|
||||
}
|
||||
|
||||
@@ -929,8 +929,8 @@ void SdrTextObj::ImpSetCharStretching(SdrOutliner& rOutliner, const Size& rTextS
|
||||
tools::Long nXTolMi=nWantWdt/25; // tolerance: -4%
|
||||
tools::Long nXCorr =nWantWdt/20; // correction scale: 5%
|
||||
|
||||
double nX = (nWantWdt * 100.0) / double(nIsWdt); // calculate X stretching
|
||||
double nY = (nWantHgt * 100.0) / double(nIsHgt); // calculate Y stretching
|
||||
double nX = nWantWdt / double(nIsWdt); // calculate X stretching
|
||||
double nY = nWantHgt / double(nIsHgt); // calculate Y stretching
|
||||
bool bChkX = true;
|
||||
if (bNoStretching)
|
||||
{ // might only be possible proportionally
|
||||
@@ -949,14 +949,14 @@ void SdrTextObj::ImpSetCharStretching(SdrOutliner& rOutliner, const Size& rTextS
|
||||
{
|
||||
if (nX < 0.0)
|
||||
nX = -nX;
|
||||
if (nX < 1.0)
|
||||
if (nX < 0.01)
|
||||
{
|
||||
nX = 1.0;
|
||||
nX = 0.01;
|
||||
bNoMoreLoop = true;
|
||||
}
|
||||
if (nX > 65535.0)
|
||||
if (nX > 655.35)
|
||||
{
|
||||
nX = 65535.0;
|
||||
nX = 655.35;
|
||||
bNoMoreLoop = true;
|
||||
}
|
||||
|
||||
@@ -964,14 +964,14 @@ void SdrTextObj::ImpSetCharStretching(SdrOutliner& rOutliner, const Size& rTextS
|
||||
{
|
||||
nY = -nY;
|
||||
}
|
||||
if (nY < 1.0)
|
||||
if (nY < 0.01)
|
||||
{
|
||||
nY = 1.0;
|
||||
nY = 0.01;
|
||||
bNoMoreLoop = true;
|
||||
}
|
||||
if (nY > 65535.0)
|
||||
if (nY > 655.35)
|
||||
{
|
||||
nY = 65535.0;
|
||||
nY = 655.35;
|
||||
bNoMoreLoop = true;
|
||||
}
|
||||
|
||||
@@ -1276,7 +1276,7 @@ void SdrTextObj::setupAutoFitText(SdrOutliner& rOutliner, const Size& rTextBoxSi
|
||||
|
||||
if (fFontScale > 0.0 && fSpacingScale > 0.0 && !mbInEditMode)
|
||||
{
|
||||
rOutliner.setScalingParameters({ fFontScale, fFontScale, 100.0, fSpacingScale });
|
||||
rOutliner.setScalingParameters({ fFontScale, fFontScale, 1.0, fSpacingScale });
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1375,7 +1375,7 @@ void SdrTextObj::impDecomposeStretchTextPrimitive(
|
||||
// to layout without mirroring
|
||||
const double fScaleX(fabs(aScale.getX()) / aOutlinerScale.getX());
|
||||
const double fScaleY(fabs(aScale.getY()) / aOutlinerScale.getY());
|
||||
ScalingParameters aScalingParameters{fScaleX * 100.0, fScaleY * 100.0};
|
||||
ScalingParameters aScalingParameters{fScaleX, fScaleY};
|
||||
|
||||
rOutliner.setScalingParameters(aScalingParameters);
|
||||
|
||||
|
||||
@@ -2336,7 +2336,7 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertyMapEn
|
||||
if (rValue >>= fScale)
|
||||
{
|
||||
SdrTextFitToSizeTypeItem aItem(pSdrObject->GetMergedItem(SDRATTR_TEXT_FITTOSIZE));
|
||||
aItem.setFontScale(fScale);
|
||||
aItem.setFontScale(fScale / 100.0);
|
||||
pSdrObject->SetMergedItem(aItem);
|
||||
return true;
|
||||
}
|
||||
@@ -2349,7 +2349,7 @@ bool SvxShape::setPropertyValueImpl( const OUString&, const SfxItemPropertyMapEn
|
||||
if (rValue >>= fScale)
|
||||
{
|
||||
SdrTextFitToSizeTypeItem aItem(pSdrObject->GetMergedItem(SDRATTR_TEXT_FITTOSIZE));
|
||||
aItem.setSpacingScale(fScale);
|
||||
aItem.setSpacingScale(fScale / 100.0);
|
||||
pSdrObject->SetMergedItem(aItem);
|
||||
return true;
|
||||
}
|
||||
@@ -2875,7 +2875,7 @@ bool SvxShape::getPropertyValueImpl( const OUString&, const SfxItemPropertyMapEn
|
||||
auto* pTextObject = getTextObjectWithFitToSize(GetSdrObject());
|
||||
if (pTextObject)
|
||||
{
|
||||
rValue <<= pTextObject->GetFontScale();
|
||||
rValue <<= pTextObject->GetFontScale() * 100.0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2885,7 +2885,7 @@ bool SvxShape::getPropertyValueImpl( const OUString&, const SfxItemPropertyMapEn
|
||||
auto* pTextObject = getTextObjectWithFitToSize(GetSdrObject());
|
||||
if (pTextObject)
|
||||
{
|
||||
rValue <<= pTextObject->GetSpacingScale();
|
||||
rValue <<= pTextObject->GetSpacingScale() * 100.0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user