editeng/source/editeng/StripPortionsHelper.cxx  |   54 +++++++++++++++---------
 editeng/source/editeng/editview.cxx             |    3 -
 editeng/source/editeng/impedit3.cxx             |   24 +++++-----
 editeng/source/outliner/outlvw.cxx              |    3 -
 include/editeng/StripPortionsHelper.hxx         |   25 ++++++++---
 include/svx/svdoutl.hxx                         |    2 
 sc/source/ui/view/tabview3.cxx                  |    5 +-
 svx/source/svdraw/svdedxv.cxx                   |    7 ++-
 svx/source/svdraw/svdotextdecomposition.cxx     |    5 ++
 svx/source/svdraw/svdotextpathdecomposition.cxx |    8 +++
 svx/source/svdraw/svdoutl.cxx                   |    4 +
 11 files changed, 97 insertions(+), 43 deletions(-)

New commits:
commit d6a3d308598d47d6658c51a95a561cc3c93a3393
Author:     Armin Le Grand (collabora) <armin.legr...@collabora.com>
AuthorDate: Fri Jul 18 16:49:03 2025 +0200
Commit:     Armin Le Grand <armin.le.gr...@me.com>
CommitDate: Fri Jul 18 18:43:27 2025 +0200

    tdf#167511 correctly apply Color in HighContrast mode to text II
    
    For more info please have a look at
    https://bugs.documentfoundation.org/show_bug.cgi?id=167511
    
    Change-Id: I2c829f7fb42853aa82cff073fa1432ac05d224a7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188043
    Tested-by: Jenkins
    Reviewed-by: Armin Le Grand <armin.le.gr...@me.com>

diff --git a/editeng/source/editeng/StripPortionsHelper.cxx 
b/editeng/source/editeng/StripPortionsHelper.cxx
index cf8e59d6489e..808f848991a4 100644
--- a/editeng/source/editeng/StripPortionsHelper.cxx
+++ b/editeng/source/editeng/StripPortionsHelper.cxx
@@ -85,7 +85,8 @@ 
CheckFieldPrimitive(drawinglayer::primitive2d::BasePrimitive2D* pPrimitive,
 }
 
 rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D>
