Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_colorize_dom_utils.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
10#include "kis_dom_utils.h"
12#include "kis_kra_tags.h"
13#include "kis_paint_device.h"
14
15namespace KisDomUtils {
16 void saveValue(QDomElement *parent, const QString &tag, const KisLazyFillTools::KeyStroke &stroke)
17 {
18 using namespace KRA;
19
20 QDomDocument doc = parent->ownerDocument();
21 QDomElement e = doc.createElement(tag);
22 parent->appendChild(e);
23
24 e.setAttribute("type", COLORIZE_KEYSTROKE);
25
26 QString fileName = tag;
27 fileName.replace("item", COLORIZE_KEYSTROKE);
28
29 e.setAttribute(FILE_NAME, fileName);
30 e.setAttribute(COLORIZE_KEYSTROKE_IS_TRANSPARENT, stroke.isTransparent);
31
32 QByteArray colorData = QByteArray::fromRawData((const char*)stroke.color.data(), stroke.color.colorSpace()->pixelSize());
33 e.setAttribute(COLORBYTEDATA, QString(colorData.toBase64()));
34 }
35
36 bool loadValue(const QDomElement &e, KisLazyFillTools::KeyStroke *stroke, const KoColorSpace *colorSpace, const QPoint &offset)
37 {
38 using namespace KRA;
39
40 if (!Private::checkType(e, COLORIZE_KEYSTROKE)) return false;
41
42 stroke->isTransparent = toInt(e.attribute(COLORIZE_KEYSTROKE_IS_TRANSPARENT, "0"));
43
44 QByteArray colorData = QByteArray::fromBase64(e.attribute(COLORBYTEDATA).toLatin1());
45 KoColor color((const quint8*)colorData.data(), colorSpace);
46 stroke->color = color;
47
48 stroke->dev = new KisPaintDevice(KoColorSpaceRegistry::instance()->alpha8());
49 stroke->dev->moveTo(offset);
50
51 return true;
52 }
53}
void moveTo(qint32 x, qint32 y)
virtual quint32 pixelSize() const =0
quint8 * data()
Definition KoColor.h:144
const KoColorSpace * colorSpace() const
return the current colorSpace
Definition KoColor.h:82
bool checkType(const QDomElement &e, const QString &expectedType)
void saveValue(QDomElement *parent, const QString &tag, const QSize &size)
int toInt(const QString &str, bool *ok=nullptr)
bool loadValue(const QDomElement &e, float *v)
static KoColorSpaceRegistry * instance()