fixup Material: Move palette generation around
This commit is contained in:
parent
17185addeb
commit
fdd19894fb
@ -55,7 +55,7 @@ namespace
|
|||||||
class Editor : private QskSkinHintTableEditor
|
class Editor : private QskSkinHintTableEditor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Editor( QskSkinHintTable* table, const QskMaterialPalette& palette )
|
Editor( QskSkinHintTable* table, const QskMaterialTheme& palette )
|
||||||
: QskSkinHintTableEditor( table )
|
: QskSkinHintTableEditor( table )
|
||||||
, m_pal( palette )
|
, m_pal( palette )
|
||||||
{
|
{
|
||||||
@ -91,7 +91,7 @@ namespace
|
|||||||
void setupTextInput();
|
void setupTextInput();
|
||||||
void setupTextLabel();
|
void setupTextLabel();
|
||||||
|
|
||||||
const QskMaterialPalette& m_pal;
|
const QskMaterialTheme& m_pal;
|
||||||
const uint rippleSize = 30;
|
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 )
|
: Inherited( parent )
|
||||||
{
|
{
|
||||||
// Default theme colors
|
// Default theme colors
|
||||||
|
@ -8,12 +8,31 @@
|
|||||||
|
|
||||||
#include "QskMaterialGlobal.h"
|
#include "QskMaterialGlobal.h"
|
||||||
#include <QskSkin.h>
|
#include <QskSkin.h>
|
||||||
#include <QskRgbValue.h>
|
#include <QskRgbPalette.h>
|
||||||
|
|
||||||
class QSK_MATERIAL_EXPORT QskMaterialPalette
|
class QSK_MATERIAL_EXPORT QskMaterialTheme
|
||||||
{
|
{
|
||||||
public:
|
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 primary;
|
||||||
QRgb onPrimary;
|
QRgb onPrimary;
|
||||||
@ -43,6 +62,9 @@ class QSK_MATERIAL_EXPORT QskMaterialPalette
|
|||||||
QRgb surfaceVariant;
|
QRgb surfaceVariant;
|
||||||
QRgb onSurfaceVariant;
|
QRgb onSurfaceVariant;
|
||||||
QRgb outline;
|
QRgb outline;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::array< QskRgbPalette, NumPaletteTypes > m_palettes;
|
||||||
};
|
};
|
||||||
|
|
||||||
class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
||||||
@ -52,8 +74,10 @@ class QSK_MATERIAL_EXPORT QskMaterialSkin : public QskSkin
|
|||||||
using Inherited = QskSkin;
|
using Inherited = QskSkin;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QskMaterialSkin( const QskMaterialPalette&, QObject* parent = nullptr );
|
QskMaterialSkin( const QskMaterialTheme&, QObject* parent = nullptr );
|
||||||
~QskMaterialSkin() override;
|
~QskMaterialSkin() override;
|
||||||
|
|
||||||
|
// ### add setTheme() re-implement resetColors()
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,14 +12,6 @@ static const QString materialDarkSkinName = QStringLiteral( "materialDark" );
|
|||||||
QskMaterialSkinFactory::QskMaterialSkinFactory( QObject* parent )
|
QskMaterialSkinFactory::QskMaterialSkinFactory( QObject* parent )
|
||||||
: QskSkinFactory( 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()
|
QskMaterialSkinFactory::~QskMaterialSkinFactory()
|
||||||
@ -35,79 +27,13 @@ QskSkin* QskMaterialSkinFactory::createSkin( const QString& skinName )
|
|||||||
{
|
{
|
||||||
if ( QString::compare( skinName, materialLightSkinName, Qt::CaseInsensitive ) == 0 )
|
if ( QString::compare( skinName, materialLightSkinName, Qt::CaseInsensitive ) == 0 )
|
||||||
{
|
{
|
||||||
// ### Move this to QskMaterialSkin?
|
QskMaterialTheme theme( QskMaterialTheme::Light );
|
||||||
QskMaterialPalette pal;
|
return new QskMaterialSkin( theme );
|
||||||
|
|
||||||
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 );
|
|
||||||
}
|
}
|
||||||
|
else if ( QString::compare( skinName, materialDarkSkinName, Qt::CaseInsensitive ) == 0 )
|
||||||
if ( QString::compare( skinName, materialDarkSkinName, Qt::CaseInsensitive ) == 0 )
|
|
||||||
{
|
{
|
||||||
QskMaterialPalette pal;
|
QskMaterialTheme theme( QskMaterialTheme::Dark );
|
||||||
|
return new QskMaterialSkin( theme );
|
||||||
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 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -21,23 +21,8 @@ class QSK_MATERIAL_EXPORT QskMaterialSkinFactory : public QskSkinFactory
|
|||||||
QskMaterialSkinFactory( QObject* parent = nullptr );
|
QskMaterialSkinFactory( QObject* parent = nullptr );
|
||||||
~QskMaterialSkinFactory() override;
|
~QskMaterialSkinFactory() override;
|
||||||
|
|
||||||
enum PaletteType
|
|
||||||
{
|
|
||||||
Primary,
|
|
||||||
Secondary,
|
|
||||||
Tertiary,
|
|
||||||
Error,
|
|
||||||
Neutral,
|
|
||||||
NeutralVariant,
|
|
||||||
|
|
||||||
NumPaletteTypes
|
|
||||||
};
|
|
||||||
|
|
||||||
QStringList skinNames() const override;
|
QStringList skinNames() const override;
|
||||||
QskSkin* createSkin( const QString& skinName ) override;
|
QskSkin* createSkin( const QString& skinName ) override;
|
||||||
|
|
||||||
private:
|
|
||||||
QskRgbPalette m_palettes[ NumPaletteTypes ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user