feat: fontbuilder to streamline font styling
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#include <qfont.h>
|
||||
#include <qqmlintegration.h>
|
||||
#include <qvariant.h>
|
||||
|
||||
namespace ZShell::config {
|
||||
|
||||
class FontBuilder {
|
||||
Q_GADGET
|
||||
QML_ANONYMOUS
|
||||
|
||||
public:
|
||||
FontBuilder() = default;
|
||||
explicit FontBuilder(const QFont& font);
|
||||
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder family(const QString& family);
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder size(int pointSize);
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder pixelSize(int pixelSize);
|
||||
[[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(const QVariantMap& axes);
|
||||
[[nodiscard]] Q_INVOKABLE QFont build() const;
|
||||
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder fill(float value);
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder grade(float value);
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder width(float value);
|
||||
|
||||
[[nodiscard]] Q_INVOKABLE FontBuilder scale(qreal factor);
|
||||
|
||||
private:
|
||||
QFont m_font;
|
||||
};
|
||||
|
||||
} // namespace ZShell::config
|
||||
Reference in New Issue
Block a user