Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_mimedata.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2011 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 */
6
7#ifndef KIS_MIMEDATA_H
8#define KIS_MIMEDATA_H
9
10#include <QMimeData>
11#include <QRect>
12
13#include <optional>
14
15#include <kis_types.h>
16#include <kritaui_export.h>
17
19
21class KisNodeDummy;
26class KoColorSpace;
27
33class KRITAUI_EXPORT KisMimeData : public QMimeData
34{
35 Q_OBJECT
36public:
38 MimeFromDragAndDrop = 0x0,
39 MimeFromClipboard = 0x1,
40 };
41
42public:
43 KisMimeData(QList<KisNodeSP> nodes, KisImageSP image, const QRect referenceRect, bool forceCopy = false);
44
46 QList<KisNodeSP> nodes() const;
47
56 const KoColorSpace* referenceColorSpace() const;
57
68 void deepCopyNodes();
69
79 QStringList formats() const override;
80
81 static bool isNodeMimeDataFromSameImage(const QMimeData *data, KisImageSP image);
82
83 static KisNodeList loadNodesFast(
84 const QMimeData *data,
85 MimeSource mimeSource,
86 KisImageSP image,
87 KisShapeController *shapeController,
88 bool &copyNode);
89
90 static KisNodeList loadNodesFastAndRecenter(const QPoint &preferredCenter,
91 const QMimeData *data,
92 MimeSource mimeSource,
93 KisImageSP image,
94 KisShapeController *shapeController,
95 bool &copyNode);
96
106 static KisDisplayConfig displayConfigForMimePastes();
107
108 KisPaintDeviceSP clipFromKritaLayers(const KoColorSpace *cs, KisDefaultBoundsBaseSP defaultBounds) const;
109 KisImageSP clipImageFromKritaLayers(const KoColorSpace *cs) const;
110
111private:
116 static KisNodeList loadNonNativeNodes(const QMimeData *data,
117 KisImageWSP image);
118
123 static KisNodeList tryLoadInternalNodes(const QMimeData *data,
124 MimeSource mimeSource,
125 KisImageSP image,
126 KisShapeController *shapeController,
127 bool /* IN-OUT */ &copyNode);
128
129public:
130 static QMimeData* mimeForLayers(const KisNodeList &nodes, KisImageSP image, bool forceCopy = false);
131 static QMimeData* mimeForLayersDeepCopy(const KisNodeList &nodes, KisImageSP image, const QRect referenceRect, bool forceCopy);
132 static bool insertMimeLayers(const QMimeData *data,
133 MimeSource mimeSource,
134 KisImageSP image,
135 KisShapeController *shapeController,
136 KisNodeDummy *parentDummy,
137 KisNodeDummy *aboveThisDummy,
138 bool copyNode,
139 KisNodeInsertionAdapter *nodeInsertionAdapter,
140 std::optional<QPoint> preferredClipCenter = std::nullopt,
141 KisProcessingApplicator *applicator = nullptr);
142
143protected:
144#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
145 QVariant retrieveData(const QString &mimetype, QVariant::Type preferredType) const override;
146#else
147 QVariant retrieveData(const QString &mimetype, QMetaType preferredType) const override;
148#endif
149
150private:
151 static void initializeExternalNode(KisNodeSP *nodes,
152 KisImageSP srcImage, KisImageSP dstImage,
153 KisShapeController *shapeController);
154
155
156 KisPaintDeviceSP clipFromKritaLayersImpl(const KoColorSpace *cs, const QRect &referenceImageRect) const;
157private:
158
163 qreal m_referenceResX {1.0};
164 qreal m_referenceResY {1.0};
165 const KoColorSpace *m_referenceColorSpace {nullptr};
166};
167
168#endif // KIS_MIMEDATA_H
KisDisplayConfig This class keeps track of the color management configuration for image to display....
QRect m_referenceRect
KisImageSP m_image
QList< KisNodeSP > m_nodes