File indexing completed on 2024-05-12 04:19:38

0001 // vim: set tabstop=4 shiftwidth=4 expandtab:
0002 /*
0003 Gwenview: an image viewer
0004 Copyright 2007 Aurélien Gâteau <agateau@kde.org>
0005 
0006 This program is free software; you can redistribute it and/or
0007 modify it under the terms of the GNU General Public License
0008 as published by the Free Software Foundation; either version 2
0009 of the License, or (at your option) any later version.
0010 
0011 This program is distributed in the hope that it will be useful,
0012 but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 GNU General Public License for more details.
0015 
0016 You should have received a copy of the GNU General Public License
0017 along with this program; if not, write to the Free Software
0018 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0019 
0020 */
0021 #ifndef ABSTRACTRASTERIMAGEVIEWTOOL_H
0022 #define ABSTRACTRASTERIMAGEVIEWTOOL_H
0023 
0024 #include <lib/gwenviewlib_export.h>
0025 
0026 // Qt
0027 #include <QObject>
0028 
0029 // KF
0030 
0031 // Local
0032 
0033 class QKeyEvent;
0034 class QGraphicsSceneHoverEvent;
0035 class QGraphicsSceneMouseEvent;
0036 class QGraphicsSceneWheelEvent;
0037 class QPainter;
0038 
0039 namespace Gwenview
0040 {
0041 class RasterImageView;
0042 
0043 struct AbstractRasterImageViewToolPrivate;
0044 class GWENVIEWLIB_EXPORT AbstractRasterImageViewTool : public QObject
0045 {
0046     Q_OBJECT
0047 public:
0048     AbstractRasterImageViewTool(RasterImageView *view);
0049     ~AbstractRasterImageViewTool() override;
0050 
0051     RasterImageView *imageView() const;
0052 
0053     virtual void paint(QPainter *)
0054     {
0055     }
0056 
0057     virtual void mousePressEvent(QGraphicsSceneMouseEvent *)
0058     {
0059     }
0060     virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *)
0061     {
0062     }
0063     virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *)
0064     {
0065     }
0066     virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
0067     virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *)
0068     {
0069     }
0070     virtual void wheelEvent(QGraphicsSceneWheelEvent *event);
0071     virtual void keyPressEvent(QKeyEvent *)
0072     {
0073     }
0074     virtual void keyReleaseEvent(QKeyEvent *)
0075     {
0076     }
0077 
0078     virtual void toolActivated()
0079     {
0080     }
0081     virtual void toolDeactivated()
0082     {
0083     }
0084 
0085     virtual QWidget *widget() const
0086     {
0087         return nullptr;
0088     }
0089 
0090 public Q_SLOTS:
0091     virtual void onWidgetSlidedIn()
0092     {
0093     }
0094 
0095 private:
0096     AbstractRasterImageViewToolPrivate *const d;
0097 };
0098 
0099 } // namespace
0100 
0101 #endif /* ABSTRACTRASTERIMAGEVIEWTOOL_H */