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

#include <kis_image_from_clipboard_widget.h>

+ Inheritance diagram for KisImageFromClipboardWidget:

Public Member Functions

 KisImageFromClipboardWidget (QWidget *parent, qint32 defWidth, qint32 defHeight, double resolution, const QString &defColorModel, const QString &defColorDepth, const QString &defColorProfile, const QString &imageName)
 
 ~KisImageFromClipboardWidget () override
 
- Public Member Functions inherited from KisCustomImageWidget
 KisCustomImageWidget (QWidget *parent, qint32 defWidth, qint32 defHeight, double resolution, const QString &defColorModel, const QString &defColorDepth, const QString &defColorProfile, const QString &imageName)
 
 ~KisCustomImageWidget () override
 
- Public Member Functions inherited from WdgNewImage
 WdgNewImage (QWidget *parent)
 

Protected Member Functions

void showEvent (QShowEvent *event) override
 
- Protected Member Functions inherited from KisCustomImageWidget
KisDocumentcreateNewImage ()
 
void setNumberOfLayers (int layers)
 Set the number of layers that will be created.
 
void showEvent (QShowEvent *) override
 

Private Slots

void clipboardDataChanged ()
 
void createClipboardPreview ()
 
void createImage ()
 
void enableImageCreation (const QImage &)
 

Additional Inherited Members

- Protected Attributes inherited from KisCustomImageWidget
KisOpenPanem_openPane
 

Detailed Description

