include/vcl/rendercontext/State.hxx |    4 +++-
 starmath/source/document.cxx        |   13 ++++---------
 vcl/source/gdi/mtfxmldump.cxx       |    2 ++
 vcl/source/outdev/stack.cxx         |    6 ++++++
 4 files changed, 15 insertions(+), 10 deletions(-)

New commits:
commit 611694b707eb43e4c0f20b781f6869016a3ba099
Author:     Khaled Hosny <kha...@libreoffice.org>
AuthorDate: Thu Aug 17 17:39:29 2023 +0300
Commit:     خالد حسني <kha...@libreoffice.org>
CommitDate: Thu Aug 24 13:17:49 2023 +0200

    vcl: Allow pushing/popping OutputDevice’s RTLEnabled state
    
    Change-Id: Icafdc307c5c9df768f00c3ac0d128936607bf3e6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155794
    Tested-by: Jenkins
    Reviewed-by: خالد حسني <kha...@libreoffice.org>

diff --git a/include/vcl/rendercontext/State.hxx 
b/include/vcl/rendercontext/State.hxx
index a433dbd8fb05..042eb2deca7a 100644
--- a/include/vcl/rendercontext/State.hxx
+++ b/include/vcl/rendercontext/State.hxx
@@ -53,6 +53,7 @@ enum class PushFlags
     TEXTLAYOUTMODE = 0x0800,
     TEXTLANGUAGE = 0x1000,
     OVERLINECOLOR = 0x2000,
+    RTLENABLED = 0x4000,
     ALL = 0xFFFF
 };
 }
@@ -66,7 +67,7 @@ template <> struct typed_flags<vcl::PushFlags> : 
is_typed_flags<vcl::PushFlags,
 #define PUSH_ALLFONT                                                           
                    \
     (vcl::PushFlags::TEXTCOLOR | vcl::PushFlags::TEXTFILLCOLOR | 
vcl::PushFlags::TEXTLINECOLOR     \
      | vcl::PushFlags::OVERLINECOLOR | vcl::PushFlags::TEXTALIGN | 
vcl::PushFlags::TEXTLAYOUTMODE  \
-     | vcl::PushFlags::TEXTLANGUAGE | vcl::PushFlags::FONT)
+     | vcl::PushFlags::TEXTLANGUAGE | vcl::PushFlags::RTLENABLED | 
vcl::PushFlags::FONT)
 
 namespace vcl::text
 {
@@ -114,6 +115,7 @@ struct State
     LanguageType meTextLanguage = LANGUAGE_SYSTEM;
     PushFlags mnFlags = PushFlags::NONE;
     bool mbMapActive = false;
+    bool mbRTLEnabled = false;
 };
 }
 
diff --git a/vcl/source/gdi/mtfxmldump.cxx b/vcl/source/gdi/mtfxmldump.cxx
index c26a44310774..f507fddb284e 100644
--- a/vcl/source/gdi/mtfxmldump.cxx
+++ b/vcl/source/gdi/mtfxmldump.cxx
@@ -63,6 +63,8 @@ OUString collectPushFlags(vcl::PushFlags nFlags)
         aStrings.emplace_back("PushTextLanguage");
     if (nFlags & vcl::PushFlags::OVERLINECOLOR)
         aStrings.emplace_back("PushOverlineColor");
+    if (nFlags & vcl::PushFlags::RTLENABLED)
+        aStrings.emplace_back("PushRTLEnabled");
 
     OUString aString;
 
diff --git a/vcl/source/outdev/stack.cxx b/vcl/source/outdev/stack.cxx
index 72ef63af551d..129348051e3d 100644
--- a/vcl/source/outdev/stack.cxx
+++ b/vcl/source/outdev/stack.cxx
@@ -84,6 +84,9 @@ void OutputDevice::Push(vcl::PushFlags nFlags)
     if (nFlags & vcl::PushFlags::REFPOINT && mbRefPoint)
         rState.mpRefPoint = maRefPoint;
 
+    if (nFlags & vcl::PushFlags::RTLENABLED)
+        rState.mbRTLEnabled = IsRTLEnabled();
+
     if (mpAlphaVDev)
         mpAlphaVDev->Push();
 }
@@ -184,6 +187,9 @@ void OutputDevice::Pop()
             SetRefPoint();
     }
 
+    if ( rState.mnFlags & vcl::PushFlags::RTLENABLED )
+        EnableRTL( rState.mbRTLEnabled );
+
     maOutDevStateStack.pop_back();
 
     mpMetaFile = pOldMetaFile;
commit a21ae72ab208b60bfd284d4630295f06e21c3481
Author:     Khaled Hosny <kha...@libreoffice.org>
AuthorDate: Wed Aug 23 15:30:28 2023 +0300
Commit:     خالد حسني <kha...@libreoffice.org>
CommitDate: Thu Aug 24 13:17:39 2023 +0200

    starmath: Use OutputDevice::Push()/Pop() instead of doing it manually
    
    Change-Id: I628385cd64f3d65a1a567590bce754693b4d0684
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155795
    Tested-by: Jenkins
    Reviewed-by: خالد حسني <kha...@libreoffice.org>

diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index a62d1e949d1a..cafd291fe14e 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -263,15 +263,13 @@ void SmDocShell::ArrangeFormula()
 
     // format/draw formulas always from left to right,
     // and numbers should not be converted
-    vcl::text::ComplexTextLayoutFlags nLayoutMode = pOutDev->GetLayoutMode();
+    pOutDev->Push(vcl::PushFlags::TEXTLAYOUTMODE | 
vcl::PushFlags::TEXTLANGUAGE);
     pOutDev->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::Default );
-    LanguageType nDigitLang = pOutDev->GetDigitLanguage();
     pOutDev->SetDigitLanguage( LANGUAGE_ENGLISH );
 
     mpTree->Arrange(*pOutDev, rFormat);
 
-    pOutDev->SetLayoutMode( nLayoutMode );
-    pOutDev->SetDigitLanguage( nDigitLang );
+    pOutDev->Pop();
 
     SetFormulaArranged(true);
 
@@ -339,9 +337,8 @@ void SmDocShell::DrawFormula(OutputDevice &rDev, Point 
&rPosition, bool bDrawSel
 
     // format/draw formulas always from left to right
     // and numbers should not be converted
-    vcl::text::ComplexTextLayoutFlags nLayoutMode = rDev.GetLayoutMode();
+    rDev.Push(vcl::PushFlags::TEXTLAYOUTMODE | vcl::PushFlags::TEXTLANGUAGE);
     rDev.SetLayoutMode( vcl::text::ComplexTextLayoutFlags::Default );
-    LanguageType nDigitLang = rDev.GetDigitLanguage();
     rDev.SetDigitLanguage( LANGUAGE_ENGLISH );
 
     //Set selection if any
@@ -353,9 +350,7 @@ void SmDocShell::DrawFormula(OutputDevice &rDev, Point 
&rPosition, bool bDrawSel
     //Drawing using visitor
     SmDrawingVisitor(rDev, rPosition, mpTree.get());
 
-
-    rDev.SetLayoutMode( nLayoutMode );
-    rDev.SetDigitLanguage( nDigitLang );
+    rDev.Pop();
 
     if (bRestoreDrawMode)
         rDev.SetDrawMode( nOldDrawMode );

Reply via email to