Option Strict On
Option Explicit On

Namespace Nexamas.UI.ThemeStudio

    ''' <summary>
    ''' Product-safe description of a reusable surface visual style composition.
    ''' </summary>
    ''' <remarks>
    ''' Visual styles combine material, frame, chrome, and role. The entry describes that
    ''' composition for designers and diagnostics without exposing MASSurfaceVisualStyle itself.
    ''' </remarks>
    Friend NotInheritable Class MASSurfaceDesignerVisualStyleEntry

        Friend Sub New(id As String,
                       materialKey As String,
                       frameKey As String,
                       chromeKey As String,
                       roleName As String,
                       usesSurfaceMaterial As Boolean,
                       usesSurfaceFrame As Boolean,
                       usesSurfaceChrome As Boolean)
            Me.Id = Normalize(id)
            Me.MaterialKey = Normalize(materialKey)
            Me.FrameKey = Normalize(frameKey)
            Me.ChromeKey = Normalize(chromeKey)
            Me.RoleName = Normalize(roleName)
            Me.UsesSurfaceMaterial = usesSurfaceMaterial
            Me.UsesSurfaceFrame = usesSurfaceFrame
            Me.UsesSurfaceChrome = usesSurfaceChrome
        End Sub

        Friend ReadOnly Property Id As String
        Friend ReadOnly Property MaterialKey As String
        Friend ReadOnly Property FrameKey As String
        Friend ReadOnly Property ChromeKey As String
        Friend ReadOnly Property RoleName As String
        Friend ReadOnly Property UsesSurfaceMaterial As Boolean
        Friend ReadOnly Property UsesSurfaceFrame As Boolean
        Friend ReadOnly Property UsesSurfaceChrome As Boolean

        Private Shared Function Normalize(value As String) As String
            Return If(value, String.Empty).Trim()
        End Function

    End Class

End Namespace
