KWidgetsAddons

kpixmapregionselectorwidget.h
1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 2004 Antonio Larrosa <larrosa@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KPIXMAPREGIONSELECTORWIDGET_H
9#define KPIXMAPREGIONSELECTORWIDGET_H
10
11#include <kwidgetsaddons_export.h>
12
13#include <QPixmap>
14#include <QWidget>
15#include <memory>
16
17class QMenu;
18
19/**
20 * @class KPixmapRegionSelectorWidget kpixmapregionselectorwidget.h KPixmapRegionSelectorWidget
21 *
22 * KPixmapRegionSelectorWidget is a widget that shows a picture and provides the
23 * user with a friendly way to select a rectangular subregion of the pixmap.
24 *
25 * \image html kpixmapregionselectorwidget.png "KPixmapRegionSelectorWidget"
26 *
27 * @author Antonio Larrosa <larrosa@kde.org>
28 */
29class KWIDGETSADDONS_EXPORT KPixmapRegionSelectorWidget : public QWidget
30{
32 Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
33
34public:
35 /**
36 * This enum provides a rotation direction.
37 * @see KPixmapRegionSelectorWidget::rotate()
38 */
40 Rotate90, //!< Rotate 90 degrees to the right.
41 Rotate180, //!< Rotate 180 degrees.
42 Rotate270 //!< Rotate 90 degrees to the left.
43 };
44
45 /**
46 * Constructor for a KPixmapRegionSelectorWidget.
47 */
48 explicit KPixmapRegionSelectorWidget(QWidget *parent = nullptr);
49
50 /**
51 * Destructor for a KPixmapRegionSelectorWidget
52 */
54
55 /**
56 * Sets the pixmap which will be shown for the user to select a region from.
57 * @param pixmap The pixmap. Must be non-null.
58 *
59 */
60 void setPixmap(const QPixmap &pixmap);
61
62 /**
63 * @return the original whole pixmap that we're using in this widget as the
64 * pixmap the user is selecting a region from.
65 */
66 QPixmap pixmap() const;
67
68 /**
69 * Sets the selected region to be @p rect (in zoomed pixmap coordinates)
70 */
71 void setSelectedRegion(const QRect &rect);
72
73 /**
74 * Returns the selected region ( in zoomed pixmap coordinates )
75 */
76 QRect selectedRegion() const;
77
78 /**
79 * Returns the selected region ( in unzoomed, original pixmap coordinates )
80 */
82
83 /**
84 * Resets the selection to use the whole image
85 */
86 void resetSelection();
87
88 /**
89 * @returns a QImage object with just the region the user selected from the
90 * image
91 */
92 QImage selectedImage() const;
93
94 /**
95 * Sets the aspect ration that the selected subimage should have. The way to
96 * select it, is specifying an example valid @p width and @p height.
97 * @see setFreeSelectionAspectRatio()
98 */
100
101 /**
102 * Allows the user to do a selection which has any aspect ratio. This is
103 * the default.
104 * @see setSelectionAspectRatio()
105 */
107
108 /**
109 * Sets the maximum size for the widget. If the image is larger than this
110 * (either horizontally or vertically), it's scaled to adjust to the maximum
111 * size (preserving the aspect ratio)
112 */
113 void setMaximumWidgetSize(int width, int height);
114
115 /**
116 * Rotates the image as specified by the @p direction parameter, also tries
117 * to rotate the selected region so that it doesn't change, as long as the
118 * forced aspect ratio setting is respected, in other case, the selected region
119 * is reset.
120 */
121 void rotate(RotateDirection direction);
122
123public Q_SLOTS:
124 /**
125 * Rotates the current image 90º clockwise
126 */
127 void rotateClockwise();
128 /**
129 * Rotates the current image 90º counterclockwise
130 */
132
134 void pixmapRotated();
135
136protected:
137 /**
138 * Creates a QMenu with the menu that appears when clicking with the right button on the label
139 */
140 virtual QMenu *createPopupMenu();
141
142 bool eventFilter(QObject *obj, QEvent *ev) override;
143
144private:
145 friend class KPixmapRegionSelectorWidgetPrivate;
146 std::unique_ptr<class KPixmapRegionSelectorWidgetPrivate> const d;
147
148 Q_DISABLE_COPY(KPixmapRegionSelectorWidget)
149};
150
151#endif
KPixmapRegionSelectorWidget is a widget that shows a picture and provides the user with a friendly wa...
void setSelectedRegion(const QRect &rect)
Sets the selected region to be rect (in zoomed pixmap coordinates)
void resetSelection()
Resets the selection to use the whole image.
virtual QMenu * createPopupMenu()
Creates a QMenu with the menu that appears when clicking with the right button on the label.
void rotateClockwise()
Rotates the current image 90º clockwise.
QRect unzoomedSelectedRegion() const
Returns the selected region ( in unzoomed, original pixmap coordinates )
KPixmapRegionSelectorWidget(QWidget *parent=nullptr)
Constructor for a KPixmapRegionSelectorWidget.
void setFreeSelectionAspectRatio()
Allows the user to do a selection which has any aspect ratio.
void setPixmap(const QPixmap &pixmap)
Sets the pixmap which will be shown for the user to select a region from.
void setSelectionAspectRatio(int width, int height)
Sets the aspect ration that the selected subimage should have.
~KPixmapRegionSelectorWidget() override
Destructor for a KPixmapRegionSelectorWidget.
void rotateCounterclockwise()
Rotates the current image 90º counterclockwise.
void rotate(RotateDirection direction)
Rotates the image as specified by the direction parameter, also tries to rotate the selected region s...
QRect selectedRegion() const
Returns the selected region ( in zoomed pixmap coordinates )
void setMaximumWidgetSize(int width, int height)
Sets the maximum size for the widget.
RotateDirection
This enum provides a rotation direction.
@ Rotate90
Rotate 90 degrees to the right.
@ Rotate270
Rotate 90 degrees to the left.
QObject(QObject *parent)
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
Q_SLOTSQ_SLOTS
virtual bool eventFilter(QObject *watched, QEvent *event)
QWidget(QWidget *parent, Qt::WindowFlags f)
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 24 2025 11:56:58 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.