// Copyright (C) 2022 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 #ifndef QQUICKMULTIEFFECT_H #define QQUICKMULTIEFFECT_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 QT_REQUIRE_CONFIG(quick_shadereffect); #include "qtquickeffectsglobal_p.h" #include #include #include #include QT_BEGIN_NAMESPACE class QQuickMultiEffectPrivate; class Q_QUICKEFFECTS_EXPORT QQuickMultiEffect : public QQuickItem { Q_OBJECT Q_PROPERTY(QQuickItem *source READ source WRITE setSource NOTIFY sourceChanged) Q_PROPERTY(bool autoPaddingEnabled READ autoPaddingEnabled WRITE setAutoPaddingEnabled NOTIFY autoPaddingEnabledChanged) Q_PROPERTY(QRectF paddingRect READ paddingRect WRITE setPaddingRect NOTIFY paddingRectChanged) Q_PROPERTY(qreal brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged) Q_PROPERTY(qreal contrast READ contrast WRITE setContrast NOTIFY contrastChanged) Q_PROPERTY(qreal saturation READ saturation WRITE setSaturation NOTIFY saturationChanged) Q_PROPERTY(qreal colorization READ colorization WRITE setColorization NOTIFY colorizationChanged) Q_PROPERTY(QColor colorizationColor READ colorizationColor WRITE setColorizationColor NOTIFY colorizationColorChanged) Q_PROPERTY(bool blurEnabled READ blurEnabled WRITE setBlurEnabled NOTIFY blurEnabledChanged) Q_PROPERTY(qreal blur READ blur WRITE setBlur NOTIFY blurChanged) Q_PROPERTY(int blurMax READ blurMax WRITE setBlurMax NOTIFY blurMaxChanged) Q_PROPERTY(qreal blurMultiplier READ blurMultiplier WRITE setBlurMultiplier NOTIFY blurMultiplierChanged) Q_PROPERTY(bool shadowEnabled READ shadowEnabled WRITE setShadowEnabled NOTIFY shadowEnabledChanged) Q_PROPERTY(qreal shadowOpacity READ shadowOpacity WRITE setShadowOpacity NOTIFY shadowOpacityChanged) Q_PROPERTY(qreal shadowBlur READ shadowBlur WRITE setShadowBlur NOTIFY shadowBlurChanged) Q_PROPERTY(qreal shadowHorizontalOffset READ shadowHorizontalOffset WRITE setShadowHorizontalOffset NOTIFY shadowHorizontalOffsetChanged) Q_PROPERTY(qreal shadowVerticalOffset READ shadowVerticalOffset WRITE setShadowVerticalOffset NOTIFY shadowVerticalOffsetChanged) Q_PROPERTY(QColor shadowColor READ shadowColor WRITE setShadowColor NOTIFY shadowColorChanged) Q_PROPERTY(qreal shadowScale READ shadowScale WRITE setShadowScale NOTIFY shadowScaleChanged) Q_PROPERTY(bool maskEnabled READ maskEnabled WRITE setMaskEnabled NOTIFY maskEnabledChanged) Q_PROPERTY(QQuickItem *maskSource READ maskSource WRITE setMaskSource NOTIFY maskSourceChanged) Q_PROPERTY(qreal maskThresholdMin READ maskThresholdMin WRITE setMaskThresholdMin NOTIFY maskThresholdMinChanged) Q_PROPERTY(qreal maskSpreadAtMin READ maskSpreadAtMin WRITE setMaskSpreadAtMin NOTIFY maskSpreadAtMinChanged) Q_PROPERTY(qreal maskThresholdMax READ maskThresholdMax WRITE setMaskThresholdMax NOTIFY maskThresholdMaxChanged) Q_PROPERTY(qreal maskSpreadAtMax READ maskSpreadAtMax WRITE setMaskSpreadAtMax NOTIFY maskSpreadAtMaxChanged) Q_PROPERTY(bool maskInverted READ maskInverted WRITE setMaskInverted NOTIFY maskInvertedChanged) Q_PROPERTY(QRectF itemRect READ itemRect NOTIFY itemRectChanged) Q_PROPERTY(QString fragmentShader READ fragmentShader NOTIFY fragmentShaderChanged) Q_PROPERTY(QString vertexShader READ vertexShader NOTIFY vertexShaderChanged) Q_PROPERTY(bool hasProxySource READ hasProxySource NOTIFY hasProxySourceChanged) QML_NAMED_ELEMENT(MultiEffect) QML_ADDED_IN_VERSION(6, 5) public: QQuickMultiEffect(QQuickItem *parent = nullptr); ~QQuickMultiEffect() override; QQuickItem *source() const; void setSource(QQuickItem *item); bool autoPaddingEnabled() const; void setAutoPaddingEnabled(bool enabled); QRectF paddingRect() const; void setPaddingRect(const QRectF &rect); qreal brightness() const; void setBrightness(qreal brightness); qreal contrast() const; void setContrast(qreal contrast); qreal saturation() const; void setSaturation(qreal saturation); qreal colorization() const; void setColorization(qreal colorization); QColor colorizationColor() const; void setColorizationColor(const QColor &color); bool blurEnabled() const; void setBlurEnabled(bool enabled); qreal blur() const; void setBlur(qreal blur); int blurMax() const; void setBlurMax(int blurMax); qreal blurMultiplier() const; void setBlurMultiplier(qreal blurMultiplier); bool shadowEnabled() const; void setShadowEnabled(bool enabled); qreal shadowOpacity() const; void setShadowOpacity(qreal shadowOpacity); qreal shadowBlur() const; void setShadowBlur(qreal shadowBlur); qreal shadowHorizontalOffset() const; void setShadowHorizontalOffset(qreal offset); qreal shadowVerticalOffset() const; void setShadowVerticalOffset(qreal offset); QColor shadowColor() const; void setShadowColor(const QColor &color); qreal shadowScale() const; void setShadowScale(qreal shadowScale); bool maskEnabled() const; void setMaskEnabled(bool enabled); QQuickItem *maskSource() const; void setMaskSource(QQuickItem *item); qreal maskThresholdMin() const; void setMaskThresholdMin(qreal threshold); qreal maskSpreadAtMin() const; void setMaskSpreadAtMin(qreal spread); qreal maskThresholdMax() const; void setMaskThresholdMax(qreal threshold); qreal maskSpreadAtMax() const; void setMaskSpreadAtMax(qreal spread); bool maskInverted() const; void setMaskInverted(bool inverted); QRectF itemRect() const; QString fragmentShader() const; QString vertexShader() const; bool hasProxySource() const; Q_SIGNALS: void shaderChanged(); void itemSizeChanged(); void sourceChanged(); void autoPaddingEnabledChanged(); void paddingRectChanged(); void brightnessChanged(); void contrastChanged(); void saturationChanged(); void colorizationChanged(); void colorizationColorChanged(); void blurEnabledChanged(); void blurChanged(); void blurMaxChanged(); void blurMultiplierChanged(); void shadowEnabledChanged(); void shadowOpacityChanged(); void shadowBlurChanged(); void shadowHorizontalOffsetChanged(); void shadowVerticalOffsetChanged(); void shadowColorChanged(); void shadowScaleChanged(); void maskEnabledChanged(); void maskSourceChanged(); void maskThresholdMinChanged(); void maskSpreadAtMinChanged(); void maskThresholdMaxChanged(); void maskSpreadAtMaxChanged(); void maskInvertedChanged(); void itemRectChanged(); void fragmentShaderChanged(); void vertexShaderChanged(); void hasProxySourceChanged(); protected: void componentComplete() override; void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; void itemChange(ItemChange change, const ItemChangeData &value) override; private: Q_DECLARE_PRIVATE(QQuickMultiEffect) }; QT_END_NAMESPACE #endif // QQUICKMULTIEFFECT_H