File indexing completed on 2024-05-12 13:04:44

0001 /*
0002  * This file is part of the KDE project
0003  * SPDX-FileCopyrightText: 2013 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #ifndef CQCANVASBASE_H
0009 #define CQCANVASBASE_H
0010 
0011 #include <QDeclarativeItem>
0012 
0013 class KoZoomController;
0014 class CQCanvasController;
0015 class CQCanvasBase : public QDeclarativeItem
0016 {
0017     Q_OBJECT
0018     Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)
0019     Q_PROPERTY(qreal shapeTransparency READ shapeTransparency WRITE setShapeTransparency NOTIFY shapeTransparencyChanged)
0020 
0021 public:
0022     explicit CQCanvasBase(QDeclarativeItem* parent);
0023     virtual ~CQCanvasBase();
0024 
0025     CQCanvasController *canvasController() const;
0026     KoZoomController *zoomController() const;
0027     QString source() const;
0028 
0029     virtual qreal shapeTransparency() const;
0030     virtual void setShapeTransparency(qreal newTransparency);
0031 public Q_SLOTS:
0032     virtual void setSource(const QString &source);
0033     virtual void render(QPainter* painter, const QRectF& target) = 0;
0034 
0035 Q_SIGNALS:
0036     void sourceChanged();
0037     void shapeTransparencyChanged();
0038     void canvasControllerChanged();
0039     void positionShouldChange(const QPoint& pos);
0040 
0041     void loadingBegun();
0042     void loadingFinished();
0043 
0044 protected:
0045     virtual void setCanvasController(CQCanvasController *controller);
0046     virtual void setZoomController(KoZoomController *controller);
0047 
0048     virtual void openFile(const QString &file) = 0;
0049 
0050 private:
0051     class Private;
0052     Private * const d;
0053 };
0054 
0055 Q_DECLARE_METATYPE(CQCanvasBase*);
0056 
0057 #endif // CQCANVASBASE_H