vcl: rename OutDevState to Stack

I have moved the header file to include/vcl/rendercontext as this will
eventually be part of the RenderContext split from OutputDevice.

State and associated enums have also been moved to the vcl namespace. I
have also moved ComplexTextLayoutFlags into the vcl::text namespace.

Change-Id: I0abbf560e75b45a272854b267e948c240cd69091
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121524
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
diff --git a/accessibility/inc/pch/precompiled_acc.hxx b/accessibility/inc/pch/precompiled_acc.hxx
index 00b8a7f..661e6e4 100644
--- a/accessibility/inc/pch/precompiled_acc.hxx
+++ b/accessibility/inc/pch/precompiled_acc.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:14:17 using:
 Generated on 2021-09-12 11:50:46 using:
 ./bin/update_pch accessibility acc --cutoff=4 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -42,6 +42,7 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <numeric>
#include <optional>
@@ -117,7 +118,6 @@
#include <vcl/menu.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/quickselectionengine.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
@@ -129,7 +129,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salgtype.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
@@ -165,6 +168,8 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/tuple/b3dtuple.hxx>
@@ -183,6 +188,7 @@
#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
#include <com/sun/star/accessibility/XAccessibleContext.hpp>
#include <com/sun/star/accessibility/XAccessibleContext2.hpp>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
#include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp>
#include <com/sun/star/accessibility/XAccessibleKeyBinding.hpp>
diff --git a/basctl/inc/pch/precompiled_basctl.hxx b/basctl/inc/pch/precompiled_basctl.hxx
index 50164e6..c05c18d 100644
--- a/basctl/inc/pch/precompiled_basctl.hxx
+++ b/basctl/inc/pch/precompiled_basctl.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-08-22 14:51:38 using:
 Generated on 2021-09-28 06:05:45 using:
 ./bin/update_pch basctl basctl --cutoff=3 --exclude:system --include:module --exclude:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -136,7 +136,6 @@
#include <vcl/metaactiontypes.hxx>
#include <vcl/metric.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/prntypes.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
@@ -148,7 +147,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salgtype.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
@@ -263,13 +265,17 @@
#include <com/sun/star/frame/XToolbarController.hpp>
#include <com/sun/star/graphic/XPrimitive2D.hpp>
#include <com/sun/star/i18n/Calendar2.hpp>
#include <com/sun/star/i18n/DirectionProperty.hpp>
#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
#include <com/sun/star/i18n/KCharacterType.hpp>
#include <com/sun/star/i18n/LanguageCountryInfo.hpp>
#include <com/sun/star/i18n/LocaleDataItem2.hpp>
#include <com/sun/star/i18n/LocaleItem.hpp>
#include <com/sun/star/i18n/NativeNumberXmlAttributes.hpp>
#include <com/sun/star/i18n/ParseResult.hpp>
#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <com/sun/star/i18n/UnicodeScript.hpp>
#include <com/sun/star/i18n/WordType.hpp>
#include <com/sun/star/i18n/XNumberFormatCode.hpp>
#include <com/sun/star/i18n/reservedWords.hpp>
@@ -322,6 +328,7 @@
#include <com/sun/star/view/PrintableState.hpp>
#include <comphelper/accessiblecomponenthelper.hxx>
#include <comphelper/accessiblecontexthelper.hxx>
#include <comphelper/accessibleeventnotifier.hxx>
#include <comphelper/broadcasthelper.hxx>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/interfacecontainer2.hxx>
@@ -526,6 +533,7 @@
#include <uno/lbnames.h>
#include <uno/sequence2.h>
#include <unotools/calendarwrapper.hxx>
#include <unotools/charclass.hxx>
#include <unotools/configitem.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/localedatawrapper.hxx>
diff --git a/basic/inc/pch/precompiled_sb.hxx b/basic/inc/pch/precompiled_sb.hxx
index 450e386..d327c88 100644
--- a/basic/inc/pch/precompiled_sb.hxx
+++ b/basic/inc/pch/precompiled_sb.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:14:54 using:
 Generated on 2021-09-12 11:49:52 using:
 ./bin/update_pch basic sb --cutoff=2 --exclude:system --exclude:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -40,10 +40,12 @@
#include <osl/thread.h>
#include <osl/time.h>
#include <rtl/character.hxx>
#include <rtl/math.h>
#include <rtl/math.hxx>
#include <rtl/string.hxx>
#include <rtl/textenc.h>
#include <rtl/ustrbuf.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
#include <sal/log.hxx>
#include <sal/saldllapi.h>
@@ -58,7 +60,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -69,7 +70,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
@@ -84,6 +88,7 @@
#include <basegfx/vector/b2enums.hxx>
#include <com/sun/star/awt/DeviceInfo.hpp>
#include <com/sun/star/drawing/LineCap.hpp>
#include <com/sun/star/lang/Locale.hpp>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Reference.hxx>
@@ -97,6 +102,7 @@
#include <o3tl/float_int_conversion.hxx>
#include <o3tl/safeint.hxx>
#include <svl/SfxBroadcaster.hxx>
#include <svl/numformat.hxx>
#include <svl/zforlist.hxx>
#include <tools/color.hxx>
#include <tools/debug.hxx>
diff --git a/basic/source/runtime/inputbox.cxx b/basic/source/runtime/inputbox.cxx
index e409b13..36d6042 100644
--- a/basic/source/runtime/inputbox.cxx
+++ b/basic/source/runtime/inputbox.cxx
@@ -78,7 +78,7 @@ void SvRTLInputBox::PositionDialog(tools::Long nXTwips, tools::Long nYTwips)
    {
        Point aDlgPosApp( nXTwips, nYTwips );
        OutputDevice* pDefaultDevice = Application::GetDefaultDevice();
        pDefaultDevice->Push(PushFlags::MAPMODE);
        pDefaultDevice->Push(vcl::PushFlags::MAPMODE);
        pDefaultDevice->SetMapMode(MapMode( MapUnit::MapAppFont));
        aDlgPosApp = pDefaultDevice->LogicToPixel(aDlgPosApp, MapMode(MapUnit::MapTwip));
        pDefaultDevice->Pop();
diff --git a/canvas/source/cairo/cairo_canvashelper_text.cxx b/canvas/source/cairo/cairo_canvashelper_text.cxx
index 2763800..c5f387e 100644
--- a/canvas/source/cairo/cairo_canvashelper_text.cxx
+++ b/canvas/source/cairo/cairo_canvashelper_text.cxx
@@ -226,21 +226,21 @@ namespace cairocanvas
                return uno::Reference< rendering::XCachedPrimitive >(nullptr); // no output necessary

                // change text direction and layout mode
            ComplexTextLayoutFlags nLayoutMode(ComplexTextLayoutFlags::Default);
            vcl::text::ComplexTextLayoutFlags nLayoutMode(vcl::text::ComplexTextLayoutFlags::Default);
            switch( textDirection )
            {
                case rendering::TextDirection::WEAK_LEFT_TO_RIGHT:
                case rendering::TextDirection::STRONG_LEFT_TO_RIGHT:
                    nLayoutMode |= ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= ComplexTextLayoutFlags::TextOriginLeft;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
                    break;

                case rendering::TextDirection::WEAK_RIGHT_TO_LEFT:
                    nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl;
                    [[fallthrough]];
                case rendering::TextDirection::STRONG_RIGHT_TO_LEFT:
                    nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= ComplexTextLayoutFlags::TextOriginRight;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::TextOriginRight;
                    break;
            }

diff --git a/canvas/source/cairo/cairo_textlayout.cxx b/canvas/source/cairo/cairo_textlayout.cxx
index 6a1bfc2..9952d33 100644
--- a/canvas/source/cairo/cairo_textlayout.cxx
+++ b/canvas/source/cairo/cairo_textlayout.cxx
@@ -46,19 +46,19 @@ namespace cairocanvas
                              sal_Int8      nTextDirection )
        {
            // TODO(P3): avoid if already correctly set
            ComplexTextLayoutFlags nLayoutMode = ComplexTextLayoutFlags::Default;
            vcl::text::ComplexTextLayoutFlags nLayoutMode = vcl::text::ComplexTextLayoutFlags::Default;
            switch( nTextDirection )
            {
                case rendering::TextDirection::WEAK_LEFT_TO_RIGHT:
                    break;
                case rendering::TextDirection::STRONG_LEFT_TO_RIGHT:
                    nLayoutMode = ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    break;
                case rendering::TextDirection::WEAK_RIGHT_TO_LEFT:
                    nLayoutMode = ComplexTextLayoutFlags::BiDiRtl;
                    nLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiRtl;
                    break;
                case rendering::TextDirection::STRONG_RIGHT_TO_LEFT:
                    nLayoutMode = ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    break;
                default:
                    break;
@@ -66,7 +66,7 @@ namespace cairocanvas

            // set calculated layout mode. Origin is always the left edge,
            // as required at the API spec
            rOutDev.SetLayoutMode( nLayoutMode | ComplexTextLayoutFlags::TextOriginLeft );
            rOutDev.SetLayoutMode( nLayoutMode | vcl::text::ComplexTextLayoutFlags::TextOriginLeft );
        }
    }

diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx
index 04fd39b..69ef192 100644
--- a/canvas/source/vcl/canvashelper.cxx
+++ b/canvas/source/vcl/canvashelper.cxx
@@ -565,21 +565,21 @@ namespace vclcanvas
                return uno::Reference< rendering::XCachedPrimitive >(nullptr); // no output necessary

            // change text direction and layout mode
            ComplexTextLayoutFlags nLayoutMode(ComplexTextLayoutFlags::Default);
            vcl::text::ComplexTextLayoutFlags nLayoutMode(vcl::text::ComplexTextLayoutFlags::Default);
            switch( textDirection )
            {
                case rendering::TextDirection::WEAK_LEFT_TO_RIGHT:
                case rendering::TextDirection::STRONG_LEFT_TO_RIGHT:
                    nLayoutMode |= ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= ComplexTextLayoutFlags::TextOriginLeft;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
                    break;

                case rendering::TextDirection::WEAK_RIGHT_TO_LEFT:
                    nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl;
                    [[fallthrough]];
                case rendering::TextDirection::STRONG_RIGHT_TO_LEFT:
                    nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= ComplexTextLayoutFlags::TextOriginRight;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode |= vcl::text::ComplexTextLayoutFlags::TextOriginRight;
                    break;
            }

diff --git a/canvas/source/vcl/canvashelper_texturefill.cxx b/canvas/source/vcl/canvashelper_texturefill.cxx
index b397ffc..f181fe3 100644
--- a/canvas/source/vcl/canvashelper_texturefill.cxx
+++ b/canvas/source/vcl/canvashelper_texturefill.cxx
@@ -526,7 +526,7 @@ namespace vclcanvas
                // poly-polygons, and don't have to output the gradient
                // twice for XOR

                rOutDev.Push( PushFlags::CLIPREGION );
                rOutDev.Push( vcl::PushFlags::CLIPREGION );
                rOutDev.IntersectClipRegion( aPolygonDeviceRectOrig );
                doGradientFill( rOutDev,
                                rValues,
@@ -550,7 +550,7 @@ namespace vclcanvas
            {
                const vcl::Region aPolyClipRegion( rPoly );

                rOutDev.Push( PushFlags::CLIPREGION );
                rOutDev.Push( vcl::PushFlags::CLIPREGION );
                rOutDev.IntersectClipRegion( aPolyClipRegion );

                doGradientFill( rOutDev,
@@ -1030,7 +1030,7 @@ namespace vclcanvas
                        {
                            const vcl::Region aPolyClipRegion( aPolyPoly );

                            rOutDev.Push( PushFlags::CLIPREGION );
                            rOutDev.Push( vcl::PushFlags::CLIPREGION );
                            rOutDev.IntersectClipRegion( aPolyClipRegion );

                            textureFill( rOutDev,
@@ -1047,7 +1047,7 @@ namespace vclcanvas
                            if( mp2ndOutDevProvider )
                            {
                                OutputDevice& r2ndOutDev( mp2ndOutDevProvider->getOutDev() );
                                r2ndOutDev.Push( PushFlags::CLIPREGION );
                                r2ndOutDev.Push( vcl::PushFlags::CLIPREGION );

                                r2ndOutDev.IntersectClipRegion( aPolyClipRegion );
                                textureFill( r2ndOutDev,
diff --git a/canvas/source/vcl/spritecanvashelper.cxx b/canvas/source/vcl/spritecanvashelper.cxx
index 37a425e..2eb6224 100644
--- a/canvas/source/vcl/spritecanvashelper.cxx
+++ b/canvas/source/vcl/spritecanvashelper.cxx
@@ -406,7 +406,7 @@ namespace vclcanvas
            // repaint uncovered areas from sprite. Need to actually
            // clip here, since we're only repainting _parts_ of the
            // sprite
            rOutDev.Push( PushFlags::CLIPREGION );
            rOutDev.Push( vcl::PushFlags::CLIPREGION );

            for( const auto& rArea : aUnscrollableAreas )
                opaqueUpdateSpriteArea( aFirst->second.getSprite(),
diff --git a/canvas/source/vcl/spritehelper.cxx b/canvas/source/vcl/spritehelper.cxx
index 89cc33d..01ed44b 100644
--- a/canvas/source/vcl/spritehelper.cxx
+++ b/canvas/source/vcl/spritehelper.cxx
@@ -149,7 +149,7 @@ namespace vclcanvas

        ::basegfx::B2DHomMatrix aTransform( getTransformation() );

        rTargetSurface.Push( PushFlags::CLIPREGION );
        rTargetSurface.Push( vcl::PushFlags::CLIPREGION );

        // apply clip (if any)
        if( getClip().is() )
diff --git a/canvas/source/vcl/textlayout.cxx b/canvas/source/vcl/textlayout.cxx
index eee17ae..cb5fb09 100644
--- a/canvas/source/vcl/textlayout.cxx
+++ b/canvas/source/vcl/textlayout.cxx
@@ -50,19 +50,19 @@ namespace vclcanvas
                              sal_Int8      nTextDirection )
        {
            // TODO(P3): avoid if already correctly set
            ComplexTextLayoutFlags nLayoutMode = ComplexTextLayoutFlags::Default;
            vcl::text::ComplexTextLayoutFlags nLayoutMode = vcl::text::ComplexTextLayoutFlags::Default;
            switch( nTextDirection )
            {
                case rendering::TextDirection::WEAK_LEFT_TO_RIGHT:
                    break;
                case rendering::TextDirection::STRONG_LEFT_TO_RIGHT:
                    nLayoutMode = ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    break;
                case rendering::TextDirection::WEAK_RIGHT_TO_LEFT:
                    nLayoutMode = ComplexTextLayoutFlags::BiDiRtl;
                    nLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiRtl;
                    break;
                case rendering::TextDirection::STRONG_RIGHT_TO_LEFT:
                    nLayoutMode = ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::BiDiStrong;
                    nLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::BiDiStrong;
                    break;
                default:
                    break;
@@ -70,7 +70,7 @@ namespace vclcanvas

            // set calculated layout mode. Origin is always the left edge,
            // as required at the API spec
            rOutDev.SetLayoutMode( nLayoutMode | ComplexTextLayoutFlags::TextOriginLeft );
            rOutDev.SetLayoutMode( nLayoutMode | vcl::text::ComplexTextLayoutFlags::TextOriginLeft );
        }
    }

diff --git a/chart2/inc/pch/precompiled_chartcontroller.hxx b/chart2/inc/pch/precompiled_chartcontroller.hxx
index 36a2756..aeac1b6 100644
--- a/chart2/inc/pch/precompiled_chartcontroller.hxx
+++ b/chart2/inc/pch/precompiled_chartcontroller.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-07-28 20:46:09 using:
 Generated on 2021-09-28 05:28:39 using:
 ./bin/update_pch chart2 chartcontroller --cutoff=6 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -40,12 +40,14 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <numeric>
#include <optional>
#include <ostream>
#include <set>
#include <stddef.h>
#include <stdexcept>
#include <string.h>
#include <string>
#include <string_view>
@@ -123,7 +125,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -134,7 +135,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/settings.hxx>
@@ -227,13 +231,17 @@
#include <com/sun/star/graphic/XPrimitive2D.hpp>
#include <com/sun/star/i18n/Calendar2.hpp>
#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
#include <com/sun/star/i18n/DirectionProperty.hpp>
#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
#include <com/sun/star/i18n/KCharacterType.hpp>
#include <com/sun/star/i18n/LanguageCountryInfo.hpp>
#include <com/sun/star/i18n/LocaleDataItem2.hpp>
#include <com/sun/star/i18n/LocaleItem.hpp>
#include <com/sun/star/i18n/NativeNumberXmlAttributes.hpp>
#include <com/sun/star/i18n/ParseResult.hpp>
#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <com/sun/star/i18n/UnicodeScript.hpp>
#include <com/sun/star/i18n/WordType.hpp>
#include <com/sun/star/i18n/reservedWords.hpp>
#include <com/sun/star/lang/DisposedException.hpp>
@@ -267,6 +275,7 @@
#include <com/sun/star/uno/genfunc.hxx>
#include <com/sun/star/util/Date.hpp>
#include <com/sun/star/util/DateTime.hpp>
#include <com/sun/star/util/NumberFormat.hpp>
#include <com/sun/star/util/Time.hpp>
#include <com/sun/star/util/XModifyBroadcaster.hpp>
#include <com/sun/star/util/XUpdatable.hpp>
@@ -274,6 +283,7 @@
#include <comphelper/broadcasthelper.hxx>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/interfacecontainer2.hxx>
#include <comphelper/multicontainer2.hxx>
#include <comphelper/propagg.hxx>
#include <comphelper/proparrhlp.hxx>
#include <comphelper/propertycontainer.hxx>
@@ -294,7 +304,6 @@
#include <cppuhelper/implbase_ex_post.hxx>
#include <cppuhelper/implbase_ex_pre.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/propshlp.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <cppuhelper/weak.hxx>
@@ -315,6 +324,8 @@
#include <editeng/forbiddencharacterstable.hxx>
#include <editeng/macros.hxx>
#include <editeng/outliner.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/overflowingtxt.hxx>
#include <editeng/paragraphdata.hxx>
#include <editeng/svxenum.hxx>
#include <editeng/svxfont.hxx>
@@ -348,6 +359,8 @@
#include <svl/itemset.hxx>
#include <svl/languageoptions.hxx>
#include <svl/lstner.hxx>
#include <svl/nfkeytab.hxx>
#include <svl/ondemand.hxx>
#include <svl/poolitem.hxx>
#include <svl/setitem.hxx>
#include <svl/stritem.hxx>
@@ -440,11 +453,13 @@
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/calendarwrapper.hxx>
#include <unotools/charclass.hxx>
#include <unotools/eventlisteneradapter.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/localedatawrapper.hxx>
#include <unotools/nativenumberwrapper.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/transliterationwrapper.hxx>
#include <unotools/unotoolsdllapi.h>
diff --git a/chart2/inc/pch/precompiled_chartcore.hxx b/chart2/inc/pch/precompiled_chartcore.hxx
index 3b9a214..f7a6e5f 100644
--- a/chart2/inc/pch/precompiled_chartcore.hxx
+++ b/chart2/inc/pch/precompiled_chartcore.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-07-28 20:46:13 using:
 Generated on 2021-09-12 11:51:16 using:
 ./bin/update_pch chart2 chartcore --cutoff=3 --exclude:system --exclude:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -78,7 +78,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -89,7 +88,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
@@ -102,7 +104,6 @@
#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/b2irectangle.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/vector/b2enums.hxx>
@@ -235,6 +236,7 @@
#include <svl/intitem.hxx>
#include <svl/itemset.hxx>
#include <svl/lstner.hxx>
#include <svl/numformat.hxx>
#include <svl/poolitem.hxx>
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
@@ -263,6 +265,7 @@
#include <tools/weakbase.h>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/saveopt.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
diff --git a/cppcanvas/source/inc/implrenderer.hxx b/cppcanvas/source/inc/implrenderer.hxx
index 4b432f8..93b68f9 100644
--- a/cppcanvas/source/inc/implrenderer.hxx
+++ b/cppcanvas/source/inc/implrenderer.hxx
@@ -63,7 +63,7 @@ namespace cppcanvas::internal
        public:
            OutDevState& getState();
            const OutDevState& getState() const;
            void pushState(PushFlags nFlags);
            void pushState(vcl::PushFlags nFlags);
            void popState();
            void clearStateStack();
        private:
diff --git a/cppcanvas/source/inc/outdevstate.hxx b/cppcanvas/source/inc/outdevstate.hxx
index 16cc3c4..275b7b4 100644
--- a/cppcanvas/source/inc/outdevstate.hxx
+++ b/cppcanvas/source/inc/outdevstate.hxx
@@ -30,8 +30,7 @@
#include <tools/fontenum.hxx>
#include <tools/gen.hxx>
#include <vcl/fntstyle.hxx>
#include <vcl/outdevstate.hxx>

#include <vcl/rendercontext/State.hxx>

namespace cppcanvas::internal
    {
@@ -55,7 +54,7 @@ namespace cppcanvas::internal
                fontRotation(0.0),

                textEmphasisMark(FontEmphasisMark::NONE),
                pushFlags(PushFlags::ALL),
                pushFlags(vcl::PushFlags::ALL),
                textDirection(css::rendering::TextDirection::WEAK_LEFT_TO_RIGHT),
                textAlignment(0), // TODO(Q2): Synchronize with implrenderer
                                  // and possibly new rendering::TextAlignment
@@ -99,7 +98,7 @@ namespace cppcanvas::internal
            double                                                                   fontRotation;

            FontEmphasisMark                                                         textEmphasisMark;
            PushFlags                                                                pushFlags;
            vcl::PushFlags                                                                pushFlags;
            sal_Int8                                                                 textDirection;
            sal_Int8                                                                 textAlignment;
            FontRelief                                                               textReliefStyle;
diff --git a/cppcanvas/source/mtfrenderer/implrenderer.cxx b/cppcanvas/source/mtfrenderer/implrenderer.cxx
index 64ac3a1..14ecdeb 100644
--- a/cppcanvas/source/mtfrenderer/implrenderer.cxx
+++ b/cppcanvas/source/mtfrenderer/implrenderer.cxx
@@ -250,7 +250,7 @@ namespace cppcanvas::internal
            return m_aStates.back();
        }

        void VectorOfOutDevStates::pushState(PushFlags nFlags)
        void VectorOfOutDevStates::pushState(vcl::PushFlags nFlags)
        {
            m_aStates.push_back( getState() );
            getState().pushFlags = nFlags;
@@ -258,7 +258,7 @@ namespace cppcanvas::internal

        void VectorOfOutDevStates::popState()
        {
            if( getState().pushFlags != PushFlags::ALL )
            if( getState().pushFlags != vcl::PushFlags::ALL )
            {
                // a state is pushed which is incomplete, i.e. does not
                // restore everything to the previous stack level when
@@ -277,19 +277,19 @@ namespace cppcanvas::internal

                const OutDevState& rNewState( getState() );

                if( aCalculatedNewState.pushFlags & PushFlags::LINECOLOR )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::LINECOLOR )
                {
                    aCalculatedNewState.lineColor      = rNewState.lineColor;
                    aCalculatedNewState.isLineColorSet = rNewState.isLineColorSet;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::FILLCOLOR )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::FILLCOLOR )
                {
                    aCalculatedNewState.fillColor      = rNewState.fillColor;
                    aCalculatedNewState.isFillColorSet = rNewState.isFillColorSet;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::FONT )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::FONT )
                {
                    aCalculatedNewState.xFont                   = rNewState.xFont;
                    aCalculatedNewState.fontRotation            = rNewState.fontRotation;
@@ -303,17 +303,17 @@ namespace cppcanvas::internal
                    aCalculatedNewState.isTextOutlineModeSet    = rNewState.isTextOutlineModeSet;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::TEXTCOLOR )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::TEXTCOLOR )
                {
                    aCalculatedNewState.textColor = rNewState.textColor;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::MAPMODE )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::MAPMODE )
                {
                    aCalculatedNewState.mapModeTransform = rNewState.mapModeTransform;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::CLIPREGION )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::CLIPREGION )
                {
                    aCalculatedNewState.clip        = rNewState.clip;
                    aCalculatedNewState.clipRect    = rNewState.clipRect;
@@ -321,46 +321,46 @@ namespace cppcanvas::internal
                }

                // TODO(F2): Raster ops NYI
                // if( (aCalculatedNewState.pushFlags & PushFlags::RASTEROP) )
                // if( (aCalculatedNewState.pushFlags & vcl::PushFlags::RASTEROP) )
                // {
                // }

                if( aCalculatedNewState.pushFlags & PushFlags::TEXTFILLCOLOR )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::TEXTFILLCOLOR )
                {
                    aCalculatedNewState.textFillColor      = rNewState.textFillColor;
                    aCalculatedNewState.isTextFillColorSet = rNewState.isTextFillColorSet;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::TEXTALIGN )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::TEXTALIGN )
                {
                    aCalculatedNewState.textReferencePoint = rNewState.textReferencePoint;
                }

                // TODO(F1): Refpoint handling NYI
                // if( (aCalculatedNewState.pushFlags & PushFlags::REFPOINT) )
                // if( (aCalculatedNewState.pushFlags & vcl::PushFlags::REFPOINT) )
                // {
                // }

                if( aCalculatedNewState.pushFlags & PushFlags::TEXTLINECOLOR )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::TEXTLINECOLOR )
                {
                    aCalculatedNewState.textLineColor      = rNewState.textLineColor;
                    aCalculatedNewState.isTextLineColorSet = rNewState.isTextLineColorSet;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::OVERLINECOLOR )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::OVERLINECOLOR )
                {
                    aCalculatedNewState.textOverlineColor = rNewState.textOverlineColor;
                    aCalculatedNewState.isTextOverlineColorSet = rNewState.isTextOverlineColorSet;
                }

                if( aCalculatedNewState.pushFlags & PushFlags::TEXTLAYOUTMODE )
                if( aCalculatedNewState.pushFlags & vcl::PushFlags::TEXTLAYOUTMODE )
                {
                    aCalculatedNewState.textAlignment = rNewState.textAlignment;
                    aCalculatedNewState.textDirection = rNewState.textDirection;
                }

                // TODO(F2): Text language handling NYI
                // if( (aCalculatedNewState.pushFlags & PushFlags::TEXTLANGUAGE) )
                // if( (aCalculatedNewState.pushFlags & vcl::PushFlags::TEXTLANGUAGE) )
                // {
                // }

