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 );