summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/vcl/salnativewidgets.hxx53
-rw-r--r--vcl/inc/ControlCacheKey.hxx79
-rw-r--r--vcl/inc/opengl/win/gdiimpl.hxx1
-rw-r--r--vcl/inc/opengl/x11/gdiimpl.hxx1
-rw-r--r--vcl/inc/svdata.hxx1
-rw-r--r--vcl/inc/unx/gtk/gtkgdi.hxx1
-rw-r--r--vcl/inc/unx/salgdi.h1
-rw-r--r--vcl/inc/unx/x11/x11gdiimpl.h1
-rw-r--r--vcl/opengl/win/gdiimpl.cxx1
-rw-r--r--vcl/opengl/x11/gdiimpl.cxx1
-rw-r--r--vcl/unx/generic/gdi/gdiimpl.cxx1
-rw-r--r--vcl/unx/generic/gdi/gdiimpl.hxx1
-rw-r--r--vcl/unx/generic/gdi/salgdi2.cxx1
-rw-r--r--vcl/unx/gtk/salnativewidgets-gtk.cxx1
-rw-r--r--vcl/win/gdi/gdiimpl.cxx1
-rw-r--r--vcl/win/gdi/gdiimpl.hxx1
-rw-r--r--vcl/win/gdi/salnativewidgets-luna.cxx2
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;