Option Strict On
Option Explicit On

Imports Nexamas.UI.Architecture
Imports Nexamas.UI.Controls
Imports Nexamas.UI.Layout
Imports Nexamas.UI.Rendering
Imports Nexamas.UI.Theming
Imports Nexamas.UI.Values
Imports Nexamas.UI.Visualization
Imports SkiaSharp
Imports Nexamas.UI.General

Namespace Nexamas.UI.Components

    Partial Public NotInheritable Class MASChart

        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.Width <= 1.0F OrElse pixelBounds.Height <= 1.0F Then Return

            _contract.AssertConsumable()

            Dim dpi As Single = PixelSnap.SafeDpi(ctx.Dpi)
            Dim plotRect As SKRect = MASChartControlTokens.ResolvePlotRect(pixelBounds, dpi)
            Dim plan As MASChartRenderPlan = Nothing

            If plotRect.Width > 2.0F AndAlso plotRect.Height > 2.0F AndAlso HasData Then
                plan = MASChartFoundationBuilder.BuildRenderPlan(
                    BuildDefinition(),
                    New MASChartViewport(plotRect.Left, plotRect.Top, plotRect.Width, plotRect.Height))
            End If

            Dim renderer As MASChartRenderer = _renderer
            renderer.Draw(canvas, ctx, pixelBounds, plotRect, plan, _contract)
        End Sub

        Protected Overrides Function WantsKeyboardFocus() As Boolean
            Return False
        End Function

        Protected Overrides Function WantsPointerFocus() As Boolean
            Return False
        End Function

        Protected Overrides Function ExcludeFromPointerRouting() As Boolean
            Return True
        End Function

    End Class

End Namespace