@@ -715,7 +715,7 @@ namespace cppcanvas::internal
            // cannot currently use native canvas gradients, as a
            // finite step size is given (this funny feature is not
            // supported by the XCanvas API)
            rParms.mrStates.pushState(PushFlags::ALL);
            rParms.mrStates.pushState(vcl::PushFlags::ALL);

            if( !bIsPolygonRectangle )
            {
@@ -1521,22 +1521,22 @@ namespace cppcanvas::internal
                    case MetaActionType::LAYOUTMODE:
                    {
                        // TODO(F2): A lot is missing here
                        ComplexTextLayoutFlags nLayoutMode = static_cast<MetaLayoutModeAction*>(pCurrAct)->GetLayoutMode();
                        vcl::text::ComplexTextLayoutFlags nLayoutMode = static_cast<MetaLayoutModeAction*>(pCurrAct)->GetLayoutMode();
                        ::cppcanvas::internal::OutDevState& rState = rStates.getState();

                        ComplexTextLayoutFlags nBidiLayoutMode = nLayoutMode & (ComplexTextLayoutFlags::BiDiRtl|ComplexTextLayoutFlags::BiDiStrong);
                        if( nBidiLayoutMode == ComplexTextLayoutFlags::Default)
                        vcl::text::ComplexTextLayoutFlags nBidiLayoutMode = nLayoutMode & (vcl::text::ComplexTextLayoutFlags::BiDiRtl|vcl::text::ComplexTextLayoutFlags::BiDiStrong);
                        if( nBidiLayoutMode == vcl::text::ComplexTextLayoutFlags::Default)
                                rState.textDirection = rendering::TextDirection::WEAK_LEFT_TO_RIGHT;
                        else if( nBidiLayoutMode == ComplexTextLayoutFlags::BiDiStrong)
                        else if( nBidiLayoutMode == vcl::text::ComplexTextLayoutFlags::BiDiStrong)
                                rState.textDirection = rendering::TextDirection::STRONG_LEFT_TO_RIGHT;
                        else if( nBidiLayoutMode == ComplexTextLayoutFlags::BiDiRtl)
                        else if( nBidiLayoutMode == vcl::text::ComplexTextLayoutFlags::BiDiRtl)
                                rState.textDirection = rendering::TextDirection::WEAK_RIGHT_TO_LEFT;
                        else if( nBidiLayoutMode == (ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::BiDiStrong))
                        else if( nBidiLayoutMode == (vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::BiDiStrong))
                                rState.textDirection = rendering::TextDirection::STRONG_RIGHT_TO_LEFT;

                        rState.textAlignment = 0; // TODO(F2): rendering::TextAlignment::LEFT_ALIGNED;
                        if( (nLayoutMode & (ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginRight) )
                            && !(nLayoutMode & ComplexTextLayoutFlags::TextOriginLeft ) )
                        if( (nLayoutMode & (vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginRight) )
                            && !(nLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginLeft ) )
                        {
                            rState.textAlignment = 1; // TODO(F2): rendering::TextAlignment::RIGHT_ALIGNED;
                        }
@@ -1595,7 +1595,7 @@ namespace cppcanvas::internal
                        // Setup local transform, such that the
                        // metafile renders itself into the given
                        // output rectangle
                        rStates.pushState(PushFlags::ALL);
                        rStates.pushState(vcl::PushFlags::ALL);

                        rVDev.Push();
                        rVDev.SetMapMode( rSubstitute.GetPrefMapMode() );
@@ -2529,7 +2529,7 @@ namespace cppcanvas::internal
                    {
                        MetaTextRectAction* pAct = static_cast<MetaTextRectAction*>(pCurrAct);

                        rStates.pushState(PushFlags::ALL);
                        rStates.pushState(vcl::PushFlags::ALL);

                        // use the VDev to break up the text rect
                        // action into readily formatted lines
diff --git a/cui/inc/pch/precompiled_cui.hxx b/cui/inc/pch/precompiled_cui.hxx
index d2c8659..ddc4064 100644
--- a/cui/inc/pch/precompiled_cui.hxx
+++ b/cui/inc/pch/precompiled_cui.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:15:22 using:
 Generated on 2021-09-28 05:29:25 using:
 ./bin/update_pch cui cui --cutoff=8 --exclude:system --include:module --exclude:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -41,12 +41,14 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <numeric>
#include <optional>
#include <ostream>
#include <set>
#include <stddef.h>
#include <stdexcept>
#include <string.h>
#include <string>
#include <string_view>
@@ -84,6 +86,7 @@
#include <rtl/stringutils.hxx>
#include <rtl/textcvt.h>
#include <rtl/textenc.h>
#include <rtl/ustrbuf.h>
#include <rtl/ustrbuf.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
@@ -129,7 +132,6 @@
#include <vcl/metaactiontypes.hxx>
#include <vcl/metric.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -140,7 +142,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salctype.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
@@ -173,6 +178,8 @@
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/tuple/b3dtuple.hxx>
@@ -209,11 +216,21 @@
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/frame/XTerminateListener.hpp>
#include <com/sun/star/graphic/XPrimitive2D.hpp>
#include <com/sun/star/i18n/Calendar2.hpp>
#include <com/sun/star/i18n/DirectionProperty.hpp>
#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
#include <com/sun/star/i18n/KCharacterType.hpp>
#include <com/sun/star/i18n/LanguageCountryInfo.hpp>
#include <com/sun/star/i18n/LocaleDataItem2.hpp>
#include <com/sun/star/i18n/LocaleItem.hpp>
#include <com/sun/star/i18n/NativeNumberXmlAttributes.hpp>
#include <com/sun/star/i18n/ParseResult.hpp>
#include <com/sun/star/i18n/ScriptType.hpp>
#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <com/sun/star/i18n/UnicodeScript.hpp>
#include <com/sun/star/i18n/WordType.hpp>
#include <com/sun/star/i18n/reservedWords.hpp>
#include <com/sun/star/lang/EventObject.hpp>
#include <com/sun/star/lang/Locale.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -249,6 +266,7 @@
#include <com/sun/star/util/SearchOptions2.hpp>
#include <com/sun/star/util/Time.hpp>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/dispatchcommand.hxx>
#include <comphelper/lok.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/string.hxx>
@@ -274,11 +292,14 @@
#include <editeng/flditem.hxx>
#include <editeng/forbiddencharacterstable.hxx>
#include <editeng/outliner.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/overflowingtxt.hxx>
#include <editeng/paragraphdata.hxx>
#include <editeng/svxenum.hxx>
#include <editeng/svxfont.hxx>
#include <i18nlangtag/lang.h>
#include <i18nlangtag/languagetag.hxx>
#include <i18nutil/i18nutildllapi.h>
#include <i18nutil/searchopt.hxx>
#include <i18nutil/transliteration.hxx>
#include <o3tl/cow_wrapper.hxx>
@@ -307,6 +328,7 @@
#include <sot/formats.hxx>
#include <sot/sotdllapi.h>
#include <svl/SfxBroadcaster.hxx>
#include <svl/cjkoptions.hxx>
#include <svl/custritm.hxx>
#include <svl/eitem.hxx>
#include <svl/hint.hxx>
@@ -317,14 +339,15 @@
#include <svl/lstner.hxx>
#include <svl/macitem.hxx>
#include <svl/poolitem.hxx>
#include <svl/setitem.hxx>
#include <svl/stritem.hxx>
#include <svl/style.hxx>
#include <svl/stylesheetuser.hxx>
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svl/undo.hxx>
#include <svl/whichranges.hxx>
#include <svtools/colorcfg.hxx>
#include <svtools/optionsdrawinglayer.hxx>
#include <svtools/svtdllapi.h>
#include <svtools/unitconv.hxx>
#include <svtools/valueset.hxx>
@@ -408,10 +431,12 @@
#include <uno/any2.h>
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/configitem.hxx>
#include <unotools/charclass.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/pathoptions.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
diff --git a/cui/source/dialogs/hangulhanjadlg.cxx b/cui/source/dialogs/hangulhanjadlg.cxx
index 05d921d..ec46262 100644
--- a/cui/source/dialogs/hangulhanjadlg.cxx
+++ b/cui/source/dialogs/hangulhanjadlg.cxx
@@ -69,7 +69,7 @@ namespace svx
            FontSwitch( OutputDevice& _rDev, const vcl::Font& _rTemporaryFont )
                :m_rDev( _rDev )
            {
                m_rDev.Push( PushFlags::FONT );
                m_rDev.Push( vcl::PushFlags::FONT );
                m_rDev.SetFont( _rTemporaryFont );
            }
            ~FontSwitch() COVERITY_NOEXCEPT_FALSE
diff --git a/cui/source/tabpages/grfpage.cxx b/cui/source/tabpages/grfpage.cxx
index 6448597..726b096 100644
--- a/cui/source/tabpages/grfpage.cxx
+++ b/cui/source/tabpages/grfpage.cxx
@@ -703,7 +703,7 @@ void SvxCropExample::SetDrawingArea(weld::DrawingArea* pDrawingArea)

void SvxCropExample::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode(m_aMapMode);

    // Win BG
diff --git a/cui/source/tabpages/numfmt.cxx b/cui/source/tabpages/numfmt.cxx
index 3c384aa..a04aaf7 100644
--- a/cui/source/tabpages/numfmt.cxx
+++ b/cui/source/tabpages/numfmt.cxx
@@ -132,7 +132,7 @@ void SvxNumberPreview::NotifyChange( const OUString& rPrevStr,

void SvxNumberPreview::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);

    svtools::ColorConfig aColorConfig;
    rRenderContext.SetTextColor(aColorConfig.GetColorValue(svtools::FONTCOLOR).nColor);
diff --git a/dbaccess/inc/pch/precompiled_dbu.hxx b/dbaccess/inc/pch/precompiled_dbu.hxx
index 00d2edf..9bfc030 100644
--- a/dbaccess/inc/pch/precompiled_dbu.hxx
+++ b/dbaccess/inc/pch/precompiled_dbu.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:15:31 using:
 Generated on 2021-09-12 11:51:31 using:
 ./bin/update_pch dbaccess dbu --cutoff=12 --exclude:system --exclude:module --exclude:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -32,6 +32,7 @@
#include <limits>
#include <map>
#include <memory>
#include <mutex>
#include <new>
#include <optional>
#include <ostream>
@@ -87,7 +88,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -98,7 +98,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
@@ -143,7 +146,6 @@
#include <com/sun/star/frame/XTerminateListener.hpp>
#include <com/sun/star/frame/XTitle.hpp>
#include <com/sun/star/frame/XTitleChangeBroadcaster.hpp>
#include <com/sun/star/lang/DisposedException.hpp>
#include <com/sun/star/lang/EventObject.hpp>
#include <com/sun/star/lang/Locale.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
@@ -172,7 +174,6 @@
#include <com/sun/star/util/URL.hpp>
#include <com/sun/star/util/XNumberFormatter.hpp>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/interfacecontainer2.hxx>
#include <comphelper/namedvaluecollection.hxx>
#include <comphelper/sequence.hxx>
#include <comphelper/types.hxx>
@@ -220,11 +221,11 @@
#include <uno/data.h>
#include <unotools/eventlisteneradapter.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/sharedunocomponent.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
#include <ConnectionLineData.hxx>
#include <FieldDescriptions.hxx>
#include <IClipBoardTest.hxx>
#include <QEnumTypes.hxx>
diff --git a/dbaccess/source/ui/browser/dataview.cxx b/dbaccess/source/ui/browser/dataview.cxx
index b48a3f0a..74ceea6 100644
--- a/dbaccess/source/ui/browser/dataview.cxx
+++ b/dbaccess/source/ui/browser/dataview.cxx
@@ -70,7 +70,7 @@ namespace dbaui
    {
        // draw the background
        {
            rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
            rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
            rRenderContext.SetLineColor(COL_TRANSPARENT);
            rRenderContext.SetFillColor(GetSettings().GetStyleSettings().GetFaceColor());
            rRenderContext.DrawRect(_rRect);
diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx
index a89397c..8fa36706 100644
--- a/dbaccess/source/ui/tabledesign/TEditControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx
@@ -302,7 +302,7 @@ void OTableEditorCtrl::PaintCell(OutputDevice& rDev, const tools::Rectangle& rRe
{
    const OUString aText( GetCellText( m_nCurrentPos, nColumnId ));

    rDev.Push( PushFlags::CLIPREGION );
    rDev.Push( vcl::PushFlags::CLIPREGION );
    rDev.SetClipRegion(vcl::Region(rRect));
    rDev.DrawText( rRect, aText, DrawTextFlags::Left | DrawTextFlags::VCenter );
    rDev.Pop();
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
index 840b599..ceccee0 100644
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
@@ -504,7 +504,7 @@ void ExtensionBox_Impl::DrawRow(vcl::RenderContext& rRenderContext, const tools:
    {
        aPos = rRect.TopLeft() + Point( ICON_OFFSET + nMaxTitleWidth + (2*SPACE_BETWEEN), TOP_OFFSET );

        rRenderContext.Push(PushFlags::FONT | PushFlags::TEXTCOLOR | PushFlags::TEXTFILLCOLOR);
        rRenderContext.Push(vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR | vcl::PushFlags::TEXTFILLCOLOR);
        rRenderContext.SetTextColor(rStyleSettings.GetLinkColor());
        rRenderContext.SetTextFillColor(rStyleSettings.GetFieldColor());
        vcl::Font aFont = rRenderContext.GetFont();
diff --git a/drawinglayer/inc/wmfemfhelper.hxx b/drawinglayer/inc/wmfemfhelper.hxx
index d24ab2f..4a6bbe8 100644
--- a/drawinglayer/inc/wmfemfhelper.hxx
+++ b/drawinglayer/inc/wmfemfhelper.hxx
@@ -23,7 +23,7 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <vcl/font.hxx>
#include <rtl/ref.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/rendercontext/State.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <memory>
@@ -100,9 +100,9 @@ namespace wmfemfhelper
        /// font, etc.
        vcl::Font               maFont;
        RasterOp                maRasterOp;
        ComplexTextLayoutFlags   mnLayoutMode;
        vcl::text::ComplexTextLayoutFlags   mnLayoutMode;
        LanguageType            maLanguageType;
        PushFlags               mnPushFlags;
        vcl::PushFlags               mnPushFlags;

        /// contains all active markers
        bool                    mbLineColor : 1;
@@ -167,14 +167,14 @@ namespace wmfemfhelper
        bool isRasterOpForceBlack() const { return RasterOp::N0 == maRasterOp; }
        bool isRasterOpActive() const { return isRasterOpInvert() || isRasterOpForceBlack(); }

        ComplexTextLayoutFlags getLayoutMode() const { return mnLayoutMode; }
        void setLayoutMode(ComplexTextLayoutFlags nNew) { if (nNew != mnLayoutMode) mnLayoutMode = nNew; }
        vcl::text::ComplexTextLayoutFlags getLayoutMode() const { return mnLayoutMode; }
        void setLayoutMode(vcl::text::ComplexTextLayoutFlags nNew) { if (nNew != mnLayoutMode) mnLayoutMode = nNew; }

        LanguageType getLanguageType() const { return maLanguageType; }
        void setLanguageType(LanguageType aNew) { if (aNew != maLanguageType) maLanguageType = aNew; }

        PushFlags getPushFlags() const { return mnPushFlags; }
        void setPushFlags(PushFlags nNew) { if (nNew != mnPushFlags) mnPushFlags = nNew; }
        vcl::PushFlags getPushFlags() const { return mnPushFlags; }
        void setPushFlags(vcl::PushFlags nNew) { if (nNew != mnPushFlags) mnPushFlags = nNew; }

        bool getLineOrFillActive() const { return (mbLineColor || mbFillColor); }
    };
@@ -196,7 +196,7 @@ namespace wmfemfhelper
    public:
        PropertyHolders();
        void PushDefault();
        void Push(PushFlags nPushFlags);
        void Push(vcl::PushFlags nPushFlags);
        void Pop();
        PropertyHolder& Current();
        ~PropertyHolders();
diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
index d60616d..52013c1 100644
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
@@ -1561,7 +1561,7 @@ void VclMetafileProcessor2D::processPolygonStrokePrimitive2D(
    }
    else
    {
        mpOutputDevice->Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
        mpOutputDevice->Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);

        // support SvtGraphicStroke MetaCommentAction
        std::unique_ptr<SvtGraphicStroke> pSvtGraphicStroke = impTryToCreateSvtGraphicStroke(
@@ -2011,7 +2011,7 @@ void VclMetafileProcessor2D::processPolyPolygonGradientPrimitive2D(
void VclMetafileProcessor2D::processPolyPolygonColorPrimitive2D(
    const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate)
{
    mpOutputDevice->Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
    mpOutputDevice->Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
    basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());

    // #i112245# Metafiles use tools Polygon and are not able to have more than 65535 points
@@ -2066,7 +2066,7 @@ void VclMetafileProcessor2D::processMaskPrimitive2D(
            // set VCL clip region; subdivide before conversion to tools polygon. Subdivision necessary (!)
            // Removed subdivision and fixed in vcl::Region::ImplPolyPolyRegionToBandRegionFunc() in VCL where
            // the ClipRegion is built from the Polygon. An AdaptiveSubdivide on the source polygon was missing there
            mpOutputDevice->Push(PushFlags::CLIPREGION);
            mpOutputDevice->Push(vcl::PushFlags::CLIPREGION);
            mpOutputDevice->SetClipRegion(vcl::Region(maClipPolyPolygon));

            // recursively paint content
@@ -2091,7 +2091,7 @@ void VclMetafileProcessor2D::processMaskPrimitive2D(
void VclMetafileProcessor2D::processUnifiedTransparencePrimitive2D(
    const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate)
{
    mpOutputDevice->Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
    mpOutputDevice->Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
    // for metafile: Need to examine what the pure vcl version is doing here actually
    // - uses DrawTransparent with metafile for content and a gradient
    // - uses DrawTransparent for single PolyPolygons directly. Can be detected by
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 27dbd89..967b70a 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -91,7 +91,7 @@ VclPixelProcessor2D::VclPixelProcessor2D(const geometry::ViewInformation2D& rVie
    maCurrentTransformation = rViewInformation.getObjectToViewTransformation();

    // prepare output directly to pixels
    mpOutputDevice->Push(PushFlags::MAPMODE);
    mpOutputDevice->Push(vcl::PushFlags::MAPMODE);
    mpOutputDevice->SetMapMode();

    // react on AntiAliasing settings
@@ -1234,7 +1234,7 @@ void VclPixelProcessor2D::processFillGradientPrimitive2D(
        std::floor(aFullRange.getMinX()), std::floor(aFullRange.getMinY()),
        std::ceil(aFullRange.getMaxX()), std::ceil(aFullRange.getMaxY()));

    mpOutputDevice->Push(PushFlags::CLIPREGION);
    mpOutputDevice->Push(vcl::PushFlags::CLIPREGION);
    mpOutputDevice->IntersectClipRegion(aOutputRectangle);
    mpOutputDevice->DrawGradient(aFullRectangle, aGradient);
    mpOutputDevice->Pop();
@@ -1265,7 +1265,7 @@ void VclPixelProcessor2D::processPatternFillPrimitive2D(
    // Unless smooth edges are needed, simply use clipping.
    if (basegfx::utils::isRectangle(aMask) || !SvtOptionsDrawinglayer::IsAntiAliasing())
    {
        mpOutputDevice->Push(PushFlags::CLIPREGION);
        mpOutputDevice->Push(vcl::PushFlags::CLIPREGION);
        mpOutputDevice->IntersectClipRegion(vcl::Region(aMask));
        mpOutputDevice->DrawWallpaper(aMaskRect, Wallpaper(aTileImage));
        mpOutputDevice->Pop();
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index 2ad0e34..16bf6a7 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -268,14 +268,14 @@ void VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D(
                maBColorModifierStack.getModifiedColor(rTextCandidate.getFontColor()));
            const basegfx::B2DPoint aPoint(aLocalTransform * basegfx::B2DPoint(0.0, 0.0));
            const Point aStartPoint(basegfx::fround(aPoint.getX()), basegfx::fround(aPoint.getY()));
            const ComplexTextLayoutFlags nOldLayoutMode(mpOutputDevice->GetLayoutMode());
            const vcl::text::ComplexTextLayoutFlags nOldLayoutMode(mpOutputDevice->GetLayoutMode());

            if (rTextCandidate.getFontAttribute().getRTL())
            {
                ComplexTextLayoutFlags nRTLLayoutMode(nOldLayoutMode
                                                      & ~ComplexTextLayoutFlags::BiDiStrong);
                nRTLLayoutMode
                    |= ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft;
                vcl::text::ComplexTextLayoutFlags nRTLLayoutMode(
                    nOldLayoutMode & ~vcl::text::ComplexTextLayoutFlags::BiDiStrong);
                nRTLLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl
                                  | vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
                mpOutputDevice->SetLayoutMode(nRTLLayoutMode);
            }

@@ -771,7 +771,7 @@ void VclProcessor2D::RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive
    // Unless smooth edges are needed, simply use clipping.
    if (basegfx::utils::isRectangle(aMask) || !SvtOptionsDrawinglayer::IsAntiAliasing())
    {
        mpOutputDevice->Push(PushFlags::CLIPREGION);
        mpOutputDevice->Push(vcl::PushFlags::CLIPREGION);
        mpOutputDevice->IntersectClipRegion(vcl::Region(aMask));
        process(rMaskCandidate.getChildren());
        mpOutputDevice->Pop();
diff --git a/drawinglayer/source/tools/wmfemfhelper.cxx b/drawinglayer/source/tools/wmfemfhelper.cxx
index a7beae3..f7c01f3 100644
--- a/drawinglayer/source/tools/wmfemfhelper.cxx
+++ b/drawinglayer/source/tools/wmfemfhelper.cxx
@@ -114,9 +114,9 @@ namespace wmfemfhelper
    :   maMapUnit(MapUnit::Map100thMM),
        maTextColor(sal_uInt32(COL_BLACK)),
        maRasterOp(RasterOp::OverPaint),
        mnLayoutMode(ComplexTextLayoutFlags::Default),
        mnLayoutMode(vcl::text::ComplexTextLayoutFlags::Default),
        maLanguageType(0),
        mnPushFlags(PushFlags::NONE),
        mnPushFlags(vcl::PushFlags::NONE),
        mbLineColor(false),
        mbFillColor(false),
        mbTextColor(true),
@@ -150,7 +150,7 @@ namespace wmfemfhelper
        maPropertyHolders.push_back(pNew);
    }

    void PropertyHolders::Push(PushFlags nPushFlags)
    void PropertyHolders::Push(vcl::PushFlags nPushFlags)
    {
        if (bool(nPushFlags))
        {
@@ -173,56 +173,56 @@ namespace wmfemfhelper
            return;

        const PropertyHolder* pTip = maPropertyHolders.back();
        const PushFlags nPushFlags(pTip->getPushFlags());
        const vcl::PushFlags nPushFlags(pTip->getPushFlags());

        if (nPushFlags != PushFlags::NONE)
        if (nPushFlags != vcl::PushFlags::NONE)
        {
            if (nSize > 1)
            {
                // copy back content for all non-set flags
                PropertyHolder* pLast = maPropertyHolders[nSize - 2];

                if (PushFlags::ALL != nPushFlags)
                if (vcl::PushFlags::ALL != nPushFlags)
                {
                    if (!(nPushFlags & PushFlags::LINECOLOR))
                    if (!(nPushFlags & vcl::PushFlags::LINECOLOR))
                    {
                        pLast->setLineColor(pTip->getLineColor());
                        pLast->setLineColorActive(pTip->getLineColorActive());
                    }
                    if (!(nPushFlags & PushFlags::FILLCOLOR))
                    if (!(nPushFlags & vcl::PushFlags::FILLCOLOR))
                    {
                        pLast->setFillColor(pTip->getFillColor());
                        pLast->setFillColorActive(pTip->getFillColorActive());
                    }
                    if (!(nPushFlags & PushFlags::FONT))
                    if (!(nPushFlags & vcl::PushFlags::FONT))
                    {
                        pLast->setFont(pTip->getFont());
                    }
                    if (!(nPushFlags & PushFlags::TEXTCOLOR))
                    if (!(nPushFlags & vcl::PushFlags::TEXTCOLOR))
                    {
                        pLast->setTextColor(pTip->getTextColor());
                        pLast->setTextColorActive(pTip->getTextColorActive());
                    }
                    if (!(nPushFlags & PushFlags::MAPMODE))
                    if (!(nPushFlags & vcl::PushFlags::MAPMODE))
                    {
                        pLast->setTransformation(pTip->getTransformation());
                        pLast->setMapUnit(pTip->getMapUnit());
                    }
                    if (!(nPushFlags & PushFlags::CLIPREGION))
                    if (!(nPushFlags & vcl::PushFlags::CLIPREGION))
                    {
                        pLast->setClipPolyPolygon(pTip->getClipPolyPolygon());
                        pLast->setClipPolyPolygonActive(pTip->getClipPolyPolygonActive());
                    }
                    if (!(nPushFlags & PushFlags::RASTEROP))
                    if (!(nPushFlags & vcl::PushFlags::RASTEROP))
                    {
                        pLast->setRasterOp(pTip->getRasterOp());
                    }
                    if (!(nPushFlags & PushFlags::TEXTFILLCOLOR))
                    if (!(nPushFlags & vcl::PushFlags::TEXTFILLCOLOR))
                    {
                        pLast->setTextFillColor(pTip->getTextFillColor());
                        pLast->setTextFillColorActive(pTip->getTextFillColorActive());
                    }
                    if (!(nPushFlags & PushFlags::TEXTALIGN))
                    if (!(nPushFlags & vcl::PushFlags::TEXTALIGN))
                    {
                        if (pLast->getFont().GetAlignment() != pTip->getFont().GetAlignment())
                        {
@@ -231,24 +231,24 @@ namespace wmfemfhelper
                            pLast->setFont(aFont);
                        }
                    }
                    if (!(nPushFlags & PushFlags::REFPOINT))
                    if (!(nPushFlags & vcl::PushFlags::REFPOINT))
                    {
                        // not supported
                    }
                    if (!(nPushFlags & PushFlags::TEXTLINECOLOR))
                    if (!(nPushFlags & vcl::PushFlags::TEXTLINECOLOR))
                    {
                        pLast->setTextLineColor(pTip->getTextLineColor());
                        pLast->setTextLineColorActive(pTip->getTextLineColorActive());
                    }
                    if (!(nPushFlags & PushFlags::TEXTLAYOUTMODE))
                    if (!(nPushFlags & vcl::PushFlags::TEXTLAYOUTMODE))
                    {
                        pLast->setLayoutMode(pTip->getLayoutMode());
                    }
                    if (!(nPushFlags & PushFlags::TEXTLANGUAGE))
                    if (!(nPushFlags & vcl::PushFlags::TEXTLANGUAGE))
                    {
                        pLast->setLanguageType(pTip->getLanguageType());
                    }
                    if (!(nPushFlags & PushFlags::OVERLINECOLOR))
                    if (!(nPushFlags & vcl::PushFlags::OVERLINECOLOR))
                    {
                        pLast->setOverlineColor(pTip->getOverlineColor());
                        pLast->setOverlineColorActive(pTip->getOverlineColorActive());
@@ -1061,8 +1061,8 @@ namespace wmfemfhelper
        rFontAttribute = drawinglayer::primitive2d::getFontAttributeFromVclFont(
                            aFontScaling,
                            rFont,
                            bool(rProperty.getLayoutMode() & ComplexTextLayoutFlags::BiDiRtl),
                            bool(rProperty.getLayoutMode() & ComplexTextLayoutFlags::BiDiStrong));
                            bool(rProperty.getLayoutMode() & vcl::text::ComplexTextLayoutFlags::BiDiRtl),
                            bool(rProperty.getLayoutMode() & vcl::text::ComplexTextLayoutFlags::BiDiStrong));

        // add FontScaling
        rTextTransform.scale(aFontScaling.getX(), aFontScaling.getY());
@@ -2600,8 +2600,8 @@ namespace wmfemfhelper
                case MetaActionType::POP :
                {
                    /** CHECKED, WORKS WELL */
                    const bool bRegionMayChange(rPropertyHolders.Current().getPushFlags() & PushFlags::CLIPREGION);
                    const bool bRasterOpMayChange(rPropertyHolders.Current().getPushFlags() & PushFlags::RASTEROP);
                    const bool bRegionMayChange(rPropertyHolders.Current().getPushFlags() & vcl::PushFlags::CLIPREGION);
                    const bool bRasterOpMayChange(rPropertyHolders.Current().getPushFlags() & vcl::PushFlags::RASTEROP);

                    if(bRegionMayChange && rPropertyHolders.Current().getClipPolyPolygonActive())
                    {
diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx
index 3ad33fa..92e8d2b 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -352,7 +352,7 @@ void ImpEditView::lokSelectionCallback(const std::optional<tools::PolyPolygon> &
    }
    else
    {
        pOutWin->GetOutDev()->Push(PushFlags::MAPMODE);
        pOutWin->GetOutDev()->Push(vcl::PushFlags::MAPMODE);
        if (pOutWin->GetMapMode().GetMapUnit() == MapUnit::MapTwip)
        {
            // Find the parent that is not right
@@ -725,7 +725,7 @@ void ImpEditView::ImplDrawHighlightRect( OutputDevice& rTarget, const Point& rDo
        }
        else
        {
            rTarget.Push(PushFlags::LINECOLOR|PushFlags::FILLCOLOR|PushFlags::RASTEROP);
            rTarget.Push(vcl::PushFlags::LINECOLOR|vcl::PushFlags::FILLCOLOR|vcl::PushFlags::RASTEROP);
            rTarget.SetLineColor();
            rTarget.SetFillColor(COL_BLACK);
            rTarget.SetRasterOp(RasterOp::Invert);
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index 41985b8..90b7603 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -3353,7 +3353,7 @@ sal_uInt32 ImpEditEngine::CalcLineWidth( ParaPortion* pPortion, EditLine* pLine,

    // #114278# Saving both layout mode and language (since I'm
    // potentially changing both)
    GetRefDevice()->Push( PushFlags::TEXTLAYOUTMODE|PushFlags::TEXTLANGUAGE );
    GetRefDevice()->Push( vcl::PushFlags::TEXTLAYOUTMODE|vcl::PushFlags::TEXTLANGUAGE );

    ImplInitLayoutMode(*GetRefDevice(), nPara, -1);

diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 94d838a..fb52e1e 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -685,7 +685,7 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
    }

    // Saving both layout mode and language (since I'm potentially changing both)
    GetRefDevice()->Push( PushFlags::TEXTLAYOUTMODE|PushFlags::TEXTLANGUAGE );
    GetRefDevice()->Push( vcl::PushFlags::TEXTLAYOUTMODE|vcl::PushFlags::TEXTLANGUAGE );

    ImplInitLayoutMode(*GetRefDevice(), nPara, -1);

@@ -2359,7 +2359,7 @@ sal_Int32 ImpEditEngine::SplitTextPortion( ParaPortion* pPortion, sal_Int32 nPos
            SvxFont aTmpFont( pPortion->GetNode()->GetCharAttribs().GetDefFont() );
            SeekCursor( pPortion->GetNode(), nTxtPortionStart+1, aTmpFont );
            aTmpFont.SetPhysFont(*GetRefDevice());
            GetRefDevice()->Push( PushFlags::TEXTLANGUAGE );
            GetRefDevice()->Push( vcl::PushFlags::TEXTLANGUAGE );
            ImplInitDigitMode(*GetRefDevice(), aTmpFont.GetLanguage());
            Size aSz = aTmpFont.QuickGetTextSize( GetRefDevice(), pPortion->GetNode()->GetString(), nTxtPortionStart, pTextPortion->GetLen() );
            GetRefDevice()->Pop();
@@ -3251,7 +3251,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po

                                // #114278# Saving both layout mode and language (since I'm
                                // potentially changing both)
                                rOutDev.Push( PushFlags::TEXTLAYOUTMODE|PushFlags::TEXTLANGUAGE );
                                rOutDev.Push( vcl::PushFlags::TEXTLAYOUTMODE|vcl::PushFlags::TEXTLANGUAGE );
                                ImplInitLayoutMode(rOutDev, n, nIndex);
                                ImplInitDigitMode(rOutDev, aTmpFont.GetLanguage());

@@ -3302,8 +3302,8 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
                                                adjustXDirectionAware(aBottomRightRectPos, 2 * nHalfBlankWidth);
                                                adjustYDirectionAware(aBottomRightRectPos, pLine->GetHeight());

                                                rOutDev.Push( PushFlags::FILLCOLOR );
                                                rOutDev.Push( PushFlags::LINECOLOR );
                                                rOutDev.Push( vcl::PushFlags::FILLCOLOR );
                                                rOutDev.Push( vcl::PushFlags::LINECOLOR );
                                                rOutDev.SetFillColor( COL_LIGHTGRAY );
                                                rOutDev.SetLineColor( COL_LIGHTGRAY );

@@ -4353,24 +4353,24 @@ void ImpEditEngine::ImplInitLayoutMode(OutputDevice& rOutDev, sal_Int32 nPara, s
        // it also works for issue 55927
    }

    ComplexTextLayoutFlags nLayoutMode = rOutDev.GetLayoutMode();
    vcl::text::ComplexTextLayoutFlags nLayoutMode = rOutDev.GetLayoutMode();

    // We always use the left position for DrawText()
    nLayoutMode &= ~ComplexTextLayoutFlags::BiDiRtl;
    nLayoutMode &= ~vcl::text::ComplexTextLayoutFlags::BiDiRtl;

    if ( !bCTL && !bR2L)
    {
        // No Bidi checking necessary
        nLayoutMode |= ComplexTextLayoutFlags::BiDiStrong;
        nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiStrong;
    }
    else
    {
        // Bidi checking necessary
        // Don't use BIDI_STRONG, VCL must do some checks.
        nLayoutMode &= ~ComplexTextLayoutFlags::BiDiStrong;
        nLayoutMode &= ~vcl::text::ComplexTextLayoutFlags::BiDiStrong;

        if ( bR2L )
            nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl|ComplexTextLayoutFlags::TextOriginLeft;
            nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl|vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
    }

    rOutDev.SetLayoutMode( nLayoutMode );
diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
index 937d1d7..7f6313e 100644
--- a/editeng/source/outliner/outliner.cxx
+++ b/editeng/source/outliner/outliner.cxx
@@ -958,10 +958,10 @@ void Outliner::PaintBullet(sal_Int32 nPara, const Point& rStartPos, const Point&
            }

            // VCL will take care of brackets and so on...
            ComplexTextLayoutFlags nLayoutMode = rOutDev.GetLayoutMode();
            nLayoutMode &= ~ComplexTextLayoutFlags(ComplexTextLayoutFlags::BiDiRtl|ComplexTextLayoutFlags::BiDiStrong);
            vcl::text::ComplexTextLayoutFlags nLayoutMode = rOutDev.GetLayoutMode();
            nLayoutMode &= ~vcl::text::ComplexTextLayoutFlags(vcl::text::ComplexTextLayoutFlags::BiDiRtl|vcl::text::ComplexTextLayoutFlags::BiDiStrong);
            if ( bRightToLeftPara )
                nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft | ComplexTextLayoutFlags::BiDiStrong;
                nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft | vcl::text::ComplexTextLayoutFlags::BiDiStrong;
            rOutDev.SetLayoutMode( nLayoutMode );

            if(bStrippingPortions)
diff --git a/emfio/inc/mtftools.hxx b/emfio/inc/mtftools.hxx
index b0945f7..527eae4a 100644
--- a/emfio/inc/mtftools.hxx
+++ b/emfio/inc/mtftools.hxx
@@ -26,7 +26,7 @@
#include <vcl/font.hxx>
#include <vcl/bitmapex.hxx>
#include <vcl/lineinfo.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/rendercontext/State.hxx>
#include <rtl/ref.hxx>

#include "emfiodllapi.h"
@@ -439,7 +439,7 @@ namespace emfio
    {
        BkMode              nBkMode;
        sal_uInt32          nMapMode, nGfxMode;
        ComplexTextLayoutFlags nTextLayoutMode;
        vcl::text::ComplexTextLayoutFlags nTextLayoutMode;
        sal_Int32           nWinOrgX, nWinOrgY, nWinExtX, nWinExtY;
        sal_Int32           nDevOrgX, nDevOrgY, nDevWidth, nDevHeight;

@@ -525,8 +525,8 @@ namespace emfio
        Color               maTextColor;
        Color               maLatestBkColor;
        Color               maBkColor;
        ComplexTextLayoutFlags  mnLatestTextLayoutMode;
        ComplexTextLayoutFlags  mnTextLayoutMode;
        vcl::text::ComplexTextLayoutFlags  mnLatestTextLayoutMode;
        vcl::text::ComplexTextLayoutFlags  mnTextLayoutMode;
        BkMode              mnLatestBkMode;
        BkMode              mnBkMode;
        RasterOp            meLatestRasterOp;
@@ -634,7 +634,7 @@ namespace emfio
        void                SelectObject(sal_uInt32 nIndex);
        rtl_TextEncoding    GetCharSet() const { return maFont.GetCharSet(); };
        const vcl::Font&    GetFont() const { return maFont; }
        void                SetTextLayoutMode(ComplexTextLayoutFlags nLayoutMode);
        void                SetTextLayoutMode(vcl::text::ComplexTextLayoutFlags nLayoutMode);

        void                ClearPath() { maPathObj.Init(); };
        void                ClosePath() { maPathObj.ClosePath(); };
diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx
index ab4f905..b75d16c 100644
--- a/emfio/source/reader/emfreader.cxx
+++ b/emfio/source/reader/emfreader.cxx
@@ -1909,9 +1909,9 @@ namespace emfio
                            else if ( nOptions & ETO_OPAQUE )
                                DrawRectWithBGColor( aRect );

                            ComplexTextLayoutFlags nTextLayoutMode = ComplexTextLayoutFlags::Default;
                            vcl::text::ComplexTextLayoutFlags nTextLayoutMode = vcl::text::ComplexTextLayoutFlags::Default;
                            if ( nOptions & ETO_RTLREADING )
                                nTextLayoutMode = ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft;
                                nTextLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
                            SetTextLayoutMode( nTextLayoutMode );
                            SAL_WARN_IF( ( nOptions & ( ETO_PDY | ETO_GLYPH_INDEX ) ) != 0, "emfio", "SJ: ETO_PDY || ETO_GLYPH_INDEX in EMF" );

diff --git a/emfio/source/reader/mtftools.cxx b/emfio/source/reader/mtftools.cxx
index 07143b8..f78fee7 100644
--- a/emfio/source/reader/mtftools.cxx
+++ b/emfio/source/reader/mtftools.cxx
@@ -894,7 +894,7 @@ namespace emfio
        }
    }

    void MtfTools::SetTextLayoutMode( ComplexTextLayoutFlags nTextLayoutMode )
    void MtfTools::SetTextLayoutMode( vcl::text::ComplexTextLayoutFlags nTextLayoutMode )
    {
        mnTextLayoutMode = nTextLayoutMode;
    }
@@ -1098,8 +1098,8 @@ namespace emfio
        mnTextAlign(TA_LEFT | TA_TOP | TA_NOUPDATECP),
        maLatestBkColor(ColorTransparency, 0x12345678),
        maBkColor(COL_WHITE),
        mnLatestTextLayoutMode(ComplexTextLayoutFlags::Default),
        mnTextLayoutMode(ComplexTextLayoutFlags::Default),
        mnLatestTextLayoutMode(vcl::text::ComplexTextLayoutFlags::Default),
        mnTextLayoutMode(vcl::text::ComplexTextLayoutFlags::Default),
        mnLatestBkMode(BkMode::NONE),
        mnBkMode(BkMode::OPAQUE),
        meLatestRasterOp(RasterOp::Invert),
@@ -1140,7 +1140,7 @@ namespace emfio
        mnStartPos = mpInputStream->Tell();
        SetDevOrg(Point());

        mpGDIMetaFile->AddAction( new MetaPushAction( PushFlags::CLIPREGION ) ); // The original clipregion has to be on top
        mpGDIMetaFile->AddAction( new MetaPushAction( vcl::PushFlags::CLIPREGION ) ); // The original clipregion has to be on top
                                                                                 // of the stack so it can always be restored
                                                                                 // this is necessary to be able to support
                                                                                 // SetClipRgn( NULL ) and similar ClipRgn actions (SJ)
@@ -1176,7 +1176,7 @@ namespace emfio
        mbComplexClip = false;

        mpGDIMetaFile->AddAction( new MetaPopAction() );                    // taking the original clipregion
        mpGDIMetaFile->AddAction( new MetaPushAction( PushFlags::CLIPREGION ) );
        mpGDIMetaFile->AddAction( new MetaPushAction( vcl::PushFlags::CLIPREGION ) );

        // skip for 'no clipping at all' case
        if( maClipPath.isEmpty() )
@@ -1294,7 +1294,7 @@ namespace emfio
        {
            if ( !bStroke )
            {
                mpGDIMetaFile->AddAction( new MetaPushAction( PushFlags::LINECOLOR ) );
                mpGDIMetaFile->AddAction( new MetaPushAction( vcl::PushFlags::LINECOLOR ) );
                mpGDIMetaFile->AddAction( new MetaLineColorAction( Color(), false ) );
            }
            if ( maPathObj.Count() == 1 )
diff --git a/emfio/source/reader/wmfreader.cxx b/emfio/source/reader/wmfreader.cxx
index 2567ca4..bcee84c 100644
--- a/emfio/source/reader/wmfreader.cxx
+++ b/emfio/source/reader/wmfreader.cxx
@@ -688,9 +688,9 @@ namespace emfio
                    SAL_INFO( "emfio", "\t\t\t Rectangle : " << aTopLeft.getX() << ":" << aTopLeft.getY() << ", " << aBottomRight.getX() << ":" << aBottomRight.getY() );
                }

                ComplexTextLayoutFlags nTextLayoutMode = ComplexTextLayoutFlags::Default;
                vcl::text::ComplexTextLayoutFlags nTextLayoutMode = vcl::text::ComplexTextLayoutFlags::Default;
                if ( nOptions & ETO_RTLREADING )
                    nTextLayoutMode = ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft;
                    nTextLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
                SetTextLayoutMode( nTextLayoutMode );
                SAL_WARN_IF( ( nOptions & ( ETO_PDY | ETO_GLYPH_INDEX ) ) != 0, "emfio", "SJ: ETO_PDY || ETO_GLYPH_INDEX in WMF" );

diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index 34b4f1a..9d4e885 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -88,10 +88,10 @@ const char   aXMLAttrStrokeLinejoin[] = "stroke-linejoin";
const char   aXMLAttrStrokeLinecap[] = "stroke-linecap";


PushFlags SVGContextHandler::getPushFlags() const
vcl::PushFlags SVGContextHandler::getPushFlags() const
{
    if (maStateStack.empty())
        return PushFlags::NONE;
        return vcl::PushFlags::NONE;

    const PartialState& rPartialState = maStateStack.top();
    return rPartialState.meFlags;
@@ -102,17 +102,17 @@ SVGState& SVGContextHandler::getCurrentState()
    return maCurrentState;
}

void SVGContextHandler::pushState( PushFlags eFlags )
void SVGContextHandler::pushState( vcl::PushFlags eFlags )
{
    PartialState aPartialState;
    aPartialState.meFlags = eFlags;

    if (eFlags & PushFlags::FONT)
    if (eFlags & vcl::PushFlags::FONT)
    {
        aPartialState.setFont( maCurrentState.aFont );
    }

    if (eFlags & PushFlags::CLIPREGION)
    if (eFlags & vcl::PushFlags::CLIPREGION)
    {
        aPartialState.mnRegionClipPathId = maCurrentState.nRegionClipPathId;
    }
@@ -126,14 +126,14 @@ void SVGContextHandler::popState()
        return;

    const PartialState& rPartialState = maStateStack.top();
    PushFlags eFlags = rPartialState.meFlags;
    vcl::PushFlags eFlags = rPartialState.meFlags;

    if (eFlags & PushFlags::FONT)
    if (eFlags & vcl::PushFlags::FONT)
    {
        maCurrentState.aFont = rPartialState.getFont( vcl::Font() );
    }

    if (eFlags & PushFlags::CLIPREGION)
    if (eFlags & vcl::PushFlags::CLIPREGION)
    {
        maCurrentState.nRegionClipPathId = rPartialState.mnRegionClipPathId;
    }
@@ -3858,7 +3858,7 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
            case MetaActionType::PUSH:
            {
                const MetaPushAction*  pA = static_cast<const MetaPushAction*>(pAction);
                PushFlags mnFlags = pA->GetFlags();
                vcl::PushFlags mnFlags = pA->GetFlags();

                const_cast<MetaAction*>(pAction)->Execute( mpVDev );

@@ -3870,11 +3870,11 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
            {
                const_cast<MetaAction*>(pAction)->Execute( mpVDev );

                PushFlags mnFlags = maContextHandler.getPushFlags();
                vcl::PushFlags mnFlags = maContextHandler.getPushFlags();

                maContextHandler.popState();

                if( mnFlags & PushFlags::CLIPREGION )
                if( mnFlags & vcl::PushFlags::CLIPREGION )
                {
                    ImplEndClipRegion();
                    ImplStartClipRegion( mrCurrentState.nRegionClipPathId );
diff --git a/filter/source/svg/svgwriter.hxx b/filter/source/svg/svgwriter.hxx
index 7f0526d..e3fd255 100644
--- a/filter/source/svg/svgwriter.hxx
+++ b/filter/source/svg/svgwriter.hxx
@@ -77,7 +77,7 @@ struct SVGState

struct PartialState
{
    PushFlags                           meFlags;
    vcl::PushFlags                           meFlags;
    ::std::optional<vcl::Font>          mupFont;
    sal_Int32                           mnRegionClipPathId;

@@ -88,7 +88,7 @@ struct PartialState
                                { mupFont = rFont; }

    PartialState()
        : meFlags( PushFlags::NONE )
        : meFlags( vcl::PushFlags::NONE )
        , mupFont()
        , mnRegionClipPathId( 0 )
    {}
@@ -98,7 +98,7 @@ struct PartialState
        , mupFont( std::move( aPartialState.mupFont ) )
        , mnRegionClipPathId( aPartialState.mnRegionClipPathId )
    {
        aPartialState.meFlags = PushFlags::NONE;
        aPartialState.meFlags = vcl::PushFlags::NONE;
        aPartialState.mnRegionClipPathId = 0;
    }
};
@@ -113,9 +113,9 @@ private:
    SVGState maCurrentState;

public:
    PushFlags getPushFlags() const;
    vcl::PushFlags getPushFlags() const;
    SVGState& getCurrentState();
    void pushState( PushFlags eFlags );
    void pushState( vcl::PushFlags eFlags );
    void popState();
};

diff --git a/forms/source/richtext/richtextimplcontrol.cxx b/forms/source/richtext/richtextimplcontrol.cxx
index c12ad42..d1cbd7f 100644
--- a/forms/source/richtext/richtextimplcontrol.cxx
+++ b/forms/source/richtext/richtextimplcontrol.cxx
@@ -451,7 +451,7 @@ namespace frm
            tools::Long nFontWidth = m_pEngine->GetStandardFont(0).GetFontSize().Width();
            if ( !nFontWidth )
            {
                m_pViewport->GetOutDev()->Push( PushFlags::FONT );
                m_pViewport->GetOutDev()->Push( vcl::PushFlags::FONT );
                m_pViewport->SetFont( m_pEngine->GetStandardFont(0) );
                nFontWidth = m_pViewport->GetTextWidth( "x" );
                m_pViewport->GetOutDev()->Pop();
@@ -566,7 +566,7 @@ namespace frm
    {
        // need to normalize the map mode of the device - every paint operation on any device needs
        // to use the same map mode
        _pDev->Push( PushFlags::MAPMODE | PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
        _pDev->Push( vcl::PushFlags::MAPMODE | vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );

        // enforce our "normalize map mode" on the device
        MapMode aRefMapMode( m_pEngine->GetRefDevice()->GetMapMode() );
diff --git a/framework/inc/pch/precompiled_fwk.hxx b/framework/inc/pch/precompiled_fwk.hxx
index 45cb3cf..4b14a60 100644
--- a/framework/inc/pch/precompiled_fwk.hxx
+++ b/framework/inc/pch/precompiled_fwk.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:15:48 using:
 Generated on 2021-09-28 05:36:23 using:
 ./bin/update_pch framework fwk --cutoff=7 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -79,7 +79,6 @@
#include <rtl/ustrbuf.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
#include <rtl/uuid.h>
#include <sal/detail/log.h>
#include <sal/log.hxx>
#include <sal/macros.h>
@@ -102,7 +101,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/menu.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -113,7 +111,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/settings.hxx>
@@ -137,6 +138,8 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
@@ -189,7 +192,6 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/ui/ItemStyle.hpp>
#include <com/sun/star/ui/UIElementType.hpp>
#include <com/sun/star/ui/XImageManager.hpp>
#include <com/sun/star/ui/XUIConfigurationListener.hpp>
#include <com/sun/star/ui/XUIConfigurationManager.hpp>
#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp>
@@ -219,11 +221,14 @@
#include <com/sun/star/xml/sax/SAXException.hpp>
#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/interfacecontainer2.hxx>
#include <comphelper/lok.hxx>
#include <comphelper/multicontainer2.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/propertysequence.hxx>
#include <comphelper/sequence.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <comphelper/servicehelper.hxx>
#include <cppu/cppudllapi.h>
#include <cppu/unotype.hxx>
#include <cppuhelper/basemutex.hxx>
@@ -231,7 +236,6 @@
#include <cppuhelper/cppuhelperdllapi.h>
#include <cppuhelper/implbase.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/propshlp.hxx>
#include <cppuhelper/queryinterface.hxx>
#include <cppuhelper/supportsservice.hxx>
diff --git a/include/sfx2/LokControlHandler.hxx b/include/sfx2/LokControlHandler.hxx
index fc0b065..cb48e9e 100644
--- a/include/sfx2/LokControlHandler.hxx
+++ b/include/sfx2/LokControlHandler.hxx
@@ -115,7 +115,7 @@ public:
        // Resizes the virtual device so to contain the entries context
        rDevice.SetOutputSizePixel(aOutputSize);

        rDevice.Push(PushFlags::MAPMODE);
        rDevice.Push(vcl::PushFlags::MAPMODE);
        MapMode aDeviceMapMode(rDevice.GetMapMode());

        const Fraction scale = conversionFract(o3tl::Length::px, o3tl::Length::mm100);
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx
index 6562e81..dfdabac 100644
--- a/include/vcl/metaact.hxx
+++ b/include/vcl/metaact.hxx
@@ -20,6 +20,8 @@
#ifndef INCLUDED_VCL_METAACT_HXX
#define INCLUDED_VCL_METAACT_HXX

#include <sal/config.h>

#include <config_options.h>

#include <rtl/ref.hxx>
@@ -27,6 +29,7 @@
#include <tools/poly.hxx>

#include <vcl/dllapi.h>
#include <vcl/rendercontext/State.hxx>
#include <vcl/bitmapex.hxx>
#include <vcl/font.hxx>
#include <vcl/gdimtf.hxx>
@@ -35,7 +38,6 @@
#include <vcl/hatch.hxx>
#include <vcl/lineinfo.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/wall.hxx>
@@ -1468,7 +1470,7 @@ class VCL_DLLPUBLIC MetaPushAction final : public MetaAction
{
private:

    PushFlags           mnFlags;
    vcl::PushFlags           mnFlags;

public:
                        MetaPushAction();
@@ -1482,10 +1484,10 @@ public:
    virtual void        Execute( OutputDevice* pOut ) override;
    virtual rtl::Reference<MetaAction> Clone() const override;

    explicit            MetaPushAction( PushFlags nFlags );
    explicit            MetaPushAction( vcl::PushFlags nFlags );

    PushFlags           GetFlags() const { return mnFlags; }
    void                SetPushFlags(const PushFlags nFlags) { mnFlags = nFlags; }
    vcl::PushFlags           GetFlags() const { return mnFlags; }
    void                SetPushFlags(const vcl::PushFlags nFlags) { mnFlags = nFlags; }
};

class VCL_DLLPUBLIC MetaPopAction final : public MetaAction
@@ -1702,7 +1704,7 @@ class VCL_DLLPUBLIC MetaLayoutModeAction final : public MetaAction
{
private:

    ComplexTextLayoutFlags  mnLayoutMode;
    vcl::text::ComplexTextLayoutFlags  mnLayoutMode;

public:
                        MetaLayoutModeAction();
@@ -1716,10 +1718,10 @@ public:
    virtual void        Execute( OutputDevice* pOut ) override;
    virtual rtl::Reference<MetaAction> Clone() const override;

    explicit            MetaLayoutModeAction( ComplexTextLayoutFlags nLayoutMode );
    explicit            MetaLayoutModeAction( vcl::text::ComplexTextLayoutFlags nLayoutMode );

    ComplexTextLayoutFlags  GetLayoutMode() const { return mnLayoutMode; }
    void                SetLayoutMode(const ComplexTextLayoutFlags nLayoutMode) { mnLayoutMode = nLayoutMode; }
    vcl::text::ComplexTextLayoutFlags  GetLayoutMode() const { return mnLayoutMode; }
    void                SetLayoutMode(const vcl::text::ComplexTextLayoutFlags nLayoutMode) { mnLayoutMode = nLayoutMode; }
};

class VCL_DLLPUBLIC MetaTextLanguageAction final : public MetaAction
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index e241de4..87a6964 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -44,11 +44,11 @@
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/mapmod.hxx>
#include <vcl/wall.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/vclreferencebase.hxx>

#include <basegfx/numeric/ftools.hxx>
@@ -185,7 +185,7 @@ private:
    mutable rtl::Reference<LogicalFontInstance> mpFontInstance;
    mutable std::unique_ptr<vcl::font::PhysicalFontFaceCollection>  mpFontFaceCollection;
    mutable std::unique_ptr<ImplDeviceFontSizeList> mpDeviceFontSizeList;
    std::vector<OutDevState>        maOutDevStateStack;
    std::vector<vcl::State>        maOutDevStateStack;
    std::unique_ptr<ImplOutDevData> mpOutDevData;
    std::vector< VCLXGraphics* >*   mpUnoGraphicsList;
    vcl::ExtOutDevData*             mpExtOutDevData;
@@ -218,7 +218,7 @@ private:
    mutable tools::Long                    mnEmphasisAscent;
    mutable tools::Long                    mnEmphasisDescent;
    DrawModeFlags                   mnDrawMode;
    ComplexTextLayoutFlags           mnTextLayoutMode;
    vcl::text::ComplexTextLayoutFlags mnTextLayoutMode;
    ImplMapRes                      maMapRes;
    const OutDevType                meOutDevType;
    OutDevViewType                  meOutDevViewType;
@@ -469,7 +469,7 @@ private:

public:

    void                        Push( PushFlags nFlags = PushFlags::ALL );
    void                        Push( vcl::PushFlags nFlags = vcl::PushFlags::ALL );
    void                        Pop();
    void                        ClearStack();

@@ -483,8 +483,8 @@ public:
    void                        SetDrawMode( DrawModeFlags nDrawMode );
    DrawModeFlags               GetDrawMode() const { return mnDrawMode; }

    void                        SetLayoutMode( ComplexTextLayoutFlags nTextLayoutMode );
    ComplexTextLayoutFlags      GetLayoutMode() const { return mnTextLayoutMode; }
    void                        SetLayoutMode( vcl::text::ComplexTextLayoutFlags nTextLayoutMode );
    vcl::text::ComplexTextLayoutFlags GetLayoutMode() const { return mnTextLayoutMode; }

    void                        SetDigitLanguage( LanguageType );
    LanguageType                GetDigitLanguage() const { return meTextLanguage; }
diff --git a/include/vcl/outdevstate.hxx b/include/vcl/outdevstate.hxx
deleted file mode 100644
index a80620f..0000000
--- a/include/vcl/outdevstate.hxx
+++ /dev/null
@@ -1,100 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#pragma once

#include <tools/color.hxx>
#include <tools/gen.hxx>
#include <tools/fontenum.hxx>
#include <i18nlangtag/lang.h>
#include <o3tl/typed_flags_set.hxx>

#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/font.hxx>
#include <vcl/mapmod.hxx>
#include <vcl/region.hxx>
#include <vcl/vclenum.hxx>

#include <memory>
#include <optional>

// Flags for OutputDevice::Push() and OutDevState
enum class PushFlags {
    NONE            = 0x0000,
    LINECOLOR       = 0x0001,
    FILLCOLOR       = 0x0002,
    FONT            = 0x0004,
    TEXTCOLOR       = 0x0008,
    MAPMODE         = 0x0010,
    CLIPREGION      = 0x0020,
    RASTEROP        = 0x0040,
    TEXTFILLCOLOR   = 0x0080,
    TEXTALIGN       = 0x0100,
    REFPOINT        = 0x0200,
    TEXTLINECOLOR   = 0x0400,
    TEXTLAYOUTMODE  = 0x0800,
    TEXTLANGUAGE    = 0x1000,
    OVERLINECOLOR   = 0x2000,
    ALL             = 0xFFFF
};

namespace o3tl
{
    template<> struct typed_flags<PushFlags> : is_typed_flags<PushFlags, 0xFFFF> {};
}
#define PUSH_ALLFONT  (PushFlags::TEXTCOLOR | PushFlags::TEXTFILLCOLOR | PushFlags::TEXTLINECOLOR | PushFlags::OVERLINECOLOR | PushFlags::TEXTALIGN | PushFlags::TEXTLAYOUTMODE | PushFlags::TEXTLANGUAGE | PushFlags::FONT)

// Layout flags for Complex Text Layout
// These are flag values, i.e they can be combined
enum class ComplexTextLayoutFlags
{
    Default           = 0x0000,
    BiDiRtl           = 0x0001,
    BiDiStrong        = 0x0002,
    TextOriginLeft    = 0x0004,
    TextOriginRight   = 0x0008
};
namespace o3tl {
    template<> struct typed_flags<ComplexTextLayoutFlags> : is_typed_flags<ComplexTextLayoutFlags, 0x000f> {};
}

struct OutDevState
{
    OutDevState() = default;
    OutDevState(OutDevState&&) = default;

    std::unique_ptr<vcl::Region> mpClipRegion;
    std::optional<MapMode> mpMapMode;
    std::optional<vcl::Font> mpFont;
    std::optional<Point> mpRefPoint;
    std::optional<Color> mpLineColor;
    std::optional<Color> mpFillColor;
    std::optional<Color> mpTextColor;
    std::optional<Color> mpTextFillColor;
    std::optional<Color> mpTextLineColor;
    std::optional<Color> mpOverlineColor;
    TextAlign meTextAlign = ALIGN_TOP;
    RasterOp meRasterOp = RasterOp::OverPaint;
    ComplexTextLayoutFlags mnTextLayoutMode = ComplexTextLayoutFlags::Default;
    LanguageType meTextLanguage = LANGUAGE_SYSTEM;
    PushFlags mnFlags = PushFlags::NONE;
    bool mbMapActive = false;
};

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/pdfwriter.hxx b/include/vcl/pdfwriter.hxx
index b473db8..3601c88 100644
--- a/include/vcl/pdfwriter.hxx
+++ b/include/vcl/pdfwriter.hxx
@@ -715,7 +715,7 @@ The following structure describes the permissions used in PDF security
    void               IntersectClipRegion( const tools::Rectangle& rRect );
    void               IntersectClipRegion( const basegfx::B2DPolyPolygon& rRegion );

    void               SetLayoutMode( ComplexTextLayoutFlags nMode );
    void               SetLayoutMode( vcl::text::ComplexTextLayoutFlags nMode );
    void               SetDigitLanguage( LanguageType eLang );

    void               SetLineColor( const Color& rColor );
diff --git a/include/vcl/rendercontext/State.hxx b/include/vcl/rendercontext/State.hxx
new file mode 100644
index 0000000..99460e3
--- /dev/null
+++ b/include/vcl/rendercontext/State.hxx
@@ -0,0 +1,121 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#pragma once

#include <tools/color.hxx>
#include <tools/gen.hxx>
#include <tools/fontenum.hxx>
#include <i18nlangtag/lang.h>
#include <o3tl/typed_flags_set.hxx>

#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/font.hxx>
#include <vcl/mapmod.hxx>
#include <vcl/region.hxx>
#include <vcl/vclenum.hxx>

#include <memory>
#include <optional>

namespace vcl
{
// Flags for OutputDevice::Push() and State
enum class PushFlags
{
    NONE = 0x0000,
    LINECOLOR = 0x0001,
    FILLCOLOR = 0x0002,
    FONT = 0x0004,
    TEXTCOLOR = 0x0008,
    MAPMODE = 0x0010,
    CLIPREGION = 0x0020,
    RASTEROP = 0x0040,
    TEXTFILLCOLOR = 0x0080,
    TEXTALIGN = 0x0100,
    REFPOINT = 0x0200,
    TEXTLINECOLOR = 0x0400,
    TEXTLAYOUTMODE = 0x0800,
    TEXTLANGUAGE = 0x1000,
    OVERLINECOLOR = 0x2000,
    ALL = 0xFFFF
};
}

namespace o3tl
{
template <> struct typed_flags<vcl::PushFlags> : is_typed_flags<vcl::PushFlags, 0xFFFF>
{
};
}
#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)

namespace vcl::text
{
// Layout flags for Complex Text Layout
// These are flag values, i.e they can be combined
enum class ComplexTextLayoutFlags
{
    Default = 0x0000,
    BiDiRtl = 0x0001,
    BiDiStrong = 0x0002,
    TextOriginLeft = 0x0004,
    TextOriginRight = 0x0008
};
}

namespace o3tl
{
template <>
struct typed_flags<vcl::text::ComplexTextLayoutFlags>
    : is_typed_flags<vcl::text::ComplexTextLayoutFlags, 0x000f>
{
};
}

namespace vcl
{
struct State
{
    State() = default;
    State(State&&) = default;

    std::unique_ptr<vcl::Region> mpClipRegion;
    std::optional<MapMode> mpMapMode;
    std::optional<vcl::Font> mpFont;
    std::optional<Point> mpRefPoint;
    std::optional<Color> mpLineColor;
    std::optional<Color> mpFillColor;
    std::optional<Color> mpTextColor;
    std::optional<Color> mpTextFillColor;
    std::optional<Color> mpTextLineColor;
    std::optional<Color> mpOverlineColor;
    TextAlign meTextAlign = ALIGN_TOP;
    RasterOp meRasterOp = RasterOp::OverPaint;
    text::ComplexTextLayoutFlags mnTextLayoutMode = text::ComplexTextLayoutFlags::Default;
    LanguageType meTextLanguage = LANGUAGE_SYSTEM;
    PushFlags mnFlags = PushFlags::NONE;
    bool mbMapActive = false;
};
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/inc/pch/precompiled_oox.hxx b/oox/inc/pch/precompiled_oox.hxx
index 660545e..691c0fc 100644
--- a/oox/inc/pch/precompiled_oox.hxx
+++ b/oox/inc/pch/precompiled_oox.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:15:59 using:
 Generated on 2021-09-28 05:37:38 using:
 ./bin/update_pch oox oox --cutoff=6 --exclude:system --exclude:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -36,13 +36,13 @@
#include <math.h>
#include <memory>
#include <new>
#include <numeric>
#include <optional>
#include <ostream>
#include <set>
#include <string.h>
#include <string_view>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
@@ -76,9 +76,9 @@
#include <rtl/textenc.h>
#include <rtl/uri.hxx>
#include <rtl/ustrbuf.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
#include <sal/log.hxx>
#include <sal/macros.h>
#include <sal/saldllapi.h>
#include <sal/types.h>
#include <vcl/bitmap.hxx>
@@ -90,7 +90,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -101,7 +100,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/vclreferencebase.hxx>
#include <vcl/wall.hxx>
@@ -122,9 +124,11 @@
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/chart2/XChartDocument.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/Hatch.hpp>
#include <com/sun/star/drawing/LineCap.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
#include <com/sun/star/drawing/XDrawPage.hpp>
@@ -198,6 +202,7 @@
#include <o3tl/safeint.hxx>
#include <o3tl/typed_flags_set.hxx>
#include <o3tl/unit_conversion.hxx>
#include <sax/fastattribs.hxx>
#include <sax/fshelper.hxx>
#include <sax/saxdllapi.h>
#include <svl/poolitem.hxx>
@@ -226,6 +231,8 @@
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/fontdefs.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
@@ -242,10 +249,11 @@
#include <oox/drawingml/clrscheme.hxx>
#include <oox/drawingml/color.hxx>
#include <oox/drawingml/drawingmltypes.hxx>
#include <oox/drawingml/graphicshapecontext.hxx>
#include <oox/drawingml/shape.hxx>
#include <oox/drawingml/shapecontext.hxx>
#include <oox/drawingml/shapepropertymap.hxx>
#include <oox/drawingml/theme.hxx>
#include <oox/export/utils.hxx>
#include <oox/helper/attributelist.hxx>
#include <oox/helper/binaryinputstream.hxx>
#include <oox/helper/binaryoutputstream.hxx>
@@ -263,7 +271,6 @@
#include <oox/ole/olestorage.hxx>
#include <oox/ppt/comments.hxx>
#include <oox/ppt/headerfooter.hxx>
#include <oox/ppt/pptimport.hxx>
#include <oox/ppt/pptshape.hxx>
#include <oox/ppt/slidepersist.hxx>
#include <oox/token/namespaces.hxx>
diff --git a/reportdesign/inc/pch/precompiled_rpt.hxx b/reportdesign/inc/pch/precompiled_rpt.hxx
index 09123d8..57b8af3 100644
--- a/reportdesign/inc/pch/precompiled_rpt.hxx
+++ b/reportdesign/inc/pch/precompiled_rpt.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:16:08 using:
 Generated on 2021-09-12 11:51:50 using:
 ./bin/update_pch reportdesign rpt --cutoff=9 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -25,6 +25,7 @@
#include <algorithm>
#include <array>
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstddef>
#include <cstdlib>
@@ -44,6 +45,7 @@
#include <optional>
#include <ostream>
#include <stddef.h>
#include <stdexcept>
#include <string.h>
#include <string>
#include <string_view>
@@ -64,6 +66,7 @@
#include <osl/mutex.h>
#include <osl/mutex.hxx>
#include <osl/thread.h>
#include <osl/time.h>
#include <rtl/alloc.h>
#include <rtl/instance.hxx>
#include <rtl/locale.h>
@@ -76,6 +79,7 @@
#include <rtl/stringutils.hxx>
#include <rtl/textcvt.h>
#include <rtl/textenc.h>
#include <rtl/unload.h>
#include <rtl/ustrbuf.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
@@ -108,7 +112,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -119,7 +122,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/task.hxx>
@@ -140,6 +146,8 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/tuple/b3dtuple.hxx>
@@ -149,11 +157,15 @@
#include <basegfx/vector/b2enums.hxx>
#include <basegfx/vector/b2ivector.hxx>
#include <com/sun/star/awt/DeviceInfo.hpp>
#include <com/sun/star/awt/FontDescriptor.hpp>
#include <com/sun/star/beans/XFastPropertySet.hpp>
#include <com/sun/star/beans/XMultiPropertySet.hpp>
#include <com/sun/star/beans/XPropertyAccess.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/drawing/LineCap.hpp>
#include <com/sun/star/drawing/TextFitToSizeType.hpp>
#include <com/sun/star/drawing/XShape.hpp>
#include <com/sun/star/form/FormComponentType.hpp>
#include <com/sun/star/graphic/XPrimitive2D.hpp>
#include <com/sun/star/lang/DisposedException.hpp>
@@ -201,6 +213,7 @@
#include <cppuhelper/implbase_ex_post.hxx>
#include <cppuhelper/implbase_ex_pre.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <cppuhelper/propertysetmixin.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <cppuhelper/weak.hxx>
#include <cppuhelper/weakagg.hxx>
@@ -210,15 +223,15 @@
#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
#include <editeng/editengdllapi.h>
#include <editeng/outlobj.hxx>
#include <editeng/paragraphdata.hxx>
#include <i18nlangtag/lang.h>
#include <o3tl/cow_wrapper.hxx>
#include <o3tl/safeint.hxx>
#include <o3tl/sorted_vector.hxx>
#include <o3tl/strong_int.hxx>
#include <o3tl/typed_flags_set.hxx>
#include <o3tl/underlyingenumvalue.hxx>
#include <o3tl/unit_conversion.hxx>
#include <salhelper/salhelperdllapi.h>
#include <salhelper/simplereferenceobject.hxx>
#include <svl/SfxBroadcaster.hxx>
#include <svl/cenumitm.hxx>
@@ -231,6 +244,7 @@
#include <svl/stylesheetuser.hxx>
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svl/whichranges.hxx>
#include <svx/DiagramDataInterface.hxx>
#include <svx/itextprovider.hxx>
#include <svx/sdr/properties/defaultproperties.hxx>
@@ -275,9 +289,10 @@
#include <uno/any2.h>
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/configitem.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
diff --git a/reportdesign/inc/pch/precompiled_rptui.hxx b/reportdesign/inc/pch/precompiled_rptui.hxx
index 03ed633..e3bf141 100644
--- a/reportdesign/inc/pch/precompiled_rptui.hxx
+++ b/reportdesign/inc/pch/precompiled_rptui.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:16:21 using:
 Generated on 2021-09-12 11:51:58 using:
 ./bin/update_pch reportdesign rptui --cutoff=4 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -42,12 +42,14 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <numeric>
#include <optional>
#include <ostream>
#include <sstream>
#include <stddef.h>
#include <stdexcept>
#include <string.h>
#include <string>
#include <string_view>
@@ -130,7 +132,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -141,7 +142,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/settings.hxx>
@@ -173,6 +177,8 @@
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/range/b2irange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
@@ -191,6 +197,7 @@
#include <com/sun/star/awt/GradientStyle.hpp>
#include <com/sun/star/awt/Key.hpp>
#include <com/sun/star/awt/KeyGroup.hpp>
#include <com/sun/star/awt/XVclWindowPeer.hpp>
#include <com/sun/star/beans/PropertyChangeEvent.hpp>
#include <com/sun/star/beans/PropertyState.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
@@ -233,6 +240,7 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/report/XReportComponent.hpp>
#include <com/sun/star/report/XReportDefinition.hpp>
#include <com/sun/star/style/NumberingType.hpp>
#include <com/sun/star/style/XStyle.hpp>
@@ -261,6 +269,7 @@
#include <com/sun/star/util/Time.hpp>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/interfacecontainer2.hxx>
#include <comphelper/multicontainer2.hxx>
#include <comphelper/propertysequence.hxx>
#include <comphelper/propertysetinfo.hxx>
#include <comphelper/sequence.hxx>
@@ -279,7 +288,6 @@
#include <cppuhelper/implbase_ex_post.hxx>
#include <cppuhelper/implbase_ex_pre.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <cppuhelper/weak.hxx>
#include <cppuhelper/weakagg.hxx>
@@ -299,6 +307,8 @@
#include <editeng/forbiddencharacterstable.hxx>
#include <editeng/macros.hxx>
#include <editeng/outliner.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/overflowingtxt.hxx>
#include <editeng/paragraphdata.hxx>
#include <editeng/svxenum.hxx>
#include <editeng/svxfont.hxx>
@@ -341,6 +351,7 @@
#include <svl/languageoptions.hxx>
#include <svl/lstner.hxx>
#include <svl/poolitem.hxx>
#include <svl/setitem.hxx>
#include <svl/sharedstring.hxx>
#include <svl/stritem.hxx>
#include <svl/style.hxx>
@@ -348,10 +359,10 @@
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svl/undo.hxx>
#include <svl/whichranges.hxx>
#include <svtools/accessibilityoptions.hxx>
#include <svtools/colorcfg.hxx>
#include <svtools/extcolorcfg.hxx>
#include <svtools/optionsdrawinglayer.hxx>
#include <svtools/statusbarcontroller.hxx>
#include <svtools/svtdllapi.h>
#include <svx/DiagramDataInterface.hxx>
@@ -438,16 +449,17 @@
#include <uno/any2.h>
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/configitem.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/localedatawrapper.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
#include <AddField.hxx>
#include <DesignView.hxx>
#include <IReportControllerObserver.hxx>
#include <ReportController.hxx>
#include <ReportSection.hxx>
#include <ReportWindow.hxx>
diff --git a/reportdesign/source/ui/inc/ColorChanger.hxx b/reportdesign/source/ui/inc/ColorChanger.hxx
index bbed0a0..34a336b 100644
--- a/reportdesign/source/ui/inc/ColorChanger.hxx
+++ b/reportdesign/source/ui/inc/ColorChanger.hxx
@@ -34,7 +34,7 @@ namespace rptui
        ColorChanger( OutputDevice* _pDev, const Color& _rNewLineColor, const Color& _rNewFillColor )
            :m_pDev( _pDev )
        {
            m_pDev->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
            m_pDev->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
            m_pDev->SetLineColor( _rNewLineColor );
            m_pDev->SetFillColor( _rNewFillColor );
        }
diff --git a/reportdesign/source/ui/report/StartMarker.cxx b/reportdesign/source/ui/report/StartMarker.cxx
index 69bb14b..150f7af 100644
--- a/reportdesign/source/ui/report/StartMarker.cxx
+++ b/reportdesign/source/ui/report/StartMarker.cxx
@@ -97,7 +97,7 @@ sal_Int32 OStartMarker::getMinHeight() const

void OStartMarker::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*rRect*/)
{
    rRenderContext.Push(PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::TEXTCOLOR);

    Size aSize(GetOutputSizePixel());
    const tools::Long nCornerWidth = tools::Long(CORNER_SPACE * double(GetMapMode().GetScaleX()));
@@ -135,7 +135,7 @@ void OStartMarker::Paint(vcl::RenderContext& rRenderContext, const tools::Rectan
        rRenderContext.DrawGradient(PixelToLogic(aPoly) ,aGradient);
    }

    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode();

    rRenderContext.DrawImage(m_aImageRect.TopLeft(), m_aImageRect.GetSize(), m_aImage);
diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx
index 0419b78..4b0bcc4 100644
--- a/sc/source/ui/cctrl/dpcontrol.cxx
+++ b/sc/source/ui/cctrl/dpcontrol.cxx
@@ -127,7 +127,7 @@ void ScDPFieldButton::draw()
        aTextPos.setX(maPos.getX() + 2); // 2 = Margin
        aTextPos.setY(maPos.getY() + (maSize.Height()-nTHeight)/2);

        mpOutDev->Push(PushFlags::CLIPREGION);
        mpOutDev->Push(vcl::PushFlags::CLIPREGION);
        mpOutDev->IntersectClipRegion(aRect);
        mpOutDev->DrawText(aTextPos, maText);
        mpOutDev->Pop();
diff --git a/sc/source/ui/dbgui/csvcontrol.cxx b/sc/source/ui/dbgui/csvcontrol.cxx
index 921a149..409e898 100644
--- a/sc/source/ui/dbgui/csvcontrol.cxx
+++ b/sc/source/ui/dbgui/csvcontrol.cxx
@@ -241,7 +241,7 @@ sal_Int32 ScCsvControl::GetLineFromY( sal_Int32 nY ) const

void ScCsvControl::ImplInvertRect( OutputDevice& rOutDev, const tools::Rectangle& rRect )
{
    rOutDev.Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR | PushFlags::RASTEROP );
    rOutDev.Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR | vcl::PushFlags::RASTEROP );
    rOutDev.SetLineColor( COL_BLACK );
    rOutDev.SetFillColor( COL_BLACK );
    rOutDev.SetRasterOp( RasterOp::Invert );
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 3730cc10..6ccf37a 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -2162,8 +2162,8 @@ void ScDocShell::Draw( OutputDevice* pDev, const JobSetup & /* rSetup */, sal_uI
    if (!m_aDocument.HasTable(nVisTab))
        return;

    ComplexTextLayoutFlags nOldLayoutMode = pDev->GetLayoutMode();
    pDev->SetLayoutMode( ComplexTextLayoutFlags::Default );     // even if it's the same, to get the metafile action
    vcl::text::ComplexTextLayoutFlags nOldLayoutMode = pDev->GetLayoutMode();
    pDev->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::Default );     // even if it's the same, to get the metafile action

    if ( nAspect == ASPECT_THUMBNAIL )
    {
diff --git a/sc/source/ui/miscdlgs/autofmt.cxx b/sc/source/ui/miscdlgs/autofmt.cxx
index 7246a400..60ccec1 100644
--- a/sc/source/ui/miscdlgs/autofmt.cxx
+++ b/sc/source/ui/miscdlgs/autofmt.cxx
@@ -366,7 +366,7 @@ void ScAutoFmtPreview::DrawBackground(vcl::RenderContext& rRenderContext)
            const SvxBrushItem* pItem =
                pCurData->GetItem( GetFormatIndex( nCol, nRow ), ATTR_BACKGROUND );

            rRenderContext.Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
            rRenderContext.Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
            rRenderContext.SetLineColor();
            rRenderContext.SetFillColor( pItem->GetColor() );

@@ -492,7 +492,7 @@ void ScAutoFmtPreview::NotifyChange( ScAutoFormatData* pNewData )

void ScAutoFmtPreview::DoPaint(vcl::RenderContext& rRenderContext)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);
    DrawModeFlags nOldDrawMode = aVD->GetDrawMode();

    Size aWndSize(GetOutputSizePixel());
diff --git a/sc/source/ui/view/tabsplit.cxx b/sc/source/ui/view/tabsplit.cxx
index e2ed5f8..fb8435b 100644
--- a/sc/source/ui/view/tabsplit.cxx
+++ b/sc/source/ui/view/tabsplit.cxx
@@ -55,7 +55,7 @@ void ScTabSplitter::SetFixed(bool bSet)

void ScTabSplitter::Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect )
{
    rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
    rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);
    const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();

    if (IsHorizontal())
diff --git a/sd/inc/pch/precompiled_sdui.hxx b/sd/inc/pch/precompiled_sdui.hxx
index e92161a..e74c431 100644
--- a/sd/inc/pch/precompiled_sdui.hxx
+++ b/sd/inc/pch/precompiled_sdui.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:16:34 using:
 Generated on 2021-09-12 11:52:07 using:
 ./bin/update_pch sd sdui --cutoff=4 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -41,6 +41,7 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <numeric>
#include <optional>
@@ -48,6 +49,7 @@
#include <set>
#include <sstream>
#include <stddef.h>
#include <stdexcept>
#include <string.h>
#include <string>
#include <string_view>
@@ -113,6 +115,7 @@
#include <vcl/builderpage.hxx>
#include <vcl/cairo.hxx>
#include <vcl/checksum.hxx>
#include <vcl/ctrl.hxx>
#include <vcl/customweld.hxx>
#include <vcl/devicecoordinate.hxx>
#include <vcl/dllapi.h>
@@ -134,7 +137,6 @@
#include <vcl/metaactiontypes.hxx>
#include <vcl/metric.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/ptrstyle.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
@@ -146,7 +148,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salgtype.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
@@ -178,6 +183,8 @@
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
@@ -332,11 +339,15 @@
#include <editeng/forbiddencharacterstable.hxx>
#include <editeng/numdef.hxx>
#include <editeng/outliner.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/overflowingtxt.hxx>
#include <editeng/paragraphdata.hxx>
#include <editeng/svxenum.hxx>
#include <editeng/svxfont.hxx>
#include <helper/simplereferencecomponent.hxx>
#include <i18nlangtag/i18nlangtagdllapi.h>
#include <i18nlangtag/lang.h>
#include <i18nlangtag/languagetag.hxx>
#include <o3tl/cow_wrapper.hxx>
#include <o3tl/deleter.hxx>
#include <o3tl/enumarray.hxx>
@@ -367,15 +378,16 @@
#include <svl/languageoptions.hxx>
#include <svl/lstner.hxx>
#include <svl/poolitem.hxx>
#include <svl/setitem.hxx>
#include <svl/stritem.hxx>
#include <svl/style.hxx>
#include <svl/stylesheetuser.hxx>
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svl/undo.hxx>
#include <svl/whichranges.hxx>
#include <svtools/accessibilityoptions.hxx>
#include <svtools/colorcfg.hxx>
#include <svtools/optionsdrawinglayer.hxx>
#include <svtools/svtdllapi.h>
#include <svtools/unitconv.hxx>
#include <svtools/valueset.hxx>
@@ -464,16 +476,18 @@
#include <uno/any2.h>
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/configitem.hxx>
#include <unotools/fontcvt.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
#include <DrawDocShell.hxx>
#include <View.hxx>
#include <drawdoc.hxx>
#include <fupoor.hxx>
#include <pres.hxx>
#include <sddllapi.h>
#include <sdmod.hxx>
diff --git a/sd/source/ui/animations/CustomAnimationList.cxx b/sd/source/ui/animations/CustomAnimationList.cxx
index a6bfbdf..65d71f6 100644
--- a/sd/source/ui/animations/CustomAnimationList.cxx
+++ b/sd/source/ui/animations/CustomAnimationList.cxx
@@ -330,7 +330,7 @@ void CustomAnimationListEntryItem::PaintTrigger(vcl::RenderContext& rRenderConte

void CustomAnimationListEntryItem::PaintEffect(vcl::RenderContext& rRenderContext, const ::tools::Rectangle& rRect, bool bSelected)
{
    rRenderContext.Push(PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::TEXTCOLOR);
    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
    if (bSelected)
        rRenderContext.SetTextColor(rStyleSettings.GetHighlightTextColor());
diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 6a15844..5299ef0 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -79,7 +79,7 @@ void SdDisplay::SetBitmapEx( BitmapEx const * pBmpEx )

void SdDisplay::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);

    rRenderContext.SetMapMode(MapMode(MapUnit::MapPixel));
    const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
diff --git a/sd/source/ui/view/drviewsh.cxx b/sd/source/ui/view/drviewsh.cxx
index 3c8738d..418ebad 100644
--- a/sd/source/ui/view/drviewsh.cxx
+++ b/sd/source/ui/view/drviewsh.cxx
@@ -75,7 +75,7 @@ void DrawViewShell::MakeVisible(const ::tools::Rectangle& rRect, vcl::Window& rW
    bool bTiledRendering = comphelper::LibreOfficeKit::isActive() && !rWin.IsMapModeEnabled();
    if (bTiledRendering)
    {
        rWin.GetOutDev()->Push(PushFlags::MAPMODE);
        rWin.GetOutDev()->Push(vcl::PushFlags::MAPMODE);
        rWin.EnableMapMode();
    }
    ::tools::Rectangle aVisArea(rWin.PixelToLogic(::tools::Rectangle(Point(0,0), aVisSizePixel)));
diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx
index 2f93538..bc38488 100644
--- a/sfx2/source/appl/newhelp.cxx
+++ b/sfx2/source/appl/newhelp.cxx
@@ -431,7 +431,7 @@ IMPL_LINK(IndexTabPage_Impl, CustomRenderHdl, weld::TreeView::render_args, aPayl
    bool bSelected = std::get<2>(aPayload);
    const OUString& rId = std::get<3>(aPayload);

    rRenderContext.Push(PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::TEXTCOLOR);
    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
    if (bSelected)
        rRenderContext.SetTextColor(rStyleSettings.GetHighlightTextColor());
diff --git a/sfx2/source/control/recentdocsview.cxx b/sfx2/source/control/recentdocsview.cxx
index dd38fb8..3da4bfb 100644
--- a/sfx2/source/control/recentdocsview.cxx
+++ b/sfx2/source/control/recentdocsview.cxx
@@ -360,7 +360,7 @@ void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rect
    }

    // No recent files to be shown yet. Show a welcome screen.
    rRenderContext.Push(PushFlags::FONT | PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR);
    SetMessageFont(rRenderContext);
    rRenderContext.SetTextColor(maTextColor);

diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index ef97894..7d48b67 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -878,7 +878,7 @@ void ThumbnailView::SetDrawingArea(weld::DrawingArea* pDrawingArea)

void ThumbnailView::Paint(vcl::RenderContext& rRenderContext, const ::tools::Rectangle& /*rRect*/)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);

    rRenderContext.SetTextFillColor();
    rRenderContext.SetBackground(maFillColor);
diff --git a/sfx2/source/dialog/StyleList.cxx b/sfx2/source/dialog/StyleList.cxx
index e2b80c1..5d2b778 100644
--- a/sfx2/source/dialog/StyleList.cxx
+++ b/sfx2/source/dialog/StyleList.cxx
@@ -1573,7 +1573,7 @@ IMPL_LINK(StyleList, CustomRenderHdl, weld::TreeView::render_args, aPayload, voi
    bool bSelected = std::get<2>(aPayload);
    const OUString& rId = std::get<3>(aPayload);

    rRenderContext.Push(PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::TEXTCOLOR);
    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
    if (bSelected)
        rRenderContext.SetTextColor(rStyleSettings.GetHighlightTextColor());
@@ -1592,7 +1592,7 @@ IMPL_LINK(StyleList, CustomRenderHdl, weld::TreeView::render_args, aPayload, voi

        if (pStyleSheet)
        {
            rRenderContext.Push(PushFlags::ALL);
            rRenderContext.Push(vcl::PushFlags::ALL);
            sal_Int32 nSize = aRect.GetHeight();
            std::unique_ptr<sfx2::StylePreviewRenderer> pStylePreviewRenderer(
                pStyleManager->CreateStylePreviewRenderer(rRenderContext, pStyleSheet, nSize));
diff --git a/sfx2/source/dialog/titledockwin.cxx b/sfx2/source/dialog/titledockwin.cxx
index e060a34..69f530c 100644
--- a/sfx2/source/dialog/titledockwin.cxx
+++ b/sfx2/source/dialog/titledockwin.cxx
@@ -135,7 +135,7 @@ namespace sfx2

        SfxDockingWindow::Paint(rRenderContext, i_rArea);

        rRenderContext.Push(PushFlags::FONT | PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::FONT | vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);

        rRenderContext.SetFillColor(rStyleSettings.GetDialogColor());
        rRenderContext.SetLineColor();
diff --git a/sfx2/source/view/lokcharthelper.cxx b/sfx2/source/view/lokcharthelper.cxx
index 789a497..5f29a99 100644
--- a/sfx2/source/view/lokcharthelper.cxx
+++ b/sfx2/source/view/lokcharthelper.cxx
@@ -214,7 +214,7 @@ void LokChartHelper::PaintTile(VirtualDevice& rRenderContext, const tools::Recta
    bool bRenderContextEnableMapMode = !rRenderContext.IsMapModeEnabled();
    rRenderContext.EnableMapMode();

    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);

    MapMode aCWMapMode = pChartWindow->GetMapMode();
    aCWMapMode.SetScaleX(rRenderContext.GetMapMode().GetScaleX());
@@ -244,7 +244,7 @@ void LokChartHelper::PaintAllChartsOnTile(VirtualDevice& rDevice,
    // Resizes the virtual device so to contain the entries context
    rDevice.SetOutputSizePixel(Size(nOutputWidth, nOutputHeight));

    rDevice.Push(PushFlags::MAPMODE);
    rDevice.Push(vcl::PushFlags::MAPMODE);
    MapMode aMapMode(rDevice.GetMapMode());

    // Scaling. Must convert from pixels to twips. We know
diff --git a/slideshow/inc/pch/precompiled_slideshow.hxx b/slideshow/inc/pch/precompiled_slideshow.hxx
index 1287ded..d7501ea 100644
--- a/slideshow/inc/pch/precompiled_slideshow.hxx
+++ b/slideshow/inc/pch/precompiled_slideshow.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:16:42 using:
 Generated on 2021-09-12 11:52:12 using:
 ./bin/update_pch slideshow slideshow --cutoff=4 --exclude:system --include:module --exclude:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -43,8 +43,8 @@
#include <numeric>
#include <optional>
#include <ostream>
#include <set>
#include <stddef.h>
#include <stdexcept>
#include <string.h>
#include <string>
#include <string_view>
@@ -115,7 +115,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -126,7 +125,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/task.hxx>
@@ -151,20 +153,20 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/tuple/b3dtuple.hxx>
#include <basegfx/utils/canvastools.hxx>
#include <basegfx/utils/common.hxx>
#include <basegfx/vector/b2dsize.hxx>
#include <basegfx/vector/b2dvector.hxx>
#include <basegfx/vector/b2enums.hxx>
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/vector/b2ivector.hxx>
#include <canvas/canvastools.hxx>
#include <canvas/canvastoolsdllapi.h>
#include <canvas/elapsedtime.hxx>
#include <com/sun/star/animations/TransitionSubType.hpp>
#include <com/sun/star/animations/TransitionType.hpp>
#include <com/sun/star/animations/XAnimationNode.hpp>
@@ -184,7 +186,6 @@
#include <com/sun/star/drawing/XDrawPage.hpp>
#include <com/sun/star/drawing/XShape.hpp>
#include <com/sun/star/form/FormComponentType.hpp>
#include <com/sun/star/geometry/IntegerSize2D.hpp>
#include <com/sun/star/graphic/XPrimitive2D.hpp>
#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
#include <com/sun/star/i18n/WordType.hpp>
@@ -250,6 +251,8 @@
#include <editeng/editstat.hxx>
#include <editeng/eedata.hxx>
#include <editeng/macros.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/paragraphdata.hxx>
#include <i18nlangtag/lang.h>
#include <o3tl/cow_wrapper.hxx>
#include <o3tl/safeint.hxx>
@@ -258,13 +261,11 @@
#include <o3tl/typed_flags_set.hxx>
#include <o3tl/underlyingenumvalue.hxx>
#include <o3tl/unit_conversion.hxx>
#include <salhelper/salhelperdllapi.h>
#include <salhelper/simplereferenceobject.hxx>
#include <svl/SfxBroadcaster.hxx>
#include <svl/cenumitm.hxx>
#include <svl/eitem.hxx>
#include <svl/hint.hxx>
#include <svl/itempool.hxx>
#include <svl/itemset.hxx>
#include <svl/languageoptions.hxx>
#include <svl/lstner.hxx>
@@ -274,6 +275,7 @@
#include <svl/stylesheetuser.hxx>
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svl/whichranges.hxx>
#include <svx/DiagramDataInterface.hxx>
#include <svx/itextprovider.hxx>
#include <svx/sdr/animation/scheduler.hxx>
@@ -295,6 +297,7 @@
#include <svx/svdtypes.hxx>
#include <svx/svxdllapi.h>
#include <svx/xdef.hxx>
#include <svx/xpoly.hxx>
#include <tools/color.hxx>
#include <tools/date.hxx>
#include <tools/datetime.hxx>
@@ -322,15 +325,15 @@
#include <uno/any2.h>
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/configitem.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
#include <activitiesfactory.hxx>
#include <activitiesqueue.hxx>
#include <animatableshape.hxx>
#include <animationfactory.hxx>
#include <animationnode.hxx>
#include <cursormanager.hxx>
@@ -352,7 +355,6 @@
#include <unoview.hxx>
#include <unoviewcontainer.hxx>
#include <usereventqueue.hxx>
#include <viewlayer.hxx>
#endif // PCH_LEVEL >= 4

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index 674268f..6d590cd 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -6417,7 +6417,6 @@ include/vcl/oldprintadaptor.hxx
include/vcl/opengl/OpenGLContext.hxx
include/vcl/opengl/OpenGLHelper.hxx
include/vcl/outdev.hxx
include/vcl/outdevstate.hxx
include/vcl/pdfextoutdevdata.hxx
include/vcl/pdfwriter.hxx
include/vcl/pngwrite.hxx
diff --git a/starmath/inc/pch/precompiled_sm.hxx b/starmath/inc/pch/precompiled_sm.hxx
index 7d48509..2c8ce3f 100644
--- a/starmath/inc/pch/precompiled_sm.hxx
+++ b/starmath/inc/pch/precompiled_sm.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:16:51 using:
 Generated on 2021-09-12 11:52:19 using:
 ./bin/update_pch starmath sm --cutoff=5 --exclude:system --exclude:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -30,7 +30,6 @@
#include <functional>
#include <limits.h>
#include <limits>
#include <map>
#include <memory>
#include <new>
#include <optional>
@@ -48,7 +47,6 @@
#include <osl/mutex.hxx>
#include <rtl/alloc.h>
#include <rtl/character.hxx>
#include <rtl/instance.hxx>
#include <rtl/locale.h>
#include <rtl/math.hxx>
#include <rtl/ref.hxx>
@@ -60,7 +58,6 @@
#include <rtl/ustrbuf.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
#include <rtl/uuid.h>
#include <sal/log.hxx>
#include <sal/types.h>
#include <vcl/bitmap.hxx>
@@ -74,7 +71,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -85,7 +81,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
@@ -101,21 +100,28 @@
#include <basegfx/vector/b2enums.hxx>
#include <com/sun/star/awt/DeviceInfo.hpp>
#include <com/sun/star/drawing/LineCap.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/i18n/WordType.hpp>
#include <com/sun/star/text/textfield/Type.hpp>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/uno/Sequence.hxx>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/fileformat.h>
#include <comphelper/processfactory.hxx>
#include <comphelper/propertysetinfo.hxx>
#include <comphelper/servicehelper.hxx>
#include <cppuhelper/implbase.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <cppuhelper/weakref.hxx>
#include <editeng/editdata.hxx>
#include <editeng/editengdllapi.h>
#include <editeng/editobj.hxx>
#include <editeng/editstat.hxx>
#include <editeng/eedata.hxx>
#include <editeng/macros.hxx>
#include <i18nlangtag/lang.h>
#include <o3tl/cow_wrapper.hxx>
#include <o3tl/sorted_vector.hxx>
#include <o3tl/strong_int.hxx>
#include <o3tl/typed_flags_set.hxx>
#include <o3tl/unit_conversion.hxx>
@@ -130,6 +136,7 @@
#include <svl/languageoptions.hxx>
#include <svl/poolitem.hxx>
#include <svl/stritem.hxx>
#include <svl/style.hxx>
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svx/svxdllapi.h>
@@ -145,9 +152,9 @@
#include <tools/ref.hxx>
#include <tools/solar.h>
#include <tools/toolsdllapi.h>
#include <unotools/configitem.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/streamwrap.hxx>
#include <unotools/unotoolsdllapi.h>
#include <xmloff/dllapi.h>
#endif // PCH_LEVEL >= 3
@@ -164,6 +171,7 @@
#include <utility.hxx>
#include <view.hxx>
#include <visitors.hxx>
#include <xparsmlbase.hxx>
#endif // PCH_LEVEL >= 4

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/starmath/source/ElementsDockingWindow.cxx b/starmath/source/ElementsDockingWindow.cxx
index c627980..23888cf 100644
--- a/starmath/source/ElementsDockingWindow.cxx
+++ b/starmath/source/ElementsDockingWindow.cxx
@@ -361,7 +361,7 @@ void SmElementsControl::LayoutOrPaintContents(vcl::RenderContext& rContext, bool

    rContext.SetMapMode( MapMode(MapUnit::Map100thMM) );
    rContext.SetDrawMode( DrawModeFlags::Default );
    rContext.SetLayoutMode( ComplexTextLayoutFlags::Default );
    rContext.SetLayoutMode( vcl::text::ComplexTextLayoutFlags::Default );
    rContext.SetDigitLanguage( LANGUAGE_ENGLISH );
    if (bDraw)
    {
@@ -456,7 +456,7 @@ void SmElementsControl::LayoutOrPaintContents(vcl::RenderContext& rContext, bool
            {
                if (pCurrentElement == element)
                {
                    rContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
                    rContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);
                    const StyleSettings& rStyleSettings = rContext.GetSettings().GetStyleSettings();
                    rContext.SetLineColor(rStyleSettings.GetHighlightColor());
                    rContext.SetFillColor(COL_TRANSPARENT);
@@ -854,7 +854,7 @@ void SmElementsControl::addElement(const OUString& aElementVisual, const OUStrin
    auto pNode = maParser->ParseExpression(aElementVisual);

    OutputDevice& rDevice = GetDrawingArea()->get_ref_device();
    rDevice.Push(PushFlags::MAPMODE);
    rDevice.Push(vcl::PushFlags::MAPMODE);
    rDevice.SetMapMode( MapMode(MapUnit::Map100thMM) );

    pNode->Prepare(maFormat, *mpDocShell, 0);
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
index a67273d..06c1ab6 100644
--- a/starmath/source/dialog.cxx
+++ b/starmath/source/dialog.cxx
@@ -974,7 +974,7 @@ void SmShowSymbolSet::Paint(vcl::RenderContext& rRenderContext, const tools::Rec
    rRenderContext.SetBackground(Wallpaper(aBackgroundColor));
    rRenderContext.SetTextColor(aTextColor);

    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);

    // set MapUnit for which 'nLen' has been calculated
    rRenderContext.SetMapMode(MapMode(MapUnit::MapPixel));
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index bc392a4..62c402a 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -277,8 +277,8 @@ void SmDocShell::ArrangeFormula()

    // format/draw formulas always from left to right,
    // and numbers should not be converted
    ComplexTextLayoutFlags nLayoutMode = pOutDev->GetLayoutMode();
    pOutDev->SetLayoutMode( ComplexTextLayoutFlags::Default );
    vcl::text::ComplexTextLayoutFlags nLayoutMode = pOutDev->GetLayoutMode();
    pOutDev->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::Default );
    LanguageType nDigitLang = pOutDev->GetDigitLanguage();
    pOutDev->SetDigitLanguage( LANGUAGE_ENGLISH );

@@ -353,8 +353,8 @@ void SmDocShell::DrawFormula(OutputDevice &rDev, Point &rPosition, bool bDrawSel

    // format/draw formulas always from left to right
    // and numbers should not be converted
    ComplexTextLayoutFlags nLayoutMode = rDev.GetLayoutMode();
    rDev.SetLayoutMode( ComplexTextLayoutFlags::Default );
    vcl::text::ComplexTextLayoutFlags nLayoutMode = rDev.GetLayoutMode();
    rDev.SetLayoutMode( vcl::text::ComplexTextLayoutFlags::Default );
    LanguageType nDigitLang = rDev.GetDigitLanguage();
    rDev.SetDigitLanguage( LANGUAGE_ENGLISH );

@@ -419,7 +419,7 @@ SmPrinterAccess::SmPrinterAccess( SmDocShell &rDocShell )
    pPrinter = rDocShell.GetPrt();
    if ( pPrinter )
    {
        pPrinter->Push( PushFlags::MAPMODE );
        pPrinter->Push( vcl::PushFlags::MAPMODE );
        if ( SfxObjectCreateMode::EMBEDDED == rDocShell.GetCreateMode() )
        {
            // if it is an embedded object (without its own printer)
@@ -446,7 +446,7 @@ SmPrinterAccess::SmPrinterAccess( SmDocShell &rDocShell )
    if ( !pRefDev || pPrinter.get() == pRefDev.get() )
        return;

    pRefDev->Push( PushFlags::MAPMODE );
    pRefDev->Push( vcl::PushFlags::MAPMODE );
    if ( SfxObjectCreateMode::EMBEDDED != rDocShell.GetCreateMode() )
        return;

diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index 43d5ca7..5306908 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -2090,7 +2090,7 @@ void SmMathSymbolNode::AdaptToY(OutputDevice &rDev, sal_uLong nHeight)
    // to determine the font width in order to keep it
    if (aFntSize.Width() == 0)
    {
        rDev.Push(PushFlags::FONT | PushFlags::MAPMODE);
        rDev.Push(vcl::PushFlags::FONT | vcl::PushFlags::MAPMODE);
        rDev.SetFont(GetFont());
        aFntSize.setWidth( rDev.GetFontMetric().GetFontSize().Width() );
        rDev.Pop();
diff --git a/starmath/source/rect.cxx b/starmath/source/rect.cxx
index 8d7ea52..e7b761a 100644
--- a/starmath/source/rect.cxx
+++ b/starmath/source/rect.cxx
@@ -56,7 +56,7 @@ bool SmGetGlyphBoundRect(const vcl::RenderContext &rDev,

    const FontMetric  aDevFM (rDev.GetFontMetric());

    pGlyphDev->Push(PushFlags::FONT | PushFlags::MAPMODE);
    pGlyphDev->Push(vcl::PushFlags::FONT | vcl::PushFlags::MAPMODE);
    vcl::Font aFnt(rDev.GetFont());
    aFnt.SetAlignment(ALIGN_TOP);

@@ -203,7 +203,7 @@ SmRect::SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
    {
        OutputDevice    *pWindow = Application::GetDefaultDevice();

        pWindow->Push(PushFlags::MAPMODE | PushFlags::FONT);
        pWindow->Push(vcl::PushFlags::MAPMODE | vcl::PushFlags::FONT);

        pWindow->SetMapMode(rDev.GetMapMode());
        pWindow->SetFont(rDev.GetFontMetric());
diff --git a/starmath/source/tmpdevice.cxx b/starmath/source/tmpdevice.cxx
index 8135640..5eee10d 100644
--- a/starmath/source/tmpdevice.cxx
+++ b/starmath/source/tmpdevice.cxx
@@ -34,8 +34,8 @@
SmTmpDevice::SmTmpDevice(OutputDevice &rTheDev, bool bUseMap100th_mm) :
    rOutDev(rTheDev)
{
    rOutDev.Push(PushFlags::FONT | PushFlags::MAPMODE |
                 PushFlags::LINECOLOR | PushFlags::FILLCOLOR | PushFlags::TEXTCOLOR);
    rOutDev.Push(vcl::PushFlags::FONT | vcl::PushFlags::MAPMODE |
                 vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR | vcl::PushFlags::TEXTCOLOR);
    if (bUseMap100th_mm  &&  MapUnit::Map100thMM != rOutDev.GetMapMode().GetMapUnit())
    {
        SAL_WARN("starmath", "incorrect MapMode?");
diff --git a/starmath/source/visitors.cxx b/starmath/source/visitors.cxx
index 7e02d47..e84619f 100644
--- a/starmath/source/visitors.cxx
+++ b/starmath/source/visitors.cxx
@@ -170,7 +170,7 @@ SmCaretDrawingVisitor::SmCaretDrawingVisitor( OutputDevice& rDevice,
        return;

    //Save device state
    mrDev.Push( PushFlags::FONT | PushFlags::MAPMODE | PushFlags::LINECOLOR | PushFlags::FILLCOLOR | PushFlags::TEXTCOLOR );
    mrDev.Push( vcl::PushFlags::FONT | vcl::PushFlags::MAPMODE | vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR | vcl::PushFlags::TEXTCOLOR );

    maPos.pSelectedNode->Accept( this );
    //Restore device state
@@ -242,7 +242,7 @@ void SmCaretDrawingVisitor::DefaultVisit( SmNode* pNode )
void SmCaretPos2LineVisitor::Visit( SmTextNode* pNode )
{
    //Save device state
    mpDev->Push( PushFlags::FONT | PushFlags::TEXTCOLOR );
    mpDev->Push( vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR );

    tools::Long i = maPos.nIndex;

@@ -1879,7 +1879,7 @@ SmSelectionDrawingVisitor::SmSelectionDrawingVisitor( OutputDevice& rDevice, SmN
    maSelectionArea.Move( rOffset.X( ), rOffset.Y( ) );

    //Save device state
    mrDev.Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
    mrDev.Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
    //Change colors
    mrDev.SetLineColor( );
    mrDev.SetFillColor( COL_LIGHTGRAY );
@@ -1924,7 +1924,7 @@ void SmSelectionDrawingVisitor::Visit( SmTextNode* pNode )
    if( !pNode->IsSelected())
        return;

    mrDev.Push( PushFlags::TEXTCOLOR | PushFlags::FONT );
    mrDev.Push( vcl::PushFlags::TEXTCOLOR | vcl::PushFlags::FONT );

    mrDev.SetFont( pNode->GetFont( ) );
    Point Position = pNode->GetTopLeft( );
diff --git a/svtools/source/brwbox/brwbox2.cxx b/svtools/source/brwbox/brwbox2.cxx
index cba1048..504af9f 100644
--- a/svtools/source/brwbox/brwbox2.cxx
+++ b/svtools/source/brwbox/brwbox2.cxx
@@ -606,7 +606,7 @@ void BrowseBox::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle
        }
        else
        {
            rRenderContext.Push(PushFlags::FILLCOLOR);
            rRenderContext.Push(vcl::PushFlags::FILLCOLOR);
            rRenderContext.SetFillColor(COL_BLACK);
            rRenderContext.DrawRect(tools::Rectangle(Point(nX, 0), Size(pCol->Width(), GetTitleHeight() - 1)));
            rRenderContext.Pop();
@@ -621,7 +621,7 @@ void BrowseBox::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle
    {
        const StyleSettings &rSettings = rRenderContext.GetSettings().GetStyleSettings();
        Color aColFace(rSettings.GetFaceColor());
        rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);
        rRenderContext.SetFillColor(aColFace);
        rRenderContext.SetLineColor(aColFace);
        rRenderContext.DrawRect(tools::Rectangle(Point(nX, 0),
@@ -724,7 +724,7 @@ void BrowseBox::Draw( OutputDevice* pDev, const Point& rPos, SystemTextColorFlag
                pFirstCol->Title(), !IsEnabled());
            aButtonFrame.Draw( *pDev );

            pDev->Push( PushFlags::LINECOLOR );
            pDev->Push( vcl::PushFlags::LINECOLOR );
            pDev->SetLineColor( COL_BLACK );

            pDev->DrawLine( Point( aRealPos.X(), aRealPos.Y() + nTitleHeight-1 ),
@@ -932,7 +932,7 @@ void BrowseBox::ImplPaintData(OutputDevice& _rOut, const tools::Rectangle& _rRec
        {
            // draw horizontal delimitation lines
            _rOut.SetClipRegion();
            _rOut.Push( PushFlags::LINECOLOR );
            _rOut.Push( vcl::PushFlags::LINECOLOR );
            _rOut.SetLineColor( aDelimiterLineColor );
            tools::Long nY = aPos.Y() + nDataRowHeigt - 1;
            if (nY <= aOverallAreaBRPos.Y())
diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx
index 33218f9..ac00e4a 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -568,7 +568,7 @@ IMPL_LINK_NOARG(FontNameBox, UpdateHdl, Timer*, void)

static void DrawPreview(const FontMetric& rFontMetric, const Point& rTopLeft, OutputDevice& rDevice, bool bSelected)
{
    rDevice.Push(PushFlags::TEXTCOLOR);
    rDevice.Push(vcl::PushFlags::TEXTCOLOR);

    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
    if (bSelected)
@@ -1618,7 +1618,7 @@ void SvtLineListBox::UpdatePreview()
        Image aImage(m_xLineSet->GetItemImage(m_xLineSet->GetSelectedItemId()));
        m_xControl->set_label("");
        const auto nPos = (aVirDev->GetOutputSizePixel().Height() - aImage.GetSizePixel().Height()) / 2;
        aVirDev->Push(PushFlags::MAPMODE);
        aVirDev->Push(vcl::PushFlags::MAPMODE);
        aVirDev->SetMapMode(MapMode(MapUnit::MapPixel));
        aVirDev->Erase();
        aVirDev->DrawImage(Point(0, nPos), aImage);
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx
index 467b6d8..f17d60a 100644
--- a/svtools/source/control/ruler.cxx
+++ b/svtools/source/control/ruler.cxx
@@ -2686,7 +2686,7 @@ void Ruler::DrawTab(vcl::RenderContext& rRenderContext, const Color &rFillColor,
    Point aPos(rPos);
    sal_uInt16 nTabStyle = nStyle & (RULER_TAB_STYLE | RULER_TAB_RTL);

    rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
    rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
    rRenderContext.SetLineColor();
    rRenderContext.SetFillColor(rFillColor);
    ImplCenterTabPos(aPos, nTabStyle);
diff --git a/svtools/source/control/scriptedtext.cxx b/svtools/source/control/scriptedtext.cxx
index 4c7155d..fc7e3e8 100644
--- a/svtools/source/control/scriptedtext.cxx
+++ b/svtools/source/control/scriptedtext.cxx
@@ -105,7 +105,7 @@ void SvtScriptedTextHelper_Impl::CalculateSizes()
{
    maTextSize.setWidth(0);
    maTextSize.setHeight(0);
    mrOutDevice.Push(PushFlags::FONT | PushFlags::TEXTCOLOR);
    mrOutDevice.Push(vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR);

    // calculate text portion widths and total width
    maWidthVec.clear();
@@ -247,7 +247,7 @@ void SvtScriptedTextHelper_Impl::DrawText( const Point& _rPos )
    DBG_ASSERT( maPosVec.size() - 1 == maScriptVec.size(), "SvtScriptedTextHelper_Impl::DrawText - invalid vectors" );
    DBG_ASSERT( maScriptVec.size() == maWidthVec.size(), "SvtScriptedTextHelper_Impl::DrawText - invalid vectors" );

    mrOutDevice.Push(PushFlags::FONT | PushFlags::TEXTCOLOR);
    mrOutDevice.Push(vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR);

    Point aCurrPos( _rPos );
    sal_Int32 nThisPos = maPosVec[ 0 ];
diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx
index 66f1fc6..4e0cc77 100644
--- a/svtools/source/control/tabbar.cxx
+++ b/svtools/source/control/tabbar.cxx
@@ -1114,7 +1114,7 @@ void TabBar::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& r
    const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
    ImplGetColors(rStyleSettings, aFaceColor, aFaceTextColor, aSelectColor, aSelectTextColor);

    rRenderContext.Push(PushFlags::FONT | PushFlags::CLIPREGION);
    rRenderContext.Push(vcl::PushFlags::FONT | vcl::PushFlags::CLIPREGION);
    rRenderContext.SetClipRegion(vcl::Region(GetPageArea()));

    // select font
diff --git a/svtools/source/table/gridtablerenderer.cxx b/svtools/source/table/gridtablerenderer.cxx
index a0bcc2b..f814fc6 100644
--- a/svtools/source/table/gridtablerenderer.cxx
+++ b/svtools/source/table/gridtablerenderer.cxx
@@ -219,7 +219,7 @@ namespace svt::table
    {
        OSL_PRECOND(_bIsColHeaderArea || _bIsRowHeaderArea, "GridTableRenderer::PaintHeaderArea: invalid area flags!");

        rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);

        Color const background = lcl_getEffectiveColor(m_pImpl->rModel.getHeaderBackgroundColor(),
                                                       _rStyle, &StyleSettings::GetDialogColor);
@@ -244,7 +244,7 @@ namespace svt::table
        vcl::RenderContext& rRenderContext,
        const tools::Rectangle& _rArea, const StyleSettings& _rStyle)
    {
        rRenderContext.Push(PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::LINECOLOR);

        OUString sHeaderText;
        PColumnModel const pColumn = m_pImpl->rModel.getColumnModel( _nCol );
@@ -305,7 +305,7 @@ namespace svt::table
        // remember the row for subsequent calls to the other ->ITableRenderer methods
        m_pImpl->nCurrentRow = _nRow;

        rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);

        Color backgroundColor = _rStyle.GetFieldColor();

@@ -363,7 +363,7 @@ namespace svt::table
    void GridTableRenderer::PaintRowHeader(vcl::RenderContext& rRenderContext,
                                           const tools::Rectangle& _rArea, const StyleSettings& _rStyle)
    {
        rRenderContext.Push( PushFlags::LINECOLOR | PushFlags::TEXTCOLOR );
        rRenderContext.Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::TEXTCOLOR );

        std::optional<Color> const aLineColor( m_pImpl->rModel.getLineColor() );
        Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor;
@@ -415,7 +415,7 @@ namespace svt::table
    void GridTableRenderer::PaintCell(ColPos const i_column, bool _bSelected, bool i_hasControlFocus,
                                      vcl::RenderContext& rRenderContext, const tools::Rectangle& _rArea, const StyleSettings& _rStyle)
    {
        rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
        rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);

        tools::Rectangle const aContentArea(lcl_getContentArea(*m_pImpl, _rArea));
        CellRenderContext const aCellRenderContext(rRenderContext, aContentArea, _rStyle, i_column, _bSelected, i_hasControlFocus);
diff --git a/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx b/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
index 6e73791..839c09f 100644
--- a/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
@@ -308,7 +308,7 @@ static void GetTextAreaOutline(
            pVirDev->SetFont( aFont );
            pVirDev->EnableRTL();
            if ( rParagraph.nFrameDirection == SvxFrameDirection::Horizontal_RL_TB )
                pVirDev->SetLayoutMode( ComplexTextLayoutFlags::BiDiRtl );
                pVirDev->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::BiDiRtl );

            const SvxCharScaleWidthItem& rCharScaleWidthItem = rSdrObjCustomShape.GetMergedItem( EE_CHAR_FONTWIDTH );
            sal_uInt16 nCharScaleWidth = rCharScaleWidthItem.GetValue();
diff --git a/svx/source/dialog/_bmpmask.cxx b/svx/source/dialog/_bmpmask.cxx
index 420321d..2be9a7c 100644
--- a/svx/source/dialog/_bmpmask.cxx
+++ b/svx/source/dialog/_bmpmask.cxx
@@ -306,7 +306,7 @@ IMPL_LINK_NOARG(MaskData, ExecHdl, weld::Button&, void)

void BmpColorWindow::Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& /*Rect*/)
{
    rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
    rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
    rRenderContext.SetLineColor(aColor);
    rRenderContext.SetFillColor(aColor);
    rRenderContext.DrawRect(tools::Rectangle(Point(), GetOutputSizePixel()));
diff --git a/svx/source/dialog/connctrl.cxx b/svx/source/dialog/connctrl.cxx
index ec6e64b..826d0e8 100644
--- a/svx/source/dialog/connctrl.cxx
+++ b/svx/source/dialog/connctrl.cxx
@@ -194,7 +194,7 @@ void SvxXConnectionPreview::Construct()

void SvxXConnectionPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);

    rRenderContext.SetMapMode(GetMapMode());

diff --git a/svx/source/dialog/contwnd.cxx b/svx/source/dialog/contwnd.cxx
index eb77959..49ad8b6 100644
--- a/svx/source/dialog/contwnd.cxx
+++ b/svx/source/dialog/contwnd.cxx
@@ -233,7 +233,7 @@ void ContourWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Recta
    OutputDevice& rTarget = pPaintWindow->GetTargetOutputDevice();

    const Graphic& rGraphic = GetGraphic();
    rTarget.Push(PushFlags::LINECOLOR |PushFlags::FILLCOLOR);
    rTarget.Push(vcl::PushFlags::LINECOLOR |vcl::PushFlags::FILLCOLOR);
    rTarget.SetLineColor(COL_BLACK);
    rTarget.SetFillColor(COL_WHITE);
    rTarget.DrawRect( tools::Rectangle( Point(), GetGraphicSize() ) );
@@ -245,7 +245,7 @@ void ContourWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Recta
    if (aWorkRect.Left() != aWorkRect.Right() && aWorkRect.Top() != aWorkRect.Bottom())
    {
        tools::PolyPolygon _aPolyPoly(2);
        rTarget.Push(PushFlags::FILLCOLOR);
        rTarget.Push(vcl::PushFlags::FILLCOLOR);
        _aPolyPoly.Insert(tools::Rectangle(Point(), GetGraphicSize()));
        _aPolyPoly.Insert(aWorkRect);
        rTarget.SetFillColor(COL_LIGHTRED);
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index 5978430..4884d94 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -1238,7 +1238,7 @@ void SvxXShadowPreview::SetShadowPosition(const Point& rPos)

void SvxXShadowPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode(MapMode(MapUnit::Map100thMM));

    LocalPrePaint(rRenderContext);
@@ -1403,7 +1403,7 @@ void SvxXRectPreview::SetAttributes(const SfxItemSet& rItemSet)

void SvxXRectPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode(MapMode(MapUnit::Map100thMM));
    LocalPrePaint(rRenderContext);

diff --git a/svx/source/dialog/fntctrl.cxx b/svx/source/dialog/fntctrl.cxx
index 33d54be..929921a 100644
--- a/svx/source/dialog/fntctrl.cxx
+++ b/svx/source/dialog/fntctrl.cxx
@@ -606,7 +606,7 @@ void SvxFontPrevWindow::SetOverlineColor(const Color &rColor)

void SvxFontPrevWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);
    rRenderContext.SetMapMode(MapMode(MapUnit::MapTwip));

    ApplySettings(rRenderContext);
diff --git a/svx/source/dialog/measctrl.cxx b/svx/source/dialog/measctrl.cxx
index c3fbee9..ac1303d 100644
--- a/svx/source/dialog/measctrl.cxx
+++ b/svx/source/dialog/measctrl.cxx
@@ -51,7 +51,7 @@ void SvxXMeasurePreview::SetDrawingArea(weld::DrawingArea* pDrawingArea)
void SvxXMeasurePreview::ResizeImpl(const Size& rSize)
{
    OutputDevice& rRefDevice = GetDrawingArea()->get_ref_device();
    rRefDevice.Push(PushFlags::MAPMODE);
    rRefDevice.Push(vcl::PushFlags::MAPMODE);

    rRefDevice.SetMapMode(m_aMapMode);

@@ -78,7 +78,7 @@ void SvxXMeasurePreview::Paint(vcl::RenderContext& rRenderContext, const tools::
    rRenderContext.SetBackground(rRenderContext.GetSettings().GetStyleSettings().GetWindowColor());
    rRenderContext.Erase();

    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode(m_aMapMode);

    bool bHighContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
@@ -132,7 +132,7 @@ bool SvxXMeasurePreview::MouseButtonDown(const MouseEvent& rMEvt)
            m_aMapMode.SetScaleY(aYFrac);

            OutputDevice& rRefDevice = GetDrawingArea()->get_ref_device();
            rRefDevice.Push(PushFlags::MAPMODE);
            rRefDevice.Push(vcl::PushFlags::MAPMODE);
            rRefDevice.SetMapMode(m_aMapMode);
            Size aOutSize(rRefDevice.PixelToLogic(GetOutputSizePixel()));
            rRefDevice.Pop();
diff --git a/svx/source/dialog/pagectrl.cxx b/svx/source/dialog/pagectrl.cxx
index cc11713..99e6ecf 100644
--- a/svx/source/dialog/pagectrl.cxx
+++ b/svx/source/dialog/pagectrl.cxx
@@ -67,7 +67,7 @@ SvxPageWindow::~SvxPageWindow()

void SvxPageWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode(MapMode(MapUnit::MapTwip));

    Fraction aXScale(aWinSize.Width(), std::max(aSize.Width() * 2 + aSize.Width() / 8, tools::Long(1)));
@@ -381,7 +381,7 @@ void SvxPageWindow::SetDrawingArea(weld::DrawingArea* pDrawingArea)

    OutputDevice& rRefDevice = pDrawingArea->get_ref_device();
    // Count in Twips by default
    rRefDevice.Push(PushFlags::MAPMODE);
    rRefDevice.Push(vcl::PushFlags::MAPMODE);
    rRefDevice.SetMapMode(MapMode(MapUnit::MapTwip));
    aWinSize = rRefDevice.LogicToPixel(Size(75, 46), MapMode(MapUnit::MapAppFont));
    pDrawingArea->set_size_request(aWinSize.Width(), aWinSize.Height());
diff --git a/svx/source/dialog/paraprev.cxx b/svx/source/dialog/paraprev.cxx
index d582cf7..27dccbf 100644
--- a/svx/source/dialog/paraprev.cxx
+++ b/svx/source/dialog/paraprev.cxx
@@ -52,7 +52,7 @@ void SvxParaPrevWindow::Paint(vcl::RenderContext& rRenderContext, const tools::R
void SvxParaPrevWindow::DrawParagraph(vcl::RenderContext& rRenderContext)
{
    // Count in Twips by default
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);
    rRenderContext.SetMapMode(MapMode(MapUnit::MapTwip));

    Size aWinSize(GetOutputSizePixel());
diff --git a/svx/source/dialog/rubydialog.cxx b/svx/source/dialog/rubydialog.cxx
index f080f03..845ea5b 100644
--- a/svx/source/dialog/rubydialog.cxx
+++ b/svx/source/dialog/rubydialog.cxx
@@ -691,7 +691,7 @@ RubyPreview::~RubyPreview() {}

void RubyPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*rRect*/)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);

    rRenderContext.SetMapMode(MapMode(MapUnit::MapTwip));

diff --git a/svx/source/dialog/weldeditview.cxx b/svx/source/dialog/weldeditview.cxx
index 513de53..730f2f4 100644
--- a/svx/source/dialog/weldeditview.cxx
+++ b/svx/source/dialog/weldeditview.cxx
@@ -171,7 +171,7 @@ void WeldEditView::Paint(vcl::RenderContext& rRenderContext, const tools::Rectan

void WeldEditView::DoPaint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);
    rRenderContext.SetClipRegion();

    std::vector<tools::Rectangle> aLogicRects;
diff --git a/svx/source/form/filtnav.cxx b/svx/source/form/filtnav.cxx
index 3ca906b..a4d7283 100644
--- a/svx/source/form/filtnav.cxx
+++ b/svx/source/form/filtnav.cxx
@@ -930,7 +930,7 @@ IMPL_STATIC_LINK(FmFilterNavigator, CustomGetSizeHdl, weld::TreeView::get_size_a

    if (FmFilterItem* pItem = dynamic_cast<FmFilterItem*>(pData))
    {
        rRenderContext.Push(PushFlags::FONT);
        rRenderContext.Push(vcl::PushFlags::FONT);
        vcl::Font aFont(rRenderContext.GetFont());
        aFont.SetWeight(WEIGHT_BOLD);
        rRenderContext.SetFont(aFont);
@@ -960,7 +960,7 @@ IMPL_STATIC_LINK(FmFilterNavigator, CustomRenderHdl, weld::TreeView::render_args
    bool bSelected = std::get<2>(aPayload);
    const OUString& rId = std::get<3>(aPayload);

    rRenderContext.Push(PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::TEXTCOLOR);
    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
    if (bSelected)
        rRenderContext.SetTextColor(rStyleSettings.GetHighlightTextColor());
@@ -976,7 +976,7 @@ IMPL_STATIC_LINK(FmFilterNavigator, CustomRenderHdl, weld::TreeView::render_args
        vcl::Font aFont(rRenderContext.GetFont());
        aFont.SetWeight(WEIGHT_BOLD);

        rRenderContext.Push(PushFlags::FONT);
        rRenderContext.Push(vcl::PushFlags::FONT);
        rRenderContext.SetFont(aFont);

        OUString sName = pFilter->GetFieldName() + ": ";
@@ -996,7 +996,7 @@ IMPL_STATIC_LINK(FmFilterNavigator, CustomRenderHdl, weld::TreeView::render_args
        const bool bIsCurrentFilter = pForm->GetChildren()[ pForm->GetFilterController()->getActiveTerm() ].get() == pRow;
        if (bIsCurrentFilter)
        {
            rRenderContext.Push(PushFlags::LINECOLOR);
            rRenderContext.Push(vcl::PushFlags::LINECOLOR);
            rRenderContext.SetLineColor(rRenderContext.GetTextColor());

            Point aFirst(aPos.X(), aRect.Bottom() - 6);
diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx
index fca0d7c..e4aefef 100644
--- a/svx/source/sdr/contact/objectcontactofpageview.cxx
+++ b/svx/source/sdr/contact/objectcontactofpageview.cxx
@@ -150,7 +150,7 @@ namespace sdr::contact
            if(!rRedrawArea.IsEmpty() && !comphelper::LibreOfficeKit::isActive())
            {
                bClipRegionPushed = true;
                pOutDev->Push(PushFlags::CLIPREGION);
                pOutDev->Push(vcl::PushFlags::CLIPREGION);
                pOutDev->IntersectClipRegion(rRedrawArea);
            }

@@ -223,7 +223,7 @@ namespace sdr::contact

            // prepare OutputDevice (historical stuff, maybe soon removed)
            rDisplayInfo.ClearGhostedDrawMode(); // reset, else the VCL-paint with the processor will not do the right thing
            pOutDev->SetLayoutMode(ComplexTextLayoutFlags::Default); // reset, default is no BiDi/RTL
            pOutDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::Default); // reset, default is no BiDi/RTL

            // create renderer
            std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(
diff --git a/svx/source/styles/CommonStylePreviewRenderer.cxx b/svx/source/styles/CommonStylePreviewRenderer.cxx
index 8011641..79f8376 100644
--- a/svx/source/styles/CommonStylePreviewRenderer.cxx
+++ b/svx/source/styles/CommonStylePreviewRenderer.cxx
@@ -192,7 +192,7 @@ bool CommonStylePreviewRenderer::render(const tools::Rectangle& aRectangle, Rend
    const OUString& rText = maStyleName;

    // setup the device & draw
    mrOutputDev.Push(PushFlags::FONT | PushFlags::TEXTCOLOR | PushFlags::FILLCOLOR | PushFlags::TEXTFILLCOLOR);
    mrOutputDev.Push(vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR | vcl::PushFlags::FILLCOLOR | vcl::PushFlags::TEXTFILLCOLOR);

    if (maBackgroundColor != COL_AUTO)
    {
diff --git a/svx/source/tbxctrls/StylesPreviewWindow.cxx b/svx/source/tbxctrls/StylesPreviewWindow.cxx
index a90612c..fc31ea9 100644
--- a/svx/source/tbxctrls/StylesPreviewWindow.cxx
+++ b/svx/source/tbxctrls/StylesPreviewWindow.cxx
@@ -110,7 +110,8 @@ StyleItemController::StyleItemController(const std::pair<OUString, OUString>& aS

void StyleItemController::Paint(vcl::RenderContext& rRenderContext)
{
    rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::FONT
                        | vcl::PushFlags::TEXTCOLOR);

    DrawEntry(rRenderContext);

diff --git a/svx/source/tbxctrls/layctrl.cxx b/svx/source/tbxctrls/layctrl.cxx
index dcc567e..3741402 100644
--- a/svx/source/tbxctrls/layctrl.cxx
+++ b/svx/source/tbxctrls/layctrl.cxx
@@ -252,7 +252,7 @@ bool TableWidget::MouseButtonDown(const MouseEvent&)

void TableWidget::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::FONT);
    rRenderContext.Push(vcl::PushFlags::FONT);

    rRenderContext.SetBackground( aBackgroundColor );
    vcl::Font aFont = rRenderContext.GetFont();
@@ -595,7 +595,7 @@ bool ColumnsWidget::MouseButtonUp(const MouseEvent&)

void ColumnsWidget::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::FONT);
    rRenderContext.Push(vcl::PushFlags::FONT);

    rRenderContext.SetBackground();
    vcl::Font aFont( rRenderContext.GetFont() );
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 36fa3ad..a65e328 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1286,7 +1286,7 @@ IMPL_LINK(SvxStyleBox_Base, CustomRenderHdl, weld::ComboBox::render_args, aPaylo

    OUString aStyleName(m_xWidget->get_text(nIndex));

    rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR);

    SetupEntry(rRenderContext, nIndex, rRect, aStyleName, !bSelected);

@@ -1318,7 +1318,7 @@ void SvxStyleBox_Base::CalcOptimalExtraUserWidth(vcl::RenderContext& rRenderCont
    {
        OUString sStyleName(get_text(i));

        rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::FONT | PushFlags::TEXTCOLOR);
        rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR);
        SetupEntry(rRenderContext, i, tools::Rectangle(0, 0, RECT_MAX, ITEM_HEIGHT), sStyleName, true);
        tools::Rectangle aTextRectForActualFont;
        rRenderContext.GetTextBoundRect(aTextRectForActualFont, sStyleName);
diff --git a/svx/source/tbxctrls/tbxcolorupdate.cxx b/svx/source/tbxctrls/tbxcolorupdate.cxx
index cc36596..f9ca173 100644
--- a/svx/source/tbxctrls/tbxcolorupdate.cxx
+++ b/svx/source/tbxctrls/tbxcolorupdate.cxx
@@ -177,7 +177,7 @@ namespace svx
        else
            maUpdRect = tools::Rectangle(Point( maBmpSize.Height() + 2, 2), Point(maBmpSize.Width() - 3, maBmpSize.Height() - 3));

        pVirDev->Push(PushFlags::CLIPREGION);
        pVirDev->Push(vcl::PushFlags::CLIPREGION);

        // tdf#135121 don't include the part of the image which we will
        // overwrite with the target color so that for the transparent color
diff --git a/sw/inc/pch/precompiled_msword.hxx b/sw/inc/pch/precompiled_msword.hxx
index 8b803a5..7f54a5e 100644
--- a/sw/inc/pch/precompiled_msword.hxx
+++ b/sw/inc/pch/precompiled_msword.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:17:12 using:
 Generated on 2021-09-28 05:48:51 using:
 ./bin/update_pch sw msword --cutoff=4 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -45,6 +45,7 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <optional>
#include <ostream>
@@ -138,8 +139,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/ptrstyle.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -150,7 +149,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/settings.hxx>
@@ -178,6 +180,8 @@
#include <basegfx/range/b2drectangle.hxx>
#include <basegfx/range/b2irange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
@@ -206,12 +210,12 @@
#include <com/sun/star/awt/SystemPointer.hpp>
#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/beans/PropertyState.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/XPropertyState.hpp>
#include <com/sun/star/container/XEnumeration.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/datatransfer/XTransferable.hpp>
#include <com/sun/star/document/EventObject.hpp>
@@ -235,27 +239,29 @@
#include <com/sun/star/graphic/XPrimitive2D.hpp>
#include <com/sun/star/i18n/Calendar2.hpp>
#include <com/sun/star/i18n/CollatorOptions.hpp>
#include <com/sun/star/i18n/DirectionProperty.hpp>
#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
#include <com/sun/star/i18n/KCharacterType.hpp>
#include <com/sun/star/i18n/LanguageCountryInfo.hpp>
#include <com/sun/star/i18n/LocaleDataItem2.hpp>
#include <com/sun/star/i18n/LocaleItem.hpp>
#include <com/sun/star/i18n/NativeNumberXmlAttributes.hpp>
#include <com/sun/star/i18n/ParseResult.hpp>
#include <com/sun/star/i18n/ScriptType.hpp>
#include <com/sun/star/i18n/TransliterationModules.hpp>
#include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
#include <com/sun/star/i18n/UnicodeScript.hpp>
#include <com/sun/star/i18n/WordType.hpp>
#include <com/sun/star/i18n/XBreakIterator.hpp>
#include <com/sun/star/i18n/reservedWords.hpp>
#include <com/sun/star/lang/DisposedException.hpp>
#include <com/sun/star/lang/EventObject.hpp>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
#include <com/sun/star/lang/Locale.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/rdf/XDocumentMetadataAccess.hpp>
#include <com/sun/star/style/LineSpacing.hpp>
#include <com/sun/star/style/NumberingType.hpp>
#include <com/sun/star/style/ParagraphAdjust.hpp>
#include <com/sun/star/style/TabAlign.hpp>
@@ -275,7 +281,6 @@
#include <com/sun/star/uno/Type.hxx>
#include <com/sun/star/uno/TypeClass.hdl>
#include <com/sun/star/uno/XAggregation.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/uno/XInterface.hpp>
#include <com/sun/star/uno/XWeak.hpp>
#include <com/sun/star/uno/genfunc.h>
@@ -341,6 +346,7 @@
#include <editeng/opaqitem.hxx>
#include <editeng/outliner.hxx>
#include <editeng/outlobj.hxx>
#include <editeng/overflowingtxt.hxx>
#include <editeng/paragraphdata.hxx>
#include <editeng/paravertalignitem.hxx>
#include <editeng/pgrditem.hxx>
@@ -369,8 +375,7 @@
#include <o3tl/typed_flags_set.hxx>
#include <o3tl/underlyingenumvalue.hxx>
#include <o3tl/unit_conversion.hxx>
#include <ooo/vba/XHelperInterface.hpp>
#include <ooo/vba/word/XParagraphFormat.hpp>
#include <ooo/vba/word/WdSaveFormat.hpp>
#include <oox/dllapi.h>
#include <oox/drawingml/drawingmltypes.hxx>
#include <oox/export/utils.hxx>
@@ -411,12 +416,14 @@
#include <svl/typedwhich.hxx>
#include <svl/undo.hxx>
#include <svl/urihelper.hxx>
#include <svl/whichranges.hxx>
#include <svl/whiter.hxx>
#include <svl/zforlist.hxx>
#include <svtools/colorcfg.hxx>
#include <svtools/optionsdrawinglayer.hxx>
#include <svtools/svtdllapi.h>
#include <svx/DiagramDataInterface.hxx>
#include <svx/XPropertyEntry.hxx>
#include <svx/flagsdef.hxx>
#include <svx/ipolypolygoneditorcontroller.hxx>
#include <svx/itextprovider.hxx>
#include <svx/msdffdef.hxx>
@@ -507,20 +514,18 @@
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/calendarwrapper.hxx>
#include <unotools/configitem.hxx>
#include <unotools/charclass.hxx>
#include <unotools/fltrcfg.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/localedatawrapper.hxx>
#include <unotools/nativenumberwrapper.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/streamwrap.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/transliterationwrapper.hxx>
#include <unotools/ucbstreamhelper.hxx>
#include <unotools/unotoolsdllapi.h>
#include <vbahelper/vbadllapi.h>
#include <vbahelper/vbahelper.hxx>
#include <vbahelper/vbahelperinterface.hxx>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
#include <BorderCacheOwner.hxx>
diff --git a/sw/inc/pch/precompiled_swui.hxx b/sw/inc/pch/precompiled_swui.hxx
index 241ee3e..264c90a 100644
--- a/sw/inc/pch/precompiled_swui.hxx
+++ b/sw/inc/pch/precompiled_swui.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:17:26 using:
 Generated on 2021-09-28 05:49:06 using:
 ./bin/update_pch sw swui --cutoff=3 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -42,6 +42,7 @@
#include <map>
#include <math.h>
#include <memory>
#include <mutex>
#include <new>
#include <numeric>
#include <optional>
@@ -131,7 +132,6 @@
#include <vcl/metaactiontypes.hxx>
#include <vcl/metric.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/print.hxx>
#include <vcl/ptrstyle.hxx>
#include <vcl/region.hxx>
@@ -144,7 +144,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/settings.hxx>
@@ -176,6 +179,8 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/tuple/b3dtuple.hxx>
@@ -194,6 +199,7 @@
#include <com/sun/star/awt/KeyGroup.hpp>
#include <com/sun/star/awt/SystemPointer.hpp>
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/container/XEnumeration.hpp>
@@ -272,9 +278,7 @@
#include <com/sun/star/script/XStarBasicAccess.hpp>
#include <com/sun/star/script/provider/XScriptProviderSupplier.hpp>
#include <com/sun/star/sdbc/XConnection.hpp>
#include <com/sun/star/style/LineSpacing.hpp>
#include <com/sun/star/style/NumberingType.hpp>
#include <com/sun/star/style/ParagraphAdjust.hpp>
#include <com/sun/star/table/BorderLineStyle.hpp>
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/PositionLayoutDir.hpp>
@@ -365,6 +369,7 @@
#include <editeng/numitem.hxx>
#include <editeng/orphitem.hxx>
#include <editeng/outliner.hxx>
#include <editeng/overflowingtxt.hxx>
#include <editeng/paperinf.hxx>
#include <editeng/paragraphdata.hxx>
#include <editeng/paravertalignitem.hxx>
@@ -394,7 +399,7 @@
#include <o3tl/unit_conversion.hxx>
#include <officecfg/Office/Writer.hxx>
#include <ooo/vba/XHelperInterface.hpp>
#include <ooo/vba/word/XParagraphFormat.hpp>
#include <ooo/vba/word/WdSaveFormat.hpp>
#include <ooo/vba/word/XSection.hpp>
#include <salhelper/salhelperdllapi.h>
#include <salhelper/simplereferenceobject.hxx>
@@ -435,6 +440,7 @@
#include <svl/lstner.hxx>
#include <svl/macitem.hxx>
#include <svl/nfkeytab.hxx>
#include <svl/numformat.hxx>
#include <svl/ondemand.hxx>
#include <svl/poolitem.hxx>
#include <svl/stritem.hxx>
@@ -443,6 +449,7 @@
#include <svl/typedwhich.hxx>
#include <svl/undo.hxx>
#include <svl/urihelper.hxx>
#include <svl/whichranges.hxx>
#include <svl/zforlist.hxx>
#include <svl/zformat.hxx>
#include <svtools/borderline.hxx>
@@ -536,6 +543,7 @@
#include <column.hxx>
#include <dbmgr.hxx>
#include <doc.hxx>
#include <docary.hxx>
#include <docsh.hxx>
#include <docstyle.hxx>
#include <docufld.hxx>
@@ -606,6 +614,7 @@
#include <tablemgr.hxx>
#include <tblafmt.hxx>
#include <tblenum.hxx>
#include <textboxhelper.hxx>
#include <tgrditem.hxx>
#include <tox.hxx>
#include <toxe.hxx>
diff --git a/sw/inc/pch/precompiled_vbaswobj.hxx b/sw/inc/pch/precompiled_vbaswobj.hxx
index 14ae9cb..1270444 100644
--- a/sw/inc/pch/precompiled_vbaswobj.hxx
+++ b/sw/inc/pch/precompiled_vbaswobj.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:17:35 using:
 Generated on 2021-09-12 11:53:02 using:
 ./bin/update_pch sw vbaswobj --cutoff=4 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -39,6 +39,7 @@
#include <initializer_list>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits.h>
#include <limits>
#include <list>
@@ -49,6 +50,7 @@
#include <numeric>
#include <optional>
#include <ostream>
#include <set>
#include <stack>
#include <stddef.h>
#include <string.h>
@@ -116,7 +118,6 @@
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdev.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
#include <vcl/rendercontext/AntialiasingFlags.hxx>
@@ -127,7 +128,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/svapp.hxx>
@@ -152,6 +156,8 @@
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/b2irange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
@@ -167,6 +173,7 @@
#include <com/sun/star/awt/Key.hpp>
#include <com/sun/star/awt/KeyGroup.hpp>
#include <com/sun/star/awt/SystemPointer.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/NoSuchElementException.hpp>
#include <com/sun/star/container/XEnumeration.hpp>
@@ -191,9 +198,7 @@
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/security/DocumentSignatureInformation.hpp>
#include <com/sun/star/style/LineSpacing.hpp>
#include <com/sun/star/style/NumberingType.hpp>
#include <com/sun/star/style/ParagraphAdjust.hpp>
#include <com/sun/star/style/XStyle.hpp>
#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
#include <com/sun/star/table/XCellRange.hpp>
@@ -259,6 +264,7 @@
#include <editeng/widwitem.hxx>
#include <i18nlangtag/lang.h>
#include <o3tl/cow_wrapper.hxx>
#include <o3tl/enumarray.hxx>
#include <o3tl/safeint.hxx>
#include <o3tl/sorted_vector.hxx>
#include <o3tl/strong_int.hxx>
@@ -267,7 +273,7 @@
#include <o3tl/unit_conversion.hxx>
#include <ooo/vba/XCollection.hpp>
#include <ooo/vba/XHelperInterface.hpp>
#include <ooo/vba/word/XParagraphFormat.hpp>
#include <ooo/vba/word/WdSaveFormat.hpp>
#include <ooo/vba/word/XSection.hpp>
#include <salhelper/salhelperdllapi.h>
#include <salhelper/simplereferenceobject.hxx>
@@ -293,7 +299,10 @@
#include <svl/svldllapi.h>
#include <svl/typedwhich.hxx>
#include <svl/undo.hxx>
#include <svl/whichranges.hxx>
#include <svx/flagsdef.hxx>
#include <svx/svxdllapi.h>
#include <svx/swframetypes.hxx>
#include <svx/xdef.hxx>
#include <tools/color.hxx>
#include <tools/date.hxx>
@@ -322,6 +331,8 @@
#include <unotools/fontcvt.hxx>
#include <unotools/fontdefs.hxx>
#include <unotools/options.hxx>
#include <unotools/resmgr.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#include <vbahelper/vbadllapi.h>
#include <vbahelper/vbahelper.hxx>
@@ -368,6 +379,7 @@
#include <swundo.hxx>
#include <tblenum.hxx>
#include <tblsel.hxx>
#include <textboxhelper.hxx>
#include <tox.hxx>
#include <toxe.hxx>
#include <undobj.hxx>
diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx
index 4cd8c10..8886ce4 100644
--- a/sw/source/core/doc/notxtfrm.cxx
+++ b/sw/source/core/doc/notxtfrm.cxx
@@ -202,7 +202,7 @@ static void lcl_ClearArea( const SwFrame &rFrame,
    }
    else
    {
        rOut.Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
        rOut.Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
        rOut.SetFillColor( rFrame.getRootFrame()->GetCurrShell()->Imp()->GetRetoucheColor());
        rOut.SetLineColor();
        for( const auto &rRegion : aRegion )
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index 428c567..59e6066 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -458,7 +458,7 @@ namespace
                if ( pViewShell->getPrePostMapMode() == mpOutDev->GetMapMode() )
                    return;

                mpOutDev->Push(PushFlags::MAPMODE);
                mpOutDev->Push(vcl::PushFlags::MAPMODE);

                GDIMetaFile* pMetaFile = mpOutDev->GetConnectMetaFile();
                if ( pMetaFile &&
diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx
index 4a3ce62..f2c8ada 100644
--- a/sw/source/core/inc/txtfrm.hxx
+++ b/sw/source/core/inc/txtfrm.hxx
@@ -930,7 +930,7 @@ public:
class SwLayoutModeModifier
{
    const OutputDevice& m_rOut;
    ComplexTextLayoutFlags m_nOldLayoutMode;
    vcl::text::ComplexTextLayoutFlags m_nOldLayoutMode;
public:
    SwLayoutModeModifier( const OutputDevice& rOutp );
    ~SwLayoutModeModifier();
diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 0605ad1..047a7ec 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -2193,7 +2193,7 @@ void SwLayIdle::ShowIdle( Color eColor )
        tools::Rectangle aRect( 0, 0, 5, 5 );
        aRect = pWin->PixelToLogic( aRect );
        // Depending on if idle layout is in progress or not, draw a "red square" or a "green square".
        pWin->GetOutDev()->Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
        pWin->GetOutDev()->Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
        pWin->GetOutDev()->SetFillColor( eColor );
        pWin->GetOutDev()->SetLineColor();
        pWin->GetOutDev()->DrawRect( aRect );
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index a160515..0c52ba0 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -897,7 +897,7 @@ void SwLineRects::PaintLines( OutputDevice *pOut, SwPaintProperties const &prope
    // #i16816# tagged pdf support
    SwTaggedPDFHelper aTaggedPDFHelper( nullptr, nullptr, nullptr, *pOut );

    pOut->Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
    pOut->Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
    pOut->SetFillColor();
    pOut->SetLineColor();
    ConnectEdges( pOut, properties );
@@ -1071,7 +1071,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut,
    if (m_aLineRects.empty())
        return;

    pOut->Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
    pOut->Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
    pOut->SetLineColor();

    // Reset draw mode in high contrast mode in order to get fill color
@@ -1682,7 +1682,7 @@ static void lcl_DrawGraphic( const SvxBrushItem& rBrush, vcl::RenderContext &rOu
    const bool bNotInside = !rOut.Contains( aAlignedGrfRect );
    if ( bNotInside )
    {
        rOutDev.Push( PushFlags::CLIPREGION );
        rOutDev.Push( vcl::PushFlags::CLIPREGION );
        rOutDev.IntersectClipRegion( rOut.SVRect() );
    }

@@ -1925,7 +1925,7 @@ void DrawGraphic(
            // area, from which the background brush is determined.
            aGrf.Pos() = rOrg.Pos();
            // setup clipping at output device
            rOutDev.Push( PushFlags::CLIPREGION );
            rOutDev.Push( vcl::PushFlags::CLIPREGION );
            rOutDev.IntersectClipRegion( rOut.SVRect() );
            // use new method <GraphicObject::DrawTiled(::)>
            {
@@ -1982,7 +1982,7 @@ void DrawGraphic(
    bool bGrfBackgrdAlreadyDrawn = false;
    if ( bRetouche )
    {
        rOutDev.Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
        rOutDev.Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
        rOutDev.SetLineColor();

        // check, if an existing background graphic (not filling the complete
@@ -4006,7 +4006,7 @@ void SwFlyFrame::PaintSwFrame(vcl::RenderContext& rRenderContext, SwRect const& 
    SwRect aRect( rRect );
    aRect.Intersection_( getFrameArea() );

    rRenderContext.Push( PushFlags::CLIPREGION );
    rRenderContext.Push( vcl::PushFlags::CLIPREGION );
    rRenderContext.SetClipRegion();
    const SwPageFrame* pPage = FindPageFrame();

@@ -4109,7 +4109,7 @@ void SwFlyFrame::PaintSwFrame(vcl::RenderContext& rRenderContext, SwRect const& 
            //receives the original Rect but PaintSwFrameBackground only the limited
            //one.

            rRenderContext.Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
            rRenderContext.Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
            rRenderContext.SetLineColor();

            pPage = FindPageFrame();
@@ -6235,7 +6235,7 @@ void SwFrame::PaintBaBo( const SwRect& rRect, const SwPageFrame *pPage,
    // #i16816# tagged pdf support
    SwTaggedPDFHelper aTaggedPDFHelper( nullptr, nullptr, nullptr, *pOut );

    pOut->Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
    pOut->Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
    pOut->SetLineColor();

    SwBorderAttrAccess aAccess( SwFrame::GetCache(), this );
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 0cbc218..ca02c98 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -1547,7 +1547,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()

    // Prepare the output device:

    mrOut.Push( PushFlags::MAPMODE );
    mrOut.Push( vcl::PushFlags::MAPMODE );
    MapMode aMapMode( mrOut.GetMapMode() );
    aMapMode.SetMapUnit( MapUnit::MapTwip );
    mrOut.SetMapMode( aMapMode );
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 82f0655..26e7246 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -280,14 +280,14 @@ void SwTextSizeInfo::CtorInitTextSizeInfo( OutputDevice* pRenderContext, SwTextF
    // Set default layout mode ( LTR or RTL ).
    if ( m_pFrame->IsRightToLeft() )
    {
        m_pOut->SetLayoutMode( ComplexTextLayoutFlags::BiDiStrong | ComplexTextLayoutFlags::BiDiRtl );
        m_pRef->SetLayoutMode( ComplexTextLayoutFlags::BiDiStrong | ComplexTextLayoutFlags::BiDiRtl );
        m_pOut->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::BiDiStrong | vcl::text::ComplexTextLayoutFlags::BiDiRtl );
        m_pRef->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::BiDiStrong | vcl::text::ComplexTextLayoutFlags::BiDiRtl );
        m_nDirection = DIR_RIGHT2LEFT;
    }
    else
    {
        m_pOut->SetLayoutMode( ComplexTextLayoutFlags::BiDiStrong );
        m_pRef->SetLayoutMode( ComplexTextLayoutFlags::BiDiStrong );
        m_pOut->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::BiDiStrong );
        m_pRef->SetLayoutMode( vcl::text::ComplexTextLayoutFlags::BiDiStrong );
        m_nDirection = DIR_LEFT2RIGHT;
    }

@@ -1071,7 +1071,7 @@ void SwTextPaintInfo::DrawCheckBox(const SwFieldFormCheckboxPortion &rPor, bool 
            !GetOpt().IsPagePreview())
    {
        OutputDevice* pOut = const_cast<OutputDevice*>(GetOut());
        pOut->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
        pOut->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
        pOut->SetFillColor( SwViewOption::GetFieldShadingsColor() );
        pOut->SetLineColor();
        pOut->DrawRect( aIntersect.SVRect() );
@@ -1079,7 +1079,7 @@ void SwTextPaintInfo::DrawCheckBox(const SwFieldFormCheckboxPortion &rPor, bool 
    }
    const int delta=10;
    tools::Rectangle r(aIntersect.Left()+delta, aIntersect.Top()+delta, aIntersect.Right()-delta, aIntersect.Bottom()-delta);
    m_pOut->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
    m_pOut->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
    m_pOut->SetLineColor( Color(0, 0, 0));
    m_pOut->SetFillColor();
    m_pOut->DrawRect( r );
@@ -1102,7 +1102,7 @@ void SwTextPaintInfo::DrawBackground( const SwLinePortion &rPor, const Color *pC
        return;

    OutputDevice* pOut = const_cast<OutputDevice*>(GetOut());
    pOut->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
    pOut->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );

    if ( pColor )
        pOut->SetFillColor( *pColor );
@@ -1137,7 +1137,7 @@ void SwTextPaintInfo::DrawBackBrush( const SwLinePortion &rPor ) const
                    !GetOpt().IsPagePreview())
            {
                OutputDevice* pOutDev = const_cast<OutputDevice*>(GetOut());
                pOutDev->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
                pOutDev->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
                pOutDev->SetFillColor( SwViewOption::GetFieldShadingsColor() );
                pOutDev->SetLineColor( );
                pOutDev->DrawRect( aIntersect.SVRect() );
@@ -1252,7 +1252,7 @@ void SwTextPaintInfo::DrawBackBrush( const SwLinePortion &rPor ) const
        }
    }

    pTmpOut->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
    pTmpOut->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );

    pTmpOut->SetFillColor(aFillColor);
    pTmpOut->SetLineColor();
diff --git a/sw/source/core/text/itradj.cxx b/sw/source/core/text/itradj.cxx
index 8e7514c..8c96cf5 100644
--- a/sw/source/core/text/itradj.cxx
+++ b/sw/source/core/text/itradj.cxx
@@ -164,8 +164,8 @@ static bool lcl_CheckKashidaPositions( SwScriptInfo& rSI, SwTextSizeInfo& rInf, 
            }
            else
            {
                ComplexTextLayoutFlags nOldLayout = rInf.GetOut()->GetLayoutMode();
                rInf.GetOut()->SetLayoutMode ( nOldLayout | ComplexTextLayoutFlags::BiDiRtl );
                vcl::text::ComplexTextLayoutFlags nOldLayout = rInf.GetOut()->GetLayoutMode();
                rInf.GetOut()->SetLayoutMode ( nOldLayout | vcl::text::ComplexTextLayoutFlags::BiDiRtl );
                nKashidasDropped = rInf.GetOut()->ValidateKashidas(
                    rInf.GetText(), sal_Int32(nIdx), sal_Int32(nNext - nIdx),
                    nKashidasInAttr,
diff --git a/sw/source/core/text/porlin.cxx b/sw/source/core/text/porlin.cxx
index 09283b4..d7268fd 100644
--- a/sw/source/core/text/porlin.cxx
+++ b/sw/source/core/text/porlin.cxx
@@ -94,7 +94,7 @@ void SwLinePortion::PrePaint( const SwTextPaintInfo& rInf,
    SwTextPaintInfo aInf( rInf );

    const bool bBidiPor = rInf.GetTextFrame()->IsRightToLeft() !=
                          bool( ComplexTextLayoutFlags::BiDiRtl & rInf.GetOut()->GetLayoutMode() );
                          bool( vcl::text::ComplexTextLayoutFlags::BiDiRtl & rInf.GetOut()->GetLayoutMode() );

    Degree10 nDir = bBidiPor ?
                  1800_deg10 :
diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx
index 7992c1a..7def7bad 100644
--- a/sw/source/core/text/portxt.cxx
+++ b/sw/source/core/text/portxt.cxx
@@ -703,7 +703,7 @@ void SwTextInputFieldPortion::Paint( const SwTextPaintInfo &rInf ) const
            && !rInf.GetOpt().IsPagePreview())
        {
            OutputDevice* pOut = const_cast<OutputDevice*>(rInf.GetOut());
            pOut->Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
            pOut->Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
            pOut->SetFillColor(SwViewOption::GetFieldShadingsColor());
            pOut->SetLineColor();
            pOut->DrawRect(aIntersect.SVRect());
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 66f3215..35f94b20 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -713,13 +713,13 @@ SwLayoutModeModifier::~SwLayoutModeModifier()
void SwLayoutModeModifier::Modify( bool bChgToRTL )
{
    const_cast<OutputDevice&>(m_rOut).SetLayoutMode( bChgToRTL ?
                                         ComplexTextLayoutFlags::BiDiStrong | ComplexTextLayoutFlags::BiDiRtl :
                                         ComplexTextLayoutFlags::BiDiStrong );
                                         vcl::text::ComplexTextLayoutFlags::BiDiStrong | vcl::text::ComplexTextLayoutFlags::BiDiRtl :
                                         vcl::text::ComplexTextLayoutFlags::BiDiStrong );
}

void SwLayoutModeModifier::SetAuto()
{
    const ComplexTextLayoutFlags nNewLayoutMode = m_nOldLayoutMode & ~ComplexTextLayoutFlags::BiDiStrong;
    const vcl::text::ComplexTextLayoutFlags nNewLayoutMode = m_nOldLayoutMode & ~vcl::text::ComplexTextLayoutFlags::BiDiStrong;
    const_cast<OutputDevice&>(m_rOut).SetLayoutMode( nNewLayoutMode );
}

diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index 37d83ce..9045350 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -967,9 +967,9 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
    const bool bSwitchH2VLRBT = rInf.GetFrame() && rInf.GetFrame()->IsVertLRBT();
    const bool bSwitchL2R = rInf.GetFrame() && rInf.GetFrame()->IsRightToLeft() &&
                            ! rInf.IsIgnoreFrameRTL();
    const ComplexTextLayoutFlags nMode = rInf.GetOut().GetLayoutMode();
    const vcl::text::ComplexTextLayoutFlags nMode = rInf.GetOut().GetLayoutMode();
    const bool bBidiPor = ( bSwitchL2R !=
                            ( ComplexTextLayoutFlags::Default != ( ComplexTextLayoutFlags::BiDiRtl & nMode ) ) );
                            ( vcl::text::ComplexTextLayoutFlags::Default != ( vcl::text::ComplexTextLayoutFlags::BiDiRtl & nMode ) ) );

    // be sure to have the correct layout mode at the printer
    if ( m_pPrinter )
@@ -1422,7 +1422,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                                        sal_Int32(rInf.GetIdx()) + j, i - j);
                        j = i + 1;
                        SwTwips nAdd = aKernArray[ i ] + nKernSum;
                        if ( ( ComplexTextLayoutFlags::BiDiStrong | ComplexTextLayoutFlags::BiDiRtl ) == nMode )
                        if ( ( vcl::text::ComplexTextLayoutFlags::BiDiStrong | vcl::text::ComplexTextLayoutFlags::BiDiRtl ) == nMode )
                            nAdd *= -1;
                        aTmpPos.setX( aTextOriginPos.X() + nAdd );
                    }
diff --git a/sw/source/core/txtnode/fntcap.cxx b/sw/source/core/txtnode/fntcap.cxx
index 16b0541..47d9175 100644
--- a/sw/source/core/txtnode/fntcap.cxx
+++ b/sw/source/core/txtnode/fntcap.cxx
@@ -300,9 +300,9 @@ void SwDoDrawCapital::DrawSpace( Point &rPos )
    if ( bSwitchL2R )
       m_rInf.GetFrame()->SwitchLTRtoRTL( aPos );

    const ComplexTextLayoutFlags nMode = m_rInf.GetpOut()->GetLayoutMode();
    const vcl::text::ComplexTextLayoutFlags nMode = m_rInf.GetpOut()->GetLayoutMode();
    const bool bBidiPor = ( bSwitchL2R !=
                            ( ComplexTextLayoutFlags::Default != ( ComplexTextLayoutFlags::BiDiRtl & nMode ) ) );
                            ( vcl::text::ComplexTextLayoutFlags::Default != ( vcl::text::ComplexTextLayoutFlags::BiDiRtl & nMode ) ) );

    if ( bBidiPor )
        nDiff = -nDiff;
diff --git a/sw/source/core/txtnode/swfont.cxx b/sw/source/core/txtnode/swfont.cxx
index 620c0d6..b1451a7 100644
--- a/sw/source/core/txtnode/swfont.cxx
+++ b/sw/source/core/txtnode/swfont.cxx
@@ -1444,7 +1444,7 @@ void SwDrawTextInfo::Shift( Degree10 nDir )
#endif

    const bool bBidiPor = ( GetFrame() && GetFrame()->IsRightToLeft() ) !=
                          ( ComplexTextLayoutFlags::Default != ( ComplexTextLayoutFlags::BiDiRtl & GetpOut()->GetLayoutMode() ) );
                          ( vcl::text::ComplexTextLayoutFlags::Default != ( vcl::text::ComplexTextLayoutFlags::BiDiRtl & GetpOut()->GetLayoutMode() ) );

    bool bVert = false;
    bool bVertLRBT = false;
diff --git a/sw/source/core/view/vdraw.cxx b/sw/source/core/view/vdraw.cxx
index 37b6d67..194918c 100644
--- a/sw/source/core/view/vdraw.cxx
+++ b/sw/source/core/view/vdraw.cxx
@@ -137,7 +137,7 @@ void SwViewShellImp::PaintLayer( const SdrLayerID _nLayerID,
        GetDrawView()->GetModel()->GetDrawOutliner().SetDefaultHorizontalTextDirection( aEEHoriTextDirOfPage );
    }

    pOutDev->Push( PushFlags::LINECOLOR );
    pOutDev->Push( vcl::PushFlags::LINECOLOR );
    if (pPrintData)
    {
        // hide drawings but not form controls (form controls are handled elsewhere)
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 4d510e1..dfddb9d 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -1560,7 +1560,7 @@ void SwViewShell::PaintDesktop(vcl::RenderContext& rRenderContext, const SwRect 
void SwViewShell::PaintDesktop_(const SwRegionRects &rRegion)
{
    // OD 2004-04-23 #116347#
    GetOut()->Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
    GetOut()->Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
    GetOut()->SetLineColor();

    for ( auto &rRgn : rRegion )
@@ -1875,7 +1875,7 @@ void SwViewShell::Paint(vcl::RenderContext& rRenderContext, const tools::Rectang
            const vcl::Region aDLRegion(rRect);
            DLPrePaint2(aDLRegion);

            rRenderContext.Push( PushFlags::FILLCOLOR|PushFlags::LINECOLOR );
            rRenderContext.Push( vcl::PushFlags::FILLCOLOR|vcl::PushFlags::LINECOLOR );
            rRenderContext.SetFillColor( Imp()->GetRetoucheColor() );
            rRenderContext.SetLineColor();
            rRenderContext.DrawRect( rRect );
diff --git a/sw/source/core/view/vprint.cxx b/sw/source/core/view/vprint.cxx
index 9319288..066c051 100644
--- a/sw/source/core/view/vprint.cxx
+++ b/sw/source/core/view/vprint.cxx
@@ -600,7 +600,7 @@ void SwViewShell::PrtOle2( SwDoc *pDoc, const SwViewOption *pOpt, const SwPrintD
        // document because the thumbnail creation will not trigger a complete
        // formatting of the document.

        rRenderContext.Push( PushFlags::CLIPREGION );
        rRenderContext.Push( vcl::PushFlags::CLIPREGION );
        rRenderContext.IntersectClipRegion( aSwRect.SVRect() );
        pSh->GetLayout()->PaintSwFrame( rRenderContext, aSwRect );

diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index 64c2a2a..efea3b8 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -2390,7 +2390,7 @@ awt::Size SwWW8ImplReader::MiserableDropDownFormHack(const OUString &rString,
    OSL_ENSURE(pOut, "Impossible");
    if (pOut)
    {
        pOut->Push( PushFlags::FONT | PushFlags::MAPMODE );
        pOut->Push( vcl::PushFlags::FONT | vcl::PushFlags::MAPMODE );
        pOut->SetMapMode( MapMode( MapUnit::Map100thMM ));
        pOut->SetFont( aFont );
        aRet.Width  = pOut->GetTextWidth(rString);
diff --git a/sw/source/ui/chrdlg/drpcps.cxx b/sw/source/ui/chrdlg/drpcps.cxx
index 4a251c8..13993d1 100644
--- a/sw/source/ui/chrdlg/drpcps.cxx
+++ b/sw/source/ui/chrdlg/drpcps.cxx
@@ -116,7 +116,7 @@ static void calcFontHeightAnyAscent(vcl::RenderContext& rWin, vcl::Font const & 
{
    if ( !_nHeight )
    {
        rWin.Push(PushFlags::FONT);
        rWin.Push(vcl::PushFlags::FONT);
        rWin.SetFont(_rFont);
        FontMetric aMetric(rWin.GetFontMetric());
        _nHeight = aMetric.GetLineHeight();
diff --git a/sw/source/ui/table/autoformatpreview.cxx b/sw/source/ui/table/autoformatpreview.cxx
index 907e02f..df18f3d 100644
--- a/sw/source/ui/table/autoformatpreview.cxx
+++ b/sw/source/ui/table/autoformatpreview.cxx
@@ -321,7 +321,7 @@ void AutoFormatPreview::DrawBackground(vcl::RenderContext& rRenderContext)
            SvxBrushItem aBrushItem(
                maCurrentData.GetBoxFormat(GetFormatIndex(nCol, nRow)).GetBackground());

            rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
            rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
            rRenderContext.SetLineColor();
            rRenderContext.SetFillColor(aBrushItem.GetColor());
            const basegfx::B2DRange aCellRange(maArray.GetCellRange(nCol, nRow, true));
@@ -428,7 +428,7 @@ void AutoFormatPreview::NotifyChange(const SwTableAutoFormat& rNewData)

void AutoFormatPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
    rRenderContext.Push(PushFlags::ALL);
    rRenderContext.Push(vcl::PushFlags::ALL);

    DrawModeFlags nOldDrawMode = rRenderContext.GetDrawMode();
    if (rRenderContext.GetSettings().GetStyleSettings().GetHighContrastMode())
diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx b/sw/source/uibase/docvw/AnnotationWin2.cxx
index a736bd0..64ea2a7 100644
--- a/sw/source/uibase/docvw/AnnotationWin2.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin2.cxx
@@ -132,9 +132,9 @@ void SwAnnotationWin::PaintTile(vcl::RenderContext& rRenderContext, const tools:
    if (mpTextRangeOverlay)
        pProcessor->process(mpTextRangeOverlay->getOverlayObjectPrimitive2DSequence());

    rRenderContext.Push(PushFlags::NONE);
    rRenderContext.Push(vcl::PushFlags::NONE);
    pProcessor.reset();
    rRenderContext.Push(PushFlags::NONE);
    rRenderContext.Push(vcl::PushFlags::NONE);

    if (bMenuButtonVisible)
        mxMenuButton->show();
@@ -173,7 +173,7 @@ void SwAnnotationWin::DrawForPage(OutputDevice* pDev, const Point& rPt)
        Point aPos(rPt + PixelToLogic(Point(x, y)));
        Size aSize(PixelToLogic(Size(width, height)));

        pDev->Push(PushFlags::CLIPREGION);
        pDev->Push(vcl::PushFlags::CLIPREGION);
        pDev->IntersectClipRegion(tools::Rectangle(aPos, aSize));
        pDev->DrawText(aPos, mxMetadataAuthor->get_label());
        pDev->Pop();
@@ -188,7 +188,7 @@ void SwAnnotationWin::DrawForPage(OutputDevice* pDev, const Point& rPt)
        Point aPos(rPt + PixelToLogic(Point(x, y)));
        Size aSize(PixelToLogic(Size(width, height)));

        pDev->Push(PushFlags::CLIPREGION);
        pDev->Push(vcl::PushFlags::CLIPREGION);
        pDev->IntersectClipRegion(tools::Rectangle(aPos, aSize));
        pDev->DrawText(aPos, mxMetadataDate->get_label());
        pDev->Pop();
@@ -201,7 +201,7 @@ void SwAnnotationWin::DrawForPage(OutputDevice* pDev, const Point& rPt)
        Point aPos(rPt + PixelToLogic(Point(x, y)));
        Size aSize(PixelToLogic(Size(width, height)));

        pDev->Push(PushFlags::CLIPREGION);
        pDev->Push(vcl::PushFlags::CLIPREGION);
        pDev->IntersectClipRegion(tools::Rectangle(aPos, aSize));
        pDev->DrawText(aPos, mxMetadataResolved->get_label());
        pDev->Pop();
diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx
index 85e9fd9..3dd0944 100644
--- a/sw/source/uibase/docvw/PostItMgr.cxx
+++ b/sw/source/uibase/docvw/PostItMgr.cxx
@@ -974,7 +974,7 @@ void SwPostItMgr::PaintTile(OutputDevice& rRenderContext)

        bool bEnableMapMode = !mpEditWin->IsMapModeEnabled();
        mpEditWin->EnableMapMode();
        rRenderContext.Push(PushFlags::MAPMODE);
        rRenderContext.Push(vcl::PushFlags::MAPMODE);
        Point aOffset(mpEditWin->PixelToLogic(pPostIt->GetPosPixel()));
        MapMode aMapMode(rRenderContext.GetMapMode());
        aMapMode.SetOrigin(aMapMode.GetOrigin() + aOffset);
diff --git a/sw/source/uibase/docvw/SidebarTxtControl.cxx b/sw/source/uibase/docvw/SidebarTxtControl.cxx
index ba544b7..f520501 100644
--- a/sw/source/uibase/docvw/SidebarTxtControl.cxx
+++ b/sw/source/uibase/docvw/SidebarTxtControl.cxx
@@ -212,7 +212,7 @@ void SidebarTextControl::DrawForPage(OutputDevice* pDev, const Point& rPt)
    if ( mrSidebarWin.GetLayoutStatus()!=SwPostItHelper::DELETED )
        return;

    pDev->Push(PushFlags::LINECOLOR);
    pDev->Push(vcl::PushFlags::LINECOLOR);

    pDev->SetLineColor(mrSidebarWin.GetChangeColor());
    Point aBottomRight(rPt);
diff --git a/sw/source/uibase/frmdlg/colex.cxx b/sw/source/uibase/frmdlg/colex.cxx
index 9ecfb79..f648842 100644
--- a/sw/source/uibase/frmdlg/colex.cxx
+++ b/sw/source/uibase/frmdlg/colex.cxx
@@ -330,7 +330,7 @@ SwColumnOnlyExample::SwColumnOnlyExample()

void SwColumnOnlyExample::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& /*rRect*/)
{
    rRenderContext.Push(PushFlags::MAPMODE);
    rRenderContext.Push(vcl::PushFlags::MAPMODE);

    Fraction aScale(m_aWinSize.Height(), m_aFrameSize.Height());
    MapMode aMapMode(MapUnit::MapTwip);
@@ -481,7 +481,7 @@ void SwColumnOnlyExample::SetDrawingArea(weld::DrawingArea* pDrawingArea)
void SwColumnOnlyExample::Resize()
{
    OutputDevice& rRefDevice = GetDrawingArea()->get_ref_device();
    rRefDevice.Push(PushFlags::MAPMODE);
    rRefDevice.Push(vcl::PushFlags::MAPMODE);
    rRefDevice.SetMapMode(MapMode(MapUnit::MapTwip));
    m_aWinSize = GetOutputSizePixel();
    m_aWinSize.AdjustHeight( -4 );
diff --git a/sw/source/uibase/utlui/unotools.cxx b/sw/source/uibase/utlui/unotools.cxx
index a006690..1d17a27 100644
--- a/sw/source/uibase/utlui/unotools.cxx
+++ b/sw/source/uibase/utlui/unotools.cxx
@@ -161,7 +161,7 @@ void SwOneExampleFrame::Paint(vcl::RenderContext& rRenderContext, const tools::R

        double fZoom = 100.0 / nZoom;

        m_xVirDev->Push(PushFlags::ALL);
        m_xVirDev->Push(vcl::PushFlags::ALL);
        m_xVirDev->SetMapMode(MapMode(MapUnit::MapTwip));
        SwDoc *pDoc = pCursor->GetDoc();
        SwDocShell* pShell = pDoc->GetDocShell();
diff --git a/vbahelper/inc/pch/precompiled_msforms.hxx b/vbahelper/inc/pch/precompiled_msforms.hxx
index 287244a..b65f96f 100644
--- a/vbahelper/inc/pch/precompiled_msforms.hxx
+++ b/vbahelper/inc/pch/precompiled_msforms.hxx
@@ -13,7 +13,7 @@
 manual changes will be rewritten by the next run of update_pch.sh (which presumably
 also fixes all possible problems, so it's usually better to use it).

 Generated on 2021-05-14 22:18:02 using:
 Generated on 2021-09-12 11:53:04 using:
 ./bin/update_pch vbahelper msforms --cutoff=3 --exclude:system --include:module --include:local

 If after updating build fails, use the following command to locate conflicting headers:
@@ -86,7 +86,6 @@
#include <vcl/gradient.hxx>
#include <vcl/mapmod.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/ptrstyle.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
@@ -98,7 +97,10 @@
#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
#include <vcl/rendercontext/ImplMapRes.hxx>
#include <vcl/rendercontext/InvertFlags.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/rendercontext/SalLayoutFlags.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/rendercontext/SystemTextColorFlags.hxx>
#include <vcl/salnativewidgets.hxx>
#include <vcl/scopedbitmapaccess.hxx>
#include <vcl/vclenum.hxx>
@@ -116,6 +118,8 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/range/basicrange.hxx>
#include <basegfx/tuple/Tuple2D.hxx>
#include <basegfx/tuple/Tuple3D.hxx>
#include <basegfx/tuple/b2dtuple.hxx>
#include <basegfx/tuple/b2ituple.hxx>
#include <basegfx/tuple/b3dtuple.hxx>
@@ -176,6 +180,7 @@
#include <uno/data.h>
#include <uno/sequence2.h>
#include <unotools/fontdefs.hxx>
#include <unotools/syslocale.hxx>
#include <unotools/unotoolsdllapi.h>
#endif // PCH_LEVEL >= 3
#if PCH_LEVEL >= 4
diff --git a/vcl/backendtest/VisualBackendTest.cxx b/vcl/backendtest/VisualBackendTest.cxx
index 5426bf2..120b420 100644
--- a/vcl/backendtest/VisualBackendTest.cxx
+++ b/vcl/backendtest/VisualBackendTest.cxx
@@ -67,7 +67,7 @@ static void drawBitmapScaledAndCentered(tools::Rectangle const & rRect, Bitmap a

static void drawBackgroundRect(tools::Rectangle const & rRect, Color aColor, vcl::RenderContext& rRenderContext)
{
    rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
    rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
    rRenderContext.SetFillColor(aColor);
    rRenderContext.SetLineColor(aColor);
    rRenderContext.DrawRect(rRect);
diff --git a/vcl/inc/pdf/pdfwriter_impl.hxx b/vcl/inc/pdf/pdfwriter_impl.hxx
index 3cef119..21c2b79 100644
--- a/vcl/inc/pdf/pdfwriter_impl.hxx
+++ b/vcl/inc/pdf/pdfwriter_impl.hxx
@@ -603,7 +603,7 @@ struct GraphicsState
    Color                            m_aOverlineColor;
    basegfx::B2DPolyPolygon          m_aClipRegion;
    bool                             m_bClipRegion;
    ComplexTextLayoutFlags            m_nLayoutMode;
    vcl::text::ComplexTextLayoutFlags m_nLayoutMode;
    LanguageType                     m_aDigitLanguage;
    PushFlags                        m_nFlags;
    GraphicsStateUpdateFlags         m_nUpdateFlags;
@@ -614,7 +614,7 @@ struct GraphicsState
            m_aTextLineColor( COL_TRANSPARENT ),
            m_aOverlineColor( COL_TRANSPARENT ),
            m_bClipRegion( false ),
            m_nLayoutMode( ComplexTextLayoutFlags::Default ),
            m_nLayoutMode( vcl::text::ComplexTextLayoutFlags::Default ),
            m_aDigitLanguage( 0 ),
            m_nFlags( PushFlags::ALL ),
            m_nUpdateFlags( GraphicsStateUpdateFlags::All )
@@ -1156,7 +1156,7 @@ public:

    void intersectClipRegion( const basegfx::B2DPolyPolygon& rRegion );

    void setLayoutMode( ComplexTextLayoutFlags nLayoutMode )
    void setLayoutMode( vcl::text::ComplexTextLayoutFlags nLayoutMode )
    {
        m_aGraphicsStack.front().m_nLayoutMode = nLayoutMode;
        m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::LayoutMode;
diff --git a/vcl/qa/cppunit/outdev.cxx b/vcl/qa/cppunit/outdev.cxx
index fd9f593..5bcac7c 100644
--- a/vcl/qa/cppunit/outdev.cxx
+++ b/vcl/qa/cppunit/outdev.cxx
@@ -250,7 +250,8 @@ void VclOutdevTest::testDrawBlackBitmap()
    MetaAction* pAction = aMtf.GetAction(0);
    CPPUNIT_ASSERT_EQUAL(MetaActionType::PUSH, pAction->GetType());
    auto pPushAction = static_cast<MetaPushAction*>(pAction);
    bool bLineFillFlag = ((PushFlags::LINECOLOR | PushFlags::FILLCOLOR) == pPushAction->GetFlags());
    bool bLineFillFlag
        = ((vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR) == pPushAction->GetFlags());
    CPPUNIT_ASSERT_MESSAGE("Push flags not LINECOLOR | FILLCOLOR", bLineFillFlag);

    pAction = aMtf.GetAction(1);
@@ -293,7 +294,8 @@ void VclOutdevTest::testDrawWhiteBitmap()
    MetaAction* pAction = aMtf.GetAction(0);
    CPPUNIT_ASSERT_EQUAL(MetaActionType::PUSH, pAction->GetType());
    auto pPushAction = static_cast<MetaPushAction*>(pAction);
    bool bLineFillFlag = ((PushFlags::LINECOLOR | PushFlags::FILLCOLOR) == pPushAction->GetFlags());
    bool bLineFillFlag
        = ((vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR) == pPushAction->GetFlags());
    CPPUNIT_ASSERT_MESSAGE("Push flags not LINECOLOR | FILLCOLOR", bLineFillFlag);

    pAction = aMtf.GetAction(1);
@@ -840,16 +842,17 @@ void VclOutdevTest::testLayoutMode()
    GDIMetaFile aMtf;
    aMtf.Record(pVDev.get());

    CPPUNIT_ASSERT_EQUAL(ComplexTextLayoutFlags::Default, pVDev->GetLayoutMode());
    CPPUNIT_ASSERT_EQUAL(vcl::text::ComplexTextLayoutFlags::Default, pVDev->GetLayoutMode());

    pVDev->SetLayoutMode(ComplexTextLayoutFlags::BiDiRtl);
    pVDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::BiDiRtl);

    CPPUNIT_ASSERT_EQUAL(ComplexTextLayoutFlags::BiDiRtl, pVDev->GetLayoutMode());
    CPPUNIT_ASSERT_EQUAL(vcl::text::ComplexTextLayoutFlags::BiDiRtl, pVDev->GetLayoutMode());

    MetaAction* pAction = aMtf.GetAction(0);
    CPPUNIT_ASSERT_EQUAL(MetaActionType::LAYOUTMODE, pAction->GetType());
    auto pLayoutModeAction = static_cast<MetaLayoutModeAction*>(pAction);
    CPPUNIT_ASSERT_EQUAL(ComplexTextLayoutFlags::BiDiRtl, pLayoutModeAction->GetLayoutMode());
    CPPUNIT_ASSERT_EQUAL(vcl::text::ComplexTextLayoutFlags::BiDiRtl,
                         pLayoutModeAction->GetLayoutMode());
}

void VclOutdevTest::testDigitLanguage()
@@ -888,7 +891,7 @@ void VclOutdevTest::testStackFunctions()
    pVDev->SetTextLineColor(COL_MAGENTA);
    pVDev->SetOverlineColor(COL_YELLOW);
    pVDev->SetTextAlign(TextAlign::ALIGN_TOP);
    pVDev->SetLayoutMode(ComplexTextLayoutFlags::BiDiRtl);
    pVDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::BiDiRtl);
    pVDev->SetDigitLanguage(LANGUAGE_FRENCH);
    pVDev->SetRasterOp(RasterOp::N0);
    pVDev->SetMapMode(MapMode(MapUnit::MapTwip));
@@ -898,7 +901,7 @@ void VclOutdevTest::testStackFunctions()
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Text fill color", COL_BLUE, pVDev->GetTextFillColor());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Text line color", COL_MAGENTA, pVDev->GetTextLineColor());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Text overline color", COL_YELLOW, pVDev->GetOverlineColor());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Layout mode", ComplexTextLayoutFlags::BiDiRtl,
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Layout mode", vcl::text::ComplexTextLayoutFlags::BiDiRtl,
                                 pVDev->GetLayoutMode());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Language", LANGUAGE_FRENCH, pVDev->GetDigitLanguage());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Raster operation", RasterOp::N0, pVDev->GetRasterOp());
@@ -918,7 +921,7 @@ void VclOutdevTest::testStackFunctions()
                                 pVDev->GetTextLineColor());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Default overline color", Color(ColorTransparency, 0xFFFFFFFF),
                                 pVDev->GetOverlineColor());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Default layout mode", ComplexTextLayoutFlags::Default,
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Default layout mode", vcl::text::ComplexTextLayoutFlags::Default,
                                 pVDev->GetLayoutMode());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Default language", LANGUAGE_SYSTEM, pVDev->GetDigitLanguage());
    CPPUNIT_ASSERT_EQUAL_MESSAGE("Default raster operation", RasterOp::OverPaint,
diff --git a/vcl/qa/cppunit/svm/svmtest.cxx b/vcl/qa/cppunit/svm/svmtest.cxx
index cdee28b..7efb105 100644
--- a/vcl/qa/cppunit/svm/svmtest.cxx
+++ b/vcl/qa/cppunit/svm/svmtest.cxx
@@ -1969,7 +1969,7 @@ void SvmTest::testPushPop()
    pVirtualDev->Push();
    pVirtualDev->SetLineColor(COL_RED);
    pVirtualDev->DrawLine(Point(4,4), Point(6,6));
    pVirtualDev->Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
    pVirtualDev->Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);
    pVirtualDev->SetLineColor(COL_LIGHTRED);
    pVirtualDev->DrawLine(Point(5,5), Point(7,7));
    pVirtualDev->Pop();
@@ -2267,8 +2267,8 @@ void SvmTest::testLayoutMode()
    ScopedVclPtrInstance<VirtualDevice> pVirtualDev;
    setupBaseVirtualDevice(*pVirtualDev, aGDIMetaFile);

    pVirtualDev->SetLayoutMode(ComplexTextLayoutFlags::TextOriginLeft);
    pVirtualDev->SetLayoutMode(ComplexTextLayoutFlags::BiDiRtl);
    pVirtualDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::TextOriginLeft);
    pVirtualDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::BiDiRtl);

    checkLayoutMode(writeAndReadStream(aGDIMetaFile));
    checkLayoutMode(readFile(u"layoutmode.svm"));
diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx
index f1dddeb..06851ea 100644
--- a/vcl/source/app/help.cxx
+++ b/vcl/source/app/help.cxx
@@ -264,8 +264,8 @@ HelpTextWindow::HelpTextWindow( vcl::Window* pParent, const OUString& rText, sal

    if( mnStyle & QuickHelpFlags::BiDiRtl )
    {
        ComplexTextLayoutFlags nLayoutMode = GetOutDev()->GetLayoutMode();
        nLayoutMode |= ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft;
        vcl::text::ComplexTextLayoutFlags nLayoutMode = GetOutDev()->GetLayoutMode();
        nLayoutMode |= vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft;
        GetOutDev()->SetLayoutMode( nLayoutMode );
    }
    SetHelpText( rText );
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index 87e128b..4415122 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -795,7 +795,7 @@ void PushButton::ImplDrawPushButtonContent(OutputDevice *pDev, SystemTextColorFl
    if (aInRect.Right() < aInRect.Left() || aInRect.Bottom() < aInRect.Top())
        return;

    pDev->Push(PushFlags::CLIPREGION);
    pDev->Push(vcl::PushFlags::CLIPREGION);
    pDev->IntersectClipRegion(aInRect);

    if (nSystemTextColorFlags & SystemTextColorFlags::Mono)
@@ -2093,7 +2093,7 @@ void RadioButton::ImplDraw( OutputDevice* pDev, SystemTextColorFlags nSystemText
    WinBits                 nWinStyle = GetStyle();
    OUString                aText( GetText() );

    pDev->Push( PushFlags::CLIPREGION );
    pDev->Push( vcl::PushFlags::CLIPREGION );
    pDev->IntersectClipRegion( tools::Rectangle( rPos, rSize ) );

    // no image radio button
@@ -2849,7 +2849,7 @@ Image RadioButton::GetRadioImage( const AllSettings& rSettings, DrawButtonFlags 

void RadioButton::ImplAdjustNWFSizes()
{
    GetOutDev()->Push( PushFlags::MAPMODE );
    GetOutDev()->Push( vcl::PushFlags::MAPMODE );
    SetMapMode(MapMode(MapUnit::MapPixel));

    ImplControlValue aControlValue;
@@ -3093,7 +3093,7 @@ void CheckBox::ImplDraw( OutputDevice* pDev, SystemTextColorFlags nSystemTextCol
    WinBits                 nWinStyle = GetStyle();
    OUString                aText( GetText() );

    pDev->Push( PushFlags::CLIPREGION | PushFlags::LINECOLOR );
    pDev->Push( vcl::PushFlags::CLIPREGION | vcl::PushFlags::LINECOLOR );
    pDev->IntersectClipRegion( tools::Rectangle( rPos, rSize ) );

    if (!aText.isEmpty() || HasImage())
@@ -3651,7 +3651,7 @@ Image CheckBox::GetCheckImage( const AllSettings& rSettings, DrawButtonFlags nFl

void CheckBox::ImplAdjustNWFSizes()
{
    GetOutDev()->Push( PushFlags::MAPMODE );
    GetOutDev()->Push( vcl::PushFlags::MAPMODE );
    SetMapMode(MapMode(MapUnit::MapPixel));

    ImplControlValue aControlValue;
diff --git a/vcl/source/control/ctrl.cxx b/vcl/source/control/ctrl.cxx
index cf221b2..00eb003 100644
--- a/vcl/source/control/ctrl.cxx
+++ b/vcl/source/control/ctrl.cxx
@@ -64,8 +64,8 @@ void Control::dispose()
void Control::EnableRTL( bool bEnable )
{
    // convenience: for controls also switch layout mode
    GetOutDev()->SetLayoutMode( bEnable ? ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft :
                                ComplexTextLayoutFlags::TextOriginLeft );
    GetOutDev()->SetLayoutMode( bEnable ? vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft :
                                vcl::text::ComplexTextLayoutFlags::TextOriginLeft );
    CompatStateChanged( StateChangedType::Mirroring );
    Window::EnableRTL(bEnable);
}
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 15ff238..a42ea92 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -507,7 +507,7 @@ void Edit::ImplRepaint(vcl::RenderContext& rRenderContext, const tools::Rectangl
    if (mbForceControlBackground && IsControlBackground())
    {
        // check if we need to set ControlBackground even in NWF case
        rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);
        rRenderContext.SetLineColor();
        rRenderContext.SetFillColor(GetControlBackground());
        rRenderContext.DrawRect(tools::Rectangle(aPos, Size(GetOutputSizePixel().Width() - 2 * mnXOffset, GetOutputSizePixel().Height())));
@@ -2192,12 +2192,12 @@ void Edit::StateChanged( StateChangedType nType )
            if (GetParent()->GetStyle() & WB_LEFT)
                mnAlign = EDIT_ALIGN_RIGHT;
            if (nType == StateChangedType::Mirroring)
                GetOutDev()->SetLayoutMode(ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft);
                GetOutDev()->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft);
        }
        else if (mbIsSubEdit && !GetParent()->IsRTLEnabled())
        {
            if (nType == StateChangedType::Mirroring)
                GetOutDev()->SetLayoutMode(ComplexTextLayoutFlags::TextOriginLeft);
                GetOutDev()->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::TextOriginLeft);
        }

        if (nStyle & WB_RIGHT)
diff --git a/vcl/source/control/fixed.cxx b/vcl/source/control/fixed.cxx
index a927f27..2977797 100644
--- a/vcl/source/control/fixed.cxx
+++ b/vcl/source/control/fixed.cxx
@@ -504,7 +504,7 @@ void FixedLine::ImplDraw(vcl::RenderContext& rRenderContext)
    else if (nWinStyle & WB_VERT)
    {
        tools::Long nWidth = rRenderContext.GetTextWidth(aText);
        rRenderContext.Push(PushFlags::FONT);
        rRenderContext.Push(vcl::PushFlags::FONT);
        vcl::Font aFont(rRenderContext.GetFont());
        aFont.SetOrientation(900_deg10);
        SetFont(aFont);
diff --git a/vcl/source/control/imivctl1.cxx b/vcl/source/control/imivctl1.cxx
index 691278f..ce983e0 100644
--- a/vcl/source/control/imivctl1.cxx
+++ b/vcl/source/control/imivctl1.cxx
@@ -545,7 +545,7 @@ void SvxIconChoiceCtrl_Impl::Paint(vcl::RenderContext& rRenderContext, const too
    if (!nCount)
        return;

    rRenderContext.Push(PushFlags::CLIPREGION);
    rRenderContext.Push(vcl::PushFlags::CLIPREGION);
    rRenderContext.SetClipRegion(vcl::Region(rRect));

    std::vector< SvxIconChoiceCtrlEntry* > aNewZOrderList;
@@ -1399,7 +1399,7 @@ void SvxIconChoiceCtrl_Impl::PaintEntry(SvxIconChoiceCtrlEntry* pEntry, const Po
    if (eSelectionMode != SelectionMode::NONE)
        bSelected = pEntry->IsSelected();

    rRenderContext.Push(PushFlags::FONT | PushFlags::TEXTCOLOR);
    rRenderContext.Push(vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR);

    OUString aEntryText(SvtIconChoiceCtrl::GetEntryText(pEntry));
    tools::Rectangle aTextRect(CalcTextRect(pEntry, &rPos, &aEntryText));
diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx
index e1e92b2..9a31a58 100644
--- a/vcl/source/control/scrbar.cxx
+++ b/vcl/source/control/scrbar.cxx
@@ -843,7 +843,7 @@ void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt )
    if (!IsMapModeEnabled() && GetMapMode().GetMapUnit() == MapUnit::MapTwip)
    {
        // rMEvt coordinates are in twips.
        GetOutDev()->Push(PushFlags::MAPMODE);
        GetOutDev()->Push(vcl::PushFlags::MAPMODE);
        EnableMapMode();
        MapMode aMapMode = GetMapMode();
        aMapMode.SetOrigin(Point(0, 0));
@@ -1016,7 +1016,7 @@ void ScrollBar::Tracking( const TrackingEvent& rTEvt )
        if (!IsMapModeEnabled() && GetMapMode().GetMapUnit() == MapUnit::MapTwip)
        {
            // rTEvt coordinates are in twips.
            GetOutDev()->Push(PushFlags::MAPMODE);
            GetOutDev()->Push(vcl::PushFlags::MAPMODE);
            EnableMapMode();
            MapMode aMapMode = GetMapMode();
            aMapMode.SetOrigin(Point(0, 0));
diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx
index 96ad2c6..5435865 100644
--- a/vcl/source/edit/texteng.cxx
+++ b/vcl/source/edit/texteng.cxx
@@ -2829,9 +2829,9 @@ tools::Long TextEngine::ImpGetPortionXOffset( sal_uInt32 nPara, TextLine const *

void TextEngine::ImpInitLayoutMode( OutputDevice* pOutDev )
{
    ComplexTextLayoutFlags nLayoutMode = pOutDev->GetLayoutMode();
    vcl::text::ComplexTextLayoutFlags nLayoutMode = pOutDev->GetLayoutMode();

    nLayoutMode &= ~ComplexTextLayoutFlags(ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::BiDiStrong );
    nLayoutMode &= ~vcl::text::ComplexTextLayoutFlags(vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::BiDiStrong );

    pOutDev->SetLayoutMode( nLayoutMode );
}
diff --git a/vcl/source/filter/ieps/ieps.cxx b/vcl/source/filter/ieps/ieps.cxx
index 7b5a0c96..9c223d6 100644
--- a/vcl/source/filter/ieps/ieps.cxx
+++ b/vcl/source/filter/ieps/ieps.cxx
@@ -479,7 +479,7 @@ static void MakePreview(sal_uInt8* pBuf, sal_uInt32 nBytesRead,

    aFont.SetColor( COL_LIGHTRED );

    pVDev->Push( PushFlags::FONT );
    pVDev->Push( vcl::PushFlags::FONT );
    pVDev->SetFont( aFont );

    tools::Rectangle aRect( Point( 1, 1 ), Size( nWidth - 2, nHeight - 2 ) );
diff --git a/vcl/source/filter/imet/ios2met.cxx b/vcl/source/filter/imet/ios2met.cxx
index d80a8e5..39d48de 100644
--- a/vcl/source/filter/imet/ios2met.cxx
+++ b/vcl/source/filter/imet/ios2met.cxx
@@ -532,7 +532,7 @@ void OS2METReader::DrawPolygon( const tools::Polygon& rPolygon )
{
    if ( IsLineInfo() )
    {
        pVirDev->Push( PushFlags::LINECOLOR );
        pVirDev->Push( vcl::PushFlags::LINECOLOR );
        pVirDev->SetLineColor( COL_TRANSPARENT );
        pVirDev->DrawPolygon( rPolygon );
        pVirDev->Pop();
@@ -546,7 +546,7 @@ void OS2METReader::DrawPolyPolygon( const tools::PolyPolygon& rPolyPolygon )
{
    if ( IsLineInfo() )
    {
        pVirDev->Push( PushFlags::LINECOLOR );
        pVirDev->Push( vcl::PushFlags::LINECOLOR );
        pVirDev->SetLineColor( COL_TRANSPARENT );
        pVirDev->DrawPolyPolygon( rPolyPolygon );
        pVirDev->Pop();
@@ -989,7 +989,7 @@ void OS2METReader::ReadBox(bool bGivenPos)
            tools::Polygon aPolygon( aBoxRect, nHRound, nVRound );
            if ( nFlags & 0x40 )
            {
                pVirDev->Push( PushFlags::LINECOLOR );
                pVirDev->Push( vcl::PushFlags::LINECOLOR );
                pVirDev->SetLineColor( COL_TRANSPARENT );
                pVirDev->DrawRect( aBoxRect, nHRound, nVRound );
                pVirDev->Pop();
diff --git a/vcl/source/filter/svm/SvmConverter.cxx b/vcl/source/filter/svm/SvmConverter.cxx
index 8a34baa..40ed636 100644
--- a/vcl/source/filter/svm/SvmConverter.cxx
+++ b/vcl/source/filter/svm/SvmConverter.cxx
@@ -503,7 +503,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                {
                    const tools::Polygon aPoly( aRect.Center(), aRect.GetWidth() >> 1, aRect.GetHeight() >> 1 );

                    rMtf.AddAction( new MetaPushAction( PushFlags::LINECOLOR ) );
                    rMtf.AddAction( new MetaPushAction( vcl::PushFlags::LINECOLOR ) );
                    rMtf.AddAction( new MetaLineColorAction( COL_TRANSPARENT, false ) );
                    rMtf.AddAction( new MetaPolygonAction( aPoly ) );
                    rMtf.AddAction( new MetaPopAction() );
@@ -524,7 +524,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                {
                    const tools::Polygon aPoly( aRect, aPt, aPt1, PolyStyle::Arc );

                    rMtf.AddAction( new MetaPushAction( PushFlags::LINECOLOR ) );
                    rMtf.AddAction( new MetaPushAction( vcl::PushFlags::LINECOLOR ) );
                    rMtf.AddAction( new MetaLineColorAction( COL_TRANSPARENT, false ) );
                    rMtf.AddAction( new MetaPolygonAction( aPoly ) );
                    rMtf.AddAction( new MetaPopAction() );
@@ -545,7 +545,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                {
                    const tools::Polygon aPoly( aRect, aPt, aPt1, PolyStyle::Pie );

                    rMtf.AddAction( new MetaPushAction( PushFlags::LINECOLOR ) );
                    rMtf.AddAction( new MetaPushAction( vcl::PushFlags::LINECOLOR ) );
                    rMtf.AddAction( new MetaLineColorAction( COL_TRANSPARENT, false ) );
                    rMtf.AddAction( new MetaPolygonAction( aPoly ) );
                    rMtf.AddAction( new MetaPopAction() );
@@ -560,7 +560,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
            case GDI_HIGHLIGHTRECT_ACTION:
            {
                ImplReadRect( rIStm, aRect );
                rMtf.AddAction( new MetaPushAction( PushFlags::RASTEROP ) );
                rMtf.AddAction( new MetaPushAction( vcl::PushFlags::RASTEROP ) );
                rMtf.AddAction( new MetaRasterOpAction( RasterOp::Invert ) );
                rMtf.AddAction( new MetaRectAction( aRect ) );
                rMtf.AddAction( new MetaPopAction() );
@@ -587,7 +587,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                {
                    if( bFatLine )
                    {
                        rMtf.AddAction( new MetaPushAction( PushFlags::LINECOLOR ) );
                        rMtf.AddAction( new MetaPushAction( vcl::PushFlags::LINECOLOR ) );
                        rMtf.AddAction( new MetaLineColorAction( COL_TRANSPARENT, false ) );
                        rMtf.AddAction( new MetaPolygonAction( aActionPoly ) );
                        rMtf.AddAction( new MetaPopAction() );
@@ -610,7 +610,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                {
                    if( bFatLine )
                    {
                        rMtf.AddAction( new MetaPushAction( PushFlags::LINECOLOR ) );
                        rMtf.AddAction( new MetaPushAction( vcl::PushFlags::LINECOLOR ) );
                        rMtf.AddAction( new MetaLineColorAction( COL_TRANSPARENT, false ) );
                        rMtf.AddAction( new MetaPolyPolygonAction( aPolyPoly ) );
                        rMtf.AddAction( new MetaPopAction() );
@@ -1005,7 +1005,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
            case GDI_PUSH_ACTION:
            {
                aLIStack.push(aLineInfo);
                rMtf.AddAction( new MetaPushAction( PushFlags::ALL ) );
                rMtf.AddAction( new MetaPushAction( vcl::PushFlags::ALL ) );

                // #106172# Track font relevant data in shadow VDev
                aFontVDev->Push();
diff --git a/vcl/source/filter/svm/SvmReader.cxx b/vcl/source/filter/svm/SvmReader.cxx
index 7e0780b..31636fa 100644
--- a/vcl/source/filter/svm/SvmReader.cxx
+++ b/vcl/source/filter/svm/SvmReader.cxx
@@ -1270,7 +1270,7 @@ rtl::Reference<MetaAction> SvmReader::PushHandler()
    sal_uInt16 nTmp(0);
    mrStream.ReadUInt16(nTmp);

    pAction->SetPushFlags(static_cast<PushFlags>(nTmp));
    pAction->SetPushFlags(static_cast<vcl::PushFlags>(nTmp));

    return pAction;
}
@@ -1424,7 +1424,7 @@ rtl::Reference<MetaAction> SvmReader::LayoutModeHandler()
    sal_uInt32 tmp(0);
    mrStream.ReadUInt32(tmp);

    pAction->SetLayoutMode(static_cast<ComplexTextLayoutFlags>(tmp));
    pAction->SetLayoutMode(static_cast<vcl::text::ComplexTextLayoutFlags>(tmp));

    return pAction;
}
diff --git a/vcl/source/filter/wmf/emfwr.cxx b/vcl/source/filter/wmf/emfwr.cxx
index 69c7be4..33d41da 100644
--- a/vcl/source/filter/wmf/emfwr.cxx
+++ b/vcl/source/filter/wmf/emfwr.cxx
@@ -1459,15 +1459,15 @@ void EMFWriter::ImplWrite( const GDIMetaFile& rMtf )

            case MetaActionType::LAYOUTMODE:
            {
                ComplexTextLayoutFlags nLayoutMode = static_cast<const MetaLayoutModeAction*>(pAction)->GetLayoutMode();
                vcl::text::ComplexTextLayoutFlags nLayoutMode = static_cast<const MetaLayoutModeAction*>(pAction)->GetLayoutMode();
                mnHorTextAlign = 0;
                if ((nLayoutMode & ComplexTextLayoutFlags::BiDiRtl) != ComplexTextLayoutFlags::Default)
                if ((nLayoutMode & vcl::text::ComplexTextLayoutFlags::BiDiRtl) != vcl::text::ComplexTextLayoutFlags::Default)
                {
                    mnHorTextAlign = TA_RIGHT | TA_RTLREADING;
                }
                if ((nLayoutMode & ComplexTextLayoutFlags::TextOriginRight) != ComplexTextLayoutFlags::Default)
                if ((nLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginRight) != vcl::text::ComplexTextLayoutFlags::Default)
                    mnHorTextAlign |= TA_RIGHT;
                else if ((nLayoutMode & ComplexTextLayoutFlags::TextOriginLeft) != ComplexTextLayoutFlags::Default)
                else if ((nLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginLeft) != vcl::text::ComplexTextLayoutFlags::Default)
                    mnHorTextAlign &= ~TA_RIGHT;
                break;
            }
diff --git a/vcl/source/filter/wmf/wmfwr.cxx b/vcl/source/filter/wmf/wmfwr.cxx
index bc88ba6..93bc6e2 100644
--- a/vcl/source/filter/wmf/wmfwr.cxx
+++ b/vcl/source/filter/wmf/wmfwr.cxx
@@ -1490,27 +1490,27 @@ void WMFWriter::WriteRecords( const GDIMetaFile & rMTF )
                {
                    aDstLineInfo = pAt->aLineInfo;
                    aDstLineColor = pAt->aLineColor;
                    if ( pAt->nFlags & PushFlags::LINECOLOR )
                    if ( pAt->nFlags & vcl::PushFlags::LINECOLOR )
                        aSrcLineColor = pAt->aLineColor;
                    aDstFillColor = pAt->aFillColor;
                    if ( pAt->nFlags & PushFlags::FILLCOLOR )
                    if ( pAt->nFlags & vcl::PushFlags::FILLCOLOR )
                        aSrcFillColor = pAt->aFillColor;
                    eDstROP2 = pAt->eRasterOp;
                    if ( pAt->nFlags & PushFlags::RASTEROP )
                    if ( pAt->nFlags & vcl::PushFlags::RASTEROP )
                        eSrcRasterOp = pAt->eRasterOp;
                    aDstFont = pAt->aFont;
                    if ( pAt->nFlags & PushFlags::FONT )
                    if ( pAt->nFlags & vcl::PushFlags::FONT )
                        aSrcFont = pAt->aFont;
                    eDstTextAlign = pAt->eTextAlign;
                    if ( pAt->nFlags & ( PushFlags::FONT | PushFlags::TEXTALIGN ) )
                    if ( pAt->nFlags & ( vcl::PushFlags::FONT | vcl::PushFlags::TEXTALIGN ) )
                        eSrcTextAlign = pAt->eTextAlign;
                    aDstTextColor = pAt->aTextColor;
                    if ( pAt->nFlags & ( PushFlags::FONT | PushFlags::TEXTCOLOR ) )
                    if ( pAt->nFlags & ( vcl::PushFlags::FONT | vcl::PushFlags::TEXTCOLOR ) )
                        aSrcTextColor = pAt->aTextColor;
                    if ( pAt->nFlags & PushFlags::MAPMODE )
                    if ( pAt->nFlags & vcl::PushFlags::MAPMODE )
                        aSrcMapMode = pAt->aMapMode;
                    aDstClipRegion = pAt->aClipRegion;
                    if ( pAt->nFlags & PushFlags::CLIPREGION )
                    if ( pAt->nFlags & vcl::PushFlags::CLIPREGION )
                        aSrcClipRegion = pAt->aClipRegion;

                    WMFRecord_RestoreDC();
@@ -1589,15 +1589,15 @@ void WMFWriter::WriteRecords( const GDIMetaFile & rMTF )

            case MetaActionType::LAYOUTMODE:
            {
                ComplexTextLayoutFlags nLayoutMode = static_cast<const MetaLayoutModeAction*>(pMA)->GetLayoutMode();
                vcl::text::ComplexTextLayoutFlags nLayoutMode = static_cast<const MetaLayoutModeAction*>(pMA)->GetLayoutMode();
                eSrcHorTextAlign = 0; // TA_LEFT
                if ((nLayoutMode & ComplexTextLayoutFlags::BiDiRtl) != ComplexTextLayoutFlags::Default)
                if ((nLayoutMode & vcl::text::ComplexTextLayoutFlags::BiDiRtl) != vcl::text::ComplexTextLayoutFlags::Default)
                {
                    eSrcHorTextAlign = W_TA_RIGHT | W_TA_RTLREADING;
                }
                if ((nLayoutMode & ComplexTextLayoutFlags::TextOriginRight) != ComplexTextLayoutFlags::Default)
                if ((nLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginRight) != vcl::text::ComplexTextLayoutFlags::Default)
                    eSrcHorTextAlign |= W_TA_RIGHT;
                else if ((nLayoutMode & ComplexTextLayoutFlags::TextOriginLeft) != ComplexTextLayoutFlags::Default)
                else if ((nLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginLeft) != vcl::text::ComplexTextLayoutFlags::Default)
                    eSrcHorTextAlign &= ~W_TA_RIGHT;
                break;
            }
diff --git a/vcl/source/filter/wmf/wmfwr.hxx b/vcl/source/filter/wmf/wmfwr.hxx
index 36239dd..7be7e0b 100644
--- a/vcl/source/filter/wmf/wmfwr.hxx
+++ b/vcl/source/filter/wmf/wmfwr.hxx
@@ -41,7 +41,7 @@ struct WMFWriterAttrStackMember
    vcl::Font aFont;
    MapMode aMapMode;
    vcl::Region aClipRegion;
    PushFlags nFlags;
    vcl::PushFlags nFlags;
};

class StarSymbolToMSMultiFont;
diff --git a/vcl/source/gdi/gdimetafiletools.cxx b/vcl/source/gdi/gdimetafiletools.cxx
index 9b3e26a..982cb0d 100644
--- a/vcl/source/gdi/gdimetafiletools.cxx
+++ b/vcl/source/gdi/gdimetafiletools.cxx
@@ -273,7 +273,7 @@ void clipMetafileContentAgainstOwnRegions(GDIMetaFile& rSource)
    GDIMetaFile aTarget;
    bool bChanged(false);
    std::vector< basegfx::B2DPolyPolygon > aClips;
    std::vector< PushFlags > aPushFlags;
    std::vector< vcl::PushFlags > aPushFlags;
    std::vector< MapMode > aMapModes;

    // start with empty region
@@ -368,16 +368,16 @@ void clipMetafileContentAgainstOwnRegions(GDIMetaFile& rSource)
            case MetaActionType::PUSH :
            {
                const MetaPushAction* pA = static_cast< const MetaPushAction* >(pAction);
                const PushFlags nFlags(pA->GetFlags());
                const vcl::PushFlags nFlags(pA->GetFlags());

                aPushFlags.push_back(nFlags);

                if(nFlags & PushFlags::CLIPREGION)
                if(nFlags & vcl::PushFlags::CLIPREGION)
                {
                    aClips.push_back(aClips.back());
                }

                if(nFlags & PushFlags::MAPMODE)
                if(nFlags & vcl::PushFlags::MAPMODE)
                {
                    aMapModes.push_back(aMapModes.back());
                }
@@ -389,10 +389,10 @@ void clipMetafileContentAgainstOwnRegions(GDIMetaFile& rSource)

                if(!aPushFlags.empty())
                {
                    const PushFlags nFlags(aPushFlags.back());
                    const vcl::PushFlags nFlags(aPushFlags.back());
                    aPushFlags.pop_back();

                    if(nFlags & PushFlags::CLIPREGION)
                    if(nFlags & vcl::PushFlags::CLIPREGION)
                    {
                        if(aClips.size() > 1)
                        {
@@ -404,7 +404,7 @@ void clipMetafileContentAgainstOwnRegions(GDIMetaFile& rSource)
                        }
                    }

                    if(nFlags & PushFlags::MAPMODE)
                    if(nFlags & vcl::PushFlags::MAPMODE)
                    {
                        if(aMapModes.size() > 1)
                        {
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index ebdef11..39fe64c 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -356,8 +356,8 @@ void GDIMetaFile::Play(OutputDevice& rOut, size_t nPos)
    // This is necessary, since old metafiles don't even know of these
    // recent add-ons. Newer metafiles must of course explicitly set
    // those states.
    rOut.Push(PushFlags::TEXTLAYOUTMODE|PushFlags::TEXTLANGUAGE);
    rOut.SetLayoutMode(ComplexTextLayoutFlags::Default);
    rOut.Push(vcl::PushFlags::TEXTLAYOUTMODE|vcl::PushFlags::TEXTLANGUAGE);
    rOut.SetLayoutMode(vcl::text::ComplexTextLayoutFlags::Default);
    rOut.SetDigitLanguage(LANGUAGE_SYSTEM);

    SAL_INFO( "vcl.gdi", "GDIMetaFile::Play on device of size: " << rOut.GetOutputSizePixel().Width() << " " << rOut.GetOutputSizePixel().Height());
@@ -506,7 +506,7 @@ void GDIMetaFile::Play(OutputDevice& rOut, const Point& rPos,
    // This is necessary, since old metafiles don't even know of these
    // recent add-ons. Newer metafiles must of course explicitly set
    // those states.
    rOut.SetLayoutMode(ComplexTextLayoutFlags::Default);
    rOut.SetLayoutMode(vcl::text::ComplexTextLayoutFlags::Default);
    rOut.SetDigitLanguage(LANGUAGE_SYSTEM);

    Play(rOut);
@@ -1308,7 +1308,7 @@ tools::Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference, tools::R
    aMapVDev->SetMapMode( GetPrefMapMode() );

    std::vector<tools::Rectangle> aClipStack( 1, tools::Rectangle() );
    std::vector<PushFlags> aPushFlagStack;
    std::vector<vcl::PushFlags> aPushFlagStack;

    tools::Rectangle aBound;

@@ -1695,7 +1695,7 @@ tools::Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference, tools::R
                {
                    MetaPushAction* pAct = static_cast<MetaPushAction*>(pAction);
                    aPushFlagStack.push_back( pAct->GetFlags() );
                    if( aPushFlagStack.back() & PushFlags::CLIPREGION )
                    if( aPushFlagStack.back() & vcl::PushFlags::CLIPREGION )
                    {
                        tools::Rectangle aRect( aClipStack.back() );
                        aClipStack.push_back( aRect );
@@ -1706,7 +1706,7 @@ tools::Rectangle GDIMetaFile::GetBoundRect( OutputDevice& i_rReference, tools::R
                    // sanity check
                    if( ! aPushFlagStack.empty() )
                    {
                        if( aPushFlagStack.back() & PushFlags::CLIPREGION )
                        if( aPushFlagStack.back() & vcl::PushFlags::CLIPREGION )
                        {
                            if( aClipStack.size() > 1 )
                                aClipStack.pop_back();
diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx
index f031648..7141e2e 100644
--- a/vcl/source/gdi/graph.cxx
+++ b/vcl/source/gdi/graph.cxx
@@ -346,9 +346,9 @@ const BitmapEx& Graphic::GetBitmapExRef() const
    return mxImpGraphic->getBitmapExRef();
}

uno::Reference<graphic::XGraphic> Graphic::GetXGraphic() const
uno::Reference<css::graphic::XGraphic> Graphic::GetXGraphic() const
{
    uno::Reference<graphic::XGraphic> xGraphic;
    uno::Reference<css::graphic::XGraphic> xGraphic;

    if (GetType() != GraphicType::NONE)
    {
diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx
index 74f343ed..7ac2190 100644
--- a/vcl/source/gdi/metaact.cxx
+++ b/vcl/source/gdi/metaact.cxx
@@ -1662,13 +1662,13 @@ void MetaFontAction::Scale( double fScaleX, double fScaleY )

MetaPushAction::MetaPushAction() :
    MetaAction  ( MetaActionType::PUSH ),
    mnFlags     ( PushFlags::NONE )
    mnFlags     ( vcl::PushFlags::NONE )
{}

MetaPushAction::~MetaPushAction()
{}

MetaPushAction::MetaPushAction( PushFlags nFlags ) :
MetaPushAction::MetaPushAction( vcl::PushFlags nFlags ) :
    MetaAction  ( MetaActionType::PUSH ),
    mnFlags     ( nFlags )
{}
@@ -2038,13 +2038,13 @@ void MetaCommentAction::Scale( double fXScale, double fYScale )

MetaLayoutModeAction::MetaLayoutModeAction() :
    MetaAction  ( MetaActionType::LAYOUTMODE ),
    mnLayoutMode( ComplexTextLayoutFlags::Default )
    mnLayoutMode( vcl::text::ComplexTextLayoutFlags::Default )
{}

MetaLayoutModeAction::~MetaLayoutModeAction()
{}

MetaLayoutModeAction::MetaLayoutModeAction( ComplexTextLayoutFlags nLayoutMode ) :
MetaLayoutModeAction::MetaLayoutModeAction( vcl::text::ComplexTextLayoutFlags nLayoutMode ) :
    MetaAction  ( MetaActionType::LAYOUTMODE ),
    mnLayoutMode( nLayoutMode )
{}
diff --git a/vcl/source/gdi/mtfxmldump.cxx b/vcl/source/gdi/mtfxmldump.cxx
index 4ad870c..a66de85 100644
--- a/vcl/source/gdi/mtfxmldump.cxx
+++ b/vcl/source/gdi/mtfxmldump.cxx
@@ -21,42 +21,42 @@
namespace
{

OUString collectPushFlags(PushFlags nFlags)
OUString collectPushFlags(vcl::PushFlags nFlags)
{
    if ((nFlags & PushFlags::ALL) == PushFlags::ALL)
    if ((nFlags & vcl::PushFlags::ALL) == vcl::PushFlags::ALL)
        return "PushAll";
    else if ((nFlags & PUSH_ALLFONT) == PUSH_ALLFONT)
        return "PushAllFont";

    std::vector<OUString> aStrings;

    if (nFlags & PushFlags::LINECOLOR)
    if (nFlags & vcl::PushFlags::LINECOLOR)
        aStrings.emplace_back("PushLineColor");
    if (nFlags & PushFlags::FILLCOLOR)
    if (nFlags & vcl::PushFlags::FILLCOLOR)
        aStrings.emplace_back("PushFillColor");
    if (nFlags & PushFlags::FONT)
    if (nFlags & vcl::PushFlags::FONT)
        aStrings.emplace_back("PushFont");
    if (nFlags & PushFlags::TEXTCOLOR)
    if (nFlags & vcl::PushFlags::TEXTCOLOR)
        aStrings.emplace_back("PushTextColor");
    if (nFlags & PushFlags::MAPMODE)
    if (nFlags & vcl::PushFlags::MAPMODE)
        aStrings.emplace_back("PushMapMode");
    if (nFlags & PushFlags::CLIPREGION)
    if (nFlags & vcl::PushFlags::CLIPREGION)
        aStrings.emplace_back("PushClipRegion");
    if (nFlags & PushFlags::RASTEROP)
    if (nFlags & vcl::PushFlags::RASTEROP)
        aStrings.emplace_back("PushRasterOp");
    if (nFlags & PushFlags::TEXTFILLCOLOR)
    if (nFlags & vcl::PushFlags::TEXTFILLCOLOR)
        aStrings.emplace_back("PushTextFillColor");
    if (nFlags & PushFlags::TEXTALIGN)
    if (nFlags & vcl::PushFlags::TEXTALIGN)
        aStrings.emplace_back("PushTextAlign");
    if (nFlags & PushFlags::REFPOINT)
    if (nFlags & vcl::PushFlags::REFPOINT)
        aStrings.emplace_back("PushRefPoint");
    if (nFlags & PushFlags::TEXTLINECOLOR)
    if (nFlags & vcl::PushFlags::TEXTLINECOLOR)
        aStrings.emplace_back("PushTextLineColor");
    if (nFlags & PushFlags::TEXTLAYOUTMODE)
    if (nFlags & vcl::PushFlags::TEXTLAYOUTMODE)
        aStrings.emplace_back("PushTextLayoutMode");
    if (nFlags & PushFlags::TEXTLANGUAGE)
    if (nFlags & vcl::PushFlags::TEXTLANGUAGE)
        aStrings.emplace_back("PushTextLanguage");
    if (nFlags & PushFlags::OVERLINECOLOR)
    if (nFlags & vcl::PushFlags::OVERLINECOLOR)
        aStrings.emplace_back("PushOverlineColor");

    OUString aString;
@@ -437,16 +437,16 @@ OUString convertPixelFormatToString(vcl::PixelFormat ePixelFormat)
    return OUString();
}

OUString convertComplexTestLayoutFlags(ComplexTextLayoutFlags eComplexTestLayoutFlags)
OUString convertComplexTestLayoutFlags(vcl::text::ComplexTextLayoutFlags eComplexTestLayoutFlags)
{
    switch(eComplexTestLayoutFlags)
    {
        default:
        case ComplexTextLayoutFlags::Default: return "#0000";
        case ComplexTextLayoutFlags::BiDiRtl: return "#0001";
        case ComplexTextLayoutFlags::BiDiStrong: return "#0002";
        case ComplexTextLayoutFlags::TextOriginLeft: return "#0004";
        case ComplexTextLayoutFlags::TextOriginRight: return "#0008";
        case vcl::text::ComplexTextLayoutFlags::Default: return "#0000";
        case vcl::text::ComplexTextLayoutFlags::BiDiRtl: return "#0001";
        case vcl::text::ComplexTextLayoutFlags::BiDiStrong: return "#0002";
        case vcl::text::ComplexTextLayoutFlags::TextOriginLeft: return "#0004";
        case vcl::text::ComplexTextLayoutFlags::TextOriginRight: return "#0008";
    }
}

diff --git a/vcl/source/gdi/pdfwriter.cxx b/vcl/source/gdi/pdfwriter.cxx
index 164b75f..40210ea 100644
--- a/vcl/source/gdi/pdfwriter.cxx
+++ b/vcl/source/gdi/pdfwriter.cxx
@@ -274,7 +274,7 @@ void PDFWriter::IntersectClipRegion( const tools::Rectangle& rRect )
    xImplementation->intersectClipRegion( rRect );
}

void PDFWriter::SetLayoutMode( ComplexTextLayoutFlags nMode )
void PDFWriter::SetLayoutMode( vcl::text::ComplexTextLayoutFlags nMode )
{
    xImplementation->setLayoutMode( nMode );
}
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 858f73f..6b02a6d 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -7068,8 +7068,8 @@ void PDFWriterImpl::drawStrikeoutChar( const Point& rPos, tools::Long nWidth, Fo
    }

    // strikeout string is left aligned non-CTL text
    ComplexTextLayoutFlags nOrigTLM = GetLayoutMode();
    SetLayoutMode(ComplexTextLayoutFlags::BiDiStrong);
    vcl::text::ComplexTextLayoutFlags nOrigTLM = GetLayoutMode();
    SetLayoutMode(vcl::text::ComplexTextLayoutFlags::BiDiStrong);

    push( PushFlags::CLIPREGION );
    FontMetric aRefDevFontMetric = GetFontMetric();
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index df685ef..9c6df86 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -262,7 +262,7 @@ void Printer::EmulateDrawTransparent ( const tools::PolyPolygon& rPolyPoly,
        default:    nMove = 0; break;
    }

    Push( PushFlags::CLIPREGION | PushFlags::LINECOLOR );
    Push( vcl::PushFlags::CLIPREGION | vcl::PushFlags::LINECOLOR );
    IntersectClipRegion(vcl::Region(rPolyPoly));
    SetLineColor( GetFillColor() );
    const bool bOldMap = mbMap;
@@ -737,7 +737,7 @@ void Printer::DrawDeviceMask( const Bitmap& rMask, const Color& rMaskColor,

    mpMetaFile = nullptr;
    mbMap = false;
    Push( PushFlags::FILLCOLOR | PushFlags::LINECOLOR );
    Push( vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR );
    SetLineColor( rMaskColor );
    SetFillColor( rMaskColor );
    InitLineColor();
@@ -1623,7 +1623,7 @@ void Printer::ClipAndDrawGradientMetafile ( const Gradient &rGradient, const too
{
    const tools::Rectangle aBoundRect( rPolyPoly.GetBoundRect() );

    Push( PushFlags::CLIPREGION );
    Push( vcl::PushFlags::CLIPREGION );
    IntersectClipRegion(vcl::Region(rPolyPoly));
    DrawGradient( aBoundRect, rGradient );
    Pop();
diff --git a/vcl/source/gdi/print2.cxx b/vcl/source/gdi/print2.cxx
index 4f05a779..85b39c6 100644
--- a/vcl/source/gdi/print2.cxx
+++ b/vcl/source/gdi/print2.cxx
@@ -56,7 +56,7 @@ void Printer::DrawGradientEx( OutputDevice* pOut, const tools::Rectangle& rRect,
                                   ( static_cast<tools::Long>(rEndColor.GetBlue()) * rGradient.GetEndIntensity() ) / 100 ) >> 1;
            const Color     aColor( static_cast<sal_uInt8>(nR), static_cast<sal_uInt8>(nG), static_cast<sal_uInt8>(nB) );

            pOut->Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
            pOut->Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
            pOut->SetLineColor( aColor );
            pOut->SetFillColor( aColor );
            pOut->DrawRect( rRect );
diff --git a/vcl/source/gdi/textlayout.cxx b/vcl/source/gdi/textlayout.cxx
index 5f4edb9..94a2425 100644
--- a/vcl/source/gdi/textlayout.cxx
+++ b/vcl/source/gdi/textlayout.cxx
@@ -244,9 +244,9 @@ namespace vcl
            return tools::Rectangle();

        // determine text layout mode from the RTL-ness of the control whose text we render
        ComplexTextLayoutFlags nTextLayoutMode = m_bRTLEnabled ? ComplexTextLayoutFlags::BiDiRtl : ComplexTextLayoutFlags::Default;
        text::ComplexTextLayoutFlags nTextLayoutMode = m_bRTLEnabled ? text::ComplexTextLayoutFlags::BiDiRtl : text::ComplexTextLayoutFlags::Default;
        m_rReferenceDevice.SetLayoutMode( nTextLayoutMode );
        m_rTargetDevice.SetLayoutMode( nTextLayoutMode | ComplexTextLayoutFlags::TextOriginLeft );
        m_rTargetDevice.SetLayoutMode( nTextLayoutMode | text::ComplexTextLayoutFlags::TextOriginLeft );

        // ComplexTextLayoutFlags::TextOriginLeft is because when we do actually draw the text (in DrawText( Point, ... )), then
        // our caller gives us the left border of the draw position, regardless of script type, text layout,
@@ -298,9 +298,9 @@ namespace vcl
            return tools::Rectangle();

        // determine text layout mode from the RTL-ness of the control whose text we render
        ComplexTextLayoutFlags nTextLayoutMode = m_bRTLEnabled ? ComplexTextLayoutFlags::BiDiRtl : ComplexTextLayoutFlags::Default;
        text::ComplexTextLayoutFlags nTextLayoutMode = m_bRTLEnabled ? text::ComplexTextLayoutFlags::BiDiRtl : text::ComplexTextLayoutFlags::Default;
        m_rReferenceDevice.SetLayoutMode( nTextLayoutMode );
        m_rTargetDevice.SetLayoutMode( nTextLayoutMode | ComplexTextLayoutFlags::TextOriginLeft );
        m_rTargetDevice.SetLayoutMode( nTextLayoutMode | text::ComplexTextLayoutFlags::TextOriginLeft );

        // ComplexTextLayoutFlags::TextOriginLeft is because when we do actually draw the text (in DrawText( Point, ... )), then
        // our caller gives us the left border of the draw position, regardless of script type, text layout,
diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index 77f364a..fb4f526 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -342,7 +342,7 @@ void VirtualDevice::ImplFillOpaqueRectangle( const tools::Rectangle& rRect )
    // Set line and fill color to black (->opaque),
    // fill rect with that (linecolor, too, because of
    // those pesky missing pixel problems)
    Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
    Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
    SetLineColor( COL_BLACK );
    SetFillColor( COL_BLACK );
    DrawRect( rRect );
diff --git a/vcl/source/graphic/GraphicObject.cxx b/vcl/source/graphic/GraphicObject.cxx
index 96f69b3..9d79fcc 100644
--- a/vcl/source/graphic/GraphicObject.cxx
+++ b/vcl/source/graphic/GraphicObject.cxx
@@ -491,7 +491,7 @@ bool GraphicObject::Draw(OutputDevice& rOut, const Point& rPt, const Size& rSz,
        bool        bRectClip;
        const bool  bCrop = ImplGetCropParams(rOut, aPt, aSz, &aAttr, aClipPolyPoly, bRectClip);

        rOut.Push(PushFlags::CLIPREGION);
        rOut.Push(vcl::PushFlags::CLIPREGION);

        if( bCrop )
        {
@@ -562,7 +562,7 @@ bool GraphicObject::StartAnimation(OutputDevice& rOut, const Point& rPt, const S
            bool        bRectClip;
            const bool  bCrop = ImplGetCropParams(rOut, aPt, aSz, &aAttr, aClipPolyPoly, bRectClip);

            rOut.Push(PushFlags::CLIPREGION);
            rOut.Push(vcl::PushFlags::CLIPREGION);

            if( bCrop )
            {
diff --git a/vcl/source/graphic/GraphicObject2.cxx b/vcl/source/graphic/GraphicObject2.cxx
index 2c377a9..cfd3433 100644
--- a/vcl/source/graphic/GraphicObject2.cxx
+++ b/vcl/source/graphic/GraphicObject2.cxx
@@ -360,7 +360,7 @@ bool GraphicObject::ImplDrawTiled(OutputDevice& rOut, const tools::Rectangle& rA
        const Point aOutStart( aOutOrigin.X() + nInvisibleTilesX*rSizePixel.Width(),
                               aOutOrigin.Y() + nInvisibleTilesY*rSizePixel.Height() );

        rOut.Push( PushFlags::CLIPREGION );
        rOut.Push( vcl::PushFlags::CLIPREGION );
        rOut.IntersectClipRegion( rArea );

        // Paint all tiles
diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
index 6f548cb..2cabf18 100644
--- a/vcl/source/outdev/bitmap.cxx
+++ b/vcl/source/outdev/bitmap.cxx
@@ -80,7 +80,7 @@ void OutputDevice::DrawBitmap( const Point& rDestPt, const Size& rDestSize,
                cCmpVal = 255;

            Color aCol( cCmpVal, cCmpVal, cCmpVal );
            Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
            Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
            SetLineColor( aCol );
            SetFillColor( aCol );
            DrawRect( tools::Rectangle( rDestPt, rDestSize ) );
diff --git a/vcl/source/outdev/gradient.cxx b/vcl/source/outdev/gradient.cxx
index ea10b6b..d6854285 100644
--- a/vcl/source/outdev/gradient.cxx
+++ b/vcl/source/outdev/gradient.cxx
@@ -60,7 +60,7 @@ void OutputDevice::DrawGradient( const tools::PolyPolygon& rPolyPoly,
        {
            Color aColor = GetSingleColorGradientFill();

            Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR );
            Push( vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR );
            SetLineColor( aColor );
            SetFillColor( aColor );
            DrawPolyPolygon( rPolyPoly );
@@ -97,7 +97,7 @@ void OutputDevice::DrawGradient( const tools::PolyPolygon& rPolyPoly,
                    return;

                // secure clip region
                Push( PushFlags::CLIPREGION );
                Push( vcl::PushFlags::CLIPREGION );
                IntersectClipRegion( aBoundRect );

                if (mbInitClipRegion)
@@ -160,7 +160,7 @@ void OutputDevice::ClipAndDrawGradientMetafile ( const Gradient &rGradient, cons
    const bool  bOldOutput = IsOutputEnabled();

    EnableOutput( false );
    Push( PushFlags::RASTEROP );
    Push( vcl::PushFlags::RASTEROP );
    SetRasterOp( RasterOp::Xor );
    DrawGradient( aBoundRect, rGradient );
    SetFillColor( COL_BLACK );
@@ -1000,7 +1000,7 @@ void OutputDevice::AddGradientActions( const tools::Rectangle& rRect, const Grad
    GDIMetaFile*    pOldMtf = mpMetaFile;

    mpMetaFile = &rMtf;
    mpMetaFile->AddAction( new MetaPushAction( PushFlags::ALL ) );
    mpMetaFile->AddAction( new MetaPushAction( vcl::PushFlags::ALL ) );
    mpMetaFile->AddAction( new MetaISectRectClipRegionAction( aRect ) );
    mpMetaFile->AddAction( new MetaLineColorAction( Color(), false ) );

diff --git a/vcl/source/outdev/hatch.cxx b/vcl/source/outdev/hatch.cxx
index fbbab23..89e89f8 100644
--- a/vcl/source/outdev/hatch.cxx
+++ b/vcl/source/outdev/hatch.cxx
@@ -85,7 +85,7 @@ void OutputDevice::DrawHatch( const tools::PolyPolygon& rPolyPoly, const Hatch& 

        mpMetaFile = nullptr;
        EnableMapMode( false );
        Push( PushFlags::LINECOLOR );
        Push( vcl::PushFlags::LINECOLOR );
        SetLineColor( aHatch.GetColor() );
        InitLineColor();
        DrawHatch( aPolyPoly, aHatch, false );
@@ -110,7 +110,7 @@ void OutputDevice::AddHatchActions( const tools::PolyPolygon& rPolyPoly, const H
        GDIMetaFile* pOldMtf = mpMetaFile;

        mpMetaFile = &rMtf;
        mpMetaFile->AddAction( new MetaPushAction( PushFlags::ALL ) );
        mpMetaFile->AddAction( new MetaPushAction( vcl::PushFlags::ALL ) );
        mpMetaFile->AddAction( new MetaLineColorAction( rHatch.GetColor(), true ) );
        DrawHatch( aPolyPoly, rHatch, true );
        mpMetaFile->AddAction( new MetaPopAction() );
diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx
index 85a82fa..cc734924 100644
--- a/vcl/source/outdev/outdev.cxx
+++ b/vcl/source/outdev/outdev.cxx
@@ -89,10 +89,10 @@ OutputDevice::OutputDevice(OutDevType eOutDevType) :
    mnEmphasisAscent                = 0;
    mnEmphasisDescent               = 0;
    mnDrawMode                      = DrawModeFlags::Default;
    mnTextLayoutMode                = ComplexTextLayoutFlags::Default;
    mnTextLayoutMode                = vcl::text::ComplexTextLayoutFlags::Default;

    if( AllSettings::GetLayoutRTL() ) //#i84553# tip BiDi preference to RTL
        mnTextLayoutMode            = ComplexTextLayoutFlags::BiDiRtl | ComplexTextLayoutFlags::TextOriginLeft;
        mnTextLayoutMode            = vcl::text::ComplexTextLayoutFlags::BiDiRtl | vcl::text::ComplexTextLayoutFlags::TextOriginLeft;

    meOutDevViewType                = OutDevViewType::DontKnow;
    mbMap                           = false;
diff --git a/vcl/source/outdev/rect.cxx b/vcl/source/outdev/rect.cxx
index ead68bd..554cf5e 100644
--- a/vcl/source/outdev/rect.cxx
+++ b/vcl/source/outdev/rect.cxx
@@ -217,7 +217,7 @@ void OutputDevice::DrawCheckered(const Point& rPos, const Size& rSize, sal_uInt3
    const sal_uInt32 nMaxX(rPos.X() + rSize.Width());
    const sal_uInt32 nMaxY(rPos.Y() + rSize.Height());

    Push(PushFlags::LINECOLOR|PushFlags::FILLCOLOR);
    Push(vcl::PushFlags::LINECOLOR|vcl::PushFlags::FILLCOLOR);
    SetLineColor();

    for(sal_uInt32 x(0), nX(rPos.X()); nX < nMaxX; x++, nX += nLen)
diff --git a/vcl/source/outdev/stack.cxx b/vcl/source/outdev/stack.cxx
index ee8eddf..23c9f92 100644
--- a/vcl/source/outdev/stack.cxx
+++ b/vcl/source/outdev/stack.cxx
@@ -23,7 +23,7 @@

#include <vcl/gdimtf.hxx>
#include <vcl/metaact.hxx>
#include <vcl/outdevstate.hxx>
#include <vcl/rendercontext/State.hxx>
#include <vcl/virdev.hxx>
#include <vcl/settings.hxx>

@@ -31,59 +31,59 @@
#include <drawmode.hxx>
#include <salgdi.hxx>

void OutputDevice::Push(PushFlags nFlags)
void OutputDevice::Push(vcl::PushFlags nFlags)
{
    if (mpMetaFile)
        mpMetaFile->AddAction(new MetaPushAction(nFlags));

    maOutDevStateStack.emplace_back();
    OutDevState& rState = maOutDevStateStack.back();
    vcl::State& rState = maOutDevStateStack.back();

    rState.mnFlags = nFlags;

    if (nFlags & PushFlags::LINECOLOR && mbLineColor)
    if (nFlags & vcl::PushFlags::LINECOLOR && mbLineColor)
        rState.mpLineColor = maLineColor;

    if (nFlags & PushFlags::FILLCOLOR && mbFillColor)
    if (nFlags & vcl::PushFlags::FILLCOLOR && mbFillColor)
        rState.mpFillColor = maFillColor;

    if (nFlags & PushFlags::FONT)
    if (nFlags & vcl::PushFlags::FONT)
        rState.mpFont = maFont;

    if (nFlags & PushFlags::TEXTCOLOR)
    if (nFlags & vcl::PushFlags::TEXTCOLOR)
        rState.mpTextColor = GetTextColor();

    if (nFlags & PushFlags::TEXTFILLCOLOR && IsTextFillColor())
    if (nFlags & vcl::PushFlags::TEXTFILLCOLOR && IsTextFillColor())
        rState.mpTextFillColor = GetTextFillColor();

    if (nFlags & PushFlags::TEXTLINECOLOR && IsTextLineColor())
    if (nFlags & vcl::PushFlags::TEXTLINECOLOR && IsTextLineColor())
        rState.mpTextLineColor = GetTextLineColor();

    if (nFlags & PushFlags::OVERLINECOLOR && IsOverlineColor())
    if (nFlags & vcl::PushFlags::OVERLINECOLOR && IsOverlineColor())
        rState.mpOverlineColor = GetOverlineColor();

    if (nFlags & PushFlags::TEXTALIGN)
    if (nFlags & vcl::PushFlags::TEXTALIGN)
        rState.meTextAlign = GetTextAlign();

    if (nFlags & PushFlags::TEXTLAYOUTMODE)
    if (nFlags & vcl::PushFlags::TEXTLAYOUTMODE)
        rState.mnTextLayoutMode = GetLayoutMode();

    if (nFlags & PushFlags::TEXTLANGUAGE)
    if (nFlags & vcl::PushFlags::TEXTLANGUAGE)
        rState.meTextLanguage = GetDigitLanguage();

    if (nFlags & PushFlags::RASTEROP)
    if (nFlags & vcl::PushFlags::RASTEROP)
        rState.meRasterOp = GetRasterOp();

    if (nFlags & PushFlags::MAPMODE)
    if (nFlags & vcl::PushFlags::MAPMODE)
    {
        rState.mpMapMode = maMapMode;
        rState.mbMapActive = mbMap;
    }

    if (nFlags & PushFlags::CLIPREGION && mbClipRegion)
    if (nFlags & vcl::PushFlags::CLIPREGION && mbClipRegion)
        rState.mpClipRegion.reset(new vcl::Region(maRegion));

    if (nFlags & PushFlags::REFPOINT && mbRefPoint)
    if (nFlags & vcl::PushFlags::REFPOINT && mbRefPoint)
        rState.mpRefPoint = maRefPoint;

    if (mpAlphaVDev)
@@ -103,12 +103,12 @@ void OutputDevice::Pop()
        SAL_WARN( "vcl.gdi", "OutputDevice::Pop() without OutputDevice::Push()" );
        return;
    }
    const OutDevState& rState = maOutDevStateStack.back();
    const vcl::State& rState = maOutDevStateStack.back();

    if( mpAlphaVDev )
        mpAlphaVDev->Pop();

    if ( rState.mnFlags & PushFlags::LINECOLOR )
    if ( rState.mnFlags & vcl::PushFlags::LINECOLOR )
    {
        if ( rState.mpLineColor )
            SetLineColor( *rState.mpLineColor );
@@ -116,7 +116,7 @@ void OutputDevice::Pop()
            SetLineColor();
    }

    if ( rState.mnFlags & PushFlags::FILLCOLOR )
    if ( rState.mnFlags & vcl::PushFlags::FILLCOLOR )
    {
        if ( rState.mpFillColor )
            SetFillColor( *rState.mpFillColor );
@@ -124,13 +124,13 @@ void OutputDevice::Pop()
            SetFillColor();
    }

    if ( rState.mnFlags & PushFlags::FONT )
    if ( rState.mnFlags & vcl::PushFlags::FONT )
        SetFont( *rState.mpFont );

    if ( rState.mnFlags & PushFlags::TEXTCOLOR )
    if ( rState.mnFlags & vcl::PushFlags::TEXTCOLOR )
        SetTextColor( *rState.mpTextColor );

    if ( rState.mnFlags & PushFlags::TEXTFILLCOLOR )
    if ( rState.mnFlags & vcl::PushFlags::TEXTFILLCOLOR )
    {
        if ( rState.mpTextFillColor )
            SetTextFillColor( *rState.mpTextFillColor );
@@ -138,7 +138,7 @@ void OutputDevice::Pop()
            SetTextFillColor();
    }

    if ( rState.mnFlags & PushFlags::TEXTLINECOLOR )
    if ( rState.mnFlags & vcl::PushFlags::TEXTLINECOLOR )
    {
        if ( rState.mpTextLineColor )
            SetTextLineColor( *rState.mpTextLineColor );
@@ -146,7 +146,7 @@ void OutputDevice::Pop()
            SetTextLineColor();
    }

    if ( rState.mnFlags & PushFlags::OVERLINECOLOR )
    if ( rState.mnFlags & vcl::PushFlags::OVERLINECOLOR )
    {
        if ( rState.mpOverlineColor )
            SetOverlineColor( *rState.mpOverlineColor );
@@ -154,19 +154,19 @@ void OutputDevice::Pop()
            SetOverlineColor();
    }

    if ( rState.mnFlags & PushFlags::TEXTALIGN )
    if ( rState.mnFlags & vcl::PushFlags::TEXTALIGN )
        SetTextAlign( rState.meTextAlign );

    if( rState.mnFlags & PushFlags::TEXTLAYOUTMODE )
    if( rState.mnFlags & vcl::PushFlags::TEXTLAYOUTMODE )
        SetLayoutMode( rState.mnTextLayoutMode );

    if( rState.mnFlags & PushFlags::TEXTLANGUAGE )
    if( rState.mnFlags & vcl::PushFlags::TEXTLANGUAGE )
        SetDigitLanguage( rState.meTextLanguage );

    if ( rState.mnFlags & PushFlags::RASTEROP )
    if ( rState.mnFlags & vcl::PushFlags::RASTEROP )
        SetRasterOp( rState.meRasterOp );

    if ( rState.mnFlags & PushFlags::MAPMODE )
    if ( rState.mnFlags & vcl::PushFlags::MAPMODE )
    {
        if ( rState.mpMapMode )
            SetMapMode( *rState.mpMapMode );
@@ -175,10 +175,10 @@ void OutputDevice::Pop()
        mbMap = rState.mbMapActive;
    }

    if ( rState.mnFlags & PushFlags::CLIPREGION )
    if ( rState.mnFlags & vcl::PushFlags::CLIPREGION )
        SetDeviceClipRegion( rState.mpClipRegion.get() );

    if ( rState.mnFlags & PushFlags::REFPOINT )
    if ( rState.mnFlags & vcl::PushFlags::REFPOINT )
    {
        if ( rState.mpRefPoint )
            SetRefPoint( *rState.mpRefPoint );
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index c62ab819..bab6b14 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -54,7 +54,7 @@

#define TEXT_DRAW_ELLIPSIS  (DrawTextFlags::EndEllipsis | DrawTextFlags::PathEllipsis | DrawTextFlags::NewsEllipsis)

void OutputDevice::SetLayoutMode( ComplexTextLayoutFlags nTextLayoutMode )
void OutputDevice::SetLayoutMode( vcl::text::ComplexTextLayoutFlags nTextLayoutMode )
{
    if( mpMetaFile )
        mpMetaFile->AddAction( new MetaLayoutModeAction( nTextLayoutMode ) );
@@ -1138,11 +1138,11 @@ vcl::text::ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
    if( nEndIndex < nMinIndex )
        nEndIndex = nMinIndex;

    if( mnTextLayoutMode & ComplexTextLayoutFlags::BiDiRtl )
    if( mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::BiDiRtl )
        nLayoutFlags |= SalLayoutFlags::BiDiRtl;
    if( mnTextLayoutMode & ComplexTextLayoutFlags::BiDiStrong )
    if( mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::BiDiStrong )
        nLayoutFlags |= SalLayoutFlags::BiDiStrong;
    else if( !(mnTextLayoutMode & ComplexTextLayoutFlags::BiDiRtl) )
    else if( !(mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::BiDiRtl) )
    {
        // Disable Bidi if no RTL hint and only known LTR codes used.
        bool bAllLtr = true;
@@ -1168,7 +1168,7 @@ vcl::text::ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
    if( maFont.IsVertical() )
        nLayoutFlags |= SalLayoutFlags::Vertical;

    if( meTextLanguage ) //TODO: (mnTextLayoutMode & ComplexTextLayoutFlags::SubstituteDigits)
    if( meTextLanguage ) //TODO: (mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::SubstituteDigits)
    {
        // disable character localization when no digits used
        const sal_Unicode* pBase = rStr.getStr();
@@ -1196,10 +1196,10 @@ vcl::text::ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
    }

    // right align for RTL text, DRAWPOS_REVERSED, RTL window style
    bool bRightAlign = bool(mnTextLayoutMode & ComplexTextLayoutFlags::BiDiRtl);
    if( mnTextLayoutMode & ComplexTextLayoutFlags::TextOriginLeft )
    bool bRightAlign = bool(mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::BiDiRtl);
    if( mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginLeft )
        bRightAlign = false;
    else if ( mnTextLayoutMode & ComplexTextLayoutFlags::TextOriginRight )
    else if ( mnTextLayoutMode & vcl::text::ComplexTextLayoutFlags::TextOriginRight )
        bRightAlign = true;
    // SSA: hack for western office, ie text get right aligned
    //      for debugging purposes of mirrored UI
@@ -1556,7 +1556,7 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const tools::Recta
            // Set clipping
            if ( nStyle & DrawTextFlags::Clip )
            {
                rTargetDevice.Push( PushFlags::CLIPREGION );
                rTargetDevice.Push( vcl::PushFlags::CLIPREGION );
                rTargetDevice.IntersectClipRegion( rRect );
            }

@@ -1673,7 +1673,7 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const tools::Recta

        if ( nStyle & DrawTextFlags::Clip )
        {
            rTargetDevice.Push( PushFlags::CLIPREGION );
            rTargetDevice.Push( vcl::PushFlags::CLIPREGION );
            rTargetDevice.IntersectClipRegion( rRect );
            _rLayout.DrawText( aPos, aStr, 0, aStr.getLength(), pVector, pDisplayText );
            if ( bDrawMnemonics && nMnemonicPos != -1 )
diff --git a/vcl/source/outdev/textline.cxx b/vcl/source/outdev/textline.cxx
index 2e8edc4..0b3ca86 100644
--- a/vcl/source/outdev/textline.cxx
+++ b/vcl/source/outdev/textline.cxx
@@ -697,8 +697,8 @@ void OutputDevice::ImplDrawStrikeoutChar( tools::Long nBaseX, tools::Long nBaseY
    nBaseY += nDistY;

    // strikeout text has to be left aligned
    ComplexTextLayoutFlags nOrigTLM = mnTextLayoutMode;
    mnTextLayoutMode = ComplexTextLayoutFlags::BiDiStrong;
    vcl::text::ComplexTextLayoutFlags nOrigTLM = mnTextLayoutMode;
    mnTextLayoutMode = vcl::text::ComplexTextLayoutFlags::BiDiStrong;
    pLayout = ImplLayout( aStrikeoutText, 0, aStrikeoutText.getLength() );
    mnTextLayoutMode = nOrigTLM;

@@ -725,7 +725,7 @@ void OutputDevice::ImplDrawStrikeoutChar( tools::Long nBaseX, tools::Long nBaseY
        aPixelRect = aPoly.GetBoundRect();
    }

    Push( PushFlags::CLIPREGION );
    Push( vcl::PushFlags::CLIPREGION );
    IntersectClipRegion( PixelToLogic(aPixelRect) );
    if( mbInitClipRegion )
        InitClipRegion();
diff --git a/vcl/source/outdev/transparent.cxx b/vcl/source/outdev/transparent.cxx
index 047723f..7bec7d5 100644
--- a/vcl/source/outdev/transparent.cxx
+++ b/vcl/source/outdev/transparent.cxx
@@ -200,7 +200,7 @@ void OutputDevice::DrawInvisiblePolygon( const tools::PolyPolygon& rPolyPoly )
        return;

    // we assume that the border is NOT to be drawn transparently???
    Push( PushFlags::FILLCOLOR );
    Push( vcl::PushFlags::FILLCOLOR );
    SetFillColor();
    DrawPolyPolygon( rPolyPoly );
    Pop();
@@ -505,7 +505,7 @@ void OutputDevice::EmulateDrawTransparent ( const tools::PolyPolygon& rPolyPoly,

                    if( mbLineColor )
                    {
                        Push( PushFlags::FILLCOLOR );
                        Push( vcl::PushFlags::FILLCOLOR );
                        SetFillColor();
                        DrawPolyPolygon( rPolyPoly );
                        Pop();
@@ -818,7 +818,7 @@ void ImplConvertTransparentAction( GDIMetaFile&        o_rMtf,
        // #i10613# Respect transparency for draw color
        if (nTransparency)
        {
            o_rMtf.AddAction(new MetaPushAction(PushFlags::LINECOLOR|PushFlags::FILLCOLOR));
            o_rMtf.AddAction(new MetaPushAction(vcl::PushFlags::LINECOLOR|vcl::PushFlags::FILLCOLOR));

            // assume white background for alpha blending
            Color aLineColor(rStateOutDev.GetLineColor());
@@ -1754,7 +1754,7 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, 
                        ScopedVclPtrInstance<VirtualDevice> aPaintVDev; // into this one, we render.
                        aPaintVDev->SetBackground( aBackgroundComponent.aBgColor );

                        rOutMtf.AddAction( new MetaPushAction( PushFlags::MAPMODE ) );
                        rOutMtf.AddAction( new MetaPushAction( vcl::PushFlags::MAPMODE ) );
                        rOutMtf.AddAction( new MetaMapModeAction() );

                        aPaintVDev->SetDrawMode( GetDrawMode() );
diff --git a/vcl/source/outdev/wallpaper.cxx b/vcl/source/outdev/wallpaper.cxx
index 2223eba..a260af4 100644
--- a/vcl/source/outdev/wallpaper.cxx
+++ b/vcl/source/outdev/wallpaper.cxx
@@ -202,7 +202,7 @@ void OutputDevice::DrawBitmapWallpaper( tools::Long nX, tools::Long nY,

    mpMetaFile = nullptr;
    EnableMapMode( false );
    Push( PushFlags::CLIPREGION );
    Push( vcl::PushFlags::CLIPREGION );
    IntersectClipRegion( tools::Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ) );

    switch( eStyle )
@@ -376,7 +376,7 @@ void OutputDevice::DrawGradientWallpaper( tools::Long nX, tools::Long nY,

    mpMetaFile = nullptr;
    EnableMapMode( false );
    Push( PushFlags::CLIPREGION );
    Push( vcl::PushFlags::CLIPREGION );
    IntersectClipRegion( tools::Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ) );

    DrawGradient( aBound, rWallpaper.GetGradient() );
diff --git a/vcl/source/treelist/headbar.cxx b/vcl/source/treelist/headbar.cxx
index aa1b8cf..3bd6bba 100644
--- a/vcl/source/treelist/headbar.cxx
+++ b/vcl/source/treelist/headbar.cxx
@@ -444,7 +444,7 @@ void HeaderBar::ImplDrawItem(vcl::RenderContext& rRenderContext, sal_uInt16 nPos
    {
        if (aSelectionTextColor != COL_TRANSPARENT)
        {
            rRenderContext.Push(PushFlags::TEXTCOLOR);
            rRenderContext.Push(vcl::PushFlags::TEXTCOLOR);
            rRenderContext.SetTextColor(aSelectionTextColor);
        }
        if (IsEnabled())
diff --git a/vcl/source/treelist/svimpbox.cxx b/vcl/source/treelist/svimpbox.cxx
index 077e897..f5d48c4 100644
--- a/vcl/source/treelist/svimpbox.cxx
+++ b/vcl/source/treelist/svimpbox.cxx
@@ -1015,7 +1015,7 @@ void SvImpLBox::DrawNet(vcl::RenderContext& rRenderContext)

    DBG_ASSERT(pFirstDynamicTab,"No Tree!");

    rRenderContext.Push(PushFlags::LINECOLOR);
    rRenderContext.Push(vcl::PushFlags::LINECOLOR);

    const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
    Color aCol = rStyleSettings.GetFaceColor();
diff --git a/vcl/source/window/decoview.cxx b/vcl/source/window/decoview.cxx
index b43b137..7934358 100644
--- a/vcl/source/window/decoview.cxx
+++ b/vcl/source/window/decoview.cxx
@@ -172,7 +172,7 @@ void ImplDrawSymbol( OutputDevice* pDev, tools::Rectangle nRect, const SymbolTyp
            aTriangle.SetPoint(Point(nRect.Left(), aCenter.Y()), 1);
            aTriangle.SetPoint(Point(nRect.Left() + n2, aCenter.Y() + n2), 2);

            pDev->Push(PushFlags::LINECOLOR);
            pDev->Push(vcl::PushFlags::LINECOLOR);
            pDev->SetLineColor();
            pDev->DrawPolygon(aTriangle);
            pDev->Pop();
@@ -198,7 +198,7 @@ void ImplDrawSymbol( OutputDevice* pDev, tools::Rectangle nRect, const SymbolTyp
            aTriangle.SetPoint(Point(nRect.Right(), aCenter.Y()), 1);
            aTriangle.SetPoint(Point(nRect.Right() - n2, aCenter.Y() + n2), 2);

            pDev->Push(PushFlags::LINECOLOR);
            pDev->Push(vcl::PushFlags::LINECOLOR);
            pDev->SetLineColor();
            pDev->DrawPolygon(aTriangle);
            pDev->Pop();
@@ -1009,7 +1009,7 @@ void DecorationView::DrawSeparator( const Point& rStart, const Point& rStop, boo
            return;
    }

    mpOutDev->Push( PushFlags::LINECOLOR );
    mpOutDev->Push( vcl::PushFlags::LINECOLOR );
    if ( rStyleSettings.GetOptions() & StyleSettingsOptions::Mono )
        mpOutDev->SetLineColor( COL_BLACK );
    else
diff --git a/vcl/source/window/menubarwindow.cxx b/vcl/source/window/menubarwindow.cxx
index 5879eed..4ac2211 100644
--- a/vcl/source/window/menubarwindow.cxx
+++ b/vcl/source/window/menubarwindow.cxx
@@ -610,7 +610,7 @@ void MenuBarWindow::HighlightItem(vcl::RenderContext& rRenderContext, sal_uInt16
            {
                // #107747# give menuitems the height of the menubar
                tools::Rectangle aRect(Point(nX, 1), Size(pData->aSz.Width(), aOutputSize.Height() - 2));
                rRenderContext.Push(PushFlags::CLIPREGION);
                rRenderContext.Push(vcl::PushFlags::CLIPREGION);
                rRenderContext.IntersectClipRegion(aRect);
                bool bRollover, bHighlight;
                if (!ImplGetSVData()->maNWFData.mbRolloverMenubar)
@@ -903,7 +903,7 @@ void MenuBarWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Recta
    if (!rRenderContext.IsNativeControlSupported( ControlType::Menubar, ControlPart::Entire) &&
        rStyleSettings.GetHighContrastMode())
    {
        pBuffer->Push(PushFlags::LINECOLOR | PushFlags::MAPMODE);
        pBuffer->Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::MAPMODE);
        pBuffer->SetLineColor(COL_WHITE);
        pBuffer->SetMapMode(MapMode(MapUnit::MapPixel));
        Size aSize = GetSizePixel();
diff --git a/vcl/source/window/menufloatingwindow.cxx b/vcl/source/window/menufloatingwindow.cxx
index a5509f2..f78036a 100644
--- a/vcl/source/window/menufloatingwindow.cxx
+++ b/vcl/source/window/menufloatingwindow.cxx
@@ -863,7 +863,7 @@ void MenuFloatingWindow::RenderHighlightItem(vcl::RenderContext& rRenderContext,
                if (rRenderContext.IsNativeControlSupported(ControlType::MenuPopup, ControlPart::Entire))
                {
                    Size aPxSize(GetOutputSizePixel());
                    rRenderContext.Push(PushFlags::CLIPREGION);
                    rRenderContext.Push(vcl::PushFlags::CLIPREGION);
                    rRenderContext.IntersectClipRegion(tools::Rectangle(Point(nX, nY), Size(aSz.Width(), pData->aSz.Height())));
                    tools::Rectangle aCtrlRect(Point(nX, 0), Size(aPxSize.Width()-nX, aPxSize.Height()));
                    MenupopupValue aVal(pMenu->nTextPos-GUTTERBORDER, aItemRect);
@@ -1191,7 +1191,7 @@ void MenuFloatingWindow::Paint(vcl::RenderContext& rRenderContext, const tools::

    // Set the clip before the buffering starts: rPaintRect may be larger than the current clip,
    // this way the buffer -> render context copy happens with this clip.
    rRenderContext.Push(PushFlags::CLIPREGION);
    rRenderContext.Push(vcl::PushFlags::CLIPREGION);
    rRenderContext.SetClipRegion(vcl::Region(rPaintRect));

    // Make sure that all actual rendering happens in one go to avoid flicker.
diff --git a/vcl/source/window/paint.cxx b/vcl/source/window/paint.cxx
index 0db0e6c..65451c0 100644
--- a/vcl/source/window/paint.cxx
+++ b/vcl/source/window/paint.cxx
@@ -65,22 +65,22 @@ PaintBufferGuard::PaintBufferGuard(ImplFrameData* pFrameData, vcl::Window* pWind
    //else
        //SAL_WARN("vcl.window", "the root of the double-buffering hierarchy should not have a transparent background");

    PushFlags nFlags = PushFlags::NONE;
    nFlags |= PushFlags::CLIPREGION;
    nFlags |= PushFlags::FILLCOLOR;
    nFlags |= PushFlags::FONT;
    nFlags |= PushFlags::LINECOLOR;
    nFlags |= PushFlags::MAPMODE;
    vcl::PushFlags nFlags = vcl::PushFlags::NONE;
    nFlags |= vcl::PushFlags::CLIPREGION;
    nFlags |= vcl::PushFlags::FILLCOLOR;
    nFlags |= vcl::PushFlags::FONT;
    nFlags |= vcl::PushFlags::LINECOLOR;
    nFlags |= vcl::PushFlags::MAPMODE;
    maSettings = pFrameData->mpBuffer->GetSettings();
    nFlags |= PushFlags::REFPOINT;
    nFlags |= PushFlags::TEXTCOLOR;
    nFlags |= PushFlags::TEXTLINECOLOR;
    nFlags |= PushFlags::OVERLINECOLOR;
    nFlags |= PushFlags::TEXTFILLCOLOR;
    nFlags |= PushFlags::TEXTALIGN;
    nFlags |= PushFlags::RASTEROP;
    nFlags |= PushFlags::TEXTLAYOUTMODE;
    nFlags |= PushFlags::TEXTLANGUAGE;
    nFlags |= vcl::PushFlags::REFPOINT;
    nFlags |= vcl::PushFlags::TEXTCOLOR;
    nFlags |= vcl::PushFlags::TEXTLINECOLOR;
    nFlags |= vcl::PushFlags::OVERLINECOLOR;
    nFlags |= vcl::PushFlags::TEXTFILLCOLOR;
    nFlags |= vcl::PushFlags::TEXTALIGN;
    nFlags |= vcl::PushFlags::RASTEROP;
    nFlags |= vcl::PushFlags::TEXTLAYOUTMODE;
    nFlags |= vcl::PushFlags::TEXTLANGUAGE;
    pFrameData->mpBuffer->Push(nFlags);
    auto& rDev = *pWindow->GetOutDev();
    pFrameData->mpBuffer->SetClipRegion(rDev.GetClipRegion());
@@ -370,7 +370,7 @@ void RenderTools::DrawSelectionBackground(vcl::RenderContext& rRenderContext, vc
        aRect.AdjustRight(1 );
        aRect.AdjustBottom(1 );
    }
    rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
    rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);

    if (bDrawBorder)
        rRenderContext.SetLineColor(bDark ? COL_WHITE : (bBright ? COL_BLACK : aSelectionBorderColor));
diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx
index 48694de..58e6dda 100644
--- a/vcl/source/window/status.cxx
+++ b/vcl/source/window/status.cxx
@@ -504,7 +504,7 @@ void DrawProgress(vcl::Window* pWindow, vcl::RenderContext& rRenderContext, cons
                                                InvalidateFlags::Transparent);
                pEraseWindow->PaintImmediately();
            }
            rRenderContext.Push(PushFlags::CLIPREGION);
            rRenderContext.Push(vcl::PushFlags::CLIPREGION);
            rRenderContext.IntersectClipRegion(rFramePosSize);
        }

@@ -695,7 +695,7 @@ void StatusBar::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle

    if (mbProgressMode)
    {
        rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
        rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);

        const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
        Color aProgressColor = rStyleSettings.GetHighlightColor();
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 1f142ab..6cfe69a 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -486,7 +486,7 @@ void ToolBox::ImplDrawBackground(vcl::RenderContext& rRenderContext, const tools
    if (IsInPaint())
        aPaintRegion.Intersect(GetOutDev()->GetActiveClipRegion());

    rRenderContext.Push(PushFlags::CLIPREGION);
    rRenderContext.Push(vcl::PushFlags::CLIPREGION);
    rRenderContext.IntersectClipRegion( aPaintRegion );

    if (!pWrapper)
@@ -534,7 +534,7 @@ void ToolBox::ImplErase(vcl::RenderContext& rRenderContext, const tools::Rectang
    {
        if (GetStyle() & WB_3DLOOK)
        {
            rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR);
            rRenderContext.Push(vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR);
            rRenderContext.SetLineColor();
            if (bHasOpenPopup)
                // choose the same color as the popup will use
@@ -2446,7 +2446,7 @@ void ToolBox::ImplDrawMenuButton(vcl::RenderContext& rRenderContext, bool bHighl
    // execute pending paint requests
    ImplCheckUpdate();

    rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR);
    rRenderContext.Push(vcl::PushFlags::FILLCOLOR | vcl::PushFlags::LINECOLOR);

    // draw the 'more' indicator / button (>>)
    ImplErase(rRenderContext, mpData->maMenubuttonItem.maRect, bHighlight);
diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
index 9b11ced..77c1566 100644
--- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
@@ -256,9 +256,9 @@ const unsigned char* FreetypeFontInfo::GetTable( const char* pTag, sal_uLong* pL
    unsigned nFormat = GetUInt( pBuffer );

    const unsigned char* p = pBuffer + 12;
    if( nFormat == T_ttcf )         // TTC_MAGIC
    if( nFormat == ::T_ttcf )         // TTC_MAGIC
        p += GetUInt( p + 4 * mnFaceNum );
    else if( nFormat != 0x00010000 && nFormat != T_true && nFormat != T_otto) // TTF_MAGIC and Apple TTF Magic and PS-OpenType font
    else if( nFormat != 0x00010000 && nFormat != ::T_true && nFormat != ::T_otto) // TTF_MAGIC and Apple TTF Magic and PS-OpenType font
        return nullptr;

    // walk table directory until match
diff --git a/vcl/workben/vcldemo.cxx b/vcl/workben/vcldemo.cxx
index 27a91e9..61c2d65 100644
--- a/vcl/workben/vcldemo.cxx
+++ b/vcl/workben/vcldemo.cxx
@@ -979,7 +979,7 @@ public:
            for (int i = 0; i < 2; ++i)
            {
                sal_uInt16 nHue = 0;
                rDev.Push(PushFlags::CLIPREGION);
                rDev.Push(vcl::PushFlags::CLIPREGION);
                tools::Rectangle aOuter = aRegions[i];
                tools::Rectangle aInner = aOuter;
                while (aInner.GetWidth() > nLimits[i] && aInner.GetHeight() > nLimits[i])
@@ -999,7 +999,7 @@ public:
                std::vector<tools::Rectangle> aPieces(DemoRenderer::partition(aOuter, 2, 2));
                for (int j = 0; j < std::min(aOuter.GetWidth(), aOuter.GetHeight())/5; ++j)
                {
                    rDev.Push(PushFlags::CLIPREGION);
                    rDev.Push(vcl::PushFlags::CLIPREGION);

                    vcl::Region aClipRegion;
                    for (int i = 0; i < 4; ++i)
@@ -1025,7 +1025,7 @@ public:
                bool bDone = false;
                for (int j = 0; !bDone; ++j)
                {
                    rDev.Push(PushFlags::CLIPREGION);
                    rDev.Push(vcl::PushFlags::CLIPREGION);

                    for (int i = 0; i < 4; ++i)
                    {
@@ -1979,7 +1979,7 @@ public:

        Wallpaper aWallpaper(COL_GREEN);

        rRenderContext.Push(PushFlags::CLIPREGION);
        rRenderContext.Push(vcl::PushFlags::CLIPREGION);
        rRenderContext.IntersectClipRegion(aClip);
        rRenderContext.DrawWallpaper(aWholeSize, aWallpaper);
        rRenderContext.Pop();
diff --git a/writerfilter/source/dmapper/SdtHelper.cxx b/writerfilter/source/dmapper/SdtHelper.cxx
index dd3b7c7..7bf2334 100644
--- a/writerfilter/source/dmapper/SdtHelper.cxx
+++ b/writerfilter/source/dmapper/SdtHelper.cxx
@@ -37,7 +37,7 @@ static awt::Size lcl_getOptimalWidth(const StyleSheetTablePtr& pStyleSheet,

    MapMode aMap(MapUnit::Map100thMM);
    OutputDevice* pOut = Application::GetDefaultDevice();
    pOut->Push(PushFlags::FONT | PushFlags::MAPMODE);
    pOut->Push(vcl::PushFlags::FONT | vcl::PushFlags::MAPMODE);

    PropertyMapPtr pDefaultCharProps = pStyleSheet->GetDefaultCharProps();
    vcl::Font aFont(pOut->GetFont());