From ee34ea6194238cdf25c838932d4572b1178fbda0 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 20 Jun 2023 16:43:30 +0200 Subject: [PATCH 1/3] broken progressBar settings fixed --- skins/squiek/QskSquiekSkin.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/skins/squiek/QskSquiekSkin.cpp b/skins/squiek/QskSquiekSkin.cpp index 907d50a5..dc006a89 100644 --- a/skins/squiek/QskSquiekSkin.cpp +++ b/skins/squiek/QskSquiekSkin.cpp @@ -521,13 +521,15 @@ void Editor::setupProgressBar() using A = QskAspect; using Q = QskProgressBar; - setMetric( Q::Groove | A::Size, 8 ); - setPadding( Q::Groove, 0 ); - setGradient( Q::Groove, m_pal.darker200 ); - setBoxShape( Q::Groove, 4 ); + for ( auto subControl : { Q::Groove, Q::Bar } ) + { + setMetric( subControl | A::Size, 6 ); + setPadding( subControl, 0 ); + setBoxShape( subControl, 4 ); + } + setGradient( Q::Groove, m_pal.darker200 ); setGradient( Q::Bar, m_pal.highlighted ); - setBoxShape( Q::Bar, 4 ); } void Editor::setupFocusIndicator() From b7f02b558eb052519b5a4eaf2cc19f0ac595920d Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 20 Jun 2023 16:52:42 +0200 Subject: [PATCH 2/3] expressions shortened --- skins/fluent2/QskFluent2Skin.cpp | 446 +++++++++++++++++-------------- 1 file changed, 242 insertions(+), 204 deletions(-) diff --git a/skins/fluent2/QskFluent2Skin.cpp b/skins/fluent2/QskFluent2Skin.cpp index e72ff49a..70b9ba99 100644 --- a/skins/fluent2/QskFluent2Skin.cpp +++ b/skins/fluent2/QskFluent2Skin.cpp @@ -170,15 +170,19 @@ void Editor::setupBox() using Q = QskBox; using A = QskAspect; - setGradient( Q::Panel, theme.palette.background.fillColor.solidBackground.base ); - setGradient( Q::Panel | A::Header, theme.palette.background.fillColor.solidBackground.tertiary ); - setGradient( Q::Panel | A::Footer, theme.palette.background.fillColor.solidBackground.tertiary ); + const auto& pal = theme.palette; + + setGradient( Q::Panel, pal.background.fillColor.solidBackground.base ); + setGradient( Q::Panel | A::Header, pal.background.fillColor.solidBackground.tertiary ); + setGradient( Q::Panel | A::Footer, pal.background.fillColor.solidBackground.tertiary ); } void Editor::setupCheckBox() { using Q = QskCheckBox; + const auto& pal = theme.palette; + setStrutSize( Q::Panel, 126, 38 ); setSpacing( Q::Panel, 8 ); @@ -187,52 +191,54 @@ void Editor::setupCheckBox() setBoxBorderMetrics( Q::Box, 1 ); setPadding( Q::Box, 5 ); // "icon size" - setGradient( Q::Box, theme.palette.fillColor.controlAlt.secondary ); - setBoxBorderColors( Q::Box, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Box, pal.fillColor.controlAlt.secondary ); + setBoxBorderColors( Q::Box, pal.strokeColor.controlStrongStroke.defaultColor ); - setGradient( Q::Box | Q::Checked, theme.palette.fillColor.accent.defaultColor ); - setBoxBorderColors( Q::Box | Q::Checked, theme.palette.fillColor.accent.defaultColor ); + setGradient( Q::Box | Q::Checked, pal.fillColor.accent.defaultColor ); + setBoxBorderColors( Q::Box | Q::Checked, pal.fillColor.accent.defaultColor ); const auto checkMark = symbol( "checkmark" ); setSymbol( Q::Indicator | Q::Checked, checkMark, { QskStateCombination::CombinationNoState, Q::Disabled } ); setGraphicRole( Q::Indicator, QskFluent2Skin::GraphicRoleFillColorTextOnAccentPrimary ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); - setGradient( Q::Box | Q::Hovered, theme.palette.fillColor.controlAlt.tertiary ); - setBoxBorderColors( Q::Box | Q::Hovered, theme.palette.strokeColor.controlStrongStroke.defaultColor ); - setGradient( Q::Box | Q::Hovered | Q::Checked, theme.palette.fillColor.accent.secondary ); - setBoxBorderColors( Q::Box | Q::Hovered | Q::Checked, theme.palette.fillColor.accent.secondary ); + setGradient( Q::Box | Q::Hovered, pal.fillColor.controlAlt.tertiary ); + setBoxBorderColors( Q::Box | Q::Hovered, pal.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Box | Q::Hovered | Q::Checked, pal.fillColor.accent.secondary ); + setBoxBorderColors( Q::Box | Q::Hovered | Q::Checked, pal.fillColor.accent.secondary ); // indicator the same as in Rest state - setGradient( Q::Box | Q::Pressed, theme.palette.fillColor.controlAlt.quaternary ); - setBoxBorderColors( Q::Box | Q::Pressed, theme.palette.strokeColor.controlStrongStroke.disabled ); - setGradient( Q::Box | Q::Pressed | Q::Checked, theme.palette.fillColor.accent.tertiary ); - setBoxBorderColors( Q::Box | Q::Pressed | Q::Checked, theme.palette.fillColor.accent.tertiary ); + setGradient( Q::Box | Q::Pressed, pal.fillColor.controlAlt.quaternary ); + setBoxBorderColors( Q::Box | Q::Pressed, pal.strokeColor.controlStrongStroke.disabled ); + setGradient( Q::Box | Q::Pressed | Q::Checked, pal.fillColor.accent.tertiary ); + setBoxBorderColors( Q::Box | Q::Pressed | Q::Checked, pal.fillColor.accent.tertiary ); setGraphicRole( Q::Indicator | Q::Pressed | Q::Checked, QskFluent2Skin::GraphicRoleFillColorTextOnAccentSecondary ); - setGradient( Q::Box | Q::Disabled, theme.palette.fillColor.controlAlt.disabled ); - setBoxBorderColors( Q::Box | Q::Disabled, theme.palette.strokeColor.controlStrongStroke.disabled ); - setGradient( Q::Box | Q::Disabled | Q::Checked, theme.palette.fillColor.accent.disabled ); - setBoxBorderColors( Q::Box | Q::Disabled | Q::Checked, theme.palette.fillColor.accent.disabled ); + setGradient( Q::Box | Q::Disabled, pal.fillColor.controlAlt.disabled ); + setBoxBorderColors( Q::Box | Q::Disabled, pal.strokeColor.controlStrongStroke.disabled ); + setGradient( Q::Box | Q::Disabled | Q::Checked, pal.fillColor.accent.disabled ); + setBoxBorderColors( Q::Box | Q::Disabled | Q::Checked, pal.fillColor.accent.disabled ); setGraphicRole( Q::Indicator | Q::Disabled | Q::Checked, QskFluent2Skin::GraphicRoleFillColorTextOnAccentDisabled ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); } void Editor::setupComboBox() { using Q = QskComboBox; + const auto& pal = theme.palette; + setStrutSize( Q::Panel, { -1, 32 } ); setBoxBorderMetrics( Q::Panel, 1 ); setBoxShape( Q::Panel, 3 ); setPadding( Q::Panel, { 11, 0, 11, 0 } ); - setGradient( Q::Panel, theme.palette.fillColor.control.defaultColor ); - setBoxBorderGradient( Q::Panel, theme.palette.elevation.control.border, - theme.palette.fillColor.control.defaultColor ); + setGradient( Q::Panel, pal.fillColor.control.defaultColor ); + setBoxBorderGradient( Q::Panel, pal.elevation.control.border, + pal.fillColor.control.defaultColor ); setStrutSize( Q::Icon, 12, 12 ); setPadding( Q::Icon, { 0, 0, 8, 0 } ); @@ -240,7 +246,7 @@ void Editor::setupComboBox() setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); setStrutSize( Q::StatusIndicator, 12, 12 ); setSymbol( Q::StatusIndicator, symbol( "spin-box-arrow-down" ) ); @@ -250,28 +256,28 @@ void Editor::setupComboBox() // Hovered: - setGradient( Q::Panel | Q::Hovered, theme.palette.fillColor.control.secondary ); - setBoxBorderGradient( Q::Panel | Q::Hovered, theme.palette.elevation.textControl.border, - theme.palette.fillColor.control.secondary ); + setGradient( Q::Panel | Q::Hovered, pal.fillColor.control.secondary ); + setBoxBorderGradient( Q::Panel | Q::Hovered, pal.elevation.textControl.border, + pal.fillColor.control.secondary ); // Focused (Pressed doesn't exist yet): setBoxBorderMetrics( Q::Panel | Q::Focused, { 1, 1, 1, 2 } ); - setGradient( Q::Panel | Q::Focused, theme.palette.fillColor.control.inputActive ); + setGradient( Q::Panel | Q::Focused, pal.fillColor.control.inputActive ); - auto gradient = theme.palette.elevation.textControl.border; - gradient.at( 1 ) = theme.palette.fillColor.accent.defaultColor; + auto gradient = pal.elevation.textControl.border; + gradient.at( 1 ) = pal.fillColor.accent.defaultColor; - setBoxBorderGradient( Q::Panel | Q::Focused, gradient, theme.palette.fillColor.control.inputActive ); + setBoxBorderGradient( Q::Panel | Q::Focused, gradient, pal.fillColor.control.inputActive ); // Disabled: - setGradient( Q::Panel | Q::Disabled, theme.palette.fillColor.control.disabled ); - setBoxBorderColors( Q::Panel | Q::Disabled, theme.palette.strokeColor.controlStroke.defaultColor ); + setGradient( Q::Panel | Q::Disabled, pal.fillColor.control.disabled ); + setBoxBorderColors( Q::Panel | Q::Disabled, pal.strokeColor.controlStroke.defaultColor ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); setGraphicRole( Q::Icon | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextDisabled ); setGraphicRole( Q::StatusIndicator | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextDisabled ); @@ -280,20 +286,22 @@ void Editor::setupComboBox() void Editor::setupDialogButtonBox() { using Q = QskDialogButtonBox; + const auto& pal = theme.palette; setPadding( Q::Panel, 24 ); - setGradient( Q::Panel, theme.palette.background.fillColor.solidBackground.base ); + setGradient( Q::Panel, pal.background.fillColor.solidBackground.base ); setPadding(Q::Panel, 20 ); } void Editor::setupFocusIndicator() { using Q = QskFocusIndicator; + const auto& pal = theme.palette; setBoxBorderMetrics( Q::Panel, 2 ); setPadding( Q::Panel, 3 ); setBoxShape( Q::Panel, 4 ); - setBoxBorderColors( Q::Panel, theme.palette.strokeColor.focusStroke.outer ); + setBoxBorderColors( Q::Panel, pal.strokeColor.focusStroke.outer ); } void Editor::setupInputPanel() @@ -307,31 +315,32 @@ void Editor::setupListView() void Editor::setupMenu() { using Q = QskMenu; + const auto& pal = theme.palette; setPadding( Q::Panel, { 4, 6, 4, 6 } ); setBoxBorderMetrics( Q::Panel, 1 ); - setBoxBorderColors( Q::Panel, theme.palette.strokeColor.surfaceStroke.flyout ); + setBoxBorderColors( Q::Panel, pal.strokeColor.surfaceStroke.flyout ); setBoxShape( Q::Panel, 7 ); - setGradient( Q::Panel, theme.palette.background.fillColor.acrylicBackground.defaultColor ); + setGradient( Q::Panel, pal.background.fillColor.acrylicBackground.defaultColor ); setShadowMetrics( Q::Panel, theme.shadow.flyout.first ); // ### metrics should be the same, just color differs setShadowColor( Q::Panel, theme.shadow.flyout.second ); setPadding( Q::Segment, { 0, 10, 0, 10 } ); setSpacing( Q::Segment, 15 ); - setGradient( Q::Segment | Q::Selected, theme.palette.fillColor.subtle.secondary ); + setGradient( Q::Segment | Q::Selected, pal.fillColor.subtle.secondary ); setBoxBorderMetrics( Q::Segment | Q::Selected, { 3, 0, 0, 0 } ); - QskGradient selectedGradient( { { 0.0, theme.palette.fillColor.subtle.secondary }, - { 0.25, theme.palette.fillColor.subtle.secondary }, - { 0.25, theme.palette.fillColor.accent.defaultColor }, - { 0.75, theme.palette.fillColor.accent.defaultColor }, - { 0.75, theme.palette.fillColor.subtle.secondary }, - { 1.0, theme.palette.fillColor.subtle.secondary } } ); + QskGradient selectedGradient( { { 0.0, pal.fillColor.subtle.secondary }, + { 0.25, pal.fillColor.subtle.secondary }, + { 0.25, pal.fillColor.accent.defaultColor }, + { 0.75, pal.fillColor.accent.defaultColor }, + { 0.75, pal.fillColor.subtle.secondary }, + { 1.0, pal.fillColor.subtle.secondary } } ); setBoxBorderColors( Q::Segment | Q::Selected, selectedGradient ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); setStrutSize( Q::Icon, 12, 12 ); setPadding( Q::Icon, { 8, 8, 0, 8 } ); @@ -345,28 +354,31 @@ void Editor::setupPageIndicator() void Editor::setupPopup() { using Q = QskPopup; + const auto& pal = theme.palette; - setGradient( Q::Overlay, theme.palette.background.fillColor.smoke.defaultColor ); + setGradient( Q::Overlay, pal.background.fillColor.smoke.defaultColor ); } void Editor::setupProgressBar() { using Q = QskProgressBar; using A = QskAspect; + const auto& pal = theme.palette; setMetric( Q::Groove | A::Size, 1 ); setBoxShape( Q::Groove, 100, Qt::RelativeSize ); - setGradient( Q::Groove, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Groove, pal.strokeColor.controlStrongStroke.defaultColor ); setMetric( Q::Bar| A::Size, 3 ); setBoxShape( Q::Bar, 100, Qt::RelativeSize ); - setGradient( Q::Bar, theme.palette.fillColor.accent.defaultColor ); + setGradient( Q::Bar, pal.fillColor.accent.defaultColor ); } void Editor::setupPushButton() { using Q = QskPushButton; using W = QskFluent2Skin; + const auto& pal = theme.palette; setStrutSize( Q::Panel, { 120, 32 } ); setBoxShape( Q::Panel, 4 ); @@ -382,78 +394,79 @@ void Editor::setupPushButton() // Accent buttons: - setBoxBorderGradient( Q::Panel | W::Accent, theme.palette.elevation.accentControl.border, - theme.palette.fillColor.accent.defaultColor ); + setBoxBorderGradient( Q::Panel | W::Accent, pal.elevation.accentControl.border, + pal.fillColor.accent.defaultColor ); - setGradient( Q::Panel | W::Accent, theme.palette.fillColor.accent.defaultColor ); - setColor( Q::Text | W::Accent, theme.palette.fillColor.textOnAccent.primary ); + setGradient( Q::Panel | W::Accent, pal.fillColor.accent.defaultColor ); + setColor( Q::Text | W::Accent, pal.fillColor.textOnAccent.primary ); setGraphicRole( Q::Icon | W::Accent, QskFluent2Skin::GraphicRoleFillColorTextOnAccentPrimary ); - setBoxBorderGradient( Q::Panel | W::Accent | Q::Hovered, theme.palette.elevation.accentControl.border, - theme.palette.fillColor.accent.secondary ); + setBoxBorderGradient( Q::Panel | W::Accent | Q::Hovered, pal.elevation.accentControl.border, + pal.fillColor.accent.secondary ); - setGradient( Q::Panel | W::Accent | Q::Hovered, theme.palette.fillColor.accent.secondary ); + setGradient( Q::Panel | W::Accent | Q::Hovered, pal.fillColor.accent.secondary ); - setGradient( Q::Panel | W::Accent | Q::Pressed, theme.palette.fillColor.accent.tertiary ); - setColor( Q::Text | W::Accent | Q::Pressed, theme.palette.fillColor.textOnAccent.secondary ); + setGradient( Q::Panel | W::Accent | Q::Pressed, pal.fillColor.accent.tertiary ); + setColor( Q::Text | W::Accent | Q::Pressed, pal.fillColor.textOnAccent.secondary ); setGraphicRole( Q::Icon | W::Accent | Q::Pressed, QskFluent2Skin::GraphicRoleFillColorTextOnAccentSecondary ); - const QRgb accentPressedBorderColor = flattenedColor( theme.palette.strokeColor.controlStroke.onAccentDefault, - theme.palette.fillColor.accent.tertiary ); + const QRgb accentPressedBorderColor = flattenedColor( pal.strokeColor.controlStroke.onAccentDefault, + pal.fillColor.accent.tertiary ); setBoxBorderColors( Q::Panel | W::Accent | Q::Pressed, accentPressedBorderColor ); - setGradient( Q::Panel | W::Accent | Q::Disabled, theme.palette.fillColor.accent.disabled ); - setColor( Q::Text | W::Accent | Q::Disabled, theme.palette.fillColor.textOnAccent.disabled ); + setGradient( Q::Panel | W::Accent | Q::Disabled, pal.fillColor.accent.disabled ); + setColor( Q::Text | W::Accent | Q::Disabled, pal.fillColor.textOnAccent.disabled ); setGraphicRole( Q::Icon | W::Accent | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextOnAccentDisabled ); setBoxBorderMetrics( Q::Panel | W::Accent | Q::Disabled, 0 ); // Standard buttons: - setBoxBorderGradient( Q::Panel, theme.palette.elevation.control.border, - theme.palette.fillColor.control.defaultColor ); + setBoxBorderGradient( Q::Panel, pal.elevation.control.border, + pal.fillColor.control.defaultColor ); - setGradient( Q::Panel, theme.palette.fillColor.control.defaultColor ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setGradient( Q::Panel, pal.fillColor.control.defaultColor ); + setColor( Q::Text, pal.fillColor.text.primary ); setGraphicRole( Q::Icon, QskFluent2Skin::GraphicRoleFillColorTextPrimary ); - setBoxBorderGradient( Q::Panel | Q::Hovered, theme.palette.elevation.control.border, - theme.palette.fillColor.control.secondary ); + setBoxBorderGradient( Q::Panel | Q::Hovered, pal.elevation.control.border, + pal.fillColor.control.secondary ); - setGradient( Q::Panel | Q::Hovered, theme.palette.fillColor.control.secondary ); + setGradient( Q::Panel | Q::Hovered, pal.fillColor.control.secondary ); - const QRgb standardPressedBorderColor = flattenedColor( theme.palette.strokeColor.controlStroke.defaultColor, - theme.palette.fillColor.control.tertiary ); + const QRgb standardPressedBorderColor = flattenedColor( pal.strokeColor.controlStroke.defaultColor, + pal.fillColor.control.tertiary ); setBoxBorderColors( Q::Panel | Q::Pressed, standardPressedBorderColor ); - setGradient( Q::Panel | Q::Pressed, theme.palette.fillColor.control.tertiary ); - setColor( Q::Text | Q::Pressed, theme.palette.fillColor.text.secondary ); + setGradient( Q::Panel | Q::Pressed, pal.fillColor.control.tertiary ); + setColor( Q::Text | Q::Pressed, pal.fillColor.text.secondary ); setGraphicRole( Q::Icon | Q::Pressed, QskFluent2Skin::GraphicRoleFillColorTextSecondary ); - const QRgb standardDisabledBorderColor = flattenedColor( theme.palette.strokeColor.controlStroke.defaultColor, - theme.palette.fillColor.control.disabled ); + const QRgb standardDisabledBorderColor = flattenedColor( pal.strokeColor.controlStroke.defaultColor, + pal.fillColor.control.disabled ); setBoxBorderColors( Q::Panel | Q::Disabled, standardDisabledBorderColor ); - setGradient( Q::Panel | Q::Disabled, theme.palette.fillColor.control.disabled ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setGradient( Q::Panel | Q::Disabled, pal.fillColor.control.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); setGraphicRole( Q::Icon | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextDisabled ); } void Editor::setupRadioBox() { using Q = QskRadioBox; + const auto& pal = theme.palette; setSpacing( Q::Button, 8 ); setStrutSize( Q::Button, { 115, 38 } ); @@ -462,71 +475,71 @@ void Editor::setupRadioBox() setBoxShape( Q::CheckIndicatorPanel, 100, Qt::RelativeSize ); setBoxBorderMetrics( Q::CheckIndicatorPanel, 1 ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); // Rest - setGradient( Q::CheckIndicatorPanel, theme.palette.fillColor.controlAlt.secondary ); - setBoxBorderColors( Q::CheckIndicatorPanel, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::CheckIndicatorPanel, pal.fillColor.controlAlt.secondary ); + setBoxBorderColors( Q::CheckIndicatorPanel, pal.strokeColor.controlStrongStroke.defaultColor ); - setGradient( Q::CheckIndicatorPanel | Q::Selected, theme.palette.fillColor.accent.defaultColor ); + setGradient( Q::CheckIndicatorPanel | Q::Selected, pal.fillColor.accent.defaultColor ); setBoxBorderMetrics( Q::CheckIndicatorPanel | Q::Selected, 0 ); setPadding( Q::CheckIndicatorPanel | Q::Selected, { 5, 5 } ); // indicator "strut size" setBoxShape( Q::CheckIndicator | Q::Selected, 100, Qt::RelativeSize ); setBoxBorderMetrics( Q::CheckIndicator | Q::Selected, 1 ); - setGradient( Q::CheckIndicator | Q::Selected, theme.palette.fillColor.textOnAccent.primary ); + setGradient( Q::CheckIndicator | Q::Selected, pal.fillColor.textOnAccent.primary ); - setBoxBorderGradient( Q::CheckIndicator | Q::Selected, theme.palette.elevation.circle.border, - theme.palette.fillColor.accent.defaultColor ); + setBoxBorderGradient( Q::CheckIndicator | Q::Selected, pal.elevation.circle.border, + pal.fillColor.accent.defaultColor ); // Hover - setGradient( Q::CheckIndicatorPanel | Q::Hovered, theme.palette.fillColor.controlAlt.tertiary ); + setGradient( Q::CheckIndicatorPanel | Q::Hovered, pal.fillColor.controlAlt.tertiary ); - setGradient( Q::CheckIndicatorPanel | Q::Hovered | Q::Selected, theme.palette.fillColor.accent.secondary ); + setGradient( Q::CheckIndicatorPanel | Q::Hovered | Q::Selected, pal.fillColor.accent.secondary ); setPadding( Q::CheckIndicatorPanel | Q::Hovered | Q::Selected, { 4, 4 } ); // indicator "strut size" - setBoxBorderGradient( Q::CheckIndicator | Q::Hovered, theme.palette.elevation.circle.border, - theme.palette.fillColor.accent.secondary ); + setBoxBorderGradient( Q::CheckIndicator | Q::Hovered, pal.elevation.circle.border, + pal.fillColor.accent.secondary ); // Pressed - setGradient( Q::CheckIndicatorPanel | Q::Pressed, theme.palette.fillColor.controlAlt.quaternary ); - setBoxBorderColors( Q::CheckIndicatorPanel | Q::Pressed, theme.palette.strokeColor.controlStrongStroke.disabled ); + setGradient( Q::CheckIndicatorPanel | Q::Pressed, pal.fillColor.controlAlt.quaternary ); + setBoxBorderColors( Q::CheckIndicatorPanel | Q::Pressed, pal.strokeColor.controlStrongStroke.disabled ); setPadding( Q::CheckIndicatorPanel | Q::Pressed, { 7, 7 } ); // indicator "strut size" setBoxShape( Q::CheckIndicator | Q::Pressed, 100, Qt::RelativeSize ); setBoxBorderMetrics( Q::CheckIndicator | Q::Pressed, 0 ); - setGradient( Q::CheckIndicator | Q::Pressed, theme.palette.fillColor.textOnAccent.primary ); + setGradient( Q::CheckIndicator | Q::Pressed, pal.fillColor.textOnAccent.primary ); - setGradient( Q::CheckIndicatorPanel | Q::Pressed | Q::Selected, theme.palette.fillColor.accent.tertiary ); + setGradient( Q::CheckIndicatorPanel | Q::Pressed | Q::Selected, pal.fillColor.accent.tertiary ); setBoxBorderMetrics( Q::CheckIndicatorPanel | Q::Pressed | Q::Selected, 0 ); setPadding( Q::CheckIndicatorPanel | Q::Pressed | Q::Selected, { 6, 6 } ); // indicator "strut size" setBoxBorderMetrics( Q::CheckIndicator | Q::Pressed, 1 ); - setBoxBorderGradient( Q::CheckIndicator | Q::Pressed | Q::Selected, theme.palette.elevation.circle.border, - theme.palette.fillColor.accent.tertiary ); + setBoxBorderGradient( Q::CheckIndicator | Q::Pressed | Q::Selected, pal.elevation.circle.border, + pal.fillColor.accent.tertiary ); // Disabled - setGradient( Q::CheckIndicatorPanel | Q::Disabled, theme.palette.fillColor.controlAlt.disabled ); - setBoxBorderColors( Q::CheckIndicatorPanel | Q::Disabled, theme.palette.strokeColor.controlStrongStroke.disabled ); + setGradient( Q::CheckIndicatorPanel | Q::Disabled, pal.fillColor.controlAlt.disabled ); + setBoxBorderColors( Q::CheckIndicatorPanel | Q::Disabled, pal.strokeColor.controlStrongStroke.disabled ); - setGradient( Q::CheckIndicatorPanel | Q::Disabled | Q::Selected, theme.palette.fillColor.accent.disabled ); + setGradient( Q::CheckIndicatorPanel | Q::Disabled | Q::Selected, pal.fillColor.accent.disabled ); setBoxBorderMetrics( Q::CheckIndicatorPanel | Q::Disabled | Q::Selected, 0 ); setPadding( Q::CheckIndicatorPanel | Q::Disabled | Q::Selected, { 6, 6 } ); // indicator "strut size" setBoxBorderMetrics( Q::CheckIndicator | Q::Disabled | Q::Selected, 0 ); - setGradient( Q::CheckIndicator | Q::Disabled | Q::Selected, theme.palette.fillColor.textOnAccent.primary ); + setGradient( Q::CheckIndicator | Q::Disabled | Q::Selected, pal.fillColor.textOnAccent.primary ); setBoxShape( Q::CheckIndicator | Q::Disabled | Q::Selected, 100, Qt::RelativeSize ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); } void Editor::setupScrollView() @@ -537,22 +550,23 @@ void Editor::setupSegmentedBar() { using Q = QskSegmentedBar; using A = QskAspect; + const auto& pal = theme.palette; const QSizeF segmentStrutSize( 120, 32 ); setBoxBorderMetrics( Q::Panel, 1 ); - setBoxBorderGradient( Q::Panel, theme.palette.elevation.control.border, - theme.palette.fillColor.control.defaultColor ); + setBoxBorderGradient( Q::Panel, pal.elevation.control.border, + pal.fillColor.control.defaultColor ); - setGradient( Q::Panel, theme.palette.fillColor.control.defaultColor ); + setGradient( Q::Panel, pal.fillColor.control.defaultColor ); setSpacing( Q::Panel, 8 ); setStrutSize( Q::Icon, { 12, 12 } ); setGraphicRole( Q::Icon, QskFluent2Skin::GraphicRoleFillColorTextPrimary ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); setStrutSize( Q::Segment | A::Horizontal, segmentStrutSize ); setStrutSize( Q::Segment | A::Vertical, segmentStrutSize.transposed() ); @@ -560,29 +574,29 @@ void Editor::setupSegmentedBar() setPadding( Q::Segment, { 8, 0, 8, 0 } ); // Hovered: - setGradient( Q::Segment | Q::Hovered, theme.palette.fillColor.control.secondary ); + setGradient( Q::Segment | Q::Hovered, pal.fillColor.control.secondary ); - setBoxBorderGradient( Q::Segment | Q::Hovered, theme.palette.elevation.control.border, - theme.palette.fillColor.control.secondary ); + setBoxBorderGradient( Q::Segment | Q::Hovered, pal.elevation.control.border, + pal.fillColor.control.secondary ); // Selected: - setGradient( Q::Segment | Q::Selected, theme.palette.fillColor.accent.defaultColor ); + setGradient( Q::Segment | Q::Selected, pal.fillColor.accent.defaultColor ); setGraphicRole( Q::Icon | Q::Selected, QskFluent2Skin::GraphicRoleFillColorTextOnAccentPrimary ); - setColor( Q::Text | Q::Selected, theme.palette.fillColor.textOnAccent.primary ); + setColor( Q::Text | Q::Selected, pal.fillColor.textOnAccent.primary ); // Disabled: - const QRgb standardDisabledBorderColor = flattenedColor( theme.palette.strokeColor.controlStroke.defaultColor, - theme.palette.fillColor.control.disabled ); + const QRgb standardDisabledBorderColor = flattenedColor( pal.strokeColor.controlStroke.defaultColor, + pal.fillColor.control.disabled ); setBoxBorderColors( Q::Segment | Q::Disabled, standardDisabledBorderColor ); - setGradient( Q::Segment | Q::Disabled, theme.palette.fillColor.control.disabled ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setGradient( Q::Segment | Q::Disabled, pal.fillColor.control.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); setGraphicRole( Q::Icon | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextDisabled ); - setGradient( Q::Segment | Q::Selected | Q::Disabled, theme.palette.fillColor.accent.disabled ); - setColor( Q::Text | Q::Selected | Q::Disabled, theme.palette.fillColor.textOnAccent.disabled ); + setGradient( Q::Segment | Q::Selected | Q::Disabled, pal.fillColor.accent.disabled ); + setColor( Q::Text | Q::Selected | Q::Disabled, pal.fillColor.textOnAccent.disabled ); setGraphicRole( Q::Icon | Q::Selected | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextOnAccentDisabled ); setBoxBorderMetrics( Q::Panel | Q::Selected | Q::Disabled, 0 ); @@ -590,12 +604,27 @@ void Editor::setupSegmentedBar() void Editor::setupSeparator() { + using A = QskAspect; + using Q = QskSeparator; + + const auto& pal = theme.palette; + + for ( auto variation : { A::Horizontal, A::Vertical } ) + { + const auto aspect = Q::Panel | variation; + + setMetric( aspect | A::Size, 1 ); + setBoxShape( Q::Panel, 0 ); + setBoxBorderMetrics( Q::Panel, 0 ); + setGradient( aspect, pal.strokeColor.dividerStroke.defaultColor ); + } } void Editor::setupSlider() { using Q = QskSlider; using A = QskAspect; + const auto& pal = theme.palette; const qreal extent = 22; setMetric( Q::Panel | A::Size, extent ); @@ -607,36 +636,37 @@ void Editor::setupSlider() setPadding( Q::Panel | A::Vertical, QskMargins( 0, 0.5 * extent ) ); setMetric( Q::Groove | A::Size, 4 ); - setGradient( Q::Groove, theme.palette.fillColor.controlStrong.defaultColor ); + setGradient( Q::Groove, pal.fillColor.controlStrong.defaultColor ); setBoxShape( Q::Groove, 100, Qt::RelativeSize ); setMetric( Q::Fill | A::Size, 4 ); - setGradient( Q::Fill, theme.palette.fillColor.accent.defaultColor ); + setGradient( Q::Fill, pal.fillColor.accent.defaultColor ); setBoxShape( Q::Fill, 100, Qt::RelativeSize ); setStrutSize( Q::Handle, { 22, 22 } ); - setGradient( Q::Handle, theme.palette.fillColor.controlSolid.defaultColor ); + setGradient( Q::Handle, pal.fillColor.controlSolid.defaultColor ); setBoxShape( Q::Handle, 100, Qt::RelativeSize ); setBoxBorderMetrics( Q::Handle, 1 ); - setBoxBorderGradient( Q::Handle, theme.palette.elevation.circle.border, theme.palette.fillColor.controlSolid.defaultColor ); + setBoxBorderGradient( Q::Handle, pal.elevation.circle.border, pal.fillColor.controlSolid.defaultColor ); setStrutSize( Q::Ripple, { 12, 12 } ); - setGradient( Q::Ripple, theme.palette.fillColor.accent.defaultColor ); + setGradient( Q::Ripple, pal.fillColor.accent.defaultColor ); setBoxShape( Q::Ripple, 100, Qt::RelativeSize ); setStrutSize( Q::Ripple | Q::Hovered, { 14, 14 } ); setStrutSize( Q::Ripple | Q::Pressed, { 10, 10 } ); - setGradient( Q::Ripple | Q::Pressed, theme.palette.fillColor.accent.tertiary ); + setGradient( Q::Ripple | Q::Pressed, pal.fillColor.accent.tertiary ); - setGradient( Q::Groove | Q::Disabled, theme.palette.fillColor.controlStrong.disabled ); - setGradient( Q::Fill | Q::Disabled, theme.palette.fillColor.accent.disabled ); - setGradient( Q::Ripple | Q::Disabled, theme.palette.fillColor.controlStrong.disabled ); + setGradient( Q::Groove | Q::Disabled, pal.fillColor.controlStrong.disabled ); + setGradient( Q::Fill | Q::Disabled, pal.fillColor.accent.disabled ); + setGradient( Q::Ripple | Q::Disabled, pal.fillColor.controlStrong.disabled ); } void Editor::setupSpinBox() { using Q = QskSpinBox; + const auto& pal = theme.palette; setHint( Q::Panel | QskAspect::Style, Q::ButtonsRight ); setStrutSize( Q::Panel, { -1, 32 } ); @@ -644,13 +674,13 @@ void Editor::setupSpinBox() setBoxShape( Q::Panel, 3 ); setPadding( Q::Panel, { 11, 0, 11, 0 } ); - setGradient( Q::Panel, theme.palette.fillColor.control.defaultColor ); - setBoxBorderGradient( Q::Panel, theme.palette.elevation.control.border, - theme.palette.fillColor.control.defaultColor ); + setGradient( Q::Panel, pal.fillColor.control.defaultColor ); + setBoxBorderGradient( Q::Panel, pal.elevation.control.border, + pal.fillColor.control.defaultColor ); setAlignment( Q::Text, Qt::AlignLeft ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); setPadding( Q::TextPanel, { 11, 5, 0, 0 } ); @@ -670,28 +700,28 @@ void Editor::setupSpinBox() // Hovered: - setGradient( Q::Panel | Q::Hovered, theme.palette.fillColor.control.secondary ); - setBoxBorderGradient( Q::Panel | Q::Hovered, theme.palette.elevation.textControl.border, - theme.palette.fillColor.control.secondary ); + setGradient( Q::Panel | Q::Hovered, pal.fillColor.control.secondary ); + setBoxBorderGradient( Q::Panel | Q::Hovered, pal.elevation.textControl.border, + pal.fillColor.control.secondary ); // Focused (Pressed doesn't exist yet): setBoxBorderMetrics( Q::Panel | Q::Focused, { 1, 1, 1, 2 } ); - setGradient( Q::Panel | Q::Focused, theme.palette.fillColor.control.inputActive ); + setGradient( Q::Panel | Q::Focused, pal.fillColor.control.inputActive ); - auto gradient = theme.palette.elevation.textControl.border; - gradient.at( 1 ) = theme.palette.fillColor.accent.defaultColor; + auto gradient = pal.elevation.textControl.border; + gradient.at( 1 ) = pal.fillColor.accent.defaultColor; - setBoxBorderGradient( Q::Panel | Q::Focused, gradient, theme.palette.fillColor.control.inputActive ); + setBoxBorderGradient( Q::Panel | Q::Focused, gradient, pal.fillColor.control.inputActive ); // Disabled: - setGradient( Q::Panel | Q::Disabled, theme.palette.fillColor.control.disabled ); - setBoxBorderColors( Q::Panel | Q::Disabled, theme.palette.strokeColor.controlStroke.defaultColor ); + setGradient( Q::Panel | Q::Disabled, pal.fillColor.control.disabled ); + setBoxBorderColors( Q::Panel | Q::Disabled, pal.strokeColor.controlStroke.defaultColor ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); setGraphicRole( Q::UpIndicator | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextDisabled ); setGraphicRole( Q::DownIndicator | Q::Disabled, QskFluent2Skin::GraphicRoleFillColorTextDisabled ); @@ -704,52 +734,56 @@ void Editor::setupTabBar() void Editor::setupTabButton() { using Q = QskTabButton; + const auto& pal = theme.palette; setStrutSize( Q::Panel, { -1, 31 } ); setPadding( Q::Panel, { 7, 0, 7, 0 } ); setBoxShape( Q::Panel, { 7, 7, 0, 0 } ); - setGradient( Q::Panel, theme.palette.fillColor.subtle.transparent ); + setGradient( Q::Panel, pal.fillColor.subtle.transparent ); setBoxBorderMetrics( Q::Panel, { 0, 0, 0, 1 } ); - setBoxBorderColors( Q::Panel, theme.palette.strokeColor.cardStroke.defaultColor ); + setBoxBorderColors( Q::Panel, pal.strokeColor.cardStroke.defaultColor ); - setGradient( Q::Panel | Q::Checked, theme.palette.background.fillColor.solidBackground.tertiary ); + setGradient( Q::Panel | Q::Checked, pal.background.fillColor.solidBackground.tertiary ); setBoxBorderMetrics( Q::Panel | Q::Checked, { 1, 1, 1, 0 } ); setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.secondary ); + setColor( Q::Text, pal.fillColor.text.secondary ); setFontRole( Q::Text | Q::Checked, QskFluent2Skin::BodyStrong ); - setColor( Q::Text | Q::Checked, theme.palette.fillColor.text.primary ); + setColor( Q::Text | Q::Checked, pal.fillColor.text.primary ); - setGradient( Q::Panel | Q::Hovered, theme.palette.fillColor.subtle.secondary ); + setGradient( Q::Panel | Q::Hovered, pal.fillColor.subtle.secondary ); - setGradient( Q::Panel | Q::Pressed, theme.palette.fillColor.subtle.tertiary ); + setGradient( Q::Panel | Q::Pressed, pal.fillColor.subtle.tertiary ); } void Editor::setupTabView() { using Q = QskTabView; + const auto& pal = theme.palette; - setGradient( Q::Page, theme.palette.background.fillColor.solidBackground.tertiary ); + setGradient( Q::Page, pal.background.fillColor.solidBackground.tertiary ); } void Editor::setupTextLabel() { using Q = QskTextLabel; + const auto& pal = theme.palette; setPadding( Q::Panel, 10 ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.primary ); + setColor( Q::Text, pal.fillColor.text.primary ); } void Editor::setupTextInput() { using Q = QskTextInput; + const auto& pal = theme.palette; setStrutSize( Q::Panel, { -1, 30 } ); setBoxBorderMetrics( Q::Panel, 1 ); @@ -758,20 +792,20 @@ void Editor::setupTextInput() setAlignment( Q::Text, Qt::AlignLeft | Qt::AlignVCenter ); setFontRole( Q::Text, QskFluent2Skin::Body ); - setColor( Q::Text, theme.palette.fillColor.text.secondary ); + setColor( Q::Text, pal.fillColor.text.secondary ); - setGradient( Q::Panel, theme.palette.fillColor.control.defaultColor ); - setBoxBorderGradient( Q::Panel, theme.palette.elevation.textControl.border, - theme.palette.fillColor.control.defaultColor ); + setGradient( Q::Panel, pal.fillColor.control.defaultColor ); + setBoxBorderGradient( Q::Panel, pal.elevation.textControl.border, + pal.fillColor.control.defaultColor ); - setColor( Q::PanelSelected, theme.palette.fillColor.accent.selectedTextBackground ); - setColor( Q::TextSelected, theme.palette.fillColor.textOnAccent.selectedText ); + setColor( Q::PanelSelected, pal.fillColor.accent.selectedTextBackground ); + setColor( Q::TextSelected, pal.fillColor.textOnAccent.selectedText ); // Hovered: - setGradient( Q::Panel | Q::Hovered, theme.palette.fillColor.control.secondary ); - setBoxBorderGradient( Q::Panel | Q::Hovered, theme.palette.elevation.textControl.border, - theme.palette.fillColor.control.secondary ); + setGradient( Q::Panel | Q::Hovered, pal.fillColor.control.secondary ); + setBoxBorderGradient( Q::Panel | Q::Hovered, pal.elevation.textControl.border, + pal.fillColor.control.secondary ); // Pressed & Focused: @@ -780,26 +814,27 @@ void Editor::setupTextInput() { setBoxBorderMetrics( Q::Panel | state, { 1, 1, 1, 2 } ); - setGradient( Q::Panel | state, theme.palette.fillColor.control.inputActive ); + setGradient( Q::Panel | state, pal.fillColor.control.inputActive ); - auto gradient = theme.palette.elevation.textControl.border; - gradient.at( 1 ) = theme.palette.fillColor.accent.defaultColor; + auto gradient = pal.elevation.textControl.border; + gradient.at( 1 ) = pal.fillColor.accent.defaultColor; - setBoxBorderGradient( Q::Panel | state, gradient, theme.palette.fillColor.control.inputActive ); + setBoxBorderGradient( Q::Panel | state, gradient, pal.fillColor.control.inputActive ); } // Disabled: - setGradient( Q::Panel | Q::Disabled, theme.palette.fillColor.control.disabled ); - setBoxBorderColors( Q::Panel | Q::Disabled, theme.palette.strokeColor.controlStroke.defaultColor ); + setGradient( Q::Panel | Q::Disabled, pal.fillColor.control.disabled ); + setBoxBorderColors( Q::Panel | Q::Disabled, pal.strokeColor.controlStroke.defaultColor ); - setColor( Q::Text | Q::Disabled, theme.palette.fillColor.text.disabled ); + setColor( Q::Text | Q::Disabled, pal.fillColor.text.disabled ); } void Editor::setupSwitchButton() { using Q = QskSwitchButton; using A = QskAspect; + const auto& pal = theme.palette; const QSizeF strutSize( 38, 18 ); setStrutSize( Q::Groove | A::Horizontal, strutSize ); @@ -817,64 +852,65 @@ void Editor::setupSwitchButton() // ### big size during animation - setGradient( Q::Groove, theme.palette.fillColor.controlAlt.secondary ); - setGradient( Q::Groove | Q::Checked, theme.palette.fillColor.accent.defaultColor ); - setBoxBorderColors( Q::Groove, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Groove, pal.fillColor.controlAlt.secondary ); + setGradient( Q::Groove | Q::Checked, pal.fillColor.accent.defaultColor ); + setBoxBorderColors( Q::Groove, pal.strokeColor.controlStrongStroke.defaultColor ); setStrutSize( Q::Handle, 12, 12 ); - setGradient( Q::Handle, theme.palette.strokeColor.controlStrongStroke.defaultColor ); - setGradient( Q::Handle | Q::Checked, theme.palette.fillColor.textOnAccent.primary ); + setGradient( Q::Handle, pal.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Handle | Q::Checked, pal.fillColor.textOnAccent.primary ); - setBoxBorderGradient( Q::Handle | Q::Checked, theme.palette.elevation.circle.border, - theme.palette.fillColor.accent.defaultColor ); + setBoxBorderGradient( Q::Handle | Q::Checked, pal.elevation.circle.border, + pal.fillColor.accent.defaultColor ); - setGradient( Q::Groove | Q::Hovered, theme.palette.fillColor.controlAlt.tertiary ); - setGradient( Q::Groove | Q::Hovered | Q::Checked, theme.palette.fillColor.accent.secondary ); - setBoxBorderColors( Q::Groove | Q::Hovered, theme.palette.fillColor.text.secondary ); + setGradient( Q::Groove | Q::Hovered, pal.fillColor.controlAlt.tertiary ); + setGradient( Q::Groove | Q::Hovered | Q::Checked, pal.fillColor.accent.secondary ); + setBoxBorderColors( Q::Groove | Q::Hovered, pal.fillColor.text.secondary ); setStrutSize( Q::Handle | Q::Hovered, 14, 14, { QskStateCombination::CombinationNoState, Q::Checked } ); - setGradient( Q::Handle | Q::Hovered, theme.palette.fillColor.text.secondary ); + setGradient( Q::Handle | Q::Hovered, pal.fillColor.text.secondary ); // Handle | Hovered | Checked is the same as in Rest state - setBoxBorderGradient( Q::Handle | Q::Hovered | Q::Checked, theme.palette.elevation.circle.border, - theme.palette.fillColor.accent.secondary ); + setBoxBorderGradient( Q::Handle | Q::Hovered | Q::Checked, pal.elevation.circle.border, + pal.fillColor.accent.secondary ); - setGradient( Q::Groove | Q::Pressed, theme.palette.fillColor.controlAlt.quaternary ); - setGradient( Q::Groove | Q::Pressed | Q::Checked, theme.palette.fillColor.accent.tertiary ); - setBoxBorderColors( Q::Groove | Q::Pressed, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Groove | Q::Pressed, pal.fillColor.controlAlt.quaternary ); + setGradient( Q::Groove | Q::Pressed | Q::Checked, pal.fillColor.accent.tertiary ); + setBoxBorderColors( Q::Groove | Q::Pressed, pal.strokeColor.controlStrongStroke.defaultColor ); const QSizeF pressedSize( 17, 14 ); setStrutSize( Q::Handle | Q::Pressed | A::Horizontal, pressedSize, { QskStateCombination::CombinationNoState, Q::Checked } ); setStrutSize( Q::Handle | Q::Pressed | A::Vertical, pressedSize.transposed(), { QskStateCombination::CombinationNoState, Q::Checked } ); - setGradient( Q::Handle | Q::Pressed, theme.palette.strokeColor.controlStrongStroke.defaultColor ); + setGradient( Q::Handle | Q::Pressed, pal.strokeColor.controlStrongStroke.defaultColor ); // Handle | Pressed | Checked is the same as in Rest state - setBoxBorderGradient( Q::Handle | Q::Pressed | Q::Checked, theme.palette.elevation.circle.border, - theme.palette.fillColor.accent.tertiary ); + setBoxBorderGradient( Q::Handle | Q::Pressed | Q::Checked, pal.elevation.circle.border, + pal.fillColor.accent.tertiary ); - setGradient( Q::Groove | Q::Disabled, theme.palette.fillColor.controlAlt.disabled ); - setBoxBorderColors( Q::Groove | Q::Disabled, theme.palette.fillColor.text.disabled ); - setGradient( Q::Groove | Q::Disabled | Q::Checked, theme.palette.fillColor.accent.disabled ); - setBoxBorderColors( Q::Groove | Q::Disabled | Q::Checked, theme.palette.fillColor.accent.disabled ); + setGradient( Q::Groove | Q::Disabled, pal.fillColor.controlAlt.disabled ); + setBoxBorderColors( Q::Groove | Q::Disabled, pal.fillColor.text.disabled ); + setGradient( Q::Groove | Q::Disabled | Q::Checked, pal.fillColor.accent.disabled ); + setBoxBorderColors( Q::Groove | Q::Disabled | Q::Checked, pal.fillColor.accent.disabled ); setStrutSize( Q::Handle | Q::Disabled, 12, 12, { QskStateCombination::CombinationNoState, Q::Checked } ); - setGradient( Q::Handle | Q::Disabled, theme.palette.fillColor.text.disabled ); - setGradient( Q::Handle | Q::Disabled | Q::Checked, theme.palette.fillColor.textOnAccent.disabled ); + setGradient( Q::Handle | Q::Disabled, pal.fillColor.text.disabled ); + setGradient( Q::Handle | Q::Disabled | Q::Checked, pal.fillColor.textOnAccent.disabled ); setBoxBorderMetrics( Q::Handle | Q::Disabled | Q::Checked, 1 ); } void Editor::setupSubWindow() { using Q = QskSubWindow; + const auto& pal = theme.palette; setPadding( Q::Panel, { 0, 31, 0, 0 } ); setBoxShape( Q::Panel, 7 ); setBoxBorderMetrics( Q::Panel, 1 ); - setBoxBorderColors( Q::Panel, theme.palette.strokeColor.surfaceStroke.defaultColor ); - setGradient( Q::Panel, theme.palette.background.fillColor.layer.alt ); + setBoxBorderColors( Q::Panel, pal.strokeColor.surfaceStroke.defaultColor ); + setGradient( Q::Panel, pal.background.fillColor.layer.alt ); setShadowMetrics( Q::Panel, theme.shadow.dialog.first ); setShadowColor( Q::Panel, theme.shadow.dialog.second ); @@ -882,7 +918,7 @@ void Editor::setupSubWindow() setPadding( Q::TitleBarPanel, { 24, 31, 24, 0 } ); setFontRole( Q::TitleBarText, QskFluent2Skin::Subtitle ); - setColor( Q::TitleBarText, theme.palette.fillColor.text.primary ); + setColor( Q::TitleBarText, pal.fillColor.text.primary ); setAlignment( Q::TitleBarText, Qt::AlignLeft ); setTextOptions( Q::TitleBarText, Qt::ElideRight, QskTextOptions::NoWrap ); } @@ -890,19 +926,19 @@ void Editor::setupSubWindow() void Editor::setupVirtualKeyboard() { using Q = QskVirtualKeyboard; + const auto& pal = theme.palette; setMargin( Q::ButtonPanel, 2 ); - setGradient( Q::ButtonPanel, theme.palette.fillColor.control.defaultColor ); - setGradient( Q::ButtonPanel | Q::Hovered, theme.palette.fillColor.control.secondary ); - setGradient( Q::ButtonPanel | QskPushButton::Pressed, theme.palette.fillColor.control.tertiary ); + setGradient( Q::ButtonPanel, pal.fillColor.control.defaultColor ); + setGradient( Q::ButtonPanel | Q::Hovered, pal.fillColor.control.secondary ); + setGradient( Q::ButtonPanel | QskPushButton::Pressed, pal.fillColor.control.tertiary ); - setColor( Q::ButtonText, theme.palette.fillColor.text.primary ); + setColor( Q::ButtonText, pal.fillColor.text.primary ); setFontRole( Q::ButtonText, QskFluent2Skin::BodyLarge ); - setColor( Q::ButtonText | QskPushButton::Pressed, theme.palette.fillColor.text.secondary ); + setColor( Q::ButtonText | QskPushButton::Pressed, pal.fillColor.text.secondary ); - setGradient( Q::Panel, theme.palette.background.fillColor.solidBackground.secondary ); + setGradient( Q::Panel, pal.background.fillColor.solidBackground.secondary ); setPadding( Q::Panel, 8 ); - } QskFluent2Theme::QskFluent2Theme( Theme lightness ) @@ -1246,12 +1282,14 @@ void QskFluent2Skin::setGraphicColor( GraphicRole role, QRgb rgb ) void QskFluent2Skin::setupGraphicFilters( const QskFluent2Theme& theme ) { - setGraphicColor( GraphicRoleFillColorTextDisabled, theme.palette.fillColor.text.disabled ); - setGraphicColor( GraphicRoleFillColorTextOnAccentDisabled, theme.palette.fillColor.textOnAccent.disabled ); - setGraphicColor( GraphicRoleFillColorTextOnAccentPrimary, theme.palette.fillColor.textOnAccent.primary ); - setGraphicColor( GraphicRoleFillColorTextOnAccentSecondary, theme.palette.fillColor.textOnAccent.secondary ); - setGraphicColor( GraphicRoleFillColorTextPrimary, theme.palette.fillColor.text.primary ); - setGraphicColor( GraphicRoleFillColorTextSecondary, theme.palette.fillColor.text.secondary ); + const auto& colors = theme.palette.fillColor; + + setGraphicColor( GraphicRoleFillColorTextDisabled, colors.text.disabled ); + setGraphicColor( GraphicRoleFillColorTextOnAccentDisabled, colors.textOnAccent.disabled ); + setGraphicColor( GraphicRoleFillColorTextOnAccentPrimary, colors.textOnAccent.primary ); + setGraphicColor( GraphicRoleFillColorTextOnAccentSecondary, colors.textOnAccent.secondary ); + setGraphicColor( GraphicRoleFillColorTextPrimary, colors.text.primary ); + setGraphicColor( GraphicRoleFillColorTextSecondary, colors.text.secondary ); } #include "moc_QskFluent2Skin.cpp" From 042523d9e3237cb1258747fd18b8bce32fc03827 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 20 Jun 2023 17:41:08 +0200 Subject: [PATCH 3/3] making gray/color values more obvious --- skins/fluent2/QskFluent2Skin.cpp | 329 +++++++++++++++---------------- skins/fluent2/QskFluent2Skin.h | 2 +- 2 files changed, 160 insertions(+), 171 deletions(-) diff --git a/skins/fluent2/QskFluent2Skin.cpp b/skins/fluent2/QskFluent2Skin.cpp index 70b9ba99..b07391d3 100644 --- a/skins/fluent2/QskFluent2Skin.cpp +++ b/skins/fluent2/QskFluent2Skin.cpp @@ -56,6 +56,11 @@ namespace { + inline constexpr QRgb rgbGray( int value, qreal opacity = 1.0 ) + { + return qRgba( value, value, value, qRound( opacity * 255 ) ); + } + inline QRgb flattenedColor( QRgb foregroundColor, QRgb backgroundColor ) { const qreal alphaRatio = ( ( foregroundColor & QskRgb::AlphaMask ) >> 24 ) / 255.0; @@ -955,290 +960,274 @@ QskFluent2Theme::QskFluent2Theme( Theme lightness ) { } -QskFluent2Theme::QskFluent2Theme( Theme theme, std::array< QRgb, NumAccentColors > accentColors ) +QskFluent2Theme::QskFluent2Theme( Theme theme, + const std::array< QRgb, NumAccentColors >& accentColors ) { if( theme == Light ) { // Fill color: - palette.fillColor.text.primary = QskRgb::toTransparentF( 0xff000000, 0.8956 ); - palette.fillColor.text.secondary = QskRgb::toTransparentF( 0xff000000, 0.6063 ); - palette.fillColor.text.tertiary = QskRgb::toTransparentF( 0xff000000, 0.4458 ); - palette.fillColor.text.disabled = QskRgb::toTransparentF( 0xff000000, 0.3614 ); + palette.fillColor.text.primary = rgbGray( 0, 0.8956 ); + palette.fillColor.text.secondary = rgbGray( 0, 0.6063 ); + palette.fillColor.text.tertiary = rgbGray( 0, 0.4458 ); + palette.fillColor.text.disabled = rgbGray( 0, 0.3614 ); palette.fillColor.accentText.primary = accentColors[ AccentDark2 ]; palette.fillColor.accentText.secondary = accentColors[ AccentDark3 ]; palette.fillColor.accentText.tertiary = accentColors[ AccentDark1 ]; - palette.fillColor.accentText.disabled = QskRgb::toTransparentF( 0xff000000, 0.3614 ); + palette.fillColor.accentText.disabled = rgbGray( 0, 0.3614 ); - palette.fillColor.textOnAccent.primary = 0xffffffff; - palette.fillColor.textOnAccent.secondary = QskRgb::toTransparentF( 0xffffffff, 0.70 ); - palette.fillColor.textOnAccent.disabled = 0xffffffff; - palette.fillColor.textOnAccent.selectedText = 0xffffffff; + palette.fillColor.textOnAccent.primary = rgbGray( 255 ); + palette.fillColor.textOnAccent.secondary = rgbGray( 255, 0.70 ); + palette.fillColor.textOnAccent.disabled = rgbGray( 255 ); + palette.fillColor.textOnAccent.selectedText = rgbGray( 255 ); palette.fillColor.control.transparent = Qt::transparent; - palette.fillColor.control.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.70 ); - palette.fillColor.control.secondary = QskRgb::toTransparentF( 0xffF9F9F9, 0.50 ); - palette.fillColor.control.tertiary = QskRgb::toTransparentF( 0xffF9F9F9, 0.30 ); - palette.fillColor.control.inputActive = 0xffffffff; - palette.fillColor.control.disabled = QskRgb::toTransparentF( 0xffF9F9F9, 0.30 ); + palette.fillColor.control.defaultColor = rgbGray( 255, 0.70 ); + palette.fillColor.control.secondary = rgbGray( 249, 0.50 ); + palette.fillColor.control.tertiary = rgbGray( 249, 0.30 ); + palette.fillColor.control.inputActive = rgbGray( 255 ); + palette.fillColor.control.disabled = rgbGray( 249, 0.30 ); - palette.fillColor.controlStrong.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.4458 ); - palette.fillColor.controlStrong.disabled = QskRgb::toTransparentF( 0xff000000, 0.3173 ); + palette.fillColor.controlStrong.defaultColor = rgbGray( 0, 0.4458 ); + palette.fillColor.controlStrong.disabled = rgbGray( 0, 0.3173 ); palette.fillColor.subtle.transparent = Qt::transparent; - palette.fillColor.subtle.secondary =QskRgb::toTransparentF( 0xff000000, 0.0373 ); - palette.fillColor.subtle.tertiary = QskRgb::toTransparentF( 0xff000000, 0.0241 ); + palette.fillColor.subtle.secondary = rgbGray( 0, 0.0373 ); + palette.fillColor.subtle.tertiary = rgbGray( 0, 0.0241 ); palette.fillColor.subtle.disabled = Qt::transparent; - palette.fillColor.controlSolid.defaultColor = 0xffffffff; + palette.fillColor.controlSolid.defaultColor = rgbGray( 255 ); palette.fillColor.controlAlt.transparent = Qt::transparent; - palette.fillColor.controlAlt.secondary = QskRgb::toTransparentF( 0xff000000, 0.0241 ); - palette.fillColor.controlAlt.tertiary = QskRgb::toTransparentF( 0xff000000, 0.0578 ); - palette.fillColor.controlAlt.quaternary = QskRgb::toTransparentF( 0xff000000, 0.0924 ); + palette.fillColor.controlAlt.secondary = rgbGray( 0, 0.0241 ); + palette.fillColor.controlAlt.tertiary = rgbGray( 0, 0.0578 ); + palette.fillColor.controlAlt.quaternary = rgbGray( 0, 0.0924 ); palette.fillColor.controlAlt.disabled = Qt::transparent; palette.fillColor.accent.defaultColor = accentColors[ AccentDark1 ]; palette.fillColor.accent.secondary = QskRgb::toTransparentF( accentColors[ AccentDark1 ], 0.90 ); palette.fillColor.accent.tertiary = QskRgb::toTransparentF( accentColors[ AccentDark1 ], 0.80 ); - palette.fillColor.accent.disabled = QskRgb::toTransparentF( 0xff000000, 0.2169 ); + palette.fillColor.accent.disabled = rgbGray( 0, 0.2169 ); palette.fillColor.accent.selectedTextBackground = accentColors[ AccentBase ]; - palette.fillColor.system.critical = 0xffC42B1C; - palette.fillColor.system.success = 0xff0F7B0F; - palette.fillColor.system.attention = 0xff005FB7; - palette.fillColor.system.caution = 0xff9D5D00; - palette.fillColor.system.attentionBackground = QskRgb::toTransparentF( 0xffF6F6F6, 0.50 ); - palette.fillColor.system.successBackground = 0xffDFF6DD; - palette.fillColor.system.cautionBackground = 0xffFFF4CE; - palette.fillColor.system.criticalBackground = 0xffFDE7E9; - palette.fillColor.system.neutral = QskRgb::toTransparentF( 0xff000000, 0.4458 ); - palette.fillColor.system.neutralBackground = QskRgb::toTransparentF( 0xff000000, 0.0241 ); - palette.fillColor.system.solidNeutral = 0xff8A8A8A; - palette.fillColor.system.solidAttentionBackground = 0xffF7F7F7; - palette.fillColor.system.solidNeutralBackground = 0xffF3F3F3; + palette.fillColor.system.critical = 0xffc42b1c; + palette.fillColor.system.success = 0xff0f7b0f; + palette.fillColor.system.attention = 0xff005fb7; + palette.fillColor.system.caution = 0xff9d5d00; + palette.fillColor.system.attentionBackground = rgbGray( 246, 0.50 ); + palette.fillColor.system.successBackground = 0xffdff6dd; + palette.fillColor.system.cautionBackground = 0xfffff4ce; + palette.fillColor.system.criticalBackground = 0xfffde7e9; + palette.fillColor.system.neutral = rgbGray( 0, 0.4458 ); + palette.fillColor.system.neutralBackground = rgbGray( 0, 0.0241 ); + palette.fillColor.system.solidNeutral = rgbGray( 138 ); + palette.fillColor.system.solidAttentionBackground = rgbGray( 247 ); + palette.fillColor.system.solidNeutralBackground = rgbGray( 243 ); // Elevation: - palette.elevation.control.border = { QskRgb::toTransparentF( 0xff000000, 0.0578 ), - QskRgb::toTransparentF( 0xff000000, 0.1622 ) }; - - palette.elevation.circle.border = { QskRgb::toTransparentF( 0xff000000, 0.0578 ), - QskRgb::toTransparentF( 0xff000000, 0.1622 ) }; - - palette.elevation.textControl.border = { QskRgb::toTransparentF( 0xff000000, 0.0578 ), - palette.fillColor.text.secondary }; - - palette.elevation.textControl.borderFocused = { QskRgb::toTransparentF( 0xff000000, 0.0578 ), - QskRgb::toTransparentF( 0xff000000, 0.0578 ) }; - - palette.elevation.accentControl.border = { QskRgb::toTransparentF( 0xffffffff, 0.08 ), - QskRgb::toTransparentF( 0xff000000, 0.40 ) }; + palette.elevation.control.border = { rgbGray( 0, 0.0578 ), rgbGray( 0, 0.1622 ) }; + palette.elevation.circle.border = { rgbGray( 0, 0.0578 ), rgbGray( 0, 0.1622 ) }; + palette.elevation.textControl.border = { rgbGray( 0, 0.0578 ), palette.fillColor.text.secondary }; + palette.elevation.textControl.borderFocused = { rgbGray( 0, 0.0578 ), rgbGray( 0, 0.0578 ) }; + palette.elevation.accentControl.border = { rgbGray( 255, 0.08 ), rgbGray( 0, 0.40 ) }; // Stroke color: - palette.strokeColor.controlStroke.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.0578 ); - palette.strokeColor.controlStroke.secondary = QskRgb::toTransparentF( 0xff000000, 0.1622 ); - palette.strokeColor.controlStroke.onAccentDefault = QskRgb::toTransparentF( 0xffffffff, 0.08 ); - palette.strokeColor.controlStroke.onAccentSecondary = QskRgb::toTransparentF( 0xff000000, 0.40 ); - palette.strokeColor.controlStroke.onAccentTertiary = QskRgb::toTransparentF( 0xff000000, 0.2169 ); - palette.strokeColor.controlStroke.onAccentDisabled = QskRgb::toTransparentF( 0xff000000, 0.0578 ); - palette.strokeColor.controlStroke.forStrongFillWhenOnImage = QskRgb::toTransparentF( 0xffffffff, 0.35 ); + palette.strokeColor.controlStroke.defaultColor = rgbGray( 0, 0.0578 ); + palette.strokeColor.controlStroke.secondary = rgbGray( 0, 0.1622 ); + palette.strokeColor.controlStroke.onAccentDefault = rgbGray( 255.08 ); + palette.strokeColor.controlStroke.onAccentSecondary = rgbGray( 0, 0.40 ); + palette.strokeColor.controlStroke.onAccentTertiary = rgbGray( 0, 0.2169 ); + palette.strokeColor.controlStroke.onAccentDisabled = rgbGray( 0, 0.0578 ); + palette.strokeColor.controlStroke.forStrongFillWhenOnImage = rgbGray( 255, 0.35 ); - palette.strokeColor.controlStrongStroke.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.4458 ); - palette.strokeColor.controlStrongStroke.disabled = QskRgb::toTransparentF( 0xff000000, 0.2169 ); + palette.strokeColor.controlStrongStroke.defaultColor = rgbGray( 0, 0.4458 ); + palette.strokeColor.controlStrongStroke.disabled = rgbGray( 0, 0.2169 ); - palette.strokeColor.cardStroke.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.0578 ); - palette.strokeColor.cardStroke.defaultSolid = 0xffEBEBEB; + palette.strokeColor.cardStroke.defaultColor = rgbGray( 0, 0.0578 ); + palette.strokeColor.cardStroke.defaultSolid = rgbGray( 235 ); - palette.strokeColor.dividerStroke.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.0803 ); + palette.strokeColor.dividerStroke.defaultColor = rgbGray( 0, 0.0803 ); - palette.strokeColor.surfaceStroke.defaultColor = QskRgb::toTransparentF( 0xff757575, 0.40 ); - palette.strokeColor.surfaceStroke.flyout = QskRgb::toTransparentF( 0xff000000, 0.0578 ); + palette.strokeColor.surfaceStroke.defaultColor = rgbGray( 117, 0.40 ); + palette.strokeColor.surfaceStroke.flyout = rgbGray( 0, 0.0578 ); - palette.strokeColor.focusStroke.outer = QskRgb::toTransparentF( 0xff000000, 0.8956 ); - palette.strokeColor.focusStroke.inner = 0xffffffff; + palette.strokeColor.focusStroke.outer = rgbGray( 0, 0.8956 ); + palette.strokeColor.focusStroke.inner = rgbGray( 255 ); // Background: - palette.background.fillColor.cardBackground.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.70 ); - palette.background.fillColor.cardBackground.secondary = QskRgb::toTransparentF( 0xffF6F6F6, 0.50 ); - palette.background.fillColor.cardBackground.tertiary = 0xffffffff; + palette.background.fillColor.cardBackground.defaultColor = rgbGray( 255, 0.70 ); + palette.background.fillColor.cardBackground.secondary = rgbGray( 246, 0.50 ); + palette.background.fillColor.cardBackground.tertiary = rgbGray( 255 ); - palette.background.fillColor.smoke.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.30 ); + palette.background.fillColor.smoke.defaultColor = rgbGray( 0, 0.30 ); - palette.background.fillColor.layer.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.50 ); - palette.background.fillColor.layer.alt = 0xffffffff; + palette.background.fillColor.layer.defaultColor = rgbGray( 255, 0.50 ); + palette.background.fillColor.layer.alt = rgbGray( 255 ); - palette.background.fillColor.layerOnAcrylic.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.25 ); + palette.background.fillColor.layerOnAcrylic.defaultColor = rgbGray( 255, 0.25 ); - palette.background.fillColor.layerOnAccentAcrylic.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.25 ); + palette.background.fillColor.layerOnAccentAcrylic.defaultColor = rgbGray( 255, 0.25 ); - palette.background.fillColor.acrylicBackground.defaultColor = QskRgb::toTransparentF( 0xffFCFCFC, 0.85 ); - palette.background.fillColor.acrylicBackground.base = QskRgb::toTransparentF( 0xffF3F3F3, 0.90 ); + palette.background.fillColor.acrylicBackground.defaultColor = rgbGray( 252, 0.85 ); + palette.background.fillColor.acrylicBackground.base = rgbGray( 243, 0.90 ); palette.background.fillColor.accentAcrylicBackground.base = QskRgb::toTransparentF( accentColors[ AccentLight3 ], 0.90 ); palette.background.fillColor.accentAcrylicBackground.defaultColor = QskRgb::toTransparentF( accentColors[ AccentLight3 ], 0.90 ); - palette.background.fillColor.micaBackground.base = QskRgb::toTransparentF( 0xffffffff, 0.50 ); + palette.background.fillColor.micaBackground.base = rgbGray( 255, 0.50 ); - palette.background.fillColor.solidBackground.base = 0xffF3F3F3; - palette.background.fillColor.solidBackground.secondary = 0xffEEEEEE; - palette.background.fillColor.solidBackground.tertiary = 0xffF9F9F9; - palette.background.fillColor.solidBackground.quaternary = 0xffffffff; + palette.background.fillColor.solidBackground.base = rgbGray( 243 ); + palette.background.fillColor.solidBackground.secondary = rgbGray( 238 ); + palette.background.fillColor.solidBackground.tertiary = rgbGray( 249 ); + palette.background.fillColor.solidBackground.quaternary = rgbGray( 255 ); // Shadow: - shadow.cardRest = qMakePair( QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), QskRgb::toTransparentF( 0xff000000, 0.04 ) ); - shadow.cardHover = qMakePair( QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), QskRgb::toTransparentF( 0xff000000, 0.10 ) ); - shadow.tooltip = qMakePair( QskShadowMetrics( 0, 8, QPointF( 0, 4 ) ), QskRgb::toTransparentF( 0xff000000, 0.14 ) ); - shadow.flyout = qMakePair( QskShadowMetrics( 0, 16, QPointF( 0, 8 ) ), QskRgb::toTransparentF( 0xff000000, 0.14 ) ); + shadow.cardRest = { QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), rgbGray( 0, 0.04 ) }; + shadow.cardHover = { QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), rgbGray( 0, 0.10 ) }; + shadow.tooltip = { QskShadowMetrics( 0, 8, QPointF( 0, 4 ) ), rgbGray( 0, 0.14 ) }; + shadow.flyout = { QskShadowMetrics( 0, 16, QPointF( 0, 8 ) ), rgbGray( 0, 0.14 ) }; // ### should actually be drawn twice with different values: - shadow.dialog = qMakePair( QskShadowMetrics( 0, 21, QPointF( 0, 2 ) ), QskRgb::toTransparentF( 0xff000000, 0.1474 ) ); + shadow.dialog = { QskShadowMetrics( 0, 21, QPointF( 0, 2 ) ), rgbGray( 0, 0.1474 ) }; } else if( theme == Dark ) { // Fill color: - palette.fillColor.text.primary = 0xffffffff; - palette.fillColor.text.secondary = QskRgb::toTransparentF( 0xffffffff, 0.786 ); - palette.fillColor.text.tertiary = QskRgb::toTransparentF( 0xffffffff, 0.5442 ); - palette.fillColor.text.disabled = QskRgb::toTransparentF( 0xffffffff, 0.3628 ); + palette.fillColor.text.primary = rgbGray( 255 ); + palette.fillColor.text.secondary = rgbGray( 255, 0.786 ); + palette.fillColor.text.tertiary = rgbGray( 255, 0.5442 ); + palette.fillColor.text.disabled = rgbGray( 255, 0.3628 ); palette.fillColor.accentText.primary = accentColors[ AccentLight3 ]; palette.fillColor.accentText.secondary = accentColors[ AccentLight3 ]; palette.fillColor.accentText.tertiary = accentColors[ AccentLight2 ]; - palette.fillColor.accentText.disabled = QskRgb::toTransparentF( 0xffffffff, 0.3628 ); + palette.fillColor.accentText.disabled = rgbGray( 255, 0.3628 ); - palette.fillColor.textOnAccent.primary = 0xff000000; - palette.fillColor.textOnAccent.secondary = QskRgb::toTransparentF( 0xff000000, 0.50 ); - palette.fillColor.textOnAccent.disabled = QskRgb::toTransparentF( 0xffffffff, 0.5302 ); - palette.fillColor.textOnAccent.selectedText = 0xffffffff; + palette.fillColor.textOnAccent.primary = rgbGray( 0 ); + palette.fillColor.textOnAccent.secondary = rgbGray( 0, 0.50 ); + palette.fillColor.textOnAccent.disabled = rgbGray( 255, 0.5302 ); + palette.fillColor.textOnAccent.selectedText = rgbGray( 255 ); palette.fillColor.control.transparent = Qt::transparent; - palette.fillColor.control.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0605 ); - palette.fillColor.control.secondary = QskRgb::toTransparentF( 0xffffffff, 0.0837 ); - palette.fillColor.control.tertiary = QskRgb::toTransparentF( 0xffffffff, 0.0326 ); - palette.fillColor.control.inputActive = QskRgb::toTransparentF( 0xff1E1E1E, 0.70 ); - palette.fillColor.control.disabled = QskRgb::toTransparentF( 0xffffffff, 0.0419 ); + palette.fillColor.control.defaultColor = rgbGray( 255, 0.0605 ); + palette.fillColor.control.secondary = rgbGray( 255, 0.0837 ); + palette.fillColor.control.tertiary = rgbGray( 255, 0.0326 ); + palette.fillColor.control.inputActive = rgbGray( 30, 0.70 ); + palette.fillColor.control.disabled = rgbGray( 255, 0.0419 ); - palette.fillColor.controlStrong.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.5442 ); - palette.fillColor.controlStrong.disabled = QskRgb::toTransparentF( 0xffffffff, 0.2465 ); + palette.fillColor.controlStrong.defaultColor = rgbGray( 255, 0.5442 ); + palette.fillColor.controlStrong.disabled = rgbGray( 255, 0.2465 ); palette.fillColor.subtle.transparent = Qt::transparent; - palette.fillColor.subtle.secondary =QskRgb::toTransparentF( 0xffffffff, 0.0605 ); - palette.fillColor.subtle.tertiary = QskRgb::toTransparentF( 0xffffffff, 0.0419 ); + palette.fillColor.subtle.secondary = rgbGray( 255, 0.0605 ); + palette.fillColor.subtle.tertiary = rgbGray( 255, 0.0419 ); palette.fillColor.subtle.disabled = Qt::transparent; - palette.fillColor.controlSolid.defaultColor = 0xff454545; + palette.fillColor.controlSolid.defaultColor = rgbGray( 69 ); palette.fillColor.controlAlt.transparent = Qt::transparent; - palette.fillColor.controlAlt.secondary = QskRgb::toTransparentF( 0xff000000, 0.10 ); - palette.fillColor.controlAlt.tertiary = QskRgb::toTransparentF( 0xffffffff, 0.0419 ); - palette.fillColor.controlAlt.quaternary = QskRgb::toTransparentF( 0xffffffff, 0.0698 ); + palette.fillColor.controlAlt.secondary = rgbGray( 0, 0.10 ); + palette.fillColor.controlAlt.tertiary = rgbGray( 255, 0.0419 ); + palette.fillColor.controlAlt.quaternary = rgbGray( 255, 0.0698 ); palette.fillColor.controlAlt.disabled = Qt::transparent; palette.fillColor.accent.defaultColor = accentColors[ AccentLight2 ]; palette.fillColor.accent.secondary = QskRgb::toTransparentF( accentColors[ AccentLight2 ], 0.90 ); palette.fillColor.accent.tertiary = QskRgb::toTransparentF( accentColors[ AccentLight2 ], 0.80 ); - palette.fillColor.accent.disabled = QskRgb::toTransparentF( 0xffffffff, 0.1581 ); + palette.fillColor.accent.disabled = rgbGray( 255, 0.1581 ); palette.fillColor.accent.selectedTextBackground = accentColors[ AccentBase ]; - palette.fillColor.system.critical = 0xffFF99A4; - palette.fillColor.system.success = 0xff6CCB5F; - palette.fillColor.system.attention = 0xff60CDFF; - palette.fillColor.system.caution = 0xffFCE100; - palette.fillColor.system.attentionBackground = QskRgb::toTransparentF( 0xffffffff, 0.0326 ); - palette.fillColor.system.successBackground = 0xff393D1B; + palette.fillColor.system.critical = 0xffff99a4; + palette.fillColor.system.success = 0xff6ccb5f; + palette.fillColor.system.attention = 0xff60cdff; + palette.fillColor.system.caution = 0xfffce100; + palette.fillColor.system.attentionBackground = rgbGray( 255, 0.0326 ); + palette.fillColor.system.successBackground = 0xff393d1b; palette.fillColor.system.cautionBackground = 0xff433519; palette.fillColor.system.criticalBackground = 0xff442726; - palette.fillColor.system.neutral = QskRgb::toTransparentF( 0xffffffff, 0.5442 ); - palette.fillColor.system.neutralBackground = QskRgb::toTransparentF( 0xffffffff, 0.0326 ); - palette.fillColor.system.solidNeutral = 0xff9D9D9D; - palette.fillColor.system.solidAttentionBackground = 0xff2E2E2E; - palette.fillColor.system.solidNeutralBackground = 0xff2E2E2E; + palette.fillColor.system.neutral = rgbGray( 255, 0.5442 ); + palette.fillColor.system.neutralBackground = rgbGray( 255, 0.0326 ); + palette.fillColor.system.solidNeutral = rgbGray( 157 ); + palette.fillColor.system.solidAttentionBackground = rgbGray( 46 ); + palette.fillColor.system.solidNeutralBackground = rgbGray( 46 ); // Elevation: - palette.elevation.control.border = { QskRgb::toTransparentF( 0xffffffff, 0.093 ), - QskRgb::toTransparentF( 0xffffffff, 0.0698 ) }; + palette.elevation.control.border = { rgbGray( 255, 0.093 ), rgbGray( 255, 0.0698 ) }; + palette.elevation.circle.border = { rgbGray( 255, 0.093 ), rgbGray( 255, 0.0698 ) }; - palette.elevation.circle.border = { QskRgb::toTransparentF( 0xffffffff, 0.093 ), - QskRgb::toTransparentF( 0xffffffff, 0.0698 ) }; + palette.elevation.textControl.border = { rgbGray( 255, 0.08 ), palette.fillColor.text.secondary }; - palette.elevation.textControl.border = { QskRgb::toTransparentF( 0xffffffff, 0.08 ), - palette.fillColor.text.secondary }; - - - palette.elevation.textControl.borderFocused = { QskRgb::toTransparentF( 0xffffffff, 0.08 ), - QskRgb::toTransparentF( 0xffffffff, 0.08 ) }; - - palette.elevation.accentControl.border = { QskRgb::toTransparentF( 0xffffffff, 0.08 ), - QskRgb::toTransparentF( 0xff000000, 0.14 ) }; + palette.elevation.textControl.borderFocused = { rgbGray( 255, 0.08 ), rgbGray( 255, 0.08 ) }; + palette.elevation.accentControl.border = { rgbGray( 255, 0.08 ), rgbGray( 0, 0.14 ) }; // Stroke color: - palette.strokeColor.controlStroke.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0698 ); - palette.strokeColor.controlStroke.secondary = QskRgb::toTransparentF( 0xffffffff, 0.093 ); - palette.strokeColor.controlStroke.onAccentDefault = QskRgb::toTransparentF( 0xffffffff, 0.08 ); - palette.strokeColor.controlStroke.onAccentSecondary = QskRgb::toTransparentF( 0xff000000, 0.14 ); - palette.strokeColor.controlStroke.onAccentTertiary = QskRgb::toTransparentF( 0xff000000, 0.2169 ); - palette.strokeColor.controlStroke.onAccentDisabled = QskRgb::toTransparentF( 0xff000000, 0.20 ); - palette.strokeColor.controlStroke.forStrongFillWhenOnImage = QskRgb::toTransparentF( 0xff000000, 0.42 ); + palette.strokeColor.controlStroke.defaultColor = rgbGray( 255, 0.0698 ); + palette.strokeColor.controlStroke.secondary = rgbGray( 255, 0.093 ); + palette.strokeColor.controlStroke.onAccentDefault = rgbGray( 255, 0.08 ); + palette.strokeColor.controlStroke.onAccentSecondary = rgbGray( 0, 0.14 ); + palette.strokeColor.controlStroke.onAccentTertiary = rgbGray( 0, 0.2169 ); + palette.strokeColor.controlStroke.onAccentDisabled = rgbGray( 0, 0.20 ); + palette.strokeColor.controlStroke.forStrongFillWhenOnImage = rgbGray( 0, 0.42 ); - palette.strokeColor.controlStrongStroke.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.5442 ); - palette.strokeColor.controlStrongStroke.disabled = QskRgb::toTransparentF( 0xffffffff, 0.1581 ); + palette.strokeColor.controlStrongStroke.defaultColor = rgbGray( 255, 0.5442 ); + palette.strokeColor.controlStrongStroke.disabled = rgbGray( 255, 0.1581 ); - palette.strokeColor.cardStroke.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0578 ); - palette.strokeColor.cardStroke.defaultSolid = 0xffEBEBEB; + palette.strokeColor.cardStroke.defaultColor = rgbGray( 255, 0.0578 ); + palette.strokeColor.cardStroke.defaultSolid = rgbGray( 235 ); - palette.strokeColor.dividerStroke.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0837 ); + palette.strokeColor.dividerStroke.defaultColor = rgbGray( 255, 0.0837 ); - palette.strokeColor.surfaceStroke.defaultColor = QskRgb::toTransparentF( 0xff757575, 0.40 ); - palette.strokeColor.surfaceStroke.flyout = QskRgb::toTransparentF( 0xff000000, 0.20 ); + palette.strokeColor.surfaceStroke.defaultColor = rgbGray( 117, 0.40 ); + palette.strokeColor.surfaceStroke.flyout = rgbGray( 0, 0.20 ); - palette.strokeColor.focusStroke.outer = 0xffffffff; - palette.strokeColor.focusStroke.inner = QskRgb::toTransparentF( 0xff000000, 0.70 ); + palette.strokeColor.focusStroke.outer = rgbGray( 255 ); + palette.strokeColor.focusStroke.inner = rgbGray( 0, 0.70 ); // Background: - palette.background.fillColor.cardBackground.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0512 ); - palette.background.fillColor.cardBackground.secondary = QskRgb::toTransparentF( 0xffffffff, 0.0326 ); - palette.background.fillColor.cardBackground.tertiary = 0xffffffff; // not set in Figma + palette.background.fillColor.cardBackground.defaultColor = rgbGray( 255, 0.0512 ); + palette.background.fillColor.cardBackground.secondary = rgbGray( 255, 0.0326 ); + palette.background.fillColor.cardBackground.tertiary = rgbGray( 255 ); // not set in Figma - palette.background.fillColor.smoke.defaultColor = QskRgb::toTransparentF( 0xff000000, 0.30 ); + palette.background.fillColor.smoke.defaultColor = rgbGray( 0, 0.30 ); - palette.background.fillColor.layer.defaultColor = QskRgb::toTransparentF( 0xff3A3A3A, 0.30 ); - palette.background.fillColor.layer.alt = QskRgb::toTransparentF( 0xffffffff, 0.0538 ); + palette.background.fillColor.layer.defaultColor = rgbGray( 58, 0.30 ); + palette.background.fillColor.layer.alt = rgbGray( 255, 0.0538 ); - palette.background.fillColor.layerOnAcrylic.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0359 ); + palette.background.fillColor.layerOnAcrylic.defaultColor = rgbGray( 255, 0.0359 ); - palette.background.fillColor.layerOnAccentAcrylic.defaultColor = QskRgb::toTransparentF( 0xffffffff, 0.0359 ); + palette.background.fillColor.layerOnAccentAcrylic.defaultColor = rgbGray( 255, 0.0359 ); - palette.background.fillColor.acrylicBackground.defaultColor = QskRgb::toTransparentF( 0xff2C2C2C, 0.96 ); - palette.background.fillColor.acrylicBackground.base = QskRgb::toTransparentF( 0xff202020, 0.90 ); + palette.background.fillColor.acrylicBackground.defaultColor = rgbGray( 44, 0.96 ); + palette.background.fillColor.acrylicBackground.base = rgbGray( 32, 0.90 ); palette.background.fillColor.accentAcrylicBackground.base = QskRgb::toTransparentF( accentColors[ AccentDark2 ], 0.80 ); palette.background.fillColor.accentAcrylicBackground.defaultColor = QskRgb::toTransparentF( accentColors[ AccentBase ], 0.80 ); - palette.background.fillColor.micaBackground.base = QskRgb::toTransparentF( 0xffffffff, 0.50 ); + palette.background.fillColor.micaBackground.base = rgbGray( 255, 0.50 ); - palette.background.fillColor.solidBackground.base = 0xff202020; - palette.background.fillColor.solidBackground.secondary = 0xff1C1C1C; - palette.background.fillColor.solidBackground.tertiary = 0xff282828; - palette.background.fillColor.solidBackground.quaternary = 0xff2C2C2C; + palette.background.fillColor.solidBackground.base = rgbGray( 32 ); + palette.background.fillColor.solidBackground.secondary = rgbGray( 28 ); + palette.background.fillColor.solidBackground.tertiary = rgbGray( 40 ); + palette.background.fillColor.solidBackground.quaternary = rgbGray( 44 ); // Shadow: - shadow.cardRest = qMakePair( QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), QskRgb::toTransparentF( 0xff000000, 0.13 ) ); - shadow.cardHover = qMakePair( QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), QskRgb::toTransparentF( 0xff000000, 0.26 ) ); - shadow.tooltip = qMakePair( QskShadowMetrics( 0, 8, QPointF( 0, 4 ) ), QskRgb::toTransparentF( 0xff000000, 0.26 ) ); - shadow.flyout = qMakePair( QskShadowMetrics( 0, 16, QPointF( 0, 8 ) ), QskRgb::toTransparentF( 0xff000000, 0.26 ) ); + shadow.cardRest = { QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), rgbGray( 0, 0.13 ) }; + shadow.cardHover = { QskShadowMetrics( 0, 4, QPointF( 0, 2 ) ), rgbGray( 0, 0.26 ) }; + shadow.tooltip = { QskShadowMetrics( 0, 8, QPointF( 0, 4 ) ), rgbGray( 0, 0.26 ) }; + shadow.flyout = { QskShadowMetrics( 0, 16, QPointF( 0, 8 ) ), rgbGray( 0, 0.26 ) }; // ### should actually be drawn twice with different values: - shadow.dialog = qMakePair( QskShadowMetrics( 0, 21, QPointF( 0, 2 ) ), QskRgb::toTransparentF( 0xff000000, 0.37 ) ); + shadow.dialog = { QskShadowMetrics( 0, 21, QPointF( 0, 2 ) ), rgbGray( 0, 0.37 ) }; } } diff --git a/skins/fluent2/QskFluent2Skin.h b/skins/fluent2/QskFluent2Skin.h index 0f02cc95..458b6940 100644 --- a/skins/fluent2/QskFluent2Skin.h +++ b/skins/fluent2/QskFluent2Skin.h @@ -38,7 +38,7 @@ class QSK_FLUENT2_EXPORT QskFluent2Theme }; QskFluent2Theme( Theme ); - QskFluent2Theme( Theme, std::array< QRgb, NumAccentColors > ); + QskFluent2Theme( Theme, const std::array< QRgb, NumAccentColors >& ); typedef std::array< QRgb, 2 > BorderGradient;