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

#include <kis_image_manager.h>

+ Inheritance diagram for KisImageManager:

Public Slots

qint32 importImage (const QUrl &url, const QString &layerType="KisPaintLayer")
 
void resizeCurrentImage (qint32 w, qint32 h, qint32 xOffset, qint32 yOffset)
 
void rotateCurrentImage (double radians)
 
void scaleCurrentImage (const QSize &size, qreal xres, qreal yres, KisFilterStrategy *filterStrategy)
 
void shearCurrentImage (double angleX, double angleY)
 
void slotImageColor ()
 
void slotImageProperties ()
 
void slotImportLayerAsFilterMask ()
 
void slotImportLayerAsSelectionMask ()
 
void slotImportLayerAsTransparencyMask ()
 
void slotImportLayerFromFile ()
 

Public Member Functions

 KisImageManager (KisViewManager *view)
 
void setup (KisActionManager *actionManager)
 
void setView (QPointer< KisView >imageView)
 
 ~KisImageManager () override
 

Private Attributes

KisViewManagerm_view
 

Detailed Description

Definition at line 20 of file kis_image_manager.h.

Constructor & Destructor Documentation

◆ KisImageManager()

KisImageManager::KisImageManager ( KisViewManager * view)

Definition at line 38 of file kis_image_manager.cc.

39 : m_view(view)
40{
41}
KisViewManager * m_view

◆ ~KisImageManager()

KisImageManager::~KisImageManager ( )
inlineoverride

Definition at line 29 of file kis_image_manager.h.

29{}

Member Function Documentation

◆ importImage

qint32 KisImageManager::importImage ( const QUrl & url,
const QString & layerType = "KisPaintLayer" )
slot

Import an image as a layer. If there is more than one layer in the image, import all of them as separate layers.

Parameters
urlthe url to the image file
layerTypethe layer type
Returns
the number of layers added

Definition at line 94 of file kis_image_manager.cc.

95{
96 KisImageWSP currentImage = m_view->image();
97
98 if (!currentImage) {
99 return 0;
100 }
101
102 QList<QString> paths;
103 qint32 rc = 0;
104
105 if (urlArg.isEmpty()) {
107 dialog.setCaption(i18n("Import Image"));
108 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
110 QStringList fileNames = dialog.filenames();
111 Q_FOREACH (const QString &fileName, fileNames) {
112 paths << fileName;
113 }
114
115 } else {
116 paths.push_back(urlArg.toLocalFile());
117 }
118
119 if (paths.empty()) {
120 return 0;
121 }
122
123 Q_FOREACH(const QString &path, paths) {
124 if (path.endsWith("svg")) {
125 rc += (new KisImportCatcher(path, m_view, "KisShapeLayer"))->numLayersImported();
126 }
127 else {
128 rc += (new KisImportCatcher(path, m_view, layerType))->numLayersImported();
129 }
130 }
131
132 m_view->canvas()->update();
133
134 return rc;
135}
static QStringList supportedMimeTypes(Direction direction)
QWidget * canvas() const
Return the actual widget that is displaying the current image.
QWidget * mainWindowAsQWidget() const
KisImageWSP image() const
Return the image this view is displaying.

References KisViewManager::canvas(), KisViewManager::image(), KisImportExportManager::Import, m_view, KisViewManager::mainWindowAsQWidget(), KoFileDialog::OpenFiles, and KisImportExportManager::supportedMimeTypes().

◆ resizeCurrentImage

void KisImageManager::resizeCurrentImage ( qint32 w,
qint32 h,
qint32 xOffset,
qint32 yOffset )
slot

Definition at line 137 of file kis_image_manager.cc.

138{
139 if (!m_view->image()) return;
140
141 m_view->image()->resizeImage(QRect(-xOffset, -yOffset, w, h));
142}
void resizeImage(const QRect &newRect)
start asynchronous operation on resizing the image
Definition kis_image.cc:865

References KisViewManager::image(), m_view, and KisImage::resizeImage().

◆ rotateCurrentImage

void KisImageManager::rotateCurrentImage ( double radians)
slot

Definition at line 150 of file kis_image_manager.cc.

151{
152 if (!m_view->image()) return;
153 m_view->image()->rotateImage(radians);
154}
void rotateImage(double radians)
start asynchronous operation on rotating the image

References KisViewManager::image(), m_view, and KisImage::rotateImage().

◆ scaleCurrentImage

void KisImageManager::scaleCurrentImage ( const QSize & size,
qreal xres,
qreal yres,
KisFilterStrategy * filterStrategy )
slot

Definition at line 144 of file kis_image_manager.cc.

145{
146 if (!m_view->image()) return;
147 m_view->image()->scaleImage(size, xres, yres, filterStrategy);
148}
void scaleImage(const QSize &size, qreal xres, qreal yres, KisFilterStrategy *filterStrategy)
start asynchronous operation on scaling the image
Definition kis_image.cc:961

References KisViewManager::image(), m_view, and KisImage::scaleImage().

◆ setup()

void KisImageManager::setup ( KisActionManager * actionManager)

Definition at line 48 of file kis_image_manager.cc.

