From 0bce0e2bd734c6c299768616f67d42ff4df6e2a2 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Sat, 19 Oct 2024 09:41:42 -0400 Subject: [PATCH] First addition of qt6ct based color palettes to give dark mode on all platforms. --- ACKNOWLEDGEMENTS.md | 2 + scwx-qt/res/qt6ct_colors/airy.conf | 4 + scwx-qt/res/qt6ct_colors/darker.conf | 4 + scwx-qt/res/qt6ct_colors/dusk.conf | 4 + scwx-qt/res/qt6ct_colors/ia_ora.conf | 4 + scwx-qt/res/qt6ct_colors/sand.conf | 4 + scwx-qt/res/qt6ct_colors/simple.conf | 4 + scwx-qt/res/qt6ct_colors/waves.conf | 4 + scwx-qt/scwx-qt.cmake | 2 + scwx-qt/scwx-qt.qrc | 1 + scwx-qt/source/scwx/qt/main/main.cpp | 12 +++ scwx-qt/source/scwx/qt/types/qt_types.cpp | 3 + scwx-qt/source/scwx/qt/types/qt_types.hpp | 3 +- scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp | 87 +++++++++++++++++++ scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp | 50 +++++++++++ 15 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 scwx-qt/res/qt6ct_colors/airy.conf create mode 100644 scwx-qt/res/qt6ct_colors/darker.conf create mode 100644 scwx-qt/res/qt6ct_colors/dusk.conf create mode 100644 scwx-qt/res/qt6ct_colors/ia_ora.conf create mode 100644 scwx-qt/res/qt6ct_colors/sand.conf create mode 100644 scwx-qt/res/qt6ct_colors/simple.conf create mode 100644 scwx-qt/res/qt6ct_colors/waves.conf create mode 100644 scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp create mode 100644 scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md index 154d0f6c..4aec61d2 100644 --- a/ACKNOWLEDGEMENTS.md +++ b/ACKNOWLEDGEMENTS.md @@ -35,6 +35,7 @@ Supercell Wx uses code from the following dependencies: | [nunicode](https://bitbucket.org/alekseyt/nunicode/src/master/) | [MIT License](https://spdx.org/licenses/MIT.html) | Modified for MapLibre Native | | [OpenSSL](https://www.openssl.org/) | [OpenSSL License](https://spdx.org/licenses/OpenSSL.html) | | [Qt](https://www.qt.io/) | [GNU Lesser General Public License v3.0 only](https://spdx.org/licenses/LGPL-3.0-only.html) | Qt Core, Qt GUI, Qt Multimedia, Qt Network, Qt OpenGL, Qt Positioning, Qt Serial Port, Qt SQL, Qt SVG, Qt Widgets
Additional Licenses: https://doc.qt.io/qt-6/licenses-used-in-qt.html | +| [qt6ct](https://github.com/trialuser02/qt6ct) | [BSD 2-Clause "Simplified" License](https://spdx.org/licenses/BSD-2-Clause.html) | | [re2](https://github.com/google/re2) | [BSD 3-Clause "New" or "Revised" License](https://spdx.org/licenses/BSD-3-Clause.html) | | [spdlog](https://github.com/gabime/spdlog) | [MIT License](https://spdx.org/licenses/MIT.html) | | [SQLite](https://www.sqlite.org/) | Public Domain | @@ -67,6 +68,7 @@ Supercell Wx uses assets from the following sources: | [Font Awesome Free](https://fontawesome.com/) | CC BY 4.0 License | | [Inconsolata](https://fonts.google.com/specimen/Inconsolata) | SIL Open Font License | | [NOAA's Weather and Climate Toolkit](https://www.ncdc.noaa.gov/wct/) | Public Domain | Default Color Tables | +| [qt6ct](https://github.com/trialuser02/qt6ct) | [BSD 2-Clause "Simplified" License](https://spdx.org/licenses/BSD-2-Clause.html) | | [Roboto Flex](https://fonts.google.com/specimen/Roboto+Flex) | SIL Open Font License | | [Supercell thunderstorm with dramatic clouds](https://www.shutterstock.com/image-photo/supercell-thunderstorm-dramatic-clouds-1354353521) | Shutterstock Standard License | Photo by John Sirlin diff --git a/scwx-qt/res/qt6ct_colors/airy.conf b/scwx-qt/res/qt6ct_colors/airy.conf new file mode 100644 index 00000000..68b32473 --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/airy.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ff000000, #ffdcdcdc, #ffdcdcdc, #ff5e5c5b, #ff646464, #ffe1e1e1, #ff000000, #ff0a0a0a, #ff0a0a0a, #ffc8c8c8, #ffffffff, #ffe7e4e0, #ff0986d3, #ff0a0a0a, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff646464, #ff050505, #80000000 +disabled_colors=#ffffffff, #ff424245, #ffdcdcdc, #ff5e5c5b, #ff646464, #ffe1e1e1, #ff808080, #ffffffff, #ff808080, #ff969696, #ffc8c8c8, #ffe7e4e0, #ff0986d3, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff646464, #ffffffff, #80000000 +inactive_colors=#ff323232, #ffb4b4b4, #ffdcdcdc, #ff5e5c5b, #ff646464, #ffe1e1e1, #ff323232, #ff323232, #ff323232, #ff969696, #ffc8c8c8, #ffe7e4e0, #ff0986d3, #ff323232, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff646464, #ff323232, #80000000 diff --git a/scwx-qt/res/qt6ct_colors/darker.conf b/scwx-qt/res/qt6ct_colors/darker.conf new file mode 100644 index 00000000..cf2f69f7 --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/darker.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ffffffff, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffffffff, #ffffffff, #ffffffff, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #fff9f9f9, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff +disabled_colors=#ff808080, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff808080, #ffffffff, #ff808080, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff +inactive_colors=#ffffffff, #ff424245, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffffffff, #ffffffff, #ffffffff, #ff3d3d3d, #ff222020, #ffe7e4e0, #ff12608a, #fff9f9f9, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff3f3f36, #ffffffff, #80ffffff diff --git a/scwx-qt/res/qt6ct_colors/dusk.conf b/scwx-qt/res/qt6ct_colors/dusk.conf new file mode 100644 index 00000000..e0b0059a --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/dusk.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ff000000, #ff7f7f7f, #ffffffff, #ffcbc7c4, #ff7f7f7f, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ff7f7f7f, #ff7f7f7f, #ff707070, #ff308cc6, #ffffffff, #ff0000ff, #ffff00ff, #ff7f7f7f, #ff000000, #ff7f7f7f, #ff000000, #80000000 +disabled_colors=#ffbebebe, #ff7f7f7f, #ffffffff, #ffcbc7c4, #ff7f7f7f, #ffb8b5b2, #ffbebebe, #ffffffff, #ffbebebe, #ff7f7f7f, #ff7f7f7f, #ffb1aeab, #ff7f7f7f, #ffffffff, #ff0000ff, #ffff00ff, #ff7f7f7f, #ff000000, #ff7f7f7f, #ff000000, #80000000 +inactive_colors=#ff000000, #ff7f7f7f, #ffffffff, #ffcbc7c4, #ff7f7f7f, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ff7f7f7f, #ff7f7f7f, #ff707070, #ff308cc6, #ffffffff, #ff0000ff, #ffff00ff, #ff7f7f7f, #ff000000, #ff7f7f7f, #ff000000, #80000000 diff --git a/scwx-qt/res/qt6ct_colors/ia_ora.conf b/scwx-qt/res/qt6ct_colors/ia_ora.conf new file mode 100644 index 00000000..7875fc4d --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/ia_ora.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ff000000, #ffeff3f7, #ffffffff, #ffe9e7e3, #ffc7cbce, #ffa0a0a4, #ff000000, #ffffffff, #ff000000, #ffeff3f7, #ffeff3f7, #ffb8bbbe, #ff4965ae, #ffffffff, #ff0000ff, #ffff00ff, #ffeff3f7, #ff000000, #ffffffdc, #ff000000, #80000000 +disabled_colors=#ff808080, #ffeff3f7, #ffffffff, #ffe9e7e3, #ffc7cbce, #ffa0a0a4, #ff808080, #ffffffff, #ff808080, #ffeff3f7, #ffeff3f7, #ffb8bbbe, #ff4965ae, #ff808080, #ff0000ff, #ffff00ff, #ffeff3f7, #ff000000, #ffffffdc, #ff000000, #80000000 +inactive_colors=#ff000000, #ffeff3f7, #ffffffff, #ffe9e7e3, #ffc7cbce, #ffa0a0a4, #ff000000, #ffffffff, #ff000000, #ffeff3f7, #ffeff3f7, #ffb8bbbe, #ff4965ae, #ffffffff, #ff0000ff, #ffff00ff, #ffeff3f7, #ff000000, #ffffffdc, #ff000000, #80000000 diff --git a/scwx-qt/res/qt6ct_colors/sand.conf b/scwx-qt/res/qt6ct_colors/sand.conf new file mode 100644 index 00000000..004267d1 --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/sand.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ff000000, #ffffffdc, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff000000, #ff000000, #ff000000, #ffffffdc, #ffffffdc, #ffe7e4e0, #ff5f5b5d, #fff9f9f9, #ff0986d3, #ffa70b06, #ffffffdc, #ff000000, #ff3f3f36, #ff000000, #80000000 +disabled_colors=#ff4a4947, #ffffffdc, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff4a4947, #ff4a4947, #ff4a4947, #ffffffdc, #ffffffdc, #ffe7e4e0, #ff5f5b5d, #fff9f9f9, #ff0986d3, #ffa70b06, #ffffffdc, #ff000000, #ff3f3f36, #ff000000, #80000000 +inactive_colors=#ff000000, #ffffffdc, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff000000, #ff000000, #ff000000, #ffffffdc, #ffffffdc, #ffe7e4e0, #ff5f5b5d, #fff9f9f9, #ff0986d3, #ffa70b06, #ffffffdc, #ff000000, #ff3f3f36, #ff000000, #80000000 diff --git a/scwx-qt/res/qt6ct_colors/simple.conf b/scwx-qt/res/qt6ct_colors/simple.conf new file mode 100644 index 00000000..7b655ad5 --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/simple.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ff000000, #ffefebe7, #ffffffff, #ffcbc7c4, #ff9f9d9a, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ffffffff, #ffefebe7, #ffb1aeab, #ff308cc6, #ffffffff, #ff0000ff, #ffff0000, #fff7f5f3, #ff000000, #ffffffdc, #ff000000, #80000000 +disabled_colors=#ffbebebe, #ffefebe7, #ffffffff, #ffcbc7c4, #ff9f9d9a, #ffb8b5b2, #ffbebebe, #ffffffff, #ffbebebe, #ffefebe7, #ffefebe7, #ffb1aeab, #ff9f9d9a, #ffffffff, #ff0000ff, #ffff0000, #fff7f5f3, #ff000000, #ffffffdc, #ff000000, #80000000 +inactive_colors=#ff000000, #ffefebe7, #ffffffff, #ffcbc7c4, #ff9f9d9a, #ffb8b5b2, #ff000000, #ffffffff, #ff000000, #ffffffff, #ffefebe7, #ffb1aeab, #ff308cc6, #ffffffff, #ff0000ff, #ffff0000, #fff7f5f3, #ff000000, #ffffffdc, #ff000000, #80000000 diff --git a/scwx-qt/res/qt6ct_colors/waves.conf b/scwx-qt/res/qt6ct_colors/waves.conf new file mode 100644 index 00000000..e0de92fd --- /dev/null +++ b/scwx-qt/res/qt6ct_colors/waves.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors=#ffb0b0b0, #ff010b2c, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffb0b0b0, #ffb0b0b0, #ffb0b0b0, #ff010b2c, #ff010b2c, #ffb0b0b0, #ff302f2e, #ffb0b0b0, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff0a0a0a, #ffffffff, #80b0b0b0 +disabled_colors=#ff808080, #ff010b2c, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ff808080, #ff808080, #ff808080, #ff00071d, #ff00071d, #ffb0b0b0, #ff00071d, #ff808080, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff0a0a0a, #ffffffff, #80b0b0b0 +inactive_colors=#ffb0b0b0, #ff010b2c, #ff979797, #ff5e5c5b, #ff302f2e, #ff4a4947, #ffb0b0b0, #ffb0b0b0, #ffb0b0b0, #ff010b2c, #ff010b2c, #ffb0b0b0, #ff302f2e, #ffb0b0b0, #ff0986d3, #ffa70b06, #ff5c5b5a, #ffffffff, #ff0a0a0a, #ffffffff, #80b0b0b0 diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index 71700cec..2741f076 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -357,6 +357,7 @@ set(HDR_UTIL source/scwx/qt/util/color.hpp source/scwx/qt/util/texture_atlas.hpp source/scwx/qt/util/q_file_buffer.hpp source/scwx/qt/util/q_file_input_stream.hpp + source/scwx/qt/util/qt6ct_palette.hpp source/scwx/qt/util/time.hpp source/scwx/qt/util/tooltip.hpp) set(SRC_UTIL source/scwx/qt/util/color.cpp @@ -369,6 +370,7 @@ set(SRC_UTIL source/scwx/qt/util/color.cpp source/scwx/qt/util/texture_atlas.cpp source/scwx/qt/util/q_file_buffer.cpp source/scwx/qt/util/q_file_input_stream.cpp + source/scwx/qt/util/qt6ct_palette.cpp source/scwx/qt/util/time.cpp source/scwx/qt/util/tooltip.cpp) set(HDR_VIEW source/scwx/qt/view/level2_product_view.hpp diff --git a/scwx-qt/scwx-qt.qrc b/scwx-qt/scwx-qt.qrc index 9ed5651a..63ad1793 100644 --- a/scwx-qt/scwx-qt.qrc +++ b/scwx-qt/scwx-qt.qrc @@ -70,6 +70,7 @@ res/palettes/wct/SW.pal res/palettes/wct/VIL.pal res/palettes/wct/ZDR.pal + res/qt6ct_colors/darker.conf res/textures/lines/default-1x7.png res/textures/lines/test-pattern.png res/textures/images/cursor-17.png diff --git a/scwx-qt/source/scwx/qt/main/main.cpp b/scwx-qt/source/scwx/qt/main/main.cpp index d93133a3..d90ec0e9 100644 --- a/scwx-qt/source/scwx/qt/main/main.cpp +++ b/scwx-qt/source/scwx/qt/main/main.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -27,6 +28,8 @@ #include #include #include +#include +#include static const std::string logPrefix_ = "scwx::main"; static const auto logger_ = scwx::util::Logger::Create(logPrefix_); @@ -162,6 +165,15 @@ static void ConfigureTheme(const std::vector& args) } QGuiApplication::styleHints()->setColorScheme(qtColorScheme); + + if (uiStyle == scwx::qt::types::UiStyle::FusionQt6Ct) + { + auto palette = + std::make_unique(scwx::qt::util::qt6ct::loadColorScheme( + ":res/qt6ct_colors/darker.conf", + QApplication::style()->standardPalette())); + QApplication::setPalette(*palette); + } } static void diff --git a/scwx-qt/source/scwx/qt/types/qt_types.cpp b/scwx-qt/source/scwx/qt/types/qt_types.cpp index da2ef622..03d58a75 100644 --- a/scwx-qt/source/scwx/qt/types/qt_types.cpp +++ b/scwx-qt/source/scwx/qt/types/qt_types.cpp @@ -15,6 +15,7 @@ static const std::unordered_map qtStyleName_ { {UiStyle::Fusion, "Fusion"}, {UiStyle::FusionLight, "Fusion"}, {UiStyle::FusionDark, "Fusion"}, + {UiStyle::FusionQt6Ct, "Fusion"}, {UiStyle::Unknown, "?"}}; static const std::unordered_map uiStyleName_ { @@ -22,6 +23,7 @@ static const std::unordered_map uiStyleName_ { {UiStyle::Fusion, "Fusion"}, {UiStyle::FusionLight, "Fusion Light"}, {UiStyle::FusionDark, "Fusion Dark"}, + {UiStyle::FusionQt6Ct, "Fusion with qt6ct Palette"}, {UiStyle::Unknown, "?"}}; static const std::unordered_map qtColorSchemeMap_ { @@ -29,6 +31,7 @@ static const std::unordered_map qtColorSchemeMap_ { {UiStyle::Fusion, Qt::ColorScheme::Unknown}, {UiStyle::FusionLight, Qt::ColorScheme::Light}, {UiStyle::FusionDark, Qt::ColorScheme::Dark}, + {UiStyle::FusionQt6Ct, Qt::ColorScheme::Unknown}, {UiStyle::Unknown, Qt::ColorScheme::Unknown}}; SCWX_GET_ENUM(UiStyle, GetUiStyle, uiStyleName_) diff --git a/scwx-qt/source/scwx/qt/types/qt_types.hpp b/scwx-qt/source/scwx/qt/types/qt_types.hpp index 817d5ca1..a9266c8b 100644 --- a/scwx-qt/source/scwx/qt/types/qt_types.hpp +++ b/scwx-qt/source/scwx/qt/types/qt_types.hpp @@ -26,9 +26,10 @@ enum class UiStyle Fusion, FusionLight, FusionDark, + FusionQt6Ct, Unknown }; -typedef scwx::util::Iterator +typedef scwx::util::Iterator UiStyleIterator; Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle); diff --git a/scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp b/scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp new file mode 100644 index 00000000..b6319709 --- /dev/null +++ b/scwx-qt/source/scwx/qt/util/qt6ct_palette.cpp @@ -0,0 +1,87 @@ +/* This code is drawn from qt6ct, and loads qt6ct color palette files. + * qt6ct is licensed under BSD-2-Clause below. + * + * Copyright (c) 2020-2024, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +namespace scwx +{ +namespace qt +{ +namespace util +{ +namespace qt6ct +{ + +QPalette loadColorScheme(const QString &filePath, const QPalette &fallback) +{ + QPalette customPalette; + QSettings settings(filePath, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + QStringList activeColors = settings.value("active_colors").toStringList(); + QStringList inactiveColors = settings.value("inactive_colors").toStringList(); + QStringList disabledColors = settings.value("disabled_colors").toStringList(); + settings.endGroup(); + + +#if (QT_VERSION >= QT_VERSION_CHECK(6,6,0)) + if(activeColors.count() == QPalette::Accent) + activeColors << activeColors.at(QPalette::Highlight); + if(inactiveColors.count() == QPalette::Accent) + inactiveColors << inactiveColors.at(QPalette::Highlight); + if(disabledColors.count() == QPalette::Accent) + disabledColors << disabledColors.at(QPalette::Highlight); +#endif + + + if(activeColors.count() >= QPalette::NColorRoles && + inactiveColors.count() >= QPalette::NColorRoles && + disabledColors.count() >= QPalette::NColorRoles) + { + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); + customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); + customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); + } + } + else + { + customPalette = fallback; //load fallback palette + } + + return customPalette; +} + +} // namespace qt6ct +} // namespace util +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp b/scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp new file mode 100644 index 00000000..9b168212 --- /dev/null +++ b/scwx-qt/source/scwx/qt/util/qt6ct_palette.hpp @@ -0,0 +1,50 @@ +#pragma once + +/* This code is drawn from qt6ct, and loads qt6ct color palette files. + * qt6ct is licensed under BSD-2-Clause below. + * + * Copyright (c) 2020-2024, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +namespace scwx +{ +namespace qt +{ +namespace util +{ +namespace qt6ct +{ + +QPalette loadColorScheme(const QString &filePath, const QPalette &fallback); + +} // namespace qt6ct +} // namespace util +} // namespace qt +} // namespace scwx