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
81 KisPaintDeviceSP clipFromMimeData(const QMimeData *data,
82 const QRect &imageBounds,
83 bool showPopup,
84 int overridePasteBehaviour = -1,
85 KisTimeSpan *clipRange = nullptr,
86 bool useClipboardFallback = false) const;
87
88 KisPaintDeviceSP clipFromKritaLayers(const KoColorSpace *cs) const;
89
90 KisPaintDeviceSP clipFromBoardContents(const QMimeData *data,
91 const QRect &imageBounds,
92 bool showPopup,
93 int overridePasteBehaviour = -1,
94 bool useClipboardFallback = false,
95 QPair<bool, PasteFormatBehaviour> source = {
96 false,
97 PasteFormatBehaviour::PASTE_FORMAT_ASK}) const;
98
99 bool hasClip() const;
100
101 QSize clipSize() const;
102
103 void setLayers(KisNodeList nodes, KisImageSP image, bool forceCopy = false);
104 bool hasLayers() const;
105 bool hasLayerStyles() const;
106
107 const QMimeData* layersMimeData() const;
108
109 bool hasUrls() const;
110
111Q_SIGNALS:
113
114private Q_SLOTS:
115 void clipboardDataChanged();
116
117private:
119
121 clipFromKritaSelection(const QMimeData *data, const QRect &imageBounds, KisTimeSpan *clipRange) const;
122
123 KisPaintDeviceSP fetchImageByURL(const QUrl &originalUrl) const;
124
125 QImage getImageFromMimeData(const QMimeData *cbData) const;
126
128};
129
130#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