-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathqcimagereader.h
99 lines (71 loc) · 2.12 KB
/
qcimagereader.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* QuickCross Project
* License: APACHE-2.0
* Author: Ben Lau
* Project Site: https://github.com/benlau/quickcross
*
*/
#ifndef QCIMAGEREADER_H
#define QCIMAGEREADER_H
#include <QObject>
#include <QSize>
#include <QVariantMap>
#include <QImage>
#include <QQmlEngine>
#include <QQmlParserStatus>
#include "priv/qcreader.h"
/// Wrapper of QImageReader with asynchronous loading
class QCImageReader : public QCReader, public QQmlParserStatus
{
Q_OBJECT
Q_PROPERTY(bool canRead READ canRead NOTIFY canReadChanged)
Q_PROPERTY(QSize size READ size NOTIFY sizeChanged)
Q_PROPERTY(bool isFetched READ isFetched NOTIFY isFetchedChanged)
Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)
Q_PROPERTY(QImage image READ image WRITE setImage NOTIFY imageChanged)
Q_INTERFACES(QQmlParserStatus)
public:
explicit QCImageReader(QObject *parent = 0);
bool canRead() const;
void setCanRead(bool canRead);
QSize size() const;
void setSize(const QSize &size);
bool isFetched() const;
void setIsFetched(bool isFetched);
QString source() const;
void setSource(const QString &source);
QImage image() const;
void setImage(const QImage &image);
static bool isImageProviderUrl(const QString& source);
// Read image from image provider.
static QImage readFromImageProvider(QQmlEngine* engine, const QString source);
public slots:
/// Fetch image information without read the whole image
void fetch();
/// Read image from the source
void read();
void clear();
signals:
void fetched();
void sizeChanged();
void canReadChanged();
void isFetchedChanged();
void sourceChanged();
void imageChanged();
private slots:
void onFetchFinished(QVariantMap map);
void onReadImageFinished(QVariantMap map);
private:
void classBegin();
void componentComplete();
bool m_canRead;
QSize m_size;
bool m_isFetched;
QString m_source;
QImage m_image;
bool m_isReady;
bool m_isError;
bool m_isFinished;
QString m_errorString;
QQmlEngine* m_engine;
};
#endif // QCIMAGEREADER_H