diff options
-rw-r--r-- | include/vcl/salnativewidgets.hxx | 53 | ||||
-rw-r--r-- | vcl/inc/ControlCacheKey.hxx | 79 | ||||
-rw-r--r-- | vcl/inc/opengl/win/gdiimpl.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/opengl/x11/gdiimpl.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/svdata.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/unx/gtk/gtkgdi.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/unx/salgdi.h | 1 | ||||
-rw-r--r-- | vcl/inc/unx/x11/x11gdiimpl.h | 1 | ||||
-rw-r--r-- | vcl/opengl/win/gdiimpl.cxx | 1 | ||||
-rw-r--r-- | vcl/opengl/x11/gdiimpl.cxx | 1 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/gdiimpl.cxx | 1 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/gdiimpl.hxx | 1 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/salgdi2.cxx | 1 | ||||
-rw-r--r-- | vcl/unx/gtk/salnativewidgets-gtk.cxx | 1 | ||||
-rw-r--r-- | vcl/win/gdi/gdiimpl.cxx | 1 | ||||
-rw-r--r-- | vcl/win/gdi/gdiimpl.hxx | 1 | ||||
-rw-r--r-- | vcl/win/gdi/salnativewidgets-luna.cxx | 2 |
17 files changed, 94 insertions, 54 deletions
diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx index 5d5bd1c2707d..30997a984911 100644 --- a/include/vcl/salnativewidgets.hxx +++ b/include/vcl/salnativewidgets.hxx @@ -226,59 +226,6 @@ namespace o3tl template<> struct typed_flags<ControlState> : is_typed_flags<ControlState, 0xc06f> {}; } -class ControlCacheKey -{ -public: - ControlType mnType; - ControlPart mnPart; - ControlState mnState; - Size maSize; - - ControlCacheKey(ControlType nType, ControlPart nPart, ControlState nState, const Size& rSize) - : mnType(nType) - , mnPart(nPart) - , mnState(nState) - , maSize(rSize) - {} - - bool operator==(ControlCacheKey const& aOther) const - { - return mnType == aOther.mnType - && mnPart == aOther.mnPart - && mnState == aOther.mnState - && maSize.Width() == aOther.maSize.Width() - && maSize.Height() == aOther.maSize.Height(); - } - - bool canCacheControl() - { - switch(mnType) - { - case ControlType::Checkbox: - case ControlType::Radiobutton: - case ControlType::ListNode: - case ControlType::Slider: - case ControlType::Progress: - // FIXME: these guys have complex state hidden in ImplControlValue - // structs which affects rendering, needs to be a and needs to be - // part of the key to our cache. - case ControlType::Spinbox: - case ControlType::SpinButtons: - case ControlType::TabItem: - return false; - - case ControlType::Menubar: - if (mnPart == ControlPart::Entire) - return false; - break; - - default: - break; - } - return true; - } -}; - /* ButtonValue: * * Identifies the tri-state value options diff --git a/vcl/inc/ControlCacheKey.hxx b/vcl/inc/ControlCacheKey.hxx new file mode 100644 index 000000000000..20baa6e3759b --- /dev/null +++ b/vcl/inc/ControlCacheKey.hxx @@ -0,0 +1,79 @@ +/* -*- 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 . + */ + +#ifndef INCLUDED_VCL_INC_CONTROLCACHEKEY_HXX +#define INCLUDED_VCL_INC_CONTROLCACHEKEY_HXX + +#include <tools/gen.hxx> +#include <vcl/salnativewidgets.hxx> + +class ControlCacheKey +{ +public: + ControlType mnType; + ControlPart mnPart; + ControlState mnState; + Size maSize; + + ControlCacheKey(ControlType nType, ControlPart nPart, ControlState nState, const Size& rSize) + : mnType(nType) + , mnPart(nPart) + , mnState(nState) + , maSize(rSize) + {} + + bool operator==(ControlCacheKey const& aOther) const + { + return mnType == aOther.mnType + && mnPart == aOther.mnPart + && mnState == aOther.mnState + && maSize.Width() == aOther.maSize.Width() + && maSize.Height() == aOther.maSize.Height(); + } + + bool canCacheControl() + { + switch(mnType) + { + case ControlType::Checkbox: + case ControlType::Radiobutton: + case ControlType::ListNode: + case ControlType::Slider: + case ControlType::Progress: + // FIXME: these guys have complex state hidden in ImplControlValue + // structs which affects rendering, needs to be a and needs to be + // part of the key to our cache. + case ControlType::Spinbox: + case ControlType::SpinButtons: + case ControlType::TabItem: + return false; + + case ControlType::Menubar: + if (mnPart == ControlPart::Entire) + return false; + break; + + default: + break; + } + return true; + } +}; + +#endif // INCLUDED_VCL_INC_CONTROLCACHEKEY_HXX
\ No newline at end of file diff --git a/vcl/inc/opengl/win/gdiimpl.hxx b/vcl/inc/opengl/win/gdiimpl.hxx index 1ea54be23dca..374d6ff42682 100644 --- a/vcl/inc/opengl/win/gdiimpl.hxx +++ b/vcl/inc/opengl/win/gdiimpl.hxx @@ -15,6 +15,7 @@ #include "openglgdiimpl.hxx" #include "win/salgdi.h" #include <vcl/opengl/OpenGLContext.hxx> +#include "ControlCacheKey.hxx" class WinOpenGLSalGraphicsImpl : public OpenGLSalGraphicsImpl { diff --git a/vcl/inc/opengl/x11/gdiimpl.hxx b/vcl/inc/opengl/x11/gdiimpl.hxx index 646b7a6aab26..9dacf6d20f0d 100644 --- a/vcl/inc/opengl/x11/gdiimpl.hxx +++ b/vcl/inc/opengl/x11/gdiimpl.hxx @@ -15,6 +15,7 @@ #include "unx/salgdi.h" #include "unx/x11/x11gdiimpl.h" #include "openglgdiimpl.hxx" +#include "ControlCacheKey.hxx" struct TextureCombo; diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 813565165361..a8b3ccbf690a 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -37,6 +37,7 @@ #include <list> #include <unordered_map> #include <boost/functional/hash.hpp> +#include "ControlCacheKey.hxx" struct ImplPostEventData; struct ImplTimerData; diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx index f780964c8694..23e423bb4c96 100644 --- a/vcl/inc/unx/gtk/gtkgdi.hxx +++ b/vcl/inc/unx/gtk/gtkgdi.hxx @@ -27,6 +27,7 @@ #include <gdk/gdkkeysyms.h> #include <unx/gtk/gtkframe.hxx> +#include "ControlCacheKey.hxx" #if GTK_CHECK_VERSION(3,0,0) diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h index ef7ad2cb8f45..fb7d0fe6265a 100644 --- a/vcl/inc/unx/salgdi.h +++ b/vcl/inc/unx/salgdi.h @@ -34,6 +34,7 @@ #include "salgeom.hxx" #include "sallayout.hxx" #include "vclpluginapi.h" +#include "ControlCacheKey.hxx" #include <deque> #include <memory> diff --git a/vcl/inc/unx/x11/x11gdiimpl.h b/vcl/inc/unx/x11/x11gdiimpl.h index c5043646e422..9d91ad28f48c 100644 --- a/vcl/inc/unx/x11/x11gdiimpl.h +++ b/vcl/inc/unx/x11/x11gdiimpl.h @@ -11,6 +11,7 @@ #define INCLUDED_VCL_INC_UNX_X11_X11GDIIMPL_HXX #include "unx/pixmap.hxx" +#include "ControlCacheKey.hxx" class ControlCacheKey; diff --git a/vcl/opengl/win/gdiimpl.cxx b/vcl/opengl/win/gdiimpl.cxx index ce61676ccdba..4209e0c41c49 100644 --- a/vcl/opengl/win/gdiimpl.cxx +++ b/vcl/opengl/win/gdiimpl.cxx @@ -17,6 +17,7 @@ #include <win/salframe.h> #include <win/salinst.h> #include <epoxy/wgl.h> +#include "ControlCacheKey.hxx" static std::vector<HGLRC> g_vShareList; static bool g_bAnyCurrent; diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx index 164fc717e498..c6807de25066 100644 --- a/vcl/opengl/x11/gdiimpl.cxx +++ b/vcl/opengl/x11/gdiimpl.cxx @@ -30,6 +30,7 @@ #include <vcl/opengl/OpenGLHelper.hxx> #include <o3tl/lru_map.hxx> +#include "ControlCacheKey.hxx" static std::vector<GLXContext> g_vShareList; static bool g_bAnyCurrent; diff --git a/vcl/unx/generic/gdi/gdiimpl.cxx b/vcl/unx/generic/gdi/gdiimpl.cxx index e929f6be0615..5e44e4b2fd30 100644 --- a/vcl/unx/generic/gdi/gdiimpl.cxx +++ b/vcl/unx/generic/gdi/gdiimpl.cxx @@ -48,6 +48,7 @@ #include "basegfx/matrix/b2dhommatrixtools.hxx" #include "basegfx/polygon/b2dpolypolygoncutter.hxx" #include "basegfx/polygon/b2dtrapezoid.hxx" +#include "ControlCacheKey.hxx" #undef SALGDI2_TESTTRANS diff --git a/vcl/unx/generic/gdi/gdiimpl.hxx b/vcl/unx/generic/gdi/gdiimpl.hxx index b277b9a885a4..2ad9b96bc1ea 100644 --- a/vcl/unx/generic/gdi/gdiimpl.hxx +++ b/vcl/unx/generic/gdi/gdiimpl.hxx @@ -30,6 +30,7 @@ #include "salgdiimpl.hxx" #include <basegfx/polygon/b2dtrapezoid.hxx> +#include "ControlCacheKey.hxx" /* From <X11/Intrinsic.h> */ typedef unsigned long Pixel; diff --git a/vcl/unx/generic/gdi/salgdi2.cxx b/vcl/unx/generic/gdi/salgdi2.cxx index a600c31b5e0c..9b2b3c9db3a4 100644 --- a/vcl/unx/generic/gdi/salgdi2.cxx +++ b/vcl/unx/generic/gdi/salgdi2.cxx @@ -38,6 +38,7 @@ #include <vcl/bitmapaccess.hxx> #include <outdata.hxx> +#include "ControlCacheKey.hxx" void X11SalGraphics::CopyScreenArea( Display* pDisplay, Drawable aSrc, SalX11Screen nXScreenSrc, int nSrcDepth, diff --git a/vcl/unx/gtk/salnativewidgets-gtk.cxx b/vcl/unx/gtk/salnativewidgets-gtk.cxx index 8d0c96c42a1f..5e07ade6ea93 100644 --- a/vcl/unx/gtk/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/salnativewidgets-gtk.cxx @@ -44,6 +44,7 @@ #include <vcl/decoview.hxx> #include <vcl/opengl/OpenGLHelper.hxx> +#include "ControlCacheKey.hxx" typedef struct _cairo_font_options cairo_font_options_t; const char* const tabPrelitDataName="libreoffice-tab-is-prelit"; diff --git a/vcl/win/gdi/gdiimpl.cxx b/vcl/win/gdi/gdiimpl.cxx index 9c054665d0c0..250c2c84103e 100644 --- a/vcl/win/gdi/gdiimpl.cxx +++ b/vcl/win/gdi/gdiimpl.cxx @@ -38,6 +38,7 @@ #include "outdata.hxx" #include "win/salids.hrc" +#include "ControlCacheKey.hxx" #if defined _MSC_VER #ifndef min diff --git a/vcl/win/gdi/gdiimpl.hxx b/vcl/win/gdi/gdiimpl.hxx index e8235c79f746..e6a48a1e248c 100644 --- a/vcl/win/gdi/gdiimpl.hxx +++ b/vcl/win/gdi/gdiimpl.hxx @@ -23,6 +23,7 @@ #include <vcl/gradient.hxx> #include "svsys.h" +#include "ControlCacheKey.hxx" class WinSalGraphics; diff --git a/vcl/win/gdi/salnativewidgets-luna.cxx b/vcl/win/gdi/salnativewidgets-luna.cxx index 07586b4db0df..f5a17ef33538 100644 --- a/vcl/win/gdi/salnativewidgets-luna.cxx +++ b/vcl/win/gdi/salnativewidgets-luna.cxx @@ -49,7 +49,7 @@ #include <map> #include <string> #include <boost/optional.hpp> - +#include "ControlCacheKey.hxx" using namespace std; typedef map< wstring, HTHEME > ThemeMap; |