summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vcl/Library_vcl.mk1
-rw-r--r--vcl/headless/svpgdi.cxx8
-rw-r--r--vcl/inc/FileDefinitionWidgetDraw.hxx53
-rw-r--r--vcl/source/gdi/FileDefinitionWidgetDraw.cxx137
4 files changed, 198 insertions, 1 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index ba49a711ee1e..c22cc2cdf2eb 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -260,6 +260,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/gdi/svmconverter \
vcl/source/gdi/dibtools \
vcl/source/gdi/embeddedfontshelper \
+ vcl/source/gdi/FileDefinitionWidgetDraw \
vcl/source/gdi/WidgetDefinitionReader \
vcl/source/gdi/extoutdevdata \
vcl/source/gdi/gdimtf \
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index fafa73fa3c56..a2b7e7933c22 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -27,6 +27,8 @@
#include <headless/CustomWidgetDraw.hxx>
#include <saldatabasic.hxx>
+#include <FileDefinitionWidgetDraw.hxx>
+
#include <sal/log.hxx>
#include <tools/helpers.hxx>
#include <o3tl/safeint.hxx>
@@ -599,7 +601,11 @@ SvpSalGraphics::SvpSalGraphics()
, m_ePaintMode(PaintMode::Over)
, m_aTextRenderImpl(*this)
{
- if (comphelper::LibreOfficeKit::isActive())
+ bool bFileDefinitionsWidgetDraw = !!getenv("VCL_DRAW_WIDGETS_FROM_FILE");
+
+ if (bFileDefinitionsWidgetDraw)
+ m_pWidgetDraw.reset(new vcl::FileDefinitionWidgetDraw(*this));
+ else if (comphelper::LibreOfficeKit::isActive())
m_pWidgetDraw.reset(new vcl::CustomWidgetDraw(*this));
}
diff --git a/vcl/inc/FileDefinitionWidgetDraw.hxx b/vcl/inc/FileDefinitionWidgetDraw.hxx
new file mode 100644
index 000000000000..97181c17bbcb
--- /dev/null
+++ b/vcl/inc/FileDefinitionWidgetDraw.hxx
@@ -0,0 +1,53 @@
+/* -*- 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/.
+ *
+ */
+
+#ifndef INCLUDED_VCL_INC_FILEDEFINITIONWIDGETDRAW_HXX
+#define INCLUDED_VCL_INC_FILEDEFINITIONWIDGETDRAW_HXX
+
+#include <vcl/dllapi.h>
+#include "widgetdraw/WidgetDefinitionReader.hxx"
+#include "salgdi.hxx"
+#include "WidgetDrawInterface.hxx"
+
+namespace vcl
+{
+class FileDefinitionWidgetDraw : public vcl::WidgetDrawInterface
+{
+private:
+ SalGraphics& m_rGraphics;
+ WidgetDefinitionReader m_WidgetDefinitionReader;
+
+public:
+ FileDefinitionWidgetDraw(SalGraphics& rGraphics);
+
+ bool isNativeControlSupported(ControlType eType, ControlPart ePart) override;
+
+ bool hitTestNativeControl(ControlType eType, ControlPart ePart,
+ const tools::Rectangle& rBoundingControlRegion, const Point& aPos,
+ bool& rIsInside) override;
+
+ bool drawNativeControl(ControlType eType, ControlPart ePart,
+ const tools::Rectangle& rBoundingControlRegion, ControlState eState,
+ const ImplControlValue& aValue, const OUString& aCaptions) override;
+
+ bool getNativeControlRegion(ControlType eType, ControlPart ePart,
+ const tools::Rectangle& rBoundingControlRegion, ControlState eState,
+ const ImplControlValue& aValue, const OUString& aCaption,
+ tools::Rectangle& rNativeBoundingRegion,
+ tools::Rectangle& rNativeContentRegion) override;
+
+ bool updateSettings(AllSettings& rSettings) override;
+};
+
+} // end vcl namespace
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
new file mode 100644
index 000000000000..9c6dbdaa206a
--- /dev/null
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -0,0 +1,137 @@
+/* -*- 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/.
+ *
+ */
+
+#include <FileDefinitionWidgetDraw.hxx>
+
+#include <sal/config.h>
+#include <svdata.hxx>
+#include <rtl/bootstrap.hxx>
+#include <config_folders.h>
+
+namespace vcl
+{
+namespace
+{
+OUString lcl_getClassificationUserPath()
+{
+ OUString sPath("${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER
+ "/" SAL_CONFIGFILE("bootstrap") ":UserInstallation}/user/");
+ rtl::Bootstrap::expandMacros(sPath);
+ return sPath;
+}
+
+} // end anonymous namespace
+
+FileDefinitionWidgetDraw::FileDefinitionWidgetDraw(SalGraphics& rGraphics)
+ : m_rGraphics(rGraphics)
+ , m_WidgetDefinitionReader(lcl_getClassificationUserPath() + "definition.xml")
+{
+ m_WidgetDefinitionReader.read();
+
+ ImplSVData* pSVData = ImplGetSVData();
+ pSVData->maNWFData.mbNoFocusRects = true;
+ pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true;
+}
+
+bool FileDefinitionWidgetDraw::isNativeControlSupported(ControlType /*eType*/,
+ ControlPart /*ePart*/)
+{
+ return false;
+}
+
+bool FileDefinitionWidgetDraw::hitTestNativeControl(
+ ControlType /*eType*/, ControlPart /*ePart*/,
+ const tools::Rectangle& /*rBoundingControlRegion*/, const Point& /*aPos*/, bool& /*rIsInside*/)
+{
+ return false;
+}
+
+bool FileDefinitionWidgetDraw::drawNativeControl(ControlType /*eType*/, ControlPart /*ePart*/,
+ const tools::Rectangle& /*rControlRegion*/,
+ ControlState /*eState*/,
+ const ImplControlValue& /*rValue*/,
+ const OUString& /*aCaptions*/)
+{
+ (void)m_rGraphics; // avoid unused warning
+ return false;
+}
+
+bool FileDefinitionWidgetDraw::getNativeControlRegion(
+ ControlType /*eType*/, ControlPart /*ePart*/,
+ const tools::Rectangle& /*rBoundingControlRegion*/, ControlState /*eState*/,
+ const ImplControlValue& /*aValue*/, const OUString& /*aCaption*/,
+ tools::Rectangle& /*rNativeBoundingRegion*/, tools::Rectangle& /*rNativeContentRegion*/)
+{
+ return false;
+}
+
+bool FileDefinitionWidgetDraw::updateSettings(AllSettings& rSettings)
+{
+ StyleSettings aStyleSet = rSettings.GetStyleSettings();
+
+ aStyleSet.SetFaceColor(m_WidgetDefinitionReader.maFaceColor);
+ aStyleSet.SetCheckedColor(m_WidgetDefinitionReader.maCheckedColor);
+ aStyleSet.SetLightColor(m_WidgetDefinitionReader.maLightColor);
+ aStyleSet.SetLightBorderColor(m_WidgetDefinitionReader.maLightBorderColor);
+ aStyleSet.SetShadowColor(m_WidgetDefinitionReader.maShadowColor);
+ aStyleSet.SetDarkShadowColor(m_WidgetDefinitionReader.maDarkShadowColor);
+ aStyleSet.SetButtonTextColor(m_WidgetDefinitionReader.maButtonTextColor);
+ aStyleSet.SetButtonRolloverTextColor(m_WidgetDefinitionReader.maButtonRolloverTextColor);
+ aStyleSet.SetRadioCheckTextColor(m_WidgetDefinitionReader.maRadioCheckTextColor);
+ aStyleSet.SetGroupTextColor(m_WidgetDefinitionReader.maGroupTextColor);
+ aStyleSet.SetLabelTextColor(m_WidgetDefinitionReader.maLabelTextColor);
+ aStyleSet.SetWindowColor(m_WidgetDefinitionReader.maWindowColor);
+ aStyleSet.SetWindowTextColor(m_WidgetDefinitionReader.maWindowTextColor);
+ aStyleSet.SetDialogColor(m_WidgetDefinitionReader.maDialogColor);
+ aStyleSet.SetDialogTextColor(m_WidgetDefinitionReader.maDialogTextColor);
+ aStyleSet.SetWorkspaceColor(m_WidgetDefinitionReader.maWorkspaceColor);
+ aStyleSet.SetMonoColor(m_WidgetDefinitionReader.maMonoColor);
+ aStyleSet.SetFieldColor(m_WidgetDefinitionReader.maFieldColor);
+ aStyleSet.SetFieldTextColor(m_WidgetDefinitionReader.maFieldTextColor);
+ aStyleSet.SetFieldRolloverTextColor(m_WidgetDefinitionReader.maFieldRolloverTextColor);
+ aStyleSet.SetActiveColor(m_WidgetDefinitionReader.maActiveColor);
+ aStyleSet.SetActiveTextColor(m_WidgetDefinitionReader.maActiveTextColor);
+ aStyleSet.SetActiveBorderColor(m_WidgetDefinitionReader.maActiveBorderColor);
+ aStyleSet.SetDeactiveColor(m_WidgetDefinitionReader.maDeactiveColor);
+ aStyleSet.SetDeactiveTextColor(m_WidgetDefinitionReader.maDeactiveTextColor);
+ aStyleSet.SetDeactiveBorderColor(m_WidgetDefinitionReader.maDeactiveBorderColor);
+ aStyleSet.SetMenuColor(m_WidgetDefinitionReader.maMenuColor);
+ aStyleSet.SetMenuBarColor(m_WidgetDefinitionReader.maMenuBarColor);
+ aStyleSet.SetMenuBarRolloverColor(m_WidgetDefinitionReader.maMenuBarRolloverColor);
+ aStyleSet.SetMenuBorderColor(m_WidgetDefinitionReader.maMenuBorderColor);
+ aStyleSet.SetMenuTextColor(m_WidgetDefinitionReader.maMenuTextColor);
+ aStyleSet.SetMenuBarTextColor(m_WidgetDefinitionReader.maMenuBarTextColor);
+ aStyleSet.SetMenuBarRolloverTextColor(m_WidgetDefinitionReader.maMenuBarRolloverTextColor);
+ aStyleSet.SetMenuBarHighlightTextColor(m_WidgetDefinitionReader.maMenuBarHighlightTextColor);
+ aStyleSet.SetMenuHighlightColor(m_WidgetDefinitionReader.maMenuHighlightColor);
+ aStyleSet.SetMenuHighlightTextColor(m_WidgetDefinitionReader.maMenuHighlightTextColor);
+ aStyleSet.SetHighlightColor(m_WidgetDefinitionReader.maHighlightColor);
+ aStyleSet.SetHighlightTextColor(m_WidgetDefinitionReader.maHighlightTextColor);
+ aStyleSet.SetActiveTabColor(m_WidgetDefinitionReader.maActiveTabColor);
+ aStyleSet.SetInactiveTabColor(m_WidgetDefinitionReader.maInactiveTabColor);
+ aStyleSet.SetTabTextColor(m_WidgetDefinitionReader.maTabTextColor);
+ aStyleSet.SetTabRolloverTextColor(m_WidgetDefinitionReader.maTabRolloverTextColor);
+ aStyleSet.SetTabHighlightTextColor(m_WidgetDefinitionReader.maTabHighlightTextColor);
+ aStyleSet.SetDisableColor(m_WidgetDefinitionReader.maDisableColor);
+ aStyleSet.SetHelpColor(m_WidgetDefinitionReader.maHelpColor);
+ aStyleSet.SetHelpTextColor(m_WidgetDefinitionReader.maHelpTextColor);
+ aStyleSet.SetLinkColor(m_WidgetDefinitionReader.maLinkColor);
+ aStyleSet.SetVisitedLinkColor(m_WidgetDefinitionReader.maVisitedLinkColor);
+ aStyleSet.SetToolTextColor(m_WidgetDefinitionReader.maToolTextColor);
+ aStyleSet.SetFontColor(m_WidgetDefinitionReader.maFontColor);
+
+ rSettings.SetStyleSettings(aStyleSet);
+
+ return true;
+}
+
+} // end vcl namespace
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */