Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSwatch.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the KDE project
3 * SPDX-FileCopyrightText: 2005 Boudewijn Rempt <boud@valdyas.org>
4 * SPDX-FileCopyrightText: 2016 L. E. Segovia <amy@amyspark.me>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7*/
8
9#include "KisSwatch.h"
10#include <QDomDocument>
11#include <QDomElement>
12#include <QIODevice>
13
14KisSwatch::KisSwatch(const KoColor &color, const QString &name)
15 : m_color(color)
16 , m_name(name)
17 , m_valid(true)
18{ }
19
20void KisSwatch::setName(const QString &name)
21{
22 m_name = name;
23 m_valid = true;
24}
25
26void KisSwatch::setId(const QString &id)
27{
28 m_id = id;
29 m_valid = true;
30}
31
32void KisSwatch::setColor(const KoColor &color)
33{
34 m_color = color;
35 m_valid = true;
36}
37
38void KisSwatch::setSpotColor(bool spotColor)
39{
41 m_valid = true;
42}
43
44void KisSwatch::writeToStream(QDataStream &stream, const QString& groupName, int originalRow, int originalColumn)
45{
46 QDomDocument doc;
47 QDomElement root = doc.createElement("Color");
48 root.setAttribute("bitdepth", color().colorSpace()->colorDepthId().id());
49 doc.appendChild(root);
50 color().toXML(doc, root);
51
52 stream << name() << id() << spotColor()
53 << originalRow << originalColumn
54 << groupName << doc.toString();
55}
56
57KisSwatch KisSwatch::fromByteArray(QByteArray &data, QString &oldGroupName, int &originalRow, int &originalColumn)
58{
59 QDataStream stream(&data, QIODevice::ReadOnly);
60 KisSwatch s;
61 QString name, id;
62 bool spotColor;
63 QString colorXml;
64
65 while (!stream.atEnd()) {
66 stream >> name >> id >> spotColor
67 >> originalRow >> originalColumn
68 >> oldGroupName
69 >> colorXml;
70
71 s.setName(name);
72 s.setId(id);
74
75 QDomDocument doc;
76 doc.setContent(colorXml);
77 QDomElement e = doc.documentElement();
78 QDomElement c = e.firstChildElement();
79 if (!c.isNull()) {
80 QString colorDepthId = c.attribute("bitdepth", Integer8BitsColorDepthID.id());
81 s.setColor(KoColor::fromXML(c, colorDepthId));
82 }
83 }
84
85 return s;
86}
87
89{
90 QString s;
91 int x, y;
92 return fromByteArray(data, s, y, x);
93}
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
void writeToStream(QDataStream &stream, const QString &groupName, int originalRow, int originalColumn)
Definition KisSwatch.cpp:44
QString m_name
Definition KisSwatch.h:49
void setSpotColor(bool spotColor)
Definition KisSwatch.cpp:38
KoColor color() const
Definition KisSwatch.h:30
QString name() const
Definition KisSwatch.h:24
bool m_spotColor
Definition KisSwatch.h:51
static KisSwatch fromByteArray(QByteArray &data, QString &groupName, int &originalRow, int &originalColumn)
Definition KisSwatch.cpp:57
void setColor(const KoColor &color)
Definition KisSwatch.cpp:32
bool spotColor() const
Definition KisSwatch.h:33
void setId(const QString &id)
Definition KisSwatch.cpp:26
QString m_id
Definition KisSwatch.h:50
bool m_valid
Definition KisSwatch.h:52
void setName(const QString &name)
Definition KisSwatch.cpp:20
KoColor m_color
Definition KisSwatch.h:48
QString id() const
Definition KisSwatch.h:27
KisSwatch()=default
static KoColor fromXML(const QDomElement &elt, const QString &channelDepthId)
Definition KoColor.cpp:350
void toXML(QDomDocument &doc, QDomElement &colorElt) const
Definition KoColor.cpp:304
QString id() const
Definition KoID.cpp:63