Revision control

Copy as Markdown

// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
// Qt-Security score:significant reason:default
#ifndef QQUICKIMAGEBASE_P_H
#define QQUICKIMAGEBASE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qquickimplicitsizeitem_p.h"
#include <private/qtquickglobal_p.h>
#include <QtGui/qcolorspace.h>
QT_BEGIN_NAMESPACE
class QQuickImageBasePrivate;
class Q_QUICK_EXPORT QQuickImageBase : public QQuickImplicitSizeItem
{
Q_OBJECT
Q_PROPERTY(Status status READ status NOTIFY statusChanged)
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged VIRTUAL)
Q_PROPERTY(bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
Q_PROPERTY(bool cache READ cache WRITE setCache NOTIFY cacheChanged)
Q_PROPERTY(bool mirror READ mirror WRITE setMirror NOTIFY mirrorChanged)
Q_PROPERTY(bool mirrorVertically READ mirrorVertically WRITE setMirrorVertically NOTIFY mirrorVerticallyChanged REVISION(6, 2))
Q_PROPERTY(bool retainWhileLoading READ retainWhileLoading WRITE setRetainWhileLoading NOTIFY retainWhileLoadingChanged REVISION(6, 8))
Q_PROPERTY(int currentFrame READ currentFrame WRITE setCurrentFrame NOTIFY currentFrameChanged VIRTUAL REVISION(2, 14))
Q_PROPERTY(int frameCount READ frameCount NOTIFY frameCountChanged VIRTUAL REVISION(2, 14))
Q_PROPERTY(QColorSpace colorSpace READ colorSpace WRITE setColorSpace NOTIFY colorSpaceChanged REVISION(2, 15))
QML_NAMED_ELEMENT(ImageBase);
QML_ADDED_IN_VERSION(2, 14)
QML_UNCREATABLE("ImageBase is an abstract base class.")
public:
enum LoadPixmapOption {
NoOption = 0x0000,
HandleDPR = 0x0001,
UseProviderOptions = 0x0002
};
Q_DECLARE_FLAGS(LoadPixmapOptions, LoadPixmapOption)
Q_FLAG(LoadPixmapOptions)
QQuickImageBase(QQuickItem *parent=nullptr);
~QQuickImageBase();
enum Status { Null, Ready, Loading, Error };
Q_ENUM(Status)
Status status() const;
qreal progress() const;
QUrl source() const;
virtual void setSource(const QUrl &url);
bool asynchronous() const;
void setAsynchronous(bool);
bool cache() const;
void setCache(bool);
QImage image() const;
virtual void setSourceSize(const QSize&);
QSize sourceSize() const;
void resetSourceSize();
QRectF sourceClipRect() const;
void setSourceClipRect(const QRectF &r);
void resetSourceClipRect();
virtual void setMirror(bool mirror);
bool mirror() const;
virtual void setMirrorVertically(bool mirror);
bool mirrorVertically() const;
virtual void setCurrentFrame(int frame);
virtual int currentFrame() const;
virtual int frameCount() const;
virtual void setAutoTransform(bool transform);
bool autoTransform() const;
QColorSpace colorSpace() const;
virtual void setColorSpace(const QColorSpace &colorSpace);
bool retainWhileLoading() const;
void setRetainWhileLoading(bool retain);
static void resolve2xLocalFile(const QUrl &url, qreal targetDevicePixelRatio, QUrl *sourceUrl, qreal *sourceDevicePixelRatio);
// Use a virtual rather than a signal->signal to avoid the huge
// connect/conneciton overhead for this rare case.
virtual void emitAutoTransformBaseChanged() { }
Q_SIGNALS:
void sourceChanged(const QUrl &);
void sourceSizeChanged();
void statusChanged(QQuickImageBase::Status);
void progressChanged(qreal progress);
void asynchronousChanged();
void cacheChanged();
void mirrorChanged();
Q_REVISION(2, 14) void currentFrameChanged();
Q_REVISION(2, 14) void frameCountChanged();
Q_REVISION(2, 15) void sourceClipRectChanged();
Q_REVISION(2, 15) void colorSpaceChanged();
Q_REVISION(6, 2) void mirrorVerticallyChanged();
Q_REVISION(6, 8) void retainWhileLoadingChanged();
protected:
void loadEmptyUrl();
void loadPixmap(const QUrl &url, LoadPixmapOptions loadOptions = NoOption);
virtual void load();
void componentComplete() override;
virtual void pixmapChange();
void itemChange(ItemChange change, const ItemChangeData &value) override;
void updatePolish() override;
QQuickImageBase(QQuickImageBasePrivate &dd, QQuickItem *parent);
private Q_SLOTS:
virtual void requestFinished();
void requestProgress(qint64,qint64);
private:
Q_DISABLE_COPY(QQuickImageBase)
Q_DECLARE_PRIVATE(QQuickImageBase)
};
QT_END_NAMESPACE
#endif // QQUICKIMAGEBASE_P_H