public override void DrawPath(RBrush brush, RGraphicsPath path)
        {
            var b = brush.ToBrushA();
            var p = path.ToPathA();

            if (b.isImage)
            {
                //Console.WriteLine("Graphics.DrawPath(B.Image)");
                var rect    = p.rect;
                var texture = b.RenderTexture(IntPtr.Zero, rect);
                var rects   = p.GetSDLRects();
                foreach (SDL.SDL_Rect r in rects)
                {
                    var          dst_rect = r;
                    SDL.SDL_Rect src_rect = dst_rect;
                    src_rect.x -= rect.x;
                    src_rect.y -= rect.y;
                    if (SDL.SDL_RenderCopy(_renderer, texture, ref src_rect, ref dst_rect) < 0)
                    {
                        Helpers.ShowSDLError("Graphics.DrawPath(B):Unable to SDL_RenderCopy!");
                    }
                }


                SDL.SDL_DestroyTexture(texture);
            }
            else
            {
                //Console.WriteLine("Graphics.DrawPath(B.Color)");
                b.color.SetToSDLRenderer();
                var rects = p.GetSDLRects();
                SDL.SDL_RenderFillRects(_renderer, rects.ToArray(), rects.Count);
            }
        }
        public override void DrawPath(RPen pen, RGraphicsPath path)
        {
            //! Arcs draws with width 1px
            pen.ToPenA().color.SetToSDLRenderer();
            var p = path.ToPathA();


            for (int i = 1; i < p.pathItems.Count; i++)
            {
                if (p.pathItems[i].arc)
                {
                    var points = p.GetArcSDLPoints(pen.ToPenA(), p.pathItems[i]);
                    SDL.SDL_RenderDrawPoints(_renderer, points.ToArray(), points.Count);
                }
                else
                {
                    this.DrawLine(pen, p.pathItems[i - 1].x, p.pathItems[i - 1].y, p.pathItems[i].x, p.pathItems[i].y);
                }
            }
        }