Пример #1
0
        private void Initialize(SKRect skViewport, HashSet <Uri>?references)
        {
            if (Element is not SvgPath svgPath || Path is null)
            {
                return;
            }

            IsAntialias = SvgExtensions.IsAntialias(svgPath);

            GeometryBounds = Path.Bounds;

            Transform = SvgExtensions.ToMatrix(svgPath.Transforms);

            var canDrawFill   = true;
            var canDrawStroke = true;

            if (SvgExtensions.IsValidFill(svgPath))
            {
                Fill = SvgExtensions.GetFillPaint(svgPath, GeometryBounds, AssetLoader, references, IgnoreAttributes);
                if (Fill is null)
                {
                    canDrawFill = false;
                }
            }

            if (SvgExtensions.IsValidStroke(svgPath, GeometryBounds))
            {
                Stroke = SvgExtensions.GetStrokePaint(svgPath, GeometryBounds, AssetLoader, references, IgnoreAttributes);
                if (Stroke is null)
                {
                    canDrawStroke = false;
                }
            }

            if (canDrawFill && !canDrawStroke)
            {
                IsDrawable = false;
                return;
            }

            SvgExtensions.CreateMarkers(svgPath, Path, skViewport, this, AssetLoader, references);
        }