From cb2739767aa1000687beb29d3a5d21ed1ec3ba4e Mon Sep 17 00:00:00 2001 From: Hossein Date: Tue, 5 Oct 2021 14:39:18 +0200 Subject: [PATCH] Cleanup svgcharacternode.cxx * Replacing Ternary conditional operator "?:" with "if" statements * Adding using "namespace drawinglayer::primitive2d;" to avoid long statements Converting this: drawinglayer::primitive2d::TextStrikeout eTextStrikeout = drawinglayer::primitive2d::TEXT_STRIKEOUT_NONE; to this, which is much more readable: TextStrikeout eTextStrikeout = TEXT_STRIKEOUT_NONE; * This is avoided in the header file with only one usage of this namespace Change-Id: I0bbc80a894056806dc03f46df5b62d92c2cd4a0e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123102 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- svgio/source/svgreader/svgcharacternode.cxx | 69 +++++++++++++-------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/svgio/source/svgreader/svgcharacternode.cxx b/svgio/source/svgreader/svgcharacternode.cxx index af03919ccde3..37e41e77bc8e 100644 --- a/svgio/source/svgreader/svgcharacternode.cxx +++ b/svgio/source/svgreader/svgcharacternode.cxx @@ -25,6 +25,8 @@ #include #include +using namespace drawinglayer::primitive2d; + namespace svgio::svgreader { SvgTextPositions::SvgTextPositions() @@ -139,7 +141,7 @@ namespace svgio::svgreader namespace { - class localTextBreakupHelper : public drawinglayer::primitive2d::TextBreakupHelper + class localTextBreakupHelper : public TextBreakupHelper { private: SvgTextPosition& mrSvgTextPosition; @@ -151,9 +153,9 @@ namespace svgio::svgreader public: localTextBreakupHelper( - const drawinglayer::primitive2d::TextSimplePortionPrimitive2D& rSource, + const TextSimplePortionPrimitive2D& rSource, SvgTextPosition& rSvgTextPosition) - : drawinglayer::primitive2d::TextBreakupHelper(rSource), + : TextBreakupHelper(rSource), mrSvgTextPosition(rSvgTextPosition) { } @@ -203,12 +205,12 @@ namespace svgio::svgreader } } - rtl::Reference SvgCharacterNode::createSimpleTextPrimitive( + rtl::Reference SvgCharacterNode::createSimpleTextPrimitive( SvgTextPosition& rSvgTextPosition, const SvgStyleAttributes& rSvgStyleAttributes) const { // prepare retval, index and length - rtl::Reference pRetval; + rtl::Reference pRetval; sal_uInt32 nLength(getText().getLength()); if(nLength) @@ -216,9 +218,9 @@ namespace svgio::svgreader sal_uInt32 nIndex(0); // prepare FontAttribute const SvgStringVector& rFontFamilyVector = rSvgStyleAttributes.getFontFamily(); - OUString aFontFamily = rFontFamilyVector.empty() ? - OUString("Times New Roman") : - rFontFamilyVector[0]; + OUString aFontFamily("Times New Roman"); + if(!rFontFamilyVector.empty()) + aFontFamily=rFontFamilyVector[0]; // #i122324# if the FontFamily name ends on ' embedded' it is probably a re-import // of a SVG export with font embedding. Remove this to make font matching work. This @@ -252,7 +254,7 @@ namespace svgio::svgreader css::lang::Locale aLocale; // prepare TextLayouterDevice - drawinglayer::primitive2d::TextLayouterDevice aTextLayouterDevice; + TextLayouterDevice aTextLayouterDevice; aTextLayouterDevice.setFontAttribute(aFontAttribute, fFontWidth, fFontHeight, aLocale); // prepare TextArray @@ -403,9 +405,9 @@ namespace svgio::svgreader } // get fill color - const basegfx::BColor aFill(rSvgStyleAttributes.getFill() - ? *rSvgStyleAttributes.getFill() - : basegfx::BColor(0.0, 0.0, 0.0)); + basegfx::BColor aFill(0, 0, 0); + if(rSvgStyleAttributes.getFill()) + aFill = *rSvgStyleAttributes.getFill(); // prepare TextTransformation basegfx::B2DHomMatrix aTextTransform; @@ -423,10 +425,25 @@ namespace svgio::svgreader // get the fill for decoration as described by SVG. We cannot // have different stroke colors/definitions for those, though const SvgStyleAttributes* pDecoDef = rSvgStyleAttributes.getTextDecorationDefiningSvgStyleAttributes(); - const basegfx::BColor aDecoColor(pDecoDef && pDecoDef->getFill() ? *pDecoDef->getFill() : aFill); + + basegfx::BColor aDecoColor(aFill); + if(pDecoDef && pDecoDef->getFill()) + aDecoColor = *pDecoDef->getFill(); + + TextLine eFontOverline = TEXT_LINE_NONE; + if(TextDecoration::overline == aDeco) + eFontOverline = TEXT_LINE_SINGLE; + + TextLine eFontUnderline = TEXT_LINE_NONE; + if(TextDecoration::underline == aDeco) + eFontUnderline = TEXT_LINE_SINGLE; + + TextStrikeout eTextStrikeout = TEXT_STRIKEOUT_NONE; + if(TextDecoration::line_through == aDeco) + eTextStrikeout = TEXT_STRIKEOUT_SINGLE; // create decorated text primitive - pRetval = new drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D( + pRetval = new TextDecoratedPortionPrimitive2D( aTextTransform, getText(), nIndex, @@ -440,21 +457,21 @@ namespace svgio::svgreader // extra props for decorated aDecoColor, aDecoColor, - TextDecoration::overline == aDeco ? drawinglayer::primitive2d::TEXT_LINE_SINGLE : drawinglayer::primitive2d::TEXT_LINE_NONE, - TextDecoration::underline == aDeco ? drawinglayer::primitive2d::TEXT_LINE_SINGLE : drawinglayer::primitive2d::TEXT_LINE_NONE, + eFontOverline, + eFontUnderline, false, - TextDecoration::line_through == aDeco ? drawinglayer::primitive2d::TEXT_STRIKEOUT_SINGLE : drawinglayer::primitive2d::TEXT_STRIKEOUT_NONE, + eTextStrikeout, false, - drawinglayer::primitive2d::TEXT_FONT_EMPHASIS_MARK_NONE, + TEXT_FONT_EMPHASIS_MARK_NONE, true, false, - drawinglayer::primitive2d::TEXT_RELIEF_NONE, + TEXT_RELIEF_NONE, false); } else { // create text primitive - pRetval = new drawinglayer::primitive2d::TextSimplePortionPrimitive2D( + pRetval = new TextSimplePortionPrimitive2D( aTextTransform, getText(), nIndex, @@ -473,11 +490,11 @@ namespace svgio::svgreader } void SvgCharacterNode::decomposeTextWithStyle( - drawinglayer::primitive2d::Primitive2DContainer& rTarget, + Primitive2DContainer& rTarget, SvgTextPosition& rSvgTextPosition, const SvgStyleAttributes& rSvgStyleAttributes) const { - const drawinglayer::primitive2d::Primitive2DReference xRef( + const Primitive2DReference xRef( createSimpleTextPrimitive( rSvgTextPosition, rSvgStyleAttributes)); @@ -492,13 +509,13 @@ namespace svgio::svgreader else { // need to apply rotations to each character as given - const drawinglayer::primitive2d::TextSimplePortionPrimitive2D* pCandidate = - dynamic_cast< const drawinglayer::primitive2d::TextSimplePortionPrimitive2D* >(xRef.get()); + const TextSimplePortionPrimitive2D* pCandidate = + dynamic_cast< const TextSimplePortionPrimitive2D* >(xRef.get()); if(pCandidate) { const localTextBreakupHelper alocalTextBreakupHelper(*pCandidate, rSvgTextPosition); - const drawinglayer::primitive2d::Primitive2DContainer& aResult( + const Primitive2DContainer& aResult( alocalTextBreakupHelper.getResult()); if(!aResult.empty()) @@ -538,7 +555,7 @@ namespace svgio::svgreader maText += rText; } - void SvgCharacterNode::decomposeText(drawinglayer::primitive2d::Primitive2DContainer& rTarget, SvgTextPosition& rSvgTextPosition) const + void SvgCharacterNode::decomposeText(Primitive2DContainer& rTarget, SvgTextPosition& rSvgTextPosition) const { if(!getText().isEmpty()) {