-buildTextPortionPrimitive(const DrawPortionInfo& rInfo, const OUString& rText,
+buildTextPortionPrimitive(const drawinglayer::geometry::ViewInformation2D& 
rViewInformation2D,
+                          const DrawPortionInfo& rInfo, const OUString& rText,
                           const drawinglayer::attribute::FontAttribute& 
rFontAttribute,
                           const std::vector<double>& rDXArray,
                           const basegfx::B2DHomMatrix& rNewTransform)
@@ -103,7 +104,9 @@ buildTextPortionPrimitive(const DrawPortionInfo& rInfo, 
const OUString& rText,
     }
 
     // tdf#167511 get FontColor, evtl. adapted for HighContrast
-    const Color 
aFontColor(Application::GetSettings().GetStyleSettings().GetHighContrastMode()
+    const bool 
bHighContrast(Application::GetSettings().GetStyleSettings().GetHighContrastMode()
+                             && rViewInformation2D.getEditViewActive());
+    const Color aFontColor(bHighContrast
                                ? 
Application::GetSettings().GetStyleSettings().GetWindowTextColor()
                                : rInfo.mrFont.GetColor());
     const basegfx::BColor aBFontColor(aFontColor.getBColor());
@@ -222,6 +225,7 @@ buildTextPortionPrimitive(const DrawPortionInfo& rInfo, 
const OUString& rText,
 class DoCapitalsDrawPortionInfo : public SvxDoCapitals
 {
 private:
+    const drawinglayer::geometry::ViewInformation2D& mrViewInformation2D;
     drawinglayer::primitive2d::Primitive2DContainer& mrTarget;
     const basegfx::B2DHomMatrix& mrNewTransformA;
     const basegfx::B2DHomMatrix& mrNewTransformB;
@@ -229,11 +233,13 @@ private:
     SvxFont m_aFont;
 
 public:
-    DoCapitalsDrawPortionInfo(drawinglayer::primitive2d::Primitive2DContainer& 
rTarget,
+    DoCapitalsDrawPortionInfo(const drawinglayer::geometry::ViewInformation2D& 
rViewInformation2D,
+                              drawinglayer::primitive2d::Primitive2DContainer& 
rTarget,
                               const basegfx::B2DHomMatrix& rNewTransformA,
                               const basegfx::B2DHomMatrix& rNewTransformB,
                               const DrawPortionInfo& rInfo)
         : SvxDoCapitals(rInfo.maText, rInfo.mnTextStart, rInfo.mnTextLen)
+        , mrViewInformation2D(rViewInformation2D)
         , mrTarget(rTarget)
         , mrNewTransformA(rNewTransformA)
         , mrNewTransformB(rNewTransformB)
@@ -255,6 +261,7 @@ public:
 };
 
 void CreateTextPortionPrimitivesFromDrawPortionInfo(
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D,
     drawinglayer::primitive2d::Primitive2DContainer& rTarget,
     const basegfx::B2DHomMatrix& rNewTransformA, const basegfx::B2DHomMatrix& 
rNewTransformB,
     const DrawPortionInfo& rInfo)
@@ -340,7 +347,8 @@ void CreateTextPortionPrimitivesFromDrawPortionInfo(
 
     OUString caseMappedText = rInfo.mrFont.CalcCaseMap(rInfo.maText);
     rtl::Reference<drawinglayer::primitive2d::BasePrimitive2D> pNewPrimitive(
-        buildTextPortionPrimitive(rInfo, caseMappedText, aFontAttribute, 
aDXArray, aNewTransform));
+        buildTextPortionPrimitive(rViewInformation2D, rInfo, caseMappedText, 
aFontAttribute,
+                                  aDXArray, aNewTransform));
 
     bool bSmallCaps = rInfo.mrFont.IsCapital();
     if (bSmallCaps && rInfo.mpDXArray.empty())
@@ -351,8 +359,8 @@ void CreateTextPortionPrimitivesFromDrawPortionInfo(
     if (bSmallCaps)
     {
         // rerun with each sub-portion
-        DoCapitalsDrawPortionInfo aDoDrawPortionInfo(rTarget, rNewTransformA, 
rNewTransformB,
-                                                     rInfo);
+        DoCapitalsDrawPortionInfo aDoDrawPortionInfo(rViewInformation2D, 
rTarget, rNewTransformA,
+                                                     rNewTransformB, rInfo);
         rInfo.mrFont.DoOnCapitals(aDoDrawPortionInfo);
 
         // transfer collected primitives from rTarget to a new container
@@ -525,8 +533,8 @@ void DoCapitalsDrawPortionInfo::Do(const OUString& 
rSpanTxt, const sal_Int32 nSp
         nullptr, /* no field in subportion, handled outside */
         false, false, false, m_rInfo.mpLocale, m_rInfo.maOverlineColor, 
m_rInfo.maTextLineColor);
 
-    CreateTextPortionPrimitivesFromDrawPortionInfo(mrTarget, mrNewTransformA, 
mrNewTransformB,
-                                                   aInfo);
+    CreateTextPortionPrimitivesFromDrawPortionInfo(mrViewInformation2D, 
mrTarget, mrNewTransformA,
+                                                   mrNewTransformB, aInfo);
 
     if (!bUpper)
         m_aFont.SetPropr(nProp);
@@ -599,8 +607,9 @@ void 
TextHierarchyBreakup::flushLinePrimitivesToParagraphPrimitives(sal_Int32 nP
 
 void TextHierarchyBreakup::processDrawPortionInfo(const DrawPortionInfo& 
rDrawPortionInfo)
 {
-    CreateTextPortionPrimitivesFromDrawPortionInfo(maTextPortionPrimitives, 
maNewTransformA,
-                                                   maNewTransformB, 
rDrawPortionInfo);
+    CreateTextPortionPrimitivesFromDrawPortionInfo(getViewInformation2D(), 
maTextPortionPrimitives,
+                                                   maNewTransformA, 
maNewTransformB,
+                                                   rDrawPortionInfo);
 
     if (rDrawPortionInfo.mbEndOfLine || rDrawPortionInfo.mbEndOfParagraph)
     {
@@ -656,8 +665,10 @@ void TextHierarchyBreakup::directlyAddB2DPrimitive(
     maTextPortionPrimitives.push_back(rSource);
 }
 
-TextHierarchyBreakup::TextHierarchyBreakup()
-    : maTextPortionPrimitives()
+TextHierarchyBreakup::TextHierarchyBreakup(
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D)
+    : StripPortionsHelper(rViewInformation2D)
+    , maTextPortionPrimitives()
     , maLinePrimitives()
     , maParagraphPrimitives()
     , maNewTransformA()
@@ -665,9 +676,11 @@ TextHierarchyBreakup::TextHierarchyBreakup()
 {
 }
 
-TextHierarchyBreakup::TextHierarchyBreakup(const basegfx::B2DHomMatrix& 
rNewTransformA,
-                                           const basegfx::B2DHomMatrix& 
rNewTransformB)
-    : maTextPortionPrimitives()
+TextHierarchyBreakup::TextHierarchyBreakup(
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D,
+    const basegfx::B2DHomMatrix& rNewTransformA, const basegfx::B2DHomMatrix& 
rNewTransformB)
+    : StripPortionsHelper(rViewInformation2D)
+    , maTextPortionPrimitives()
     , maLinePrimitives()
     , maParagraphPrimitives()
     , maNewTransformA(rNewTransformA)
@@ -707,16 +720,17 @@ sal_Int32 
TextHierarchyBreakupOutliner::getParagraphCount() const
     return mrOutliner.GetParagraphCount();
 }
 
-TextHierarchyBreakupOutliner::TextHierarchyBreakupOutliner(Outliner& rOutliner)
-    : TextHierarchyBreakup()
+TextHierarchyBreakupOutliner::TextHierarchyBreakupOutliner(
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D, 
Outliner& rOutliner)
+    : TextHierarchyBreakup(rViewInformation2D)
     , mrOutliner(rOutliner)
 {
 }
 
 TextHierarchyBreakupOutliner::TextHierarchyBreakupOutliner(
-    Outliner& rOutliner, const basegfx::B2DHomMatrix& rNewTransformA,
-    const basegfx::B2DHomMatrix& rNewTransformB)
-    : TextHierarchyBreakup(rNewTransformA, rNewTransformB)
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D, 
Outliner& rOutliner,
+    const basegfx::B2DHomMatrix& rNewTransformA, const basegfx::B2DHomMatrix& 
rNewTransformB)
+    : TextHierarchyBreakup(rViewInformation2D, rNewTransformA, rNewTransformB)
     , mrOutliner(rOutliner)
 {
 }
diff --git a/editeng/source/editeng/editview.cxx 
b/editeng/source/editeng/editview.cxx
index ae94c4c9b3f0..b21cd9a56a66 100644
--- a/editeng/source/editeng/editview.cxx
+++ b/editeng/source/editeng/editview.cxx
@@ -411,7 +411,8 @@ void EditView::DrawText_ToEditView( const tools::Rectangle& 
rRect, OutputDevice*
 {
     // use TextHierarchyBreakup to get all text embedded to the
     // TextHierarchy.*Primitive2D groupings for better processing
-    TextHierarchyBreakup aHelper;
+    const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+    TextHierarchyBreakup aHelper(aViewInformation2D);
 
     // hand that Helper over to DrawText_ToEditView at the EditEngine
     // for usage
diff --git a/editeng/source/editeng/impedit3.cxx 
b/editeng/source/editeng/impedit3.cxx
index 7ddae54bd77d..4ef20665453c 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -3382,18 +3382,18 @@ void ImpEditEngine::DrawText_ToPosition( OutputDevice& 
rOutDev, const Point& rSt
     if (bUsePrimitives)
     {
         // extract Primitives.
+        // create ViewInformation2D based on target OutputDevice
+        drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+        
aViewInformation2D.setViewTransformation(rOutDev.GetViewTransformation());
+
         // Do not use Orientation, that will be added below as transformation
-        TextHierarchyBreakup aHelper;
+        TextHierarchyBreakup aHelper(aViewInformation2D);
         PaintOrStrip(rOutDev, aBigRect, aStartPos, 0_deg10, &aHelper);
 
         if (aHelper.getTextPortionPrimitives().empty())
             // no Primitives, done
             return;
 
-        // create ViewInformation2D based on target OutputDevice
-        drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-        
aViewInformation2D.setViewTransformation(rOutDev.GetViewTransformation());
-
         // get content
         drawinglayer::primitive2d::Primitive2DContainer 
aContent(aHelper.getTextPortionPrimitives());
 
@@ -3450,20 +3450,20 @@ void ImpEditEngine::DrawText_ToRectangle( OutputDevice& 
rOutDev, const tools::Re
 
     if (bUsePrimitives)
     {
+        // create ViewInformation2D based on target OutputDevice
+        drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+        
aViewInformation2D.setViewTransformation(rOutDev.GetViewTransformation());
+        const basegfx::B2DRange 
aClipRange(vcl::unotools::b2DRectangleFromRectangle(aOutRect));
+        aViewInformation2D.setViewport(aClipRange);
+
         // extract Primitives
-        TextHierarchyBreakup aHelper;
+        TextHierarchyBreakup aHelper(aViewInformation2D);
         PaintOrStrip(rOutDev, aOutRect, aStartPos, 0_deg10, &aHelper);
 
         if (aHelper.getTextPortionPrimitives().empty())
             // no Primitives, done
             return;
 
-        // create ViewInformation2D based on target OutputDevice
-        drawinglayer::geometry::ViewInformation2D aViewInformation2D;
-        
aViewInformation2D.setViewTransformation(rOutDev.GetViewTransformation());
-        const basegfx::B2DRange 
aClipRange(vcl::unotools::b2DRectangleFromRectangle(aOutRect));
-        aViewInformation2D.setViewport(aClipRange);
-
         // get content and it's range
         drawinglayer::primitive2d::Primitive2DContainer 
aContent(aHelper.getTextPortionPrimitives());
         const basegfx::B2DRange 
aContentRange(aContent.getB2DRange(aViewInformation2D));
diff --git a/editeng/source/outliner/outlvw.cxx 
b/editeng/source/outliner/outlvw.cxx
index c7e772be9524..dd6dd6ce3652 100644
--- a/editeng/source/outliner/outlvw.cxx
+++ b/editeng/source/outliner/outlvw.cxx
@@ -70,7 +70,8 @@ void OutlinerView::DrawText_ToEditView( const 
tools::Rectangle& rRect, OutputDev
     // use TextHierarchyBreakupOutliner to get all text embedded to the
     // TextHierarchy.*Primitive2D groupings for better processing, plus
     // the correct paragtaph countings
-    TextHierarchyBreakupOutliner aHelper(rOwner);
+    const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+    TextHierarchyBreakupOutliner aHelper(aViewInformation2D, rOwner);
 
     // hand that Helper over to DrawText_ToEditView at the EditEngine
     // for usage
diff --git a/include/editeng/StripPortionsHelper.hxx 
b/include/editeng/StripPortionsHelper.hxx
index dc235471eb37..ab19e78298e9 100644
--- a/include/editeng/StripPortionsHelper.hxx
+++ b/include/editeng/StripPortionsHelper.hxx
@@ -109,11 +109,23 @@ public:
 
 class EDITENG_DLLPUBLIC StripPortionsHelper
 {
+    const drawinglayer::geometry::ViewInformation2D& mrViewInformation2D;
+
 public:
+    StripPortionsHelper(const drawinglayer::geometry::ViewInformation2D& 
rViewInformation2D)
+        : mrViewInformation2D(rViewInformation2D)
+    {
+    }
+
     virtual void processDrawPortionInfo(const DrawPortionInfo&) = 0;
     virtual void processDrawBulletInfo(const DrawBulletInfo&) = 0;
     virtual void directlyAddB2DPrimitive(const 
drawinglayer::primitive2d::Primitive2DReference&)
         = 0;
+
+    const drawinglayer::geometry::ViewInformation2D& getViewInformation2D() 
const
+    {
+        return mrViewInformation2D;
+    }
 };
 
 class EDITENG_DLLPUBLIC TextHierarchyBreakup : public StripPortionsHelper
@@ -136,8 +148,9 @@ public:
     virtual void
     directlyAddB2DPrimitive(const 
drawinglayer::primitive2d::Primitive2DReference&) override;
 
-    TextHierarchyBreakup();
-    TextHierarchyBreakup(const basegfx::B2DHomMatrix& rNewTransformA,
+    TextHierarchyBreakup(const drawinglayer::geometry::ViewInformation2D& 
rViewInformation2D);
+    TextHierarchyBreakup(const drawinglayer::geometry::ViewInformation2D& 
rViewInformation2D,
+                         const basegfx::B2DHomMatrix& rNewTransformA,
                          const basegfx::B2DHomMatrix& rNewTransformB);
 
     const drawinglayer::primitive2d::Primitive2DContainer& 
getTextPortionPrimitives();
@@ -152,9 +165,11 @@ protected:
     virtual sal_Int32 getParagraphCount() const override;
 
 public:
-    TextHierarchyBreakupOutliner(Outliner& rOutliner);
-    TextHierarchyBreakupOutliner(Outliner& rOutliner, const 
basegfx::B2DHomMatrix& rNewTransformA,
-                                 const basegfx::B2DHomMatrix& rNewTransformB);
+    TextHierarchyBreakupOutliner(
+        const drawinglayer::geometry::ViewInformation2D& rViewInformation2D, 
Outliner& rOutliner);
+    TextHierarchyBreakupOutliner(
+        const drawinglayer::geometry::ViewInformation2D& rViewInformation2D, 
Outliner& rOutliner,
+        const basegfx::B2DHomMatrix& rNewTransformA, const 
basegfx::B2DHomMatrix& rNewTransformB);
 };
 
 #endif // INCLUDED_EDITENG_STRIPPORTIONSHELPER_HXX
diff --git a/include/svx/svdoutl.hxx b/include/svx/svdoutl.hxx
index 0af4f6804849..b8e45b213b9d 100644
--- a/include/svx/svdoutl.hxx
+++ b/include/svx/svdoutl.hxx
@@ -63,6 +63,7 @@ public:
     virtual void processDrawPortionInfo(const DrawPortionInfo& 
rDrawPortionInfo) override;
 
     TextHierarchyBreakupBlockText(
+        const drawinglayer::geometry::ViewInformation2D& rViewInformation2D,
         SdrOutliner& rOutliner,
         const basegfx::B2DHomMatrix& rNewTransformA,
         const basegfx::B2DHomMatrix& rNewTransformB,
@@ -78,6 +79,7 @@ public:
     virtual void processDrawPortionInfo(const DrawPortionInfo& 
rDrawPortionInfo) override;
 
     TextHierarchyBreakupContourText(
+        const drawinglayer::geometry::ViewInformation2D& rViewInformation2D,
         SdrOutliner& rOutliner,
         const basegfx::B2DHomMatrix& rNewTransformA,
         const basegfx::B2DHomMatrix& rNewTransformB,
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index 4509f7dc31a8..fb9622a45725 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -2308,7 +2308,10 @@ drawinglayer::primitive2d::Primitive2DContainer 
ScTextEditOverlayObject::createO
     // use no transformations. The result will be in logic coordinates
     // based on aEditRectangle and the EditEngine setup, see
     // ScViewData::SetEditEngine
-    TextHierarchyBreakup aBreakup;
+    drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+    // TextEditOverlay is only possible in EditView, activate it
+    aViewInformation2D.setEditViewActive(true);
+    TextHierarchyBreakup aBreakup(aViewInformation2D);
     pEditView->getEditEngine().StripPortions(aBreakup);
     aRetval = aBreakup.getTextPortionPrimitives();
 
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 77ac5c6a5e2b..951d991e8a35 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -783,8 +783,11 @@ void TextEditOverlayObject::checkDataChange(const 
basegfx::B2DRange& rMinTextEdi
         // of this mechanism, it *may* be possible to buffer layouted
         // primitives per ParaPortion with/in/dependent on the EditEngine
         // content if needed. For now, get and compare
-        TextHierarchyBreakupBlockText aBreakup(*pSdrOutliner, aNewTransformA, 
aNewTransformB,
-                                               aClipRange);
+        drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+        // TextEditOverlay is only possible in EditView, activate it
+        aViewInformation2D.setEditViewActive(true);
+        TextHierarchyBreakupBlockText aBreakup(aViewInformation2D, 
*pSdrOutliner, aNewTransformA,
+                                               aNewTransformB, aClipRange);
         pSdrOutliner->StripPortions(aBreakup);
         aNewTextPrimitives.append(aBreakup.getTextPortionPrimitives());
 
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx 
b/svx/source/svdraw/svdotextdecomposition.cxx
index 7a6001d628e4..3f7d41a6597d 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -152,6 +152,7 @@ void SdrTextObj::impDecomposeContourTextPrimitive(
     // ScaledUnitPolyPolygon. Thus aPolyPolygon might be smaller than aScale 
from aObjectMatrix. We
     // use this smaller size for the text area, otherwise the text will reach 
into the stroke.
     TextHierarchyBreakupContourText aBreakup(
+        aViewInformation,
         rOutliner,
         aNewTransformA,
         aNewTransformB,
@@ -303,6 +304,7 @@ void SdrTextObj::impDecomposeAutoFitTextPrimitive(
 
     // now break up text primitives.
     TextHierarchyBreakupBlockText aBreakup(
+        aViewInformation,
         rOutliner,
         aNewTransformA,
         aNewTransformB,
@@ -620,6 +622,7 @@ void SdrTextObj::impDecomposeBlockTextPrimitive(
 
     // now break up text primitives.
     TextHierarchyBreakupBlockText aBreakup(
+        aViewInformation,
         rOutliner,
         aNewTransformA,
         aNewTransformB,
@@ -704,6 +707,7 @@ void SdrTextObj::impDecomposeStretchTextPrimitive(
 
     // now break up text primitives.
     TextHierarchyBreakupOutliner aBreakup(
+        aViewInformation,
         rOutliner,
         aNewTransformA,
         aNewTransformB);
@@ -1133,6 +1137,7 @@ void SdrTextObj::impDecomposeChainedTextPrimitive(
 
     // now break up text primitives.
     TextHierarchyBreakupBlockText aBreakup(
+        aViewInformation,
         rOutliner,
         aNewTransformA,
         aNewTransformB,
diff --git a/svx/source/svdraw/svdotextpathdecomposition.cxx 
b/svx/source/svdraw/svdotextpathdecomposition.cxx
index ec4017ba4350..20fa93f76490 100644
--- a/svx/source/svdraw/svdotextpathdecomposition.cxx
+++ b/svx/source/svdraw/svdotextpathdecomposition.cxx
@@ -154,6 +154,12 @@ namespace
         ::std::vector< impPathTextPortion >         maPathTextPortions;
 
     public:
+        TextHierarchyBreakupPathTextPortions(const 
drawinglayer::geometry::ViewInformation2D& rViewInformation2D)
+        : StripPortionsHelper(rViewInformation2D)
+        , maPathTextPortions()
+        {
+        }
+
         virtual void processDrawPortionInfo(const DrawPortionInfo& 
rDrawPortionInfo) override
         {
             // extract and add data for TextOnPath further processing
@@ -640,7 +646,7 @@ void SdrTextObj::impDecomposePathTextPrimitive(
     
rOutliner.setVisualizedPage(GetSdrPageFromXDrawPage(aViewInformation.getVisualizedPage()));
 
     // now break up to text portions
-    TextHierarchyBreakupPathTextPortions aBreakup;
+    TextHierarchyBreakupPathTextPortions aBreakup(aViewInformation);
     rOutliner.StripPortions(aBreakup);
     const ::std::vector< impPathTextPortion > 
rPathTextPortions(aBreakup.sortAndGetPathTextPortions());
 
diff --git a/svx/source/svdraw/svdoutl.cxx b/svx/source/svdraw/svdoutl.cxx
index da7bafc506c7..dff076f1da52 100644
--- a/svx/source/svdraw/svdoutl.cxx
+++ b/svx/source/svdraw/svdoutl.cxx
@@ -166,11 +166,13 @@ void 
TextHierarchyBreakupBlockText::processDrawPortionInfo(const DrawPortionInfo
 }
 
 TextHierarchyBreakupBlockText::TextHierarchyBreakupBlockText(
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D,
     SdrOutliner& rOutliner,
     const basegfx::B2DHomMatrix& rNewTransformA,
     const basegfx::B2DHomMatrix& rNewTransformB,
     const basegfx::B2DRange& rClipRange)
 : TextHierarchyBreakupOutliner(
+    rViewInformation2D,
     rOutliner,
     rNewTransformA,
     rNewTransformB)
@@ -189,11 +191,13 @@ void 
TextHierarchyBreakupContourText::processDrawPortionInfo(const DrawPortionIn
     }
 
 TextHierarchyBreakupContourText::TextHierarchyBreakupContourText(
+    const drawinglayer::geometry::ViewInformation2D& rViewInformation2D,
     SdrOutliner& rOutliner,
     const basegfx::B2DHomMatrix& rNewTransformA,
     const basegfx::B2DHomMatrix& rNewTransformB,
     const basegfx::B2DVector& rScale)
 : TextHierarchyBreakupOutliner(
+    rViewInformation2D,
     rOutliner,
     rNewTransformA,
     rNewTransformB)

Reply via email to