Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_layer_properties_icons.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QMap>
10
11#include <QGlobalStatic>
13
14#include <KoColorSpace.h>
15#include <KoColorProfile.h>
16
17#include <kis_icon_utils.h>
18#include <kis_node.h>
20#include "kis_image.h"
21
22
23const KoID KisLayerPropertiesIcons::locked("locked", ki18n("Locked"));
24const KoID KisLayerPropertiesIcons::visible("visible", ki18n("Visible"));
25const KoID KisLayerPropertiesIcons::layerStyle("layer-style", ki18n("Layer Style"));
26const KoID KisLayerPropertiesIcons::inheritAlpha("inherit-alpha", ki18n("Inherit Alpha"));
27const KoID KisLayerPropertiesIcons::alphaLocked("alpha-locked", ki18n("Alpha Locked"));
28const KoID KisLayerPropertiesIcons::onionSkins("onion-skins", ki18n("Onion Skins"));
29const KoID KisLayerPropertiesIcons::passThrough("pass-through", ki18n("Pass Through"));
30const KoID KisLayerPropertiesIcons::selectionActive("selection-active", ki18n("Active"));
31const KoID KisLayerPropertiesIcons::colorLabelIndex("color-label", ki18n("Color Label"));
32const KoID KisLayerPropertiesIcons::colorOverlay("color-overlay", ki18n("Color Overlay"));
33const KoID KisLayerPropertiesIcons::colorizeNeedsUpdate("colorize-needs-update", ki18n("Update Result"));
34const KoID KisLayerPropertiesIcons::colorizeEditKeyStrokes("colorize-show-key-strokes", ki18n("Edit Key Strokes"));
35const KoID KisLayerPropertiesIcons::colorizeShowColoring("colorize-show-coloring", ki18n("Show Coloring"));
36const KoID KisLayerPropertiesIcons::openFileLayerFile("open-file-layer-file", ki18n("Open File"));
37const KoID KisLayerPropertiesIcons::layerError("layer-error", ki18n("Error"));
38const KoID KisLayerPropertiesIcons::layerColorSpaceMismatch("layer-color-space-mismatch", ki18n("Layer Color Space Mismatch"));
39const KoID KisLayerPropertiesIcons::antialiased("antialiased", ki18n("Anti-aliasing"));
40
41struct IconsPair {
43 IconsPair(const QIcon &_on, const QIcon &_off) : on(_on), off(_off) {}
44
45 QIcon on;
46 QIcon off;
47
48 const QIcon& getIcon(bool state) {
49 return state ? on : off;
50 }
51};
52
54{
55 QMap<QString, IconsPair> icons;
56};
57
63
67
72
74{
75 m_d->icons.clear();
76 m_d->icons.insert(locked.id(), IconsPair(KisIconUtils::loadIcon("layer-locked"), KisIconUtils::loadIcon("layer-unlocked")));
77 m_d->icons.insert(visible.id(), IconsPair(KisIconUtils::loadIcon("visible"), KisIconUtils::loadIcon("novisible")));
78 m_d->icons.insert(layerStyle.id(), IconsPair(KisIconUtils::loadIcon("layer-style-enabled"), KisIconUtils::loadIcon("layer-style-disabled")));
79 m_d->icons.insert(inheritAlpha.id(), IconsPair(KisIconUtils::loadIcon("transparency-disabled"), KisIconUtils::loadIcon("transparency-enabled")));
80 m_d->icons.insert(alphaLocked.id(), IconsPair(KisIconUtils::loadIcon("transparency-locked"), KisIconUtils::loadIcon("transparency-unlocked")));
81 m_d->icons.insert(onionSkins.id(), IconsPair(KisIconUtils::loadIcon("onionOn"), KisIconUtils::loadIcon("onionOff")));
82 m_d->icons.insert(passThrough.id(), IconsPair(KisIconUtils::loadIcon("passthrough-enabled"), KisIconUtils::loadIcon("passthrough-disabled")));
83 m_d->icons.insert(selectionActive.id(), IconsPair(KisIconUtils::loadIcon("local-selection-active"), KisIconUtils::loadIcon("local-selection-inactive")));
84 m_d->icons.insert(colorizeNeedsUpdate.id(), IconsPair(KisIconUtils::loadIcon("updateColorize"), KisIconUtils::loadIcon("updateColorize")));
85 m_d->icons.insert(colorizeEditKeyStrokes.id(), IconsPair(KisIconUtils::loadIcon("showMarks"), KisIconUtils::loadIcon("showMarksOff")));
86 m_d->icons.insert(colorizeShowColoring.id(), IconsPair(KisIconUtils::loadIcon("showColoring"), KisIconUtils::loadIcon("showColoringOff")));
87 m_d->icons.insert(openFileLayerFile.id(), IconsPair(KisIconUtils::loadIcon("document-open"), KisIconUtils::loadIcon("document-open")));
88 m_d->icons.insert(layerError.id(), IconsPair(KisIconUtils::loadIcon("warning"), KisIconUtils::loadIcon("warning")));
89 m_d->icons.insert(layerColorSpaceMismatch.id(), IconsPair(KisIconUtils::loadIcon("different-colorspace"), KisIconUtils::loadIcon("different-colorspace")));
90 m_d->icons.insert(antialiased.id(), IconsPair(KisIconUtils::loadIcon("select-shape"), KisIconUtils::loadIcon("select-pixel")));
91 // No static icons for colorOverlay.
92}
93
95{
96 const IconsPair &pair = instance()->m_d->icons[id.id()];
97 return KisBaseNode::Property(id,
98 pair.on, pair.off, state);
99}
100
102 bool isInStasis, bool stateInStasis)
103{
104 const IconsPair &pair = instance()->m_d->icons[id.id()];
105 return KisBaseNode::Property(id,
106 pair.on, pair.off, state,
107 isInStasis, stateInStasis);
108}
109
111{
112 const IconsPair &pair = instance()->m_d->icons[layerError.id()];
113
115 prop.id = layerError.id();
116 prop.name = layerError.name();
117 prop.state = message;
118 prop.onIcon = pair.on;
119 prop.offIcon = pair.off;
120
121 return prop;
122}
123
125{
126 const QString message =
127 i18nc("a tooltip shown in when hovering layer's property",
128 "Layer color space is different from the image color space:\n%1 [%2],\noperations may be slow",
129 cs->name(),
130 cs->profile() ? cs->profile()->name() : "");
131
132 const IconsPair &pair = instance()->m_d->icons[layerColorSpaceMismatch.id()];
133
137 prop.state = message;
138 prop.onIcon = pair.on;
139 prop.offIcon = pair.off;
140
141 return prop;
142}
143
150
152{
153 KisBaseNode::PropertyList::iterator it = props->begin();
154 KisBaseNode::PropertyList::iterator end = props->end();
155 for (; it != end; ++it) {
156 if (it->id == id.id()) {
157 it->state = value;
158 break;
159 }
160 }
161}
162
163QVariant KisLayerPropertiesIcons::nodeProperty(KisNodeSP node, const KoID &id, const QVariant &defaultValue)
164{
166
167 KisBaseNode::PropertyList::const_iterator it = props.constBegin();
168 KisBaseNode::PropertyList::const_iterator end = props.constEnd();
169 for (; it != end; ++it) {
170 if (it->id == id.id()) {
171 return it->state;
172 }
173 }
174
175 return defaultValue;
176}
float value(const T *src, size_t ch)
Q_GLOBAL_STATIC(KisStoragePluginRegistry, s_instance)
static QVariant nodeProperty(KisNodeSP node, const KoID &id, const QVariant &defaultValue)
static KisBaseNode::Property getColorSpaceMismatchProperty(const KoColorSpace *cs)
static KisBaseNode::Property getErrorProperty(const QString &message)
static void setNodeProperty(KisBaseNode::PropertyList *props, const KoID &id, const QVariant &value)
const QScopedPointer< Private > m_d
static void setNodePropertyAutoUndo(KisNodeSP node, const KoID &id, const QVariant &value, KisImageSP image)
static KisBaseNode::Property getProperty(const KoID &id, bool state)
static KisLayerPropertiesIcons * instance()
static void setNodePropertiesAutoUndo(KisNodeSP node, KisImageSP image, PropertyList proplist)
virtual const KoColorProfile * profile() const =0
Definition KoID.h:30
QString name() const
Definition KoID.cpp:68
QString id() const
Definition KoID.cpp:63
QIcon loadIcon(const QString &name)
const QIcon & getIcon(bool state)
IconsPair(const QIcon &_on, const QIcon &_off)
virtual PropertyList sectionModelProperties() const