1/*
2 SPDX-FileCopyrightText: 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "kstatefulbrush.h"
8
9#include "kcolorschemehelpers_p.h"
10
11#include <array>
12
13class KStatefulBrushPrivate
14{
15public:
16 std::array<QBrush, QPalette::NColorGroups> brushes;
17};
18
19KStatefulBrush::KStatefulBrush()
20 : d(std::make_unique<KStatefulBrushPrivate>())
21{
22}
23
24KStatefulBrush::~KStatefulBrush() = default;
25
26KStatefulBrush::KStatefulBrush(KColorScheme::ColorSet set, KColorScheme::ForegroundRole role, KSharedConfigPtr config)
27 : KStatefulBrush()
28{
29 d->brushes[QPalette::Active] = KColorScheme(QPalette::Active, set, config).foreground(role);
30 d->brushes[QPalette::Disabled] = KColorScheme(QPalette::Disabled, set, config).foreground(role);
31 d->brushes[QPalette::Inactive] = KColorScheme(QPalette::Inactive, set, config).foreground(role);
32}
33
34KStatefulBrush::KStatefulBrush(KColorScheme::ColorSet set, KColorScheme::BackgroundRole role, KSharedConfigPtr config)
35 : KStatefulBrush()
36
37{
38 d->brushes[QPalette::Active] = KColorScheme(QPalette::Active, set, config).background(role);
39 d->brushes[QPalette::Disabled] = KColorScheme(QPalette::Disabled, set, config).background(role);
40 d->brushes[QPalette::Inactive] = KColorScheme(QPalette::Inactive, set, config).background(role);
41}
42
43KStatefulBrush::KStatefulBrush(KColorScheme::ColorSet set, KColorScheme::DecorationRole role, KSharedConfigPtr config)
44 : KStatefulBrush()
45{
46 d->brushes[QPalette::Active] = KColorScheme(QPalette::Active, set, config).decoration(role);
47 d->brushes[QPalette::Disabled] = KColorScheme(QPalette::Disabled, set, config).decoration(role);
48 d->brushes[QPalette::Inactive] = KColorScheme(QPalette::Inactive, set, config).decoration(role);
49}
50
51KStatefulBrush::KStatefulBrush(const QBrush &brush, KSharedConfigPtr config)
52 : KStatefulBrush()
53{
54 if (!config) {
55 config = defaultConfig();
56 }
57 d->brushes[QPalette::Active] = brush;
58 d->brushes[QPalette::Disabled] = StateEffects(QPalette::Disabled, config).brush(background: brush);
59 d->brushes[QPalette::Inactive] = StateEffects(QPalette::Inactive, config).brush(background: brush);
60}
61
62KStatefulBrush::KStatefulBrush(const QBrush &brush, const QBrush &background, KSharedConfigPtr config)
63 : KStatefulBrush()
64{
65 if (!config) {
66 config = defaultConfig();
67 }
68 d->brushes[QPalette::Active] = brush;
69 d->brushes[QPalette::Disabled] = StateEffects(QPalette::Disabled, config).brush(foreground: brush, background);
70 d->brushes[QPalette::Inactive] = StateEffects(QPalette::Inactive, config).brush(foreground: brush, background);
71}
72
73KStatefulBrush::KStatefulBrush(const KStatefulBrush &other)
74 : KStatefulBrush()
75{
76 d->brushes[QPalette::Active] = other.d->brushes[QPalette::Active];
77 d->brushes[QPalette::Disabled] = other.d->brushes[QPalette::Disabled];
78 d->brushes[QPalette::Inactive] = other.d->brushes[QPalette::Inactive];
79}
80
81KStatefulBrush &KStatefulBrush::operator=(const KStatefulBrush &other)
82{
83 d->brushes[QPalette::Active] = other.d->brushes[QPalette::Active];
84 d->brushes[QPalette::Disabled] = other.d->brushes[QPalette::Disabled];
85 d->brushes[QPalette::Inactive] = other.d->brushes[QPalette::Inactive];
86 return *this;
87}
88
89QBrush KStatefulBrush::brush(QPalette::ColorGroup state) const
90{
91 if (state >= QPalette::Active && state < QPalette::NColorGroups) {
92 return d->brushes[state];
93 } else {
94 return d->brushes[QPalette::Active];
95 }
96}
97
98QBrush KStatefulBrush::brush(const QPalette &pal) const
99{
100 return brush(state: pal.currentColorGroup());
101}
102

source code of kcolorscheme/src/kstatefulbrush.cpp