nosignal-shell/plugin/src/Caelestia/Config/fontbuilder.hpp
2 * r + 2 * t 3443b6fee3 fix: font builder vaxis incompatible type
QFont::Tag can't be passed directly from QML
Also add logging if unable to convert
And make MaterialIcon inherit vaxes from fontStyle
2026-04-22 22:47:18 +10:00

39 lines
1.3 KiB
C++

#pragma once
#include <qfont.h>
#include <qqmlintegration.h>
namespace caelestia::config {
class FontBuilder {
Q_GADGET
QML_ANONYMOUS
public:
FontBuilder() = default;
explicit FontBuilder(QFont font);
[[nodiscard]] Q_INVOKABLE FontBuilder family(const QString& family);
[[nodiscard]] Q_INVOKABLE FontBuilder size(int pointSize);
[[nodiscard]] Q_INVOKABLE FontBuilder weight(QFont::Weight weight);
[[nodiscard]] Q_INVOKABLE FontBuilder italic(bool on = true);
[[nodiscard]] Q_INVOKABLE FontBuilder stretch(int stretch);
[[nodiscard]] Q_INVOKABLE FontBuilder letterSpacing(qreal spacing, bool absolute = true);
[[nodiscard]] Q_INVOKABLE FontBuilder capitalisation(QFont::Capitalization cap);
[[nodiscard]] Q_INVOKABLE FontBuilder vaxis(const QString& tag, float value);
[[nodiscard]] Q_INVOKABLE FontBuilder vaxes(QVariantMap axes);
[[nodiscard]] Q_INVOKABLE QFont build() const;
// Common vaxes
[[nodiscard]] Q_INVOKABLE FontBuilder fill(float value);
[[nodiscard]] Q_INVOKABLE FontBuilder grade(float value);
[[nodiscard]] Q_INVOKABLE FontBuilder width(float value);
// Operations
[[nodiscard]] Q_INVOKABLE FontBuilder scale(qreal factor);
private:
QFont m_font;
};
} // namespace caelestia::config