Krita Source Code Documentation
Loading...
Searching...
No Matches
QMLConverter Class Reference

#include <qml_converter.h>

+ Inheritance diagram for QMLConverter:

Public Member Functions

KisImportExportErrorCode buildFile (const QString &filename, const QString &realFilename, QIODevice *io, KisImageSP image)
 
 QMLConverter ()
 
 ~QMLConverter () override
 

Private Member Functions

void writeInt (QTextStream &out, int spacing, const QString &setting, int value)
 
void writeString (QTextStream &out, int spacing, const QString &setting, const QString &value)
 

Detailed Description

Definition at line 18 of file qml_converter.h.

Constructor & Destructor Documentation

◆ QMLConverter()

QMLConverter::QMLConverter ( )

Definition at line 18 of file qml_converter.cc.

19{
20}

◆ ~QMLConverter()

QMLConverter::~QMLConverter ( )
override

Definition at line 22 of file qml_converter.cc.

23{
24}

Member Function Documentation

◆ buildFile()

KisImportExportErrorCode QMLConverter::buildFile ( const QString & filename,
const QString & realFilename,
QIODevice * io,
KisImageSP image )

Definition at line 26 of file qml_converter.cc.

27{
28 QTextStream out(io);
30 out << "import QtQuick 1.1" << "\n\n";
31 out << "Rectangle {\n";
32 writeInt(out, 1, "width", image->width());
33 writeInt(out, 1, "height", image->height());
34 out << "\n";
35
36 QFileInfo info(filename);
37 QFileInfo infoRealFile(realFilename);
38 KisNodeSP node = image->rootLayer()->firstChild();
39 QString imageDir = infoRealFile.completeBaseName() + "_images";
40 QString imagePath = infoRealFile.absolutePath() + '/' + imageDir;
41 if (node) {
42 QDir dir;
43 bool success = dir.mkpath(imagePath);
44 if (!success)
45 {
47 }
48 }
49
50 dbgFile << "Saving images to " << imagePath;
51 while(node) {
52 KisPaintDeviceSP projection = node->projection();
53 QRect rect = projection->exactBounds();
54 QImage qmlImage = projection->convertToQImage(0, rect.x(), rect.y(), rect.width(), rect.height());
55 QString name = node->name().replace(' ', '_').toLower();
56 QString fileName = name + ".png";
57 qmlImage.save(imagePath +'/'+ fileName);
58
59 out << SPACE << "Image {\n";
60 writeString(out, 2, "id", name);
61 writeInt(out, 2, "x", rect.x());
62 writeInt(out, 2, "y", rect.y());
63 writeInt(out, 2, "width", rect.width());
64 writeInt(out, 2, "height", rect.height());
65 writeString(out, 2, "source", "\"" + imageDir + '/' + fileName + "\"" );
66 writeString(out, 2, "opacity", QString().setNum(node->opacity()/255.0));
67 out << SPACE << "}\n";
68 node = node->nextSibling();
69 }
70 out << "}\n";
71
73}
KisGroupLayerSP rootLayer() const
qint32 width() const
qint32 height() const
QRect exactBounds() const
QImage convertToQImage(const KoColorProfile *dstProfile, qint32 x, qint32 y, qint32 w, qint32 h, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags()) const
void writeInt(QTextStream &out, int spacing, const QString &setting, int value)
void writeString(QTextStream &out, int spacing, const QString &setting, const QString &value)
#define dbgFile
Definition kis_debug.h:53
const char * name(StandardAction id)
void setUtf8OnStream(QTextStream &stream)
#define SPACE
virtual KisPaintDeviceSP projection() const =0
QString name() const
quint8 opacity() const
KisNodeSP firstChild() const
Definition kis_node.cpp:361
KisNodeSP nextSibling() const
Definition kis_node.cpp:408

References ImportExportCodes::CannotCreateFile, KisPaintDevice::convertToQImage(), dbgFile, KisPaintDevice::exactBounds(), KisNode::firstChild(), KisImage::height(), KisBaseNode::name(), KisNode::nextSibling(), ImportExportCodes::OK, KisBaseNode::opacity(), KisBaseNode::projection(), KisImage::rootLayer(), KisPortingUtils::setUtf8OnStream(), SPACE, KisImage::width(), writeInt(), and writeString().

◆ writeInt()

void QMLConverter::writeInt ( QTextStream & out,
int spacing,
const QString & setting,
int value )
private

Definition at line 82 of file qml_converter.cc.

82 {
83 writeString(out, spacing, setting, QString::number(value));
84}
float value(const T *src, size_t ch)

References value(), and writeString().

◆ writeString()

void QMLConverter::writeString ( QTextStream & out,
int spacing,
const QString & setting,
const QString & value )
private

Definition at line 75 of file qml_converter.cc.

75 {
76 for (int space = 0; space < spacing; space++) {
77 out << SPACE;
78 }
79 out << setting << ": " << value << "\n";
80}

References SPACE, and value().


The documentation for this class was generated from the following files: