Krita Source Code Documentation
Loading...
Searching...
No Matches
KoColorSet.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2005 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2016 L. E. Segovia <amy@amyspark.me>
4 * SPDX-FileCopyrightText: 2022 Halla Rempt <halla@valdyas.org>
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 *
7 */
8#ifndef KOCOLORSET
9#define KOCOLORSET
10
11#include <QObject>
12#include <QColor>
13#include <QScopedPointer>
14#include <QSharedPointer>
15
16#include <KoResource.h>
17#include "KoColor.h"
18#include "KisSwatch.h"
19#include "KisSwatchGroup.h"
20
21class KUndo2Stack;
22
28class KRITAPIGMENT_EXPORT KoColorSet : public QObject, public KoResource
29{
30 Q_OBJECT
31
32public:
33 static const QString GLOBAL_GROUP_NAME;
34 static const QString KPL_VERSION_ATTR;
35 static const QString KPL_GROUP_ROW_COUNT_ATTR;
36 static const QString KPL_PALETTE_COLUMN_COUNT_ATTR;
37 static const QString KPL_PALETTE_NAME_ATTR;
38 static const QString KPL_PALETTE_COMMENT_ATTR;
39 static const QString KPL_PALETTE_FILENAME_ATTR;
40 static const QString KPL_PALETTE_READONLY_ATTR;
41 static const QString KPL_COLOR_MODEL_ID_ATTR;
42 static const QString KPL_COLOR_DEPTH_ID_ATTR;
43 static const QString KPL_GROUP_NAME_ATTR;
44 static const QString KPL_SWATCH_ROW_ATTR;
45 static const QString KPL_SWATCH_COL_ATTR;
46 static const QString KPL_SWATCH_NAME_ATTR;
47 static const QString KPL_SWATCH_SPOT_ATTR;
48 static const QString KPL_SWATCH_ID_ATTR;
49 static const QString KPL_SWATCH_BITDEPTH_ATTR;
50 static const QString KPL_PALETTE_PROFILE_TAG;
51 static const QString KPL_SWATCH_POS_TAG;
52 static const QString KPL_SWATCH_TAG;
53 static const QString KPL_GROUP_TAG;
54 static const QString KPL_PALETTE_TAG;
55
56public:
58 UNKNOWN = 0,
59 GPL, // GIMP
60 RIFF_PAL, // RIFF
61 ACT, // Photoshop binary
62 PSP_PAL, // PaintShop Pro
63 ACO, // Photoshop Swatches
64 XML, // XML palette (Scribus)
65 KPL, // KoColor-based XML palette
66 SBZ, // SwatchBooker
67 ASE, // Adobe swatch exchange
68 ACB, // Adobe Color Book.
69 CSS // CSS palette
70 };
71
72
79 explicit KoColorSet(const QString &filename = QString());
80
81 KoColorSet(const KoColorSet& rhs);
82
83 ~KoColorSet() override;
84
85 KoColorSet &operator=(const KoColorSet &rhs) = delete;
86
87 KoResourceSP clone() const override;
88
89 bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override;
90 bool saveToDevice(QIODevice* dev) const override;
91 QString defaultFileExtension() const override;
92 QPair<QString, QString> resourceType() const override
93 {
94 return QPair<QString, QString>(ResourceType::Palettes, "");
95 }
96
97 KUndo2Stack *undoStack() const;
98
99 void updateThumbnail() override;
100
101 void setLocked(bool lock);
102 bool isLocked() const;
103
104 void setColumnCount(int columns);
105 int columnCount() const;
106
107 void setComment(QString comment);
108 QString comment();
109
110 // Total number of rows, including empty rows in the groups, excluding rows
111 // a model might use to show group headings
112 int rowCount() const;
113
114 int rowCountWithTitles() const;
115
116 quint32 colorCount() const;
117 quint32 slotCount() const;
118
119 PaletteType paletteType() const;
120 void setPaletteType(PaletteType paletteType);
121
122 bool fromByteArray(QByteArray &data, KisResourcesInterfaceSP resourcesInterface);
123
131 void addSwatch(const KisSwatch &swatch, const QString &groupName = GLOBAL_GROUP_NAME, int column = -1, int row = -1);
132
136 void removeSwatch(int column, int row, KisSwatchGroupSP group);
137
144 KisSwatchGroupSP getGroup(const QString &name) const;
145
151 KisSwatchGroupSP getGroup(int row) const;
152
157 KisSwatchGroupSP getGlobalGroup() const;
158
164 void changeGroupName(const QString &oldGroupName, const QString &newGroupName);
165
172 void addGroup(const QString &groupName, int columnCount = KisSwatchGroup::DEFAULT_COLUMN_COUNT, int rowCount = KisSwatchGroup::DEFAULT_ROW_COUNT);
173
181 void moveGroup(const QString &groupName, const QString &groupNameInsertBefore = GLOBAL_GROUP_NAME);
182
190 void removeGroup(const QString &groupName, bool keepColors = true);
191
195 void clear();
196
206 KisSwatchGroup::SwatchInfo getClosestSwatchInfo(KoColor compare, bool useGivenColorSpace = true) const;
207
215 KisSwatch getColorGlobal(quint32 column, quint32 row) const;
216
225 KisSwatch getSwatchFromGroup(quint32 column, quint32 row, QString groupName = KoColorSet::GLOBAL_GROUP_NAME) const;
226
231 QStringList swatchGroupNames() const;
232
238 bool isGroupTitleRow(int row) const;
239
245 int startRowForGroup(const QString &groupName) const;
246
252 int rowNumberInGroup(int rowNumber) const;
253
254Q_SIGNALS:
255
256 void modified();
259 void entryChanged(int column, int row);
260
261
262private Q_SLOTS:
263
264 void canUndoChanged(bool canUndo);
265 void canRedoChanged(bool canRedo);
266
267
268private:
269
270 void setModified(bool);
271 void notifySwatchChanged(const QString& groupName, int column, int row);
272
273 friend struct AddSwatchCommand;
274 friend struct RemoveSwatchCommand;
276 friend struct AddGroupCommand;
277 friend struct RemoveGroupCommand;
278 friend struct ClearCommand;
280 friend struct SetCommentCommand;
282 friend struct MoveGroupCommand;
283 friend class TestKoColorSet;
284 friend class TestKisPaletteModel;
285
286 class Private;
287 const QScopedPointer<Private> d;
288
289};
290
292
293#endif // KOCOLORSET
QSharedPointer< KoColorSet > KoColorSetSP
Definition KoColorSet.h:291
static int DEFAULT_ROW_COUNT
static int DEFAULT_COLUMN_COUNT
static const QString KPL_COLOR_DEPTH_ID_ATTR
Definition KoColorSet.h:42
static const QString KPL_SWATCH_TAG
Definition KoColorSet.h:52
KoColorSet & operator=(const KoColorSet &rhs)=delete
static const QString KPL_SWATCH_ROW_ATTR
Definition KoColorSet.h:44
static const QString KPL_COLOR_MODEL_ID_ATTR
Definition KoColorSet.h:41
static const QString KPL_SWATCH_COL_ATTR
Definition KoColorSet.h:45
static const QString KPL_PALETTE_PROFILE_TAG
Definition KoColorSet.h:50
static const QString KPL_PALETTE_COMMENT_ATTR
Definition KoColorSet.h:38
void modified()
static const QString KPL_PALETTE_NAME_ATTR
Definition KoColorSet.h:37
void layoutChanged()
static const QString KPL_SWATCH_POS_TAG
Definition KoColorSet.h:51
static const QString KPL_PALETTE_READONLY_ATTR
Definition KoColorSet.h:40
static const QString KPL_PALETTE_COLUMN_COUNT_ATTR
Definition KoColorSet.h:36
const QScopedPointer< Private > d
Definition KoColorSet.h:287
static const QString KPL_GROUP_TAG
Definition KoColorSet.h:53
static const QString GLOBAL_GROUP_NAME
Definition KoColorSet.h:33
static const QString KPL_GROUP_NAME_ATTR
Definition KoColorSet.h:43
static const QString KPL_PALETTE_TAG
Definition KoColorSet.h:54
static const QString KPL_VERSION_ATTR
Definition KoColorSet.h:34
static const QString KPL_GROUP_ROW_COUNT_ATTR
Definition KoColorSet.h:35
static const QString KPL_SWATCH_BITDEPTH_ATTR
Definition KoColorSet.h:49
static const QString KPL_PALETTE_FILENAME_ATTR
Definition KoColorSet.h:39
static const QString KPL_SWATCH_SPOT_ATTR
Definition KoColorSet.h:47
QPair< QString, QString > resourceType() const override
Definition KoColorSet.h:92
void entryChanged(int column, int row)
static const QString KPL_SWATCH_NAME_ATTR
Definition KoColorSet.h:46
void layoutAboutToChange()
static const QString KPL_SWATCH_ID_ATTR
Definition KoColorSet.h:48
bool loadFromDevice(QIODevice *)
const QString Palettes
virtual KoResourceSP clone() const =0
virtual QString defaultFileExtension() const
virtual bool saveToDevice(QIODevice *dev) const
virtual void updateThumbnail()
updateThumbnail updates the thumbnail for this resource. Reimplement if your thumbnail is something e...