diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 09:44:47 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 09:44:47 +0000 |
commit | 91fe6b97952aa6f7cef58327fd085a17db38ad95 (patch) | |
tree | 7a4412295bfb80e15a4936fe67d4bd7b96458ce8 /svx/source/svdraw/svdotextdecomposition.cxx | |
parent | Releasing progress-linux version 4:24.2.1-4~progress7.99u1. (diff) | |
download | libreoffice-91fe6b97952aa6f7cef58327fd085a17db38ad95.tar.xz libreoffice-91fe6b97952aa6f7cef58327fd085a17db38ad95.zip |
Merging upstream version 4:24.2.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'svx/source/svdraw/svdotextdecomposition.cxx')
-rw-r--r-- | svx/source/svdraw/svdotextdecomposition.cxx | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index 1bad74cebb..a74c6d5b8f 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -35,6 +35,7 @@ #include <basegfx/vector/b2dvector.hxx> #include <sdr/primitive2d/sdrtextprimitive2d.hxx> #include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx> +#include <drawinglayer/primitive2d/textbreakuphelper.hxx> #include <drawinglayer/primitive2d/textprimitive2d.hxx> #include <drawinglayer/primitive2d/textdecoratedprimitive2d.hxx> #include <basegfx/range/b2drange.hxx> @@ -328,13 +329,38 @@ namespace const drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D* pTCPP = static_cast<const drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D*>(pNewPrimitive.get()); - pTCPP->CreateDecorationGeometryContent( - aContainer, - pTCPP->getTextTransform(), - caseMappedText, - rInfo.mnTextStart, - rInfo.mnTextLen, - aDXArray); + if (pTCPP->getWordLineMode()) // single word mode: 'Individual words' in UI + { + // Split to single word primitives using TextBreakupHelper + drawinglayer::primitive2d::TextBreakupHelper aTextBreakupHelper(*pTCPP); + drawinglayer::primitive2d::Primitive2DContainer aBroken(aTextBreakupHelper.extractResult(drawinglayer::primitive2d::BreakupUnit::Word)); + for (auto& rPortion : aBroken) + { + assert(rPortion->getPrimitive2DID() == PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D && + "TextBreakupHelper generates same output primitive type as input"); + + const drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D* pPortion = + static_cast<const drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D*>(rPortion.get()); + + pPortion->CreateDecorationGeometryContent( + aContainer, + pPortion->getTextTransform(), + caseMappedText, + pPortion->getTextPosition(), + pPortion->getTextLength(), + pPortion->getDXArray()); + } + } + else + { + pTCPP->CreateDecorationGeometryContent( + aContainer, + pTCPP->getTextTransform(), + caseMappedText, + rInfo.mnTextStart, + rInfo.mnTextLen, + aDXArray); + } } pNewPrimitive = new drawinglayer::primitive2d::GroupPrimitive2D(std::move(aContainer)); |