Option Strict On
Option Explicit On

Imports System
Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Controls
Imports Nexamas.UI.General
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.Theming
Imports Nexamas.UI.TextRendering
Imports Nexamas.UI.Values
Imports SkiaSharp

Namespace Nexamas.UI.Components


    Partial Friend NotInheritable Class MASTabRenderer
        Private Sub ResetNavFillPaint()
            _navFillPaint.Shader = Nothing
            _navFillPaint.ImageFilter = Nothing
            _navFillPaint.BlendMode = SKBlendMode.SrcOver
            _navFillPaint.Style = SKPaintStyle.Fill
            _navFillPaint.StrokeWidth = 0.0F
            _navFillPaint.StrokeCap = SKStrokeCap.Butt
            _navFillPaint.StrokeJoin = SKStrokeJoin.Miter
            _navFillPaint.Color = SKColors.Transparent
        End Sub




        Private Sub ResetNavFxPaint()
            _navFxPaint.Shader = Nothing
            _navFxPaint.ImageFilter = Nothing
            _navFxPaint.BlendMode = SKBlendMode.SrcOver
            _navFxPaint.Style = SKPaintStyle.Fill
            _navFxPaint.StrokeWidth = 0.0F
            _navFxPaint.StrokeCap = SKStrokeCap.Butt
            _navFxPaint.StrokeJoin = SKStrokeJoin.Miter
            _navFxPaint.Color = SKColors.White
        End Sub




        Private Sub ResetNavStrokePaint()
            _navStrokePaint.Shader = Nothing
            _navStrokePaint.ImageFilter = Nothing
            _navStrokePaint.BlendMode = SKBlendMode.SrcOver
            _navStrokePaint.Style = SKPaintStyle.Stroke
            _navStrokePaint.StrokeWidth = 1.0F
            _navStrokePaint.StrokeCap = SKStrokeCap.Butt
            _navStrokePaint.StrokeJoin = SKStrokeJoin.Miter
            _navStrokePaint.Color = SKColors.Transparent
        End Sub




        Private Sub ResetEdgeFadePaint()
            _edgeFadePaint.Shader = Nothing
            _edgeFadePaint.ImageFilter = Nothing
            _edgeFadePaint.BlendMode = SKBlendMode.SrcOver
            _edgeFadePaint.Style = SKPaintStyle.Fill
            _edgeFadePaint.StrokeWidth = 0.0F
            _edgeFadePaint.Color = SKColors.White
        End Sub




        Private Sub ResetSeamPaint()
            _seamPaint.Shader = Nothing
            _seamPaint.ImageFilter = Nothing
            _seamPaint.BlendMode = SKBlendMode.SrcOver
            _seamPaint.Style = SKPaintStyle.Stroke
            _seamPaint.StrokeCap = SKStrokeCap.Butt
            _seamPaint.StrokeJoin = SKStrokeJoin.Miter
            _seamPaint.Color = SKColors.Transparent
        End Sub





        Private Shared Function IntersectRect(a As SKRect, b As SKRect) As SKRect
            Dim l As Single = Math.Max(a.Left, b.Left)
            Dim t As Single = Math.Max(a.Top, b.Top)
            Dim r As Single = Math.Min(a.Right, b.Right)
            Dim bt As Single = Math.Min(a.Bottom, b.Bottom)

            If r <= l OrElse bt <= t Then
                Return SKRect.Empty
            End If

            Return New SKRect(l, t, r, bt)
        End Function




        Private Shared Function WithAlpha(c As SKColor, a As Byte) As SKColor
            Return New SKColor(c.Red, c.Green, c.Blue, a)
        End Function




        Private Shared Function InsetRect(r As SKRect, inset As Single) As SKRect
            Dim rr As SKRect = r
            rr.Inflate(-inset, -inset)

            If rr.Width <= 0.0F OrElse rr.Height <= 0.0F Then
                Return r
            End If

            Return PixelSnap.SnapRectHalf(rr)
        End Function

    End Class

End Namespace
