digiKam
Loading...
Searching...
No Matches
canvas.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2013-08-04
7 * Description : image editor canvas management class
8 *
9 * SPDX-FileCopyrightText: 2013-2014 by Yiou Wang <geow812 at gmail dot com>
10 * SPDX-FileCopyrightText: 2004-2005 by Renchi Raju <renchi dot raju at gmail dot com>
11 * SPDX-FileCopyrightText: 2004-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QRect>
22#include <QWheelEvent>
23#include <QMouseEvent>
24#include <QKeyEvent>
25
26// Local includes
27
28#include "digikam_export.h"
29#include "dimg.h"
30#include "graphicsdimgview.h"
31#include "editorcore.h"
32
33
34namespace Digikam
35{
36
37class EditorCore;
38class ExposureSettingsContainer;
39class ICCSettingsContainer;
40class IccTransform;
41class IOFileSettings;
42
43class DIGIKAM_EXPORT Canvas : public GraphicsDImgView
44{
45 Q_OBJECT
46
47public:
48
49 explicit Canvas(QWidget* const parent = nullptr);
50 ~Canvas() override;
51
52 void load(const QString& filename, IOFileSettings* const IOFileSettings);
53 void preload(const QString& filename);
54
55 void resetImage();
56 void abortSaving();
57 void setModified();
58 void makeDefaultEditingCanvas();
59
60 QString ensureHasCurrentUuid() const;
61
65 EditorCore* interface() const;
66
70 DImg currentImage() const;
71
75 QString currentImageFileFormat() const;
76
80 QString currentImageFilePath() const;
81
85 int imageWidth() const;
86
90 int imageHeight() const;
91
95 QRect getSelectedArea() const;
96
101 bool isReadOnly() const;
102
106 void setICCSettings(const ICCSettingsContainer& cmSettings);
107
111 void applyTransform(const IccTransform& transform);
112
116 void setExposureSettings(ExposureSettingsContainer* const expoSettings);
117
121 void setSoftProofingEnabled(bool enable);
122
126 void setExifOrient(bool exifOrient);
127
131 bool exifRotated() const;
132
136 void fitToSelect();
137
138Q_SIGNALS:
139
141 void signalSelected(bool);
146 void signalLoadingStarted(const QString& filename);
147 void signalLoadingFinished(const QString& filename, bool success);
148 void signalLoadingProgress(const QString& filePath, float progress);
149 void signalSavingStarted(const QString& filename);
150 void signalSavingFinished(const QString& filename, bool success);
151 void signalSavingProgress(const QString& filePath, float progress);
152 void signalSelectionChanged(const QRect&);
153 void signalSelectionSetText(const QRect&);
157 void signalZoomChanged(double);
158 void signalAddedDropedItems(QDropEvent*);
159
160public Q_SLOTS:
161
163 void slotRotate90();
164 void slotRotate180();
165 void slotRotate270();
166 void slotFlipHoriz();
167 void slotFlipVert();
168 void slotCrop();
169
170 void slotRestore();
171 void slotUndo(int steps = 1);
172 void slotRedo(int steps = 1);
173
174 void slotCopy();
175
176 void slotSelectAll();
177 void slotSelectNone();
178 void slotSelected();
179 void slotSelectionMoved();
180
181protected:
182
183 void keyPressEvent(QKeyEvent*) override;
184 void mousePressEvent(QMouseEvent*) override;
185 void addRubber();
186
187 void dragMoveEvent(QDragMoveEvent*) override;
188 void dragEnterEvent(QDragEnterEvent*) override;
189 void dropEvent(QDropEvent*) override;
190
191private:
192
193 QRect calcSelectedArea() const;
194 void reset();
195
196private Q_SLOTS:
197
198 void slotModified();
199 void slotImageLoaded(const QString& filePath, bool success);
200 void slotImageSaved(const QString& filePath, bool success);
201 void slotAddItemStarted(const QPointF& pos);
202 void slotAddItemMoving(const QRectF& rect);
203 void slotAddItemFinished(const QRectF& rect);
204 void slotCancelAddItem();
205
206private:
207
208 class Private;
209 Private* const d = nullptr;
210};
211
212} // namespace Digikam
Definition canvas.h:44
void signalSelected(bool)
void signalSavingProgress(const QString &filePath, float progress)
void signalLoadingProgress(const QString &filePath, float progress)
void signalChanged()
void signalRedoSteps(int)
void signalLoadingFinished(const QString &filename, bool success)
void signalAddedDropedItems(QDropEvent *)
void signalZoomChanged(double)
void signalLoadingStarted(const QString &filename)
void signalSavingStarted(const QString &filename)
void signalSelectionChanged(const QRect &)
void signalShowPrevImage()
void signalRightButtonClicked()
void signalSavingFinished(const QString &filename, bool success)
void signalUndoSteps(int)
void signalPrepareToLoad()
void signalSelectionSetText(const QRect &)
void signalToggleOffFitToWindow()
void signalShowNextImage()
Definition dimg.h:52
Definition editorcore.h:48
Definition exposurecontainer.h:29
Definition graphicsdimgview.h:34
Definition iccsettingscontainer.h:35
Definition iofilesettings.h:26
Definition icctransform.h:39
Definition datefolderview.cpp:34