The 'New image from clipboard' widget in the Krita startup widget. This class is an extension of the KisCustomImageWidget("Custom document" widget"

Definition at line 18 of file kis_image_from_clipboard_widget.h.

Constructor & Destructor Documentation

◆ KisImageFromClipboardWidget()

KisImageFromClipboardWidget::KisImageFromClipboardWidget ( QWidget * parent,
qint32 defWidth,
qint32 defHeight,
double resolution,
const QString & defColorModel,
const QString & defColorDepth,
const QString & defColorProfile,
const QString & imageName )

Constructor. Please note that this class is being used/created by KisDoc.

Parameters
parentthe parent widget
defWidthThe defined width
defHeightThe defined height
resolutionThe image resolution
defColorModelThe defined color model
defColorDepthThe defined color depth
defColorProfileThe defined color profile
imageNamethe document that wants to be altered

Definition at line 44 of file kis_image_from_clipboard_widget.cpp.

45 : KisCustomImageWidget(parent, defWidth, defHeight, resolution, defColorModel, defColorDepth, defColorProfile, imageName)
46{
47 setObjectName("KisImageFromClipboard");
48
49 lblPreview->hide();
50 grpClipboard->show();
51
53
54 disconnect(newDialogConfirmationButtonBox, &QDialogButtonBox::accepted, nullptr,
55 nullptr); // disable normal signal
56 connect(newDialogConfirmationButtonBox, &QDialogButtonBox::accepted, this, &KisImageFromClipboardWidget::createImage);
57}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisCustomImageWidget(QWidget *parent, qint32 defWidth, qint32 defHeight, double resolution, const QString &defColorModel, const QString &defColorDepth, const QString &defColorProfile, const QString &imageName)
void setNumberOfLayers(int layers)
Set the number of layers that will be created.

References connect(), createImage(), and KisCustomImageWidget::setNumberOfLayers().

◆ ~KisImageFromClipboardWidget()

KisImageFromClipboardWidget::~KisImageFromClipboardWidget ( )
override

Definition at line 59 of file kis_image_from_clipboard_widget.cpp.

60{
61}

Member Function Documentation

◆ clipboardDataChanged

void KisImageFromClipboardWidget::clipboardDataChanged ( )
privateslot

◆ createClipboardPreview

void KisImageFromClipboardWidget::createClipboardPreview ( )
privateslot

Definition at line 124 of file kis_image_from_clipboard_widget.cpp.

125{
126 if (!KisClipboard::instance()->hasClip()) {
127 enableImageCreation(QImage());
128 }
129
130 KisCursorOverrideLock cursorLock(Qt::BusyCursor);
131
132 QImage qimage = QApplication::clipboard()->image();
133 enableImageCreation(qimage);
134}
static KisClipboard * instance()

References enableImageCreation(), and KisClipboard::instance().

◆ createImage

void KisImageFromClipboardWidget::createImage ( )
privateslot

Definition at line 63 of file kis_image_from_clipboard_widget.cpp.

64{
65 newDialogConfirmationButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
66
67 KisPaintDeviceSP clip = KisClipboard::instance()->clip(QRect(), true);
68 if (!clip) {
69 enableImageCreation(QImage());
70 return;
71 }
72
74
75 if (doc) {
76 KisImageSP image = doc->image();
77 if (image && image->root() && image->root()->firstChild()) {
78 KisNodeSP node = image->root()->firstChild();
79 while (node && (!dynamic_cast<KisPaintLayer*>(node.data()) || node->userLocked())) {
80 node = node->nextSibling();
81 }
82
83 if (!node) {
84 KisPaintLayerSP newLayer = new KisPaintLayer(image, image->nextLayerName(), OPACITY_OPAQUE_U8);
85 image->addNode(newLayer);
86 node = newLayer;
87 }
88
90
91 KisPaintLayer * layer = dynamic_cast<KisPaintLayer*>(node.data());
93
95 const QRect r = clip->exactBounds();
97
98 KisPainter::copyAreaOptimized(QPoint(), clip, layer->paintDevice(), r);
99 layer->setDirty();
100 }
101 doc->setModified(true);
102 Q_EMIT m_openPane->documentSelected(doc);
103 m_openPane->accept();
104 }
105
106 newDialogConfirmationButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
107}
const quint8 OPACITY_OPAQUE_U8
KisImageSP image
void setModified(bool _mod)
QString nextLayerName(const QString &baseName="") const
Definition kis_image.cc:715
static void adaptClipToImageColorSpace(KisPaintDeviceSP dev, KisImageSP image)
void documentSelected(KisDocument *)
this signal is emitted (as defined by KisDocument) the moment the document is 'ready'
QRect exactBounds() const
static void copyAreaOptimized(const QPoint &dstPt, KisPaintDeviceSP src, KisPaintDeviceSP dst, const QRect &originalSrcRect)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
void setOpacity(quint8 val)
bool userLocked() const
bool addNode(KisNodeSP node, KisNodeSP parent=KisNodeSP(), KisNodeAdditionFlags flags=KisNodeAdditionFlag::None)
KisNodeSP firstChild() const
Definition kis_node.cpp:361
KisNodeSP nextSibling() const
Definition kis_node.cpp:408
virtual void setDirty()
Definition kis_node.cpp:577
KisPaintDeviceSP paintDevice

References KisImportCatcher::adaptClipToImageColorSpace(), KisNodeFacade::addNode(), KisClipboard::clip, KisPainter::copyAreaOptimized(), KisCustomImageWidget::createNewImage(), KisSharedPtr< T >::data(), KisOpenPane::documentSelected(), enableImageCreation(), KisPaintDevice::exactBounds(), KisNode::firstChild(), KisDocument::image, KisClipboard::instance(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisCustomImageWidget::m_openPane, KisImage::nextLayerName(), KisNode::nextSibling(), OPACITY_OPAQUE_U8, KisPaintLayer::paintDevice, KisNodeFacade::root, KisNode::setDirty(), KisDocument::setModified(), KisBaseNode::setOpacity(), and KisBaseNode::userLocked().

◆ enableImageCreation

void KisImageFromClipboardWidget::enableImageCreation ( const QImage & qimage)
privateslot

Definition at line 136 of file kis_image_from_clipboard_widget.cpp.

137{
138 if (qimage.isNull()) {
139 doubleWidth->setValue(0);
140 doubleHeight->setValue(0);
141 newDialogConfirmationButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
142 lblPreview->hide();
143 tabWidget->setEnabled(false);
144
145 lblDocumentInfo->setText(i18n("The clipboard is empty or does not have an image in it."));
146 } else {
147 QSize previewSize = QSize(75, 75) * devicePixelRatioF();
148 QPixmap preview = QPixmap::fromImage(qimage.scaled(previewSize, Qt::KeepAspectRatio));
149 preview.setDevicePixelRatio(devicePixelRatioF());
150 lblPreview->setPixmap(preview);
151 lblPreview->show();
152 newDialogConfirmationButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
153
154 doubleWidth->setValue(qimage.width());
155 doubleHeight->setValue(qimage.height());
156
157 tabWidget->setEnabled(true);
158 }
159}

◆ showEvent()


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