コード例 #1
0
            public override Color VisitRadialGradientPaintServer(SvgRadialGradientPaintServer paintServer)
            {
                if (CheckInvalidGradientPaintServer(paintServer, _spotColorOverride, out var color))
                {
                    return(color);
                }

                var stops = ConvertStops(paintServer.Stops, _spotColorOverride);

                var fx = paintServer.FocalX;
                var fy = paintServer.FocalY;
                var cx = paintServer.CircleX;
                var cy = paintServer.CircleY;
                var cr = paintServer.CircleRadius;

                RectangleF pdfPagePlacementRect;

                if (paintServer.Units == SvgUnitTypes.ObjectBoundingBox)
                {
                    var bbox = GetBBoxOrThrow();
                    pdfPagePlacementRect = CalculatePagePlacementRect(bbox);

                    fx /= bbox.Width;
                    fy /= bbox.Height;
                    cx /= bbox.Width;
                    cy /= bbox.Height;
                    cr /= bbox.Width;
                }
                else
                {
                    // units = userSpaceOnUse
                    pdfPagePlacementRect = new RectangleF(0, _pageHeight, _pageViewport.ScaleX, _pageViewport.ScaleY);
                }

                var circle0 = new Circle(fx, fy, 0);
                var circle1 = new Circle(cx, cy, cr);

                return(new RadialGradientShadingColor(pdfPagePlacementRect, circle0, circle1, stops));
            }
コード例 #2
0
 public virtual void VisitRadialGradientPaintServer(SvgRadialGradientPaintServer paintServer)
 => VisitGradientPaintServer(paintServer);