Resolves: tdf#159696 Small capitals with 'Individual words' underlining
Change-Id: I79af3f74ef384f734273b00bddbcfed8952a3ad2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164303
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 3fe9de6..5736f26 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>
@@ -327,13 +328,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));