SPDX-FileCopyrightText: 2011 Marco Martin <mart@kde.org>
SPDX-FileCopyrightText: 2015 Luca Beltrame <lbeltrame@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef QIMAGEITEM_H
#define QIMAGEITEM_H
#include <QImage>
#include <QQuickPaintedItem>
class QImageItem : public QQuickPaintedItem
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QImage image READ image WRITE setImage NOTIFY imageChanged RESET resetImage)
Q_PROPERTY(int nativeWidth READ nativeWidth NOTIFY nativeWidthChanged)
Q_PROPERTY(int nativeHeight READ nativeHeight NOTIFY nativeHeightChanged)
Q_PROPERTY(int paintedWidth READ paintedWidth NOTIFY paintedWidthChanged)
Q_PROPERTY(int paintedHeight READ paintedHeight NOTIFY paintedHeightChanged)
Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged)
Q_PROPERTY(bool null READ isNull NOTIFY nullChanged)
public:
enum FillMode {
Stretch,
PreserveAspectFit,
PreserveAspectCrop,
Tile,
TileVertically,
TileHorizontally,
Pad,
};
Q_ENUM(FillMode)
explicit QImageItem(QQuickItem *parent = nullptr);
~QImageItem() override;
void setImage(const QImage &image);
QImage image() const;
void resetImage();
int nativeWidth() const;
int nativeHeight() const;
int paintedWidth() const;
int paintedHeight() const;
FillMode fillMode() const;
void setFillMode(FillMode mode);
void paint(QPainter *painter) override;
bool isNull() const;
Q_SIGNALS:
void nativeWidthChanged();
void nativeHeightChanged();
void fillModeChanged();
void imageChanged();
void nullChanged();
void paintedWidthChanged();
void paintedHeightChanged();
protected:
void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
private:
QImage m_image;
FillMode m_fillMode;
QRect m_paintedRect;
private Q_SLOTS:
void updatePaintedRect();
};
#endif