diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx index 07181bbf2a17..125b1e735cc8 100644 --- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx +++ b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx @@ -338,7 +338,17 @@ namespace drawinglayer::primitive2d bool bEmphasisMarkBelow, TextRelief eTextRelief, bool bShadow) - : TextSimplePortionPrimitive2D(rNewTransform, rText, nTextPosition, nTextLength, std::move(rDXArray), std::move(rKashidaArray), rFontAttribute, rLocale, rFontColor, false, 0, rFillColor), + : TextSimplePortionPrimitive2D( + rNewTransform, + rText, + nTextPosition, + nTextLength, + std::move(rDXArray), + std::move(rKashidaArray), + rFontAttribute, + rLocale, + rFontColor, + rFillColor), maOverlineColor(rOverlineColor), maTextlineColor(rTextlineColor), meFontOverline(eFontOverline), diff --git a/drawinglayer/source/primitive2d/textprimitive2d.cxx b/drawinglayer/source/primitive2d/textprimitive2d.cxx index 2d91785c5287..820b3d39f804 100644 --- a/drawinglayer/source/primitive2d/textprimitive2d.cxx +++ b/drawinglayer/source/primitive2d/textprimitive2d.cxx @@ -203,8 +203,7 @@ TextSimplePortionPrimitive2D::TextSimplePortionPrimitive2D( basegfx::B2DHomMatrix rNewTransform, OUString rText, sal_Int32 nTextPosition, sal_Int32 nTextLength, std::vector&& rDXArray, std::vector&& rKashidaArray, attribute::FontAttribute aFontAttribute, css::lang::Locale aLocale, - const basegfx::BColor& rFontColor, bool bFilled, tools::Long nWidthToFill, - const Color& rTextFillColor) + const basegfx::BColor& rFontColor, const Color& rTextFillColor) : maTextTransform(std::move(rNewTransform)) , maText(std::move(rText)) , mnTextPosition(nTextPosition) @@ -214,8 +213,6 @@ TextSimplePortionPrimitive2D::TextSimplePortionPrimitive2D( , maFontAttribute(std::move(aFontAttribute)) , maLocale(std::move(aLocale)) , maFontColor(rFontColor) - , mbFilled(bFilled) - , mnWidthToFill(nWidthToFill) , maTextFillColor(rTextFillColor) { #if OSL_DEBUG_LEVEL > 0 @@ -245,8 +242,7 @@ bool TextSimplePortionPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) && getKashidaArray() == rCompare.getKashidaArray() && getFontAttribute() == rCompare.getFontAttribute() && LocalesAreEqual(getLocale(), rCompare.getLocale()) - && getFontColor() == rCompare.getFontColor() && mbFilled == rCompare.mbFilled - && mnWidthToFill == rCompare.mnWidthToFill + && getFontColor() == rCompare.getFontColor() && maTextFillColor == rCompare.maTextFillColor); } diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index a99032e7683e..3da588b1a096 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -336,37 +336,6 @@ void VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D( mpOutputDevice->SetLayoutMode(nLTRLayoutMode); } - OUString aText(rTextCandidate.getText()); - sal_Int32 nPos = rTextCandidate.getTextPosition(); - sal_Int32 nLen = rTextCandidate.getTextLength(); - - // this contraption is used in editeng, with format paragraph used to - // set a tab with a tab-fill character - if (rTextCandidate.isFilled()) - { - tools::Long nWidthToFill = rTextCandidate.getWidthToFill(); - - tools::Long nWidth = basegfx::fround( - mpOutputDevice->GetTextArray(rTextCandidate.getText(), &aDXArray, 0, 1).nWidth); - sal_Int32 nChars = 2; - if (nWidth) - nChars = nWidthToFill / nWidth; - - OUStringBuffer aFilled(nChars); - comphelper::string::padToLength(aFilled, nChars, aText[0]); - aText = aFilled.makeStringAndClear(); - nPos = 0; - nLen = nChars; - - if (!aDXArray.empty()) - { - sal_Int32 nDX = aDXArray[0]; - aDXArray.resize(nLen); - for (sal_Int32 i = 1; i < nLen; ++i) - aDXArray.set(i, aDXArray[i - 1] + nDX); - } - } - Point aStartPoint; bool bChangeMapMode(false); if (!bScaleFont) @@ -468,14 +437,18 @@ void VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D( if (!aDXArray.empty()) { const SalLayoutGlyphs* pGlyphs = SalLayoutGlyphsCache::self()->GetLayoutGlyphs( - mpOutputDevice, aText, nPos, nLen); - mpOutputDevice->DrawTextArray(aStartPoint, aText, aDXArray, - rTextCandidate.getKashidaArray(), nPos, nLen, - SalLayoutFlags::NONE, pGlyphs); + mpOutputDevice, rTextCandidate.getText(), rTextCandidate.getTextPosition(), + rTextCandidate.getTextLength()); + mpOutputDevice->DrawTextArray( + aStartPoint, rTextCandidate.getText(), aDXArray, + rTextCandidate.getKashidaArray(), rTextCandidate.getTextPosition(), + rTextCandidate.getTextLength(), SalLayoutFlags::NONE, pGlyphs); } else { - mpOutputDevice->DrawText(aStartPoint, aText, nPos, nLen); + mpOutputDevice->DrawText(aStartPoint, rTextCandidate.getText(), + rTextCandidate.getTextPosition(), + rTextCandidate.getTextLength()); } } diff --git a/editeng/inc/outleeng.hxx b/editeng/inc/outleeng.hxx index 36194c3d0f6f..c40837dc5f8f 100644 --- a/editeng/inc/outleeng.hxx +++ b/editeng/inc/outleeng.hxx @@ -57,14 +57,6 @@ public: const Color& rOverlineColor, const Color& rTextLineColor) override; - virtual void DrawingTab( - const Point& rStartPos, tools::Long nWidth, const OUString& rChar, - const SvxFont& rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft, - bool bEndOfLine, - bool bEndOfParagraph, - const Color& rOverlineColor, - const Color& rTextLineColor) override; - virtual void StyleSheetChanged( SfxStyleSheet* pStyle ) override; virtual void ParaAttribsChanged( sal_Int32 nPara ) override; virtual bool SpellNextDocument() override; diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 172f6ad2c108..7feff6e8e6e0 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -1590,14 +1590,6 @@ void EditEngine::DrawingText( const Point&, const OUString&, sal_Int32, sal_Int3 { } -void EditEngine::DrawingTab( const Point& /*rStartPos*/, tools::Long /*nWidth*/, - const OUString& /*rChar*/, const SvxFont& /*rFont*/, - sal_Int32 /*nPara*/, sal_uInt8 /*nRightToLeft*/, bool /*bEndOfLine*/, - bool /*bEndOfParagraph*/, const Color& /*rOverlineColor*/, - const Color& /*rTextLineColor*/) -{ -} - void EditEngine::PaintingFirstLine(sal_Int32, const Point&, const Point&, Degree10, OutputDevice&) { } diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 944f3a1c14a9..b627c2447e81 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -4182,6 +4182,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po { if ( rTextPortion.GetExtraValue() && ( rTextPortion.GetExtraValue() != ' ' ) ) { + // calculate expanded text SeekCursor(rParaPortion.GetNode(), nIndex+1, aTmpFont, &rOutDev); aTmpFont.SetTransparent( false ); aTmpFont.SetEscapement( 0 ); @@ -4196,11 +4197,10 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po else if ( nChars == 2 ) nChars = 3; // looks better + // create expanded text OUStringBuffer aBuf(nChars); comphelper::string::padToLength(aBuf, nChars, rTextPortion.GetExtraValue()); OUString aText(aBuf.makeStringAndClear()); - aTmpFont.QuickDrawText( &rOutDev, aTmpPos, aText, 0, aText.getLength(), {} ); - rOutDev.DrawStretchText( aTmpPos, rTextPortion.GetSize().Width(), aText ); if ( bStripOnly ) { @@ -4212,12 +4212,21 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po const Color aTextLineColor(rOutDev.GetTextLineColor()); // StripPortions() data callback - GetEditEnginePtr()->DrawingTab( aTmpPos, - rTextPortion.GetSize().Width(), - OUString(rTextPortion.GetExtraValue()), - aTmpFont, nParaPortion, rTextPortion.GetRightToLeftLevel(), + GetEditEnginePtr()->DrawingText( + aTmpPos, aText, 0, aText.getLength(), {}, {}, + aTmpFont, nParaPortion, 0, + nullptr, + nullptr, bEndOfLine, bEndOfParagraph, - aOverlineColor, aTextLineColor); + nullptr, + aOverlineColor, + aTextLineColor); + } + else + { + // direct paint needed + aTmpFont.QuickDrawText( &rOutDev, aTmpPos, aText, 0, aText.getLength(), {} ); + rOutDev.DrawStretchText( aTmpPos, rTextPortion.GetSize().Width(), aText ); } } else if ( bStripOnly ) diff --git a/editeng/source/outliner/outleeng.cxx b/editeng/source/outliner/outleeng.cxx index 1136ef37b9e2..6ad8d267ed19 100644 --- a/editeng/source/outliner/outleeng.cxx +++ b/editeng/source/outliner/outleeng.cxx @@ -165,15 +165,6 @@ void OutlinerEditEng::DrawingText( const Point& rStartPos, const OUString& rText pWrongSpellVector, pFieldData, bEndOfLine, bEndOfParagraph, false/*bEndOfBullet*/, pLocale, rOverlineColor, rTextLineColor); } -void OutlinerEditEng::DrawingTab( const Point& rStartPos, tools::Long nWidth, const OUString& rChar, - const SvxFont& rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft, - bool bEndOfLine, bool bEndOfParagraph, - const Color& rOverlineColor, const Color& rTextLineColor) -{ - pOwner->DrawingTab(rStartPos, nWidth, rChar, rFont, nPara, nRightToLeft, - bEndOfLine, bEndOfParagraph, rOverlineColor, rTextLineColor ); -} - OUString OutlinerEditEng::CalcFieldValue( const SvxFieldItem& rField, sal_Int32 nPara, sal_Int32 nPos, std::optional& rpTxtColor, std::optional& rpFldColor, std::optional& rpFldLineStyle ) { return pOwner->CalcFieldValue( rField, nPara, nPos, rpTxtColor, rpFldColor, rpFldLineStyle ); diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx index 2eb127a7f430..e367bb5cb263 100644 --- a/editeng/source/outliner/outliner.cxx +++ b/editeng/source/outliner/outliner.cxx @@ -1659,20 +1659,8 @@ void Outliner::DrawingText( const Point& rStartPos, const OUString& rText, sal_I if(aDrawPortionHdl.IsSet()) { DrawPortionInfo aInfo( rStartPos, rText, nTextStart, nTextLen, rFont, nPara, pDXArray, pKashidaArray, pWrongSpellVector, - pFieldData, pLocale, rOverlineColor, rTextLineColor, nRightToLeft, false, 0, bEndOfLine, bEndOfParagraph, bEndOfBullet); - - aDrawPortionHdl.Call( &aInfo ); - } -} - -void Outliner::DrawingTab( const Point& rStartPos, tools::Long nWidth, const OUString& rChar, const SvxFont& rFont, - sal_Int32 nPara, sal_uInt8 nRightToLeft, bool bEndOfLine, bool bEndOfParagraph, - const Color& rOverlineColor, const Color& rTextLineColor) -{ - if(aDrawPortionHdl.IsSet()) - { - DrawPortionInfo aInfo( rStartPos, rChar, 0, rChar.getLength(), rFont, nPara, {}, {}, nullptr, - nullptr, nullptr, rOverlineColor, rTextLineColor, nRightToLeft, true, nWidth, bEndOfLine, bEndOfParagraph, false); + pFieldData, pLocale, rOverlineColor, rTextLineColor, nRightToLeft, + bEndOfLine, bEndOfParagraph, bEndOfBullet); aDrawPortionHdl.Call( &aInfo ); } diff --git a/include/drawinglayer/primitive2d/textprimitive2d.hxx b/include/drawinglayer/primitive2d/textprimitive2d.hxx index 17b38f1414ec..b5cff99f4047 100644 --- a/include/drawinglayer/primitive2d/textprimitive2d.hxx +++ b/include/drawinglayer/primitive2d/textprimitive2d.hxx @@ -122,12 +122,6 @@ private: /// font color basegfx::BColor maFontColor; - // Whether to fill a given width with the text - bool mbFilled; - - // the width to fill - tools::Long mnWidthToFill; - /// The fill color of the text Color maTextFillColor; @@ -146,8 +140,7 @@ public: std::vector&& rDXArray, std::vector&& rKashidaArray, attribute::FontAttribute aFontAttribute, css::lang::Locale aLocale, - const basegfx::BColor& rFontColor, bool bFilled = false, - tools::Long nWidthToFill = 0, + const basegfx::BColor& rFontColor, const Color& rTextFillColor = COL_TRANSPARENT); /** get text outlines as polygons and their according ObjectTransformation. Handles all @@ -167,8 +160,6 @@ public: const css::lang::Locale& getLocale() const { return maLocale; } const basegfx::BColor& getFontColor() const { return maFontColor; } const Color& getTextFillColor() const { return maTextFillColor; } - bool isFilled() const { return mbFilled; } - tools::Long getWidthToFill() const { return mnWidthToFill; } /// compare operator virtual bool operator==(const BasePrimitive2D& rPrimitive) const override; diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx index af62e525e98a..c981c332a855 100644 --- a/include/editeng/editeng.hxx +++ b/include/editeng/editeng.hxx @@ -510,12 +510,6 @@ public: const Color& rOverlineColor, const Color& rTextLineColor); - virtual void DrawingTab( const Point& rStartPos, tools::Long nWidth, const OUString& rChar, - const SvxFont& rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft, - bool bEndOfLine, - bool bEndOfParagraph, - const Color& rOverlineColor, - const Color& rTextLineColor); virtual OUString GetUndoComment( sal_uInt16 nUndoId ) const; virtual bool SpellNextDocument(); /** @return true, when click was consumed. false otherwise. */ diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx index 4b28af42ab00..8c217b22247b 100644 --- a/include/editeng/outliner.hxx +++ b/include/editeng/outliner.hxx @@ -418,9 +418,6 @@ public: sal_uInt8 mnBiDiLevel; - bool mbFilled; - tools::Long mnWidthToFill; - bool mbEndOfLine : 1; bool mbEndOfParagraph : 1; bool mbEndOfBullet : 1; @@ -442,8 +439,6 @@ public: const Color& rOverlineColor, const Color& rTextLineColor, sal_uInt8 nBiDiLevel, - bool bFilled, - tools::Long nWidthToFill, bool bEndOfLine, bool bEndOfParagraph, bool bEndOfBullet) @@ -461,8 +456,6 @@ public: maOverlineColor(rOverlineColor), maTextLineColor(rTextLineColor), mnBiDiLevel(nBiDiLevel), - mbFilled( bFilled ), - mnWidthToFill( nWidthToFill ), mbEndOfLine(bEndOfLine), mbEndOfParagraph(bEndOfParagraph), mbEndOfBullet(bEndOfBullet) @@ -844,13 +837,6 @@ public: const Color& rOverlineColor, const Color& rTextLineColor); - SAL_DLLPRIVATE void DrawingTab( const Point& rStartPos, tools::Long nWidth, const OUString& rChar, - const SvxFont& rFont, sal_Int32 nPara, sal_uInt8 nRightToLeft, - bool bEndOfLine, - bool bEndOfParagraph, - const Color& rOverlineColor, - const Color& rTextLineColor); - Size CalcTextSize(); void SetStyleSheetPool( SfxStyleSheetPool* pSPool ); diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index e3643498835d..76e27768224c 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -211,7 +211,8 @@ namespace nullptr, /* no spelling in subportion, handled outside */ nullptr, /* no field in subportion, handled outside */ m_rInfo.mpLocale, m_rInfo.maOverlineColor, m_rInfo.maTextLineColor, - m_rInfo.mnBiDiLevel, false, 0, false, false, false); + m_rInfo.mnBiDiLevel, + false, false, false); m_rHandler.impCreateTextPortionPrimitive(aInfo); @@ -590,8 +591,6 @@ namespace rFontAttribute, rInfo.mpLocale ? *rInfo.mpLocale : css::lang::Locale(), aBFontColor, - rInfo.mbFilled, - rInfo.mnWidthToFill, aTextFillColor); }