Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_clipboard.h
Go to the documentation of this file.
1/*
2 * kis_clipboard.h - part of Krayon
3 *
4 * SPDX-FileCopyrightText: 2004 Boudewijn Rempt <boud@valdyas.org>
5 * SPDX-FileCopyrightText: 2019 Dmitrii Utkin <loentar@gmail.com>
6 * SPDX-FileCopyrightText: 2022 L. E. Segovia <amy@amyspark.me>
7 *
8 * SPDX-License-Identifier: GPL-2.0-or-later
9 */
10#ifndef __KIS_CLIPBOARD_H_
11#define __KIS_CLIPBOARD_H_
12
13#include <QObject>
14#include <QSize>
15
16#include <kis_types.h>
17
18#include <kritaui_export.h>
19
20class QRect;
21class QMimeData;
22class KisTimeSpan;
23class KoColorSpace;
24
26
31class KRITAUI_EXPORT KisClipboard : public QObject
32{
33
34 Q_OBJECT
35 Q_PROPERTY(bool clip READ hasClip NOTIFY clipChanged)
36
37public:
38 enum PasteBehaviour { PASTE_ASSUME_WEB = 0, PASTE_ASSUME_MONITOR, PASTE_ASK };
39
40 enum PasteFormatBehaviour { PASTE_FORMAT_ASK = 0, PASTE_FORMAT_DOWNLOAD, PASTE_FORMAT_LOCAL, PASTE_FORMAT_CLIP };
41
43 ~KisClipboard() override;
44
45 static KisClipboard* instance();
46
55 void setClip(KisPaintDeviceSP dev, const QPoint& topLeft);
56
57 void setClip(KisPaintDeviceSP dev, const QPoint& topLeft, const KisTimeSpan &range);
58
62 KisPaintDeviceSP clip(const QRect &imageBounds,
63 bool showPopup,
64 int overridePasteBehaviour = -1,
65 KisTimeSpan *clipRange = nullptr) const;
66
75 QPair<bool, PasteFormatBehaviour> askUserForSource(const QMimeData *data,
76 bool useClipboardFallback = false) const;
77
78 //A function to allow for caching the clipboard data
79 QPair<bool, PasteFormatBehaviour> askUserForSourceWithData(QImage qimage,
80 const QList<QUrl> urls,
81 bool useClipboardFallback = false) const;
85 KisPaintDeviceSP clipFromMimeData(const QMimeData *data,
86 const QRect &imageBounds,
87 bool showPopup,
88 int overridePasteBehaviour = -1,
89 KisTimeSpan *clipRange = nullptr,
90 bool useClipboardFallback = false) const;
91
92 KisPaintDeviceSP clipFromKritaLayers(const KoColorSpace *cs) const;
93
94 KisPaintDeviceSP clipFromBoardContents(const QMimeData *data,
95 const QRect &imageBounds,
96 bool showPopup,
97 int overridePasteBehaviour = -1,
98 bool useClipboardFallback = false,
99 QPair<bool, PasteFormatBehaviour> source = {
100 false,
101 PasteFormatBehaviour::PASTE_FORMAT_ASK}) const;
102
103 //A function to allow for caching the clipboard data
104 KisPaintDeviceSP clipFromBoardContentsWithData(
105 QImage image,
106 const QList<QUrl> urls,
107 const QRect &imageBounds,
108 bool showPopup,
109 int overridePasteBehaviour = -1,
110 bool useClipboardFallback = false,
111 QPair<bool, PasteFormatBehaviour> source = {false, PasteFormatBehaviour::PASTE_FORMAT_ASK}) const;
112
113 QImage getImageWithFallback(const QMimeData *cbData, bool useClipboardFallback = false) const;
114
115 bool hasClip() const;
116
117 QSize clipSize() const;
118
119 void setLayers(KisNodeList nodes, KisImageSP image, bool forceCopy = false);
120 bool hasLayers() const;
121 bool hasLayerStyles() const;
122
123 const QMimeData* layersMimeData() const;
124
125 bool hasUrls() const;
126 bool hasImage() const;
127
128Q_SIGNALS:
130
131private Q_SLOTS:
132 void clipboardDataChanged();
133
134private:
136
138 clipFromKritaSelection(const QMimeData *data, const QRect &imageBounds, KisTimeSpan *clipRange) const;
139
140 KisPaintDeviceSP fetchImageByURL(const QUrl &originalUrl) const;
141
142 QImage getImageFromMimeData(const QMimeData *cbData) const;
143
145};
146
147#endif // __KIS_CLIPBOARD_H_
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
PythonPluginManager * instance
Q_DISABLE_COPY(KisClipboard)
void clipChanged()
KisClipboardPrivate *const d