fixup Material: Move palette generation around
This commit is contained in:
parent
17185addeb
commit
fdd19894fb
@ -55,7 +55,7 @@ namespace
|
||||
class Editor : private QskSkinHintTableEditor
|
||||
{
|
||||
public:
|
||||
Editor( QskSkinHintTable* table, const QskMaterialPalette& palette )
|
||||
Editor( QskSkinHintTable* table, const QskMaterialTheme& palette )
|
||||
: QskSkinHintTableEditor( table )
|
||||
, m_pal( palette )
|
||||
{
|
||||
@ -91,7 +91,7 @@ namespace
|
||||
void setupTextInput();
|
||||
void setupTextLabel();
|
||||
|
||||
const QskMaterialPalette& m_pal;
|
||||
const QskMaterialTheme& m_pal;
|
||||
const uint rippleSize = 30;
|
||||
};
|
||||
}
|
||||
@ -830,7 +830,94 @@ void Editor::setupSubWindow()
|
||||
|
||||
}
|
||||
|
||||
QskMaterialSkin::QskMaterialSkin( const QskMaterialPalette& palette, QObject* parent )
|
||||
QskMaterialTheme::QskMaterialTheme( Lightness lightness )
|
||||
: QskMaterialTheme( lightness,
|
||||
{
|
||||
QskRgbPalette::palette( QskRgbPalette::DefaultMaterialPrimary ),
|
||||
QskRgbPalette::palette( QskRgbPalette::DefaultMaterialSecondary ),
|
||||
QskRgbPalette::palette( QskRgbPalette::DefaultMaterialTertiary ),
|
||||
QskRgbPalette::palette( QskRgbPalette::DefaultMaterialError ),
|
||||
QskRgbPalette::palette( QskRgbPalette::DefaultMaterialNeutral ),
|
||||
QskRgbPalette::palette( QskRgbPalette::DefaultMaterialNeutralVariant ),
|
||||
} )
|
||||
{
|
||||
}
|
||||
|
||||
QskMaterialTheme::QskMaterialTheme( Lightness lightness,
|
||||
std::array< QskRgbPalette, NumPaletteTypes > palettes )
|
||||
: m_palettes( palettes )
|
||||
{
|
||||
using Q = QskRgbPalette;
|
||||
|
||||
if ( lightness == Light )
|
||||
{
|
||||
using Q = QskRgbPalette;
|
||||
|
||||
primary = m_palettes[ Primary ].rgb( Q::W40 );
|
||||
onPrimary = m_palettes[ Primary ].rgb( Q::W100 );
|
||||
primaryContainer = m_palettes[ Primary ].rgb( Q::W90 );
|
||||
onPrimaryContainer = m_palettes[ Primary ].rgb( Q::W10 );
|
||||
|
||||
primary = m_palettes[ Secondary ].rgb( Q::W40 );
|
||||
onSecondary = m_palettes[ Secondary ].rgb( Q::W100 );
|
||||
secondaryContainer = m_palettes[ Secondary ].rgb( Q::W90 );
|
||||
onSecondaryContainer = m_palettes[ Secondary ].rgb( Q::W10 );
|
||||
|
||||
tertiary = m_palettes[ Tertiary ].rgb( Q::W40 );
|
||||
onTertiary = m_palettes[ Tertiary ].rgb( Q::W100 );
|
||||
tertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W90 );
|
||||
onTertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W10 );
|
||||
|
||||
error = m_palettes[ Error ].rgb( Q::W40 );
|
||||
onError = m_palettes[ Error ].rgb( Q::W100 );
|
||||
errorContainer = m_palettes[ Error ].rgb( Q::W90 );
|
||||
onErrorContainer = m_palettes[ Error ].rgb( Q::W10 );
|
||||
|
||||
background = m_palettes[ Neutral ].rgb( Q::W99 );
|
||||
onBackground = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
surface = m_palettes[ Neutral ].rgb( Q::W99 );
|
||||
onSurface = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
|
||||
surfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W90 );
|
||||
onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
|
||||
outline = m_palettes[ NeutralVariant ].rgb( Q::W50 );
|
||||
}
|
||||
else if ( lightness == Dark )
|
||||
{
|
||||
using Q = QskRgbPalette;
|
||||
|
||||
primary = m_palettes[ Primary ].rgb( Q::W80 );
|
||||
onPrimary = m_palettes[ Primary ].rgb( Q::W20 );
|
||||
primaryContainer = m_palettes[ Primary ].rgb( Q::W30 );
|
||||
onPrimaryContainer = m_palettes[ Primary ].rgb( Q::W90 );
|
||||
|
||||
primary = m_palettes[ Secondary ].rgb( Q::W80 );
|
||||
onSecondary = m_palettes[ Secondary ].rgb( Q::W20 );
|
||||
secondaryContainer = m_palettes[ Secondary ].rgb( Q::W30 );
|
||||
onSecondaryContainer = m_palettes[ Secondary ].rgb( Q::W90 );
|
||||
|
||||
tertiary = m_palettes[ Tertiary ].rgb( Q::W80 );
|
||||
onTertiary = m_palettes[ Tertiary ].rgb( Q::W20 );
|
||||
tertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W30 );
|
||||
onTertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W90 );
|
||||
|
||||
error = m_palettes[ Error ].rgb( Q::W80 );
|
||||
onError = m_palettes[ Error ].rgb( Q::W20 );
|
||||
errorContainer = m_palettes[ Error ].rgb( Q::W30 );
|
||||
onErrorContainer = m_palettes[ Error ].rgb( Q::W90 );
|
||||
|
||||
background = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
onBackground = m_palettes[ Neutral ].rgb( Q::W90 );
|
||||
surface = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
onSurface = m_palettes[ Neutral ].rgb( Q::W80 );
|
||||
|
||||
surfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
|
||||
onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W80 );
|
||||
outline = m_palettes[ NeutralVariant ].rgb( Q::W60 );
|
||||
}
|
||||
}
|
||||
|
||||
QskMaterialSkin::QskMaterialSkin( const QskMaterialTheme& palette, QObject* parent )
|
||||
: Inherited( parent )
|
||||
{
|
||||
// Default theme colors
|
||||
|
@ -8,12 +8,31 @@
|
||||
|
||||
#include "QskMaterialGlobal.h"
|
||||
#include <QskSkin.h>
|
||||
#include <QskRgbValue.h>
|
||||
#include <QskRgbPalette.h>
|
||||
|
||||
class QSK_MATERIAL_EXPORT QskMaterialPalette
|
||||
class QSK_MATERIAL_EXPORT QskMaterialTheme
|
||||
{
|
||||
public:
|
||||
// ### here add palettes? Or just pass them in the constructor?
|
||||
enum Lightness
|
||||
{
|
||||
Light,
|
||||
Dark
|
||||
};
|
||||
|
||||
enum PaletteType
|
||||
{
|
||||
Primary,
|
||||
Secondary,
|
||||
Tertiary,
|
||||
Error,
|
||||
Neutral,
|
||||
NeutralVariant,
|
||||
|
||||
NumPaletteTypes
|
||||
};
|
||||
|
||||
QskMaterialTheme( Lightness );
|
||||
QskMaterialTheme( Lightness, std::array< QskRgbPalette, NumPaletteTypes > );
|
||||
|
||||
QRgb primary;
|
||||
QRgb onPrimary;
|
||||
@ -43,6 +62,9 @@ class QSK_MATERIAL_EXPORT QskMaterialPalette
|
||||
QRgb surfaceVariant;
|
||||
QRgb onSurfaceVariant;
|
||||
QRgb outline;
|
||||
|
||||
private:
|
||||
std::array< QskRgbPalette, NumPaletteTypes > m_palettes;
|
||||
};
|
||||
|
||||
class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
||||
@ -52,8 +74,10 @@ class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
||||
using Inherited = QskSkin;
|
||||
|
||||
public:
|
||||
QskMaterialSkin( const QskMaterialPalette&, QObject* parent = nullptr );
|
||||
QskMaterialSkin( const QskMaterialTheme&, QObject* parent = nullptr );
|
||||
~QskMaterialSkin() override;
|
||||
|
||||
// ### add setTheme() re-implement resetColors()
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -12,14 +12,6 @@ static const QString materialDarkSkinName = QStringLiteral( "materialDark" );
|
||||
QskMaterialSkinFactory::QskMaterialSkinFactory( QObject* parent )
|
||||
: QskSkinFactory( parent )
|
||||
{
|
||||
using Q = QskRgbPalette;
|
||||
|
||||
m_palettes[ Primary ] = Q::palette( Q::DefaultMaterialPrimary );
|
||||
m_palettes[ Secondary ] = Q::palette( Q::DefaultMaterialSecondary );
|
||||
m_palettes[ Tertiary ] = Q::palette( Q::DefaultMaterialTertiary );
|
||||
m_palettes[ Error ] = Q::palette( Q::DefaultMaterialError );
|
||||
m_palettes[ Neutral ] = Q::palette( Q::DefaultMaterialNeutral );
|
||||
m_palettes[ NeutralVariant ] = Q::palette( Q::DefaultMaterialNeutralVariant );
|
||||
}
|
||||
|
||||
QskMaterialSkinFactory::~QskMaterialSkinFactory()
|
||||
@ -35,79 +27,13 @@ QskSkin* QskMaterialSkinFactory::createSkin( const QString& skinName )
|
||||
{
|
||||
if ( QString::compare( skinName, materialLightSkinName, Qt::CaseInsensitive ) == 0 )
|
||||
{
|
||||
// ### Move this to QskMaterialSkin?
|
||||
QskMaterialPalette pal;
|
||||
|
||||
using Q = QskRgbPalette;
|
||||
|
||||
pal.primary = m_palettes[ Primary ].rgb( Q::W40 );
|
||||
pal.onPrimary = m_palettes[ Primary ].rgb( Q::W100 );
|
||||
pal.primaryContainer = m_palettes[ Primary ].rgb( Q::W90 );
|
||||
pal.onPrimaryContainer = m_palettes[ Primary ].rgb( Q::W10 );
|
||||
|
||||
pal.primary = m_palettes[ Secondary ].rgb( Q::W40 );
|
||||
pal.onSecondary = m_palettes[ Secondary ].rgb( Q::W100 );
|
||||
pal.secondaryContainer = m_palettes[ Secondary ].rgb( Q::W90 );
|
||||
pal.onSecondaryContainer = m_palettes[ Secondary ].rgb( Q::W10 );
|
||||
|
||||
pal.tertiary = m_palettes[ Tertiary ].rgb( Q::W40 );
|
||||
pal.onTertiary = m_palettes[ Tertiary ].rgb( Q::W100 );
|
||||
pal.tertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W90 );
|
||||
pal.onTertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W10 );
|
||||
|
||||
pal.error = m_palettes[ Error ].rgb( Q::W40 );
|
||||
pal.onError = m_palettes[ Error ].rgb( Q::W100 );
|
||||
pal.errorContainer = m_palettes[ Error ].rgb( Q::W90 );
|
||||
pal.onErrorContainer = m_palettes[ Error ].rgb( Q::W10 );
|
||||
|
||||
pal.background = m_palettes[ Neutral ].rgb( Q::W99 );
|
||||
pal.onBackground = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
pal.surface = m_palettes[ Neutral ].rgb( Q::W99 );
|
||||
pal.onSurface = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
|
||||
pal.surfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W90 );
|
||||
pal.onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
|
||||
pal.outline = m_palettes[ NeutralVariant ].rgb( Q::W50 );
|
||||
|
||||
return new QskMaterialSkin( pal );
|
||||
QskMaterialTheme theme( QskMaterialTheme::Light );
|
||||
return new QskMaterialSkin( theme );
|
||||
}
|
||||
|
||||
if ( QString::compare( skinName, materialDarkSkinName, Qt::CaseInsensitive ) == 0 )
|
||||
else if ( QString::compare( skinName, materialDarkSkinName, Qt::CaseInsensitive ) == 0 )
|
||||
{
|
||||
QskMaterialPalette pal;
|
||||
|
||||
using Q = QskRgbPalette;
|
||||
|
||||
pal.primary = m_palettes[ Primary ].rgb( Q::W80 );
|
||||
pal.onPrimary = m_palettes[ Primary ].rgb( Q::W20 );
|
||||
pal.primaryContainer = m_palettes[ Primary ].rgb( Q::W30 );
|
||||
pal.onPrimaryContainer = m_palettes[ Primary ].rgb( Q::W90 );
|
||||
|
||||
pal.primary = m_palettes[ Secondary ].rgb( Q::W80 );
|
||||
pal.onSecondary = m_palettes[ Secondary ].rgb( Q::W20 );
|
||||
pal.secondaryContainer = m_palettes[ Secondary ].rgb( Q::W30 );
|
||||
pal.onSecondaryContainer = m_palettes[ Secondary ].rgb( Q::W90 );
|
||||
|
||||
pal.tertiary = m_palettes[ Tertiary ].rgb( Q::W80 );
|
||||
pal.onTertiary = m_palettes[ Tertiary ].rgb( Q::W20 );
|
||||
pal.tertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W30 );
|
||||
pal.onTertiaryContainer = m_palettes[ Tertiary ].rgb( Q::W90 );
|
||||
|
||||
pal.error = m_palettes[ Error ].rgb( Q::W80 );
|
||||
pal.onError = m_palettes[ Error ].rgb( Q::W20 );
|
||||
pal.errorContainer = m_palettes[ Error ].rgb( Q::W30 );
|
||||
pal.onErrorContainer = m_palettes[ Error ].rgb( Q::W90 );
|
||||
|
||||
pal.background = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
pal.onBackground = m_palettes[ Neutral ].rgb( Q::W90 );
|
||||
pal.surface = m_palettes[ Neutral ].rgb( Q::W10 );
|
||||
pal.onSurface = m_palettes[ Neutral ].rgb( Q::W80 );
|
||||
|
||||
pal.surfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W30 );
|
||||
pal.onSurfaceVariant = m_palettes[ NeutralVariant ].rgb( Q::W80 );
|
||||
pal.outline = m_palettes[ NeutralVariant ].rgb( Q::W60 );
|
||||
|
||||
return new QskMaterialSkin( pal );
|
||||
QskMaterialTheme theme( QskMaterialTheme::Dark );
|
||||
return new QskMaterialSkin( theme );
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
@ -21,23 +21,8 @@ class QSK_MATERIAL_EXPORT QskMaterialSkinFactory : public QskSkinFactory
|
||||
QskMaterialSkinFactory( QObject* parent = nullptr );
|
||||
~QskMaterialSkinFactory() override;
|
||||
|
||||
enum PaletteType
|
||||
{
|
||||
Primary,
|
||||
Secondary,
|
||||
Tertiary,
|
||||
Error,
|
||||
Neutral,
|
||||
NeutralVariant,
|
||||
|
||||
NumPaletteTypes
|
||||
};
|
||||
|
||||
QStringList skinNames() const override;
|
||||
QskSkin* createSkin( const QString& skinName ) override;
|
||||
|
||||
private:
|
||||
QskRgbPalette m_palettes[ NumPaletteTypes ];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user