3#include <QtQml/QQmlEngine>
6#include "qml_material/export.hpp"
11class QML_MATERIAL_API Hct :
public QObject {
15 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
16 Q_PROPERTY(
double hue READ hue WRITE setHue NOTIFY hctChanged FINAL)
17 Q_PROPERTY(
double chroma READ chroma WRITE setChroma NOTIFY hctChanged FINAL)
18 Q_PROPERTY(
double tone READ tone WRITE setTone NOTIFY hctChanged FINAL)
21 explicit Hct(QObject* parent =
nullptr);
24 QColor color() const noexcept;
25 double hue() const noexcept;
26 double chroma() const noexcept;
27 double tone() const noexcept;
29 void setColor(QColor);
31 void setChroma(
double);
34 Q_SIGNAL
void colorChanged();
35 Q_SIGNAL
void hctChanged();
38 void rebuildFromHct();
39 void rebuildFromColor(QColor);
43 double m_chroma { 0.0 };
44 double m_tone { 0.0 };
45 bool m_blocked {
false };
48class QML_MATERIAL_API HctUtil :
public QObject {
53 explicit HctUtil(QObject* parent =
nullptr);
55 Q_INVOKABLE QColor fromHct(
double hue,
double chroma,
double tone)
const;
56 Q_INVOKABLE QColor paletteTone(QColor seed,
double tone)
const;
57 Q_INVOKABLE
double hueOf(QColor c)
const;
58 Q_INVOKABLE
double chromaOf(QColor c)
const;
59 Q_INVOKABLE
double toneOf(QColor c)
const;