File GradientStroke.hpp¶
File List > effects > GradientStroke.hpp
Go to the documentation of this file
//
// SPDX-FileCopyrightText: 2026 Michal Grabarczyk
// SPDX-License-Identifier: GPL-3.0-only WITH Universal-FOSS-exception-1.0
//
// This file is also available under a separate commercial license.
// See COMMERCIAL-LICENSING.md for contact information.
//
#pragma once
#include "QAccelPlot/effects/Colormap.hpp"
#include "QAccelPlot/effects/GradientColorTypes.hpp"
#include "QAccelPlot/effects/LineCurveEffect.hpp"
#include <QMetaObject>
#include <QObject>
#include <QVector>
#include <QtQml/qqmlregistration.h>
namespace QAccelPlot {
class GradientStroke : public LineCurveEffect {
Q_OBJECT
QML_NAMED_ELEMENT(GradientStroke)
Q_PROPERTY(Qt::Orientation direction READ direction WRITE setDirection NOTIFY directionChanged)
Q_PROPERTY(QObject* gradient READ gradient WRITE setGradient NOTIFY gradientChanged)
Q_PROPERTY(Colormap* colormap READ colormap WRITE setColormap NOTIFY colormapChanged)
Q_PROPERTY(GradientValueSource valueMinSource READ valueMinSource WRITE setValueMinSource NOTIFY valueMinSourceChanged)
Q_PROPERTY(qreal valueMin READ valueMin WRITE setValueMin NOTIFY valueMinChanged)
Q_PROPERTY(GradientValueSource valueMaxSource READ valueMaxSource WRITE setValueMaxSource NOTIFY valueMaxSourceChanged)
Q_PROPERTY(qreal valueMax READ valueMax WRITE setValueMax NOTIFY valueMaxChanged)
public:
explicit GradientStroke(QObject* parent = nullptr);
Qt::Orientation direction() const;
void setDirection(Qt::Orientation direction);
QObject* gradient() const;
void setGradient(QObject* gradient);
Colormap* colormap() const;
void setColormap(Colormap* colormap);
GradientValueSource valueMinSource() const;
void setValueMinSource(GradientValueSource source);
qreal valueMin() const;
void setValueMin(qreal value);
GradientValueSource valueMaxSource() const;
void setValueMaxSource(GradientValueSource source);
qreal valueMax() const;
void setValueMax(qreal value);
const GradientColorPayload& payload() const;
void refresh() override;
signals:
void directionChanged();
void gradientChanged();
void colormapChanged();
void valueMinSourceChanged();
void valueMinChanged();
void valueMaxSourceChanged();
void valueMaxChanged();
private:
GradientColorPayload readPayload() const;
void updatePayload();
void reconnectGradientSignals();
void disconnectGradientSignals();
Q_SLOT void onGradientObjectChanged();
void reconnectColormapSignals();
void disconnectColormapSignals();
Qt::Orientation direction_{Qt::Horizontal};
QObject* gradient_{nullptr};
QVector<QMetaObject::Connection> gradientConnections_;
Colormap* colormap_{nullptr};
QVector<QMetaObject::Connection> colormapConnections_;
GradientValueSource valueMinSource_{GradientValueSource::DataRange};
qreal valueMin_{0.0};
GradientValueSource valueMaxSource_{GradientValueSource::DataRange};
qreal valueMax_{0.0};
GradientColorPayload payload_;
};
} // namespace QAccelPlot