dtkgui/include/util/dfontmanager.h

124 lines
2.6 KiB
C++

// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DFONTSIZEMANAGER_H
#define DFONTSIZEMANAGER_H
#include <DObject>
#include <dtkgui_global.h>
#include <QFont>
#include <QObject>
DGUI_BEGIN_NAMESPACE
class DFontManagerPrivate;
class DFontManager : public QObject
, public DTK_CORE_NAMESPACE::DObject
{
Q_OBJECT
Q_PROPERTY(QFont t1 READ t1 NOTIFY fontChanged)
Q_PROPERTY(QFont t2 READ t2 NOTIFY fontChanged)
Q_PROPERTY(QFont t3 READ t3 NOTIFY fontChanged)
Q_PROPERTY(QFont t4 READ t4 NOTIFY fontChanged)
Q_PROPERTY(QFont t5 READ t5 NOTIFY fontChanged)
Q_PROPERTY(QFont t6 READ t6 NOTIFY fontChanged)
Q_PROPERTY(QFont t7 READ t7 NOTIFY fontChanged)
Q_PROPERTY(QFont t8 READ t8 NOTIFY fontChanged)
Q_PROPERTY(QFont t9 READ t9 NOTIFY fontChanged)
Q_PROPERTY(QFont t10 READ t10 NOTIFY fontChanged)
Q_PROPERTY(QFont baseFont READ baseFont WRITE setBaseFont RESET resetBaseFont NOTIFY fontChanged)
public:
enum SizeType {
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
NSizeTypes
};
Q_ENUM(SizeType)
DFontManager(QObject *parent = nullptr);
~DFontManager() override;
Q_INVOKABLE int fontPixelSize(SizeType type) const;
Q_INVOKABLE void setFontPixelSize(SizeType type, int size);
Q_INVOKABLE static int fontPixelSize(const QFont &font);
Q_INVOKABLE static QFont get(int pixelSize, const QFont &base);
inline const QFont get(SizeType type, const QFont &base) const
{
return get(fontPixelSize(type), base);
}
inline const QFont get(SizeType type) const
{
return get(type, baseFont());
}
QFont baseFont() const;
void setBaseFont(const QFont &font);
void resetBaseFont();
inline const QFont t1() const
{
return get(T1);
}
inline const QFont t2() const
{
return get(T2);
}
inline const QFont t3() const
{
return get(T3);
}
inline const QFont t4() const
{
return get(T4);
}
inline const QFont t5() const
{
return get(T5);
}
inline const QFont t6() const
{
return get(T6);
}
inline const QFont t7() const
{
return get(T7);
}
inline const QFont t8() const
{
return get(T8);
}
inline const QFont t9() const
{
return get(T9);
}
inline const QFont t10() const
{
return get(T10);
}
Q_SIGNALS:
void fontChanged();
private:
D_DECLARE_PRIVATE(DFontManager)
};
DGUI_END_NAMESPACE
#endif // DFONTSIZEMANAGER_H