Option Strict On
Option Explicit On

Imports System
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Windows.Forms
Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Composition
Imports Nexamas.UI.Controls
Imports Nexamas.UI.General
Imports Nexamas.UI.Layout
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.TextRendering
Imports Nexamas.UI.Theming
Imports Nexamas.UI.Values
Imports SkiaSharp

Namespace Nexamas.UI.Components

    Partial Public NotInheritable Class MASMasterDetailView

#Region "Rendering / Surface"

        Private Sub DrawFooter(canvas As SKCanvas,
                               ctx As MASThemeContext,
                               content As SKRect,
                               dpi As Single,
                               plan As MASMasterDetailViewLayoutPlan,
                               isRtl As Boolean)
            If plan Is Nothing OrElse Not plan.ShowFooter OrElse plan.FooterHeightPx <= 1.0F Then Return
            Dim footer As New SKRect(content.Left, content.Bottom - plan.FooterHeightPx, content.Right, content.Bottom)
            TypographyTextPrimitives.DrawSingleLineText(canvas, ctx, MasterDetailViewTokens.BoundaryText, footer, dpi, MASTypography.MASTextStyle.Micro, MASMasterDetailViewPolicy.ResolveMutedTextColor(ctx), If(isRtl, TypographyTextPrimitives.TextAlign.Right, TypographyTextPrimitives.TextAlign.Left), False)
        End Sub

        Private Sub DrawPaneBackground(canvas As SKCanvas,
                                       rect As SKRect,
                                       dpi As Single,
                                       plan As MASMasterDetailViewLayoutPlan,
                                       accent As SKColor,
                                       alpha As Byte)
            If rect.Width <= 1.0F OrElse rect.Height <= 1.0F Then Return
            Dim radius As Single = If(plan Is Nothing, MasterDetailViewTokens.PaneRadiusDip * dpi, plan.PaneRadiusPx)
            Using fill As New SKPaint With {.IsAntialias = True, .Style = SKPaintStyle.Fill, .Color = accent.WithAlpha(alpha)}
                canvas.DrawRoundRect(rect, radius, radius, fill)
            End Using
            Using stroke As New SKPaint With {.IsAntialias = True, .Style = SKPaintStyle.Stroke, .StrokeWidth = Math.Max(1.0F, dpi), .Color = accent.WithAlpha(MasterDetailViewTokens.PaneStrokeAlpha)}
                canvas.DrawRoundRect(rect, radius, radius, stroke)
            End Using
        End Sub

#End Region

#Region "Input"

#End Region

    End Class

End Namespace
