qskinny/skins/material/QskMaterialSkin.h
2022-04-02 11:50:55 +02:00

83 lines
1.8 KiB
C++

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_MATERIAL_SKIN_H
#define QSK_MATERIAL_SKIN_H
#include "QskMaterialGlobal.h"
#include <QskSkin.h>
#include <QskRgbValue.h>
class QSK_MATERIAL_EXPORT QskMaterialPalette
{
public:
enum Lightness
{
Light,
Dark
};
QskMaterialPalette( Lightness lightness )
: m_lightness( lightness )
{
}
inline QRgb elevated( const QRgb rgb, const float level = 1 ) const
{
return ( m_lightness == Light )
? QskRgb::darker( rgb, 100 + level * 15 )
: QskRgb::lighter( rgb, 130 + level * 30 );
}
inline QRgb toDisabled( const QRgb rgb ) const
{
return QskRgb::toTransparentF( rgb, this->m_disabled );
}
public:
QRgb primary;
QRgb primaryVariant;
QRgb onPrimary;
QRgb secondary;
QRgb secondaryVariant;
QRgb onSecondary;
QRgb background;
QRgb onBackground;
QRgb error;
QRgb onError;
QRgb primaryNoSaturation;
QRgb secondaryNoSaturation;
QRgb secondaryVariantNoSaturation;
const qreal disabledOccupancy = 0.2;
const qreal widgetBackgroundDisabled = 0.6;
const qreal hover = 0.1;
const qreal focused = 0.4;
const qreal pressed = 0.5;
private:
const qreal m_disabled = 0.3;
const Lightness m_lightness;
};
class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
{
Q_OBJECT
using Inherited = QskSkin;
public:
QskMaterialSkin( const QskMaterialPalette&, QObject* parent = nullptr );
~QskMaterialSkin() override;
};
#endif