/****************************************************************************** * QSkinny - Copyright (C) The authors * SPDX-License-Identifier: BSD-3-Clause *****************************************************************************/ #ifndef QSK_MATERIAL3_SKIN_H #define QSK_MATERIAL3_SKIN_H #include "QskMaterial3Global.h" #include #include #include #include class QSK_MATERIAL3_EXPORT QskMaterial3Theme { public: class BaseColors { public: BaseColors() = default; QRgb primary = 0xff6750A4; QRgb secondary = 0xff625B71; QRgb tertiary = 0xff7D5260; QRgb error = 0xffB3261E; QRgb neutral = 0xff605D62; QRgb neutralVariant = 0xff605D66; }; QskMaterial3Theme( QskSkin::ColorScheme ); QskMaterial3Theme( QskSkin::ColorScheme, const BaseColors& ); QRgb primary; QRgb primary8; // ### rename to primaryHovered or so? QRgb primary12; QRgb onPrimary; QRgb primaryContainer; QRgb onPrimaryContainer; QRgb secondary; QRgb onSecondary; QRgb secondaryContainer; QRgb onSecondaryContainer; QRgb onSecondaryContainer8; QRgb onSecondaryContainer12; QRgb tertiary; QRgb onTertiary; QRgb tertiaryContainer; QRgb onTertiaryContainer; QRgb error; QRgb error8; QRgb error12; QRgb onError; QRgb errorContainer; QRgb onErrorContainer; QRgb background; QRgb onBackground; QRgb surface; QRgb surface1; QRgb surface2; QRgb surface3; QRgb surface4; QRgb surface5; QRgb onSurface; QRgb onSurface8; QRgb onSurface12; QRgb onSurface38; QRgb surfaceVariant; QRgb surfaceVariant12; QRgb onSurfaceVariant; QRgb outline; QRgb outlineVariant; QRgb surfaceContainerHighest; QRgb shadow; QskShadowMetrics elevation0; QskShadowMetrics elevation1; QskShadowMetrics elevation2; QskShadowMetrics elevation3; const qreal hoverOpacity = 0.08; const qreal focusOpacity = 0.12; const qreal pressedOpacity = 0.12; const qreal draggedOpacity = 0.16; QskBoxShapeMetrics shapeExtraSmallTop; }; class QSK_MATERIAL3_EXPORT QskMaterial3Skin : public QskSkin { Q_OBJECT using Inherited = QskSkin; public: QskMaterial3Skin( QObject* parent = nullptr ); ~QskMaterial3Skin() override; enum GraphicRole { GraphicRoleOnError, GraphicRoleOnPrimary, GraphicRoleOnSecondaryContainer, GraphicRoleOnSurface, GraphicRoleOnSurface38, GraphicRoleOnSurfaceVariant, GraphicRolePrimary, GraphicRoleSurface, }; enum FontRole { M3BodyMedium = DefaultFont, M3BodyLarge = LargeFont, M3HeadlineSmall = SmallFont, M3LabelLarge = HugeFont, }; static constexpr QskAspect::Variation Filled = QskAspect::NoVariation; static constexpr QskAspect::Variation Tonal = QskAspect::Huge; static constexpr QskAspect::Variation Elevated = QskAspect::Large; static constexpr QskAspect::Variation Outlined = QskAspect::Small; static constexpr QskAspect::Variation Text = QskAspect::Tiny; protected: void initHints() override; private: void setupFonts(); void setupGraphicFilters( const QskMaterial3Theme& ); void setGraphicColor( GraphicRole, QRgb ); }; #endif