Example #1
0
        //--------------------------------------------------------------------------------------------------

        public static bool RenderCircle(IDrawingRenderer renderer, Geom2d_Circle circle, double first, double last, bool reverse)
        {
            if (renderer.Capabilities.CircleAsCurve)
            {
                var bsplineCurve = ShapeConstruct.ConvertCurveToBSpline(circle, first, last, 0.001, GeomAbs_Shape.GeomAbs_C2, 100, 3);
                if (bsplineCurve != null)
                {
                    return(RenderBSplineCurve(renderer, bsplineCurve, first, last, reverse));
                }
                return(false);
            }

            var    center   = circle.Location();
            var    radius   = circle.Radius();
            double rotation = circle.XAxis().Direction.Angle(Dir2d.DX);

            if (circle.Position().Sense() > 0)
            {
                first = Maths.DoublePI - first;
                last  = Maths.DoublePI - last;
            }

            if (reverse)
            {
                first.Swap(ref last);
            }

            renderer.Circle(center, radius, first - rotation, last - rotation);

            return(true);
        }