Option Strict On
Option Explicit On

Imports System
Imports System.Windows.Forms
Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Components
Imports Nexamas.UI.Composition
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.Controls


    Partial Public NotInheritable Class MASButton
#Region "Render"

        Protected Overrides Sub Render(canvas As SKCanvas, ctx As MASThemeContext, pixelBounds As SKRect)
            If canvas Is Nothing OrElse ctx Is Nothing Then Return
            If pixelBounds.IsEmpty Then Return
            If pixelBounds.Width <= 1.0F OrElse pixelBounds.Height <= 1.0F Then Return

            Dim dpi As Single = PixelSnap.SafeDpi(ctx.Dpi)
            Dim rectPx As SKRect = PixelSnap.SnapRectHalf(pixelBounds)

            Dim state As MASButtonState = _state
            state.IsEnabled = CanRenderAsEnabled()
            If _motionPressActive AndAlso state.IsEnabled Then
                state.IsPressed = True
            End If

            _renderer.RenderSingle(
                canvas:=canvas,
                ctx:=ctx,
                rect:=rectPx,
                dpi:=dpi,
                spec:=BuildButtonSpec(),
                state:=state,
                contract:=_contract,
                drawIcon:=_drawIcon,
                drawIconEmphasis:=If(_drawIconEmphasis, _drawIcon),
                iconPlacement:=_iconPlacement
            )
        End Sub

#End Region

    End Class

End Namespace
