Option Strict On
Option Explicit On

Imports SkiaSharp

Namespace Nexamas.UI.Rendering

    ''' <summary>
    ''' General chrome/header profile for surfaces that have title/header affordances.
    ''' Current component chrome can feed this profile through ThemeSystem SurfaceChrome,
    ''' but materials do not depend on component-specific theme contracts.
    ''' </summary>
    Friend Structure MASSurfaceChromeThemeProfile
        Friend ReadOnly HeaderTop As SKColor
        Friend ReadOnly HeaderMid As SKColor
        Friend ReadOnly HeaderBottom As SKColor
        Friend ReadOnly HeaderSheen As SKColor
        Friend ReadOnly HeaderSeparator As SKColor
        Friend ReadOnly TextTitle As SKColor
        Friend ReadOnly TextSubtitle As SKColor
        Friend ReadOnly TextIcon As SKColor
        Friend ReadOnly TextDetail As SKColor
        Friend ReadOnly TextAccent As SKColor
        Friend ReadOnly ShadowBase As SKColor
        Friend ReadOnly ShadowAmbient As SKColor
        Friend ReadOnly ShadowContact As SKColor
        Friend ReadOnly DefaultBorderStrengthLevel As Integer
        Friend ReadOnly DefaultSurfaceStrengthLevel As Integer
        Friend ReadOnly DividerLight As SKColor
        Friend ReadOnly DividerDark As SKColor
        Friend ReadOnly Glow As SKColor

        Friend Sub New(headerTop As SKColor,
                       headerMid As SKColor,
                       headerBottom As SKColor,
                       headerSheen As SKColor,
                       headerSeparator As SKColor,
                       textTitle As SKColor,
                       textSubtitle As SKColor,
                       textIcon As SKColor,
                       textDetail As SKColor,
                       textAccent As SKColor,
                       shadowBase As SKColor,
                       shadowAmbient As SKColor,
                       shadowContact As SKColor,
                       defaultBorderStrengthLevel As Integer,
                       defaultSurfaceStrengthLevel As Integer,
                       dividerLight As SKColor,
                       dividerDark As SKColor,
                       glow As SKColor)

            Me.HeaderTop = headerTop
            Me.HeaderMid = headerMid
            Me.HeaderBottom = headerBottom
            Me.HeaderSheen = headerSheen
            Me.HeaderSeparator = headerSeparator
            Me.TextTitle = textTitle
            Me.TextSubtitle = textSubtitle
            Me.TextIcon = textIcon
            Me.TextDetail = textDetail
            Me.TextAccent = textAccent
            Me.ShadowBase = shadowBase
            Me.ShadowAmbient = shadowAmbient
            Me.ShadowContact = shadowContact
            Me.DefaultBorderStrengthLevel = ClampStrength(defaultBorderStrengthLevel)
            Me.DefaultSurfaceStrengthLevel = ClampStrength(defaultSurfaceStrengthLevel)
            Me.DividerLight = dividerLight
            Me.DividerDark = dividerDark
            Me.Glow = glow
        End Sub

        Private Shared Function ClampStrength(value As Integer) As Integer
            If value < 1 Then Return 1
            If value > 6 Then Return 6
            Return value
        End Function
    End Structure

End Namespace