49{
50
51 KisAction *action = actionManager->createAction("import_layer_from_file");
52 connect(action, SIGNAL(triggered()), this, SLOT(slotImportLayerFromFile()));
53
54 action = actionManager->createAction("image_properties");
55 connect(action, SIGNAL(triggered()), this, SLOT(slotImageProperties()));
56
57 action = actionManager->createAction("import_layer_as_paint_layer");
58 connect(action, SIGNAL(triggered()), this, SLOT(slotImportLayerFromFile()));
59
60 action = actionManager->createAction("import_layer_as_transparency_mask");
61 connect(action, SIGNAL(triggered()), this, SLOT(slotImportLayerAsTransparencyMask()));
62
63 action = actionManager->createAction("import_layer_as_filter_mask");
64 connect(action, SIGNAL(triggered()), this, SLOT(slotImportLayerAsFilterMask()));
65
66 action = actionManager->createAction("import_layer_as_selection_mask");
67 connect(action, SIGNAL(triggered()), this, SLOT(slotImportLayerAsSelectionMask()));
68
69 action = actionManager->createAction("image_color");
70 connect(action, SIGNAL(triggered()), this, SLOT(slotImageColor()));
71}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisAction * createAction(const QString &name)
void slotImportLayerAsSelectionMask()
void slotImportLayerAsFilterMask()
void slotImportLayerAsTransparencyMask()

References connect(), KisActionManager::createAction(), slotImageColor(), slotImageProperties(), slotImportLayerAsFilterMask(), slotImportLayerAsSelectionMask(), slotImportLayerAsTransparencyMask(), and slotImportLayerFromFile().

◆ setView()

void KisImageManager::setView ( QPointer< KisView > imageView)

Definition at line 43 of file kis_image_manager.cc.

44{
45 Q_UNUSED(imageView);
46}

◆ shearCurrentImage

void KisImageManager::shearCurrentImage ( double angleX,
double angleY )
slot

Definition at line 156 of file kis_image_manager.cc.

157{
158 if (!m_view->image()) return;
159 m_view->image()->shear(angleX, angleY);
160}
void shear(double angleX, double angleY)
start asynchronous operation on shearing the image

References KisViewManager::image(), m_view, and KisImage::shear().

◆ slotImageColor

void KisImageManager::slotImageColor ( )
slot

Definition at line 191 of file kis_image_manager.cc.

192{
193 KisImageWSP image = m_view->image();
194 if (!image) return;
195
196 QColorDialog dlg;
197 dlg.setOption(QColorDialog::ShowAlphaChannel, true);
198 dlg.setWindowTitle(i18n("Select a Color"));
199 KoColor oldBgColor = image->defaultProjectionColor();
200 dlg.setCurrentColor(oldBgColor.toQColor());
201
203
204 std::function<void ()> updateCall(std::bind(updateImageBackgroundColor, image, &dlg));
205 SignalToFunctionProxy proxy(updateCall);
206
207 connect(&dlg, SIGNAL(currentColorChanged(QColor)), &compressor, SLOT(start()));
208 connect(&compressor, SIGNAL(timeout()), &proxy, SLOT(start()));
209
210 if (dlg.exec() == QDialog::Accepted) {
211 if (compressor.isActive()) {
212 compressor.stop();
213 updateCall();
214 }
215 } else {
217 }
218}
KoColor defaultProjectionColor() const
void toQColor(QColor *c) const
a convenience method for the above.
Definition KoColor.cpp:198
void updateImageBackgroundColor(KisImageSP image, const QColorDialog *dlg)
typedef void(QOPENGLF_APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer)
void changeImageDefaultProjectionColor(KisImageSP image, const KoColor &color)

References KisLayerUtils::changeImageDefaultProjectionColor(), connect(), KisImage::defaultProjectionColor(), KisSignalCompressor::FIRST_INACTIVE, KisViewManager::image(), KisSignalCompressor::isActive(), m_view, KisSignalCompressor::stop(), KoColor::toQColor(), updateImageBackgroundColor(), and void().

◆ slotImageProperties

void KisImageManager::slotImageProperties ( )
slot

Definition at line 163 of file kis_image_manager.cc.

164{
165 KisImageWSP image = m_view->image();
166 if (!image) return;
167
169 if (dlg->exec() == QDialog::Accepted) {
170 if (dlg->convertLayerPixels()) {
171 image->convertImageColorSpace(dlg->colorSpace(),
174
175 } else {
176 image->convertImageProjectionColorSpace(dlg->colorSpace());
177 }
178 }
179 delete dlg;
180}
KisDisplayColorConverter displayColorConverter
void convertImageColorSpace(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
void convertImageProjectionColorSpace(const KoColorSpace *dstColorSpace)
KisCanvas2 * canvasBase() const
Return the canvas base class.

References KisViewManager::canvasBase(), KisImage::convertImageColorSpace(), KisImage::convertImageProjectionColorSpace(), KisCanvas2::displayColorConverter, KisViewManager::image(), KoColorConversionTransformation::internalConversionFlags(), KoColorConversionTransformation::internalRenderingIntent(), m_view, and KisViewManager::mainWindowAsQWidget().

◆ slotImportLayerAsFilterMask

void KisImageManager::slotImportLayerAsFilterMask ( )
slot

Definition at line 83 of file kis_image_manager.cc.

84{
85 importImage(QUrl(), "KisFilterMask");
86}
qint32 importImage(const QUrl &url, const QString &layerType="KisPaintLayer")

References importImage().

◆ slotImportLayerAsSelectionMask

void KisImageManager::slotImportLayerAsSelectionMask ( )
slot

Definition at line 88 of file kis_image_manager.cc.

89{
90 importImage(QUrl(), "KisSelectionMask");
91}

References importImage().

◆ slotImportLayerAsTransparencyMask

void KisImageManager::slotImportLayerAsTransparencyMask ( )
slot

Definition at line 78 of file kis_image_manager.cc.

79{
80 importImage(QUrl(), "KisTransparencyMask");
81}

References importImage().

◆ slotImportLayerFromFile

void KisImageManager::slotImportLayerFromFile ( )
slot

Definition at line 73 of file kis_image_manager.cc.

74{
75 importImage(QUrl(), "KisPaintLayer");
76}

References importImage().

Member Data Documentation

◆ m_view

KisViewManager* KisImageManager::m_view
private

Definition at line 61 of file kis_image_manager.h.


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