32 lines
855 B
C++
32 lines
855 B
C++
#ifndef __CIRCULARREVEAL_H__
|
|
#define __CIRCULARREVEAL_H__
|
|
|
|
#include "Utilities.h"
|
|
#include <QPainter>
|
|
#include <QPropertyAnimation>
|
|
#include <QQuickItem>
|
|
#include <QQuickPaintedItem>
|
|
|
|
class CircularReveal : public QQuickPaintedItem {
|
|
Q_OBJECT
|
|
QML_ELEMENT
|
|
Q_PROPERTY_AUTO_P(QQuickItem *, target)
|
|
Q_PROPERTY_AUTO(int, radius)
|
|
Q_PROPERTY_AUTO(bool, darkToLight)
|
|
public:
|
|
explicit CircularReveal(QQuickItem *parent = nullptr);
|
|
void paint(QPainter *painter) override;
|
|
Q_INVOKABLE void start(int w, int h, const QPoint ¢er, int radius);
|
|
Q_SIGNAL void imageChanged();
|
|
Q_SIGNAL void animationFinished();
|
|
Q_SLOT void handleGrabResult();
|
|
|
|
private:
|
|
QPropertyAnimation *_anim = nullptr;
|
|
QImage _source;
|
|
QPoint _center;
|
|
QSharedPointer<QQuickItemGrabResult> _grabResult;
|
|
};
|
|
|
|
#endif // __CIRCULARREVEAL_H__
|