# Generated by detroit
# See https://github.com/bourbonut/detroit/tree/main/api_maker

from functools import partial
from operator import is_not

class curveCatmullRom:
    def __init__(self, content="curveCatmullRom"):
        self.content = content

    def __repr__(self):
        return self.content

    def __str__(self):
        return self.content

    def __call__(self, *args):
        arguments = ", ".join(map(repr, args))
        return f"{self}({arguments})"

    def alpha(self, alpha=None):
        """
        Alpha:0.50
        Source · Returns a cubic Catmull–Rom curve with the specified alpha in the range [0,
        1]. If alpha is zero, produces a uniform spline, equivalent to curveCardinal with a
        tension of zero; if alpha is one, produces a chordal spline; if alpha is 0.5, produces
        a centripetal spline. Centripetal splines are recommended to avoid self-intersections
        and overshoot. For example:
        .. code:: javascript

            const line = d3.line().curve(d3.curveCatmullRom.alpha(0.5));


        See more informations `here <https://d3js.org/d3-shape/curve#curveCatmullRom_alpha>`_.
        """
        arguments = ", ".join(map(repr, filter(partial(is_not, None), (alpha,))))
        return curveCatmullRom(content=f"{self.content}.alpha({arguments})")


    def areaStart(self):
        """
        Indicates the start of a new area segment. Each area segment consists of exactly two
        line segments: the topline, followed by the baseline, with the baseline points in
        reverse order.
        Indicates the end of the current area segment.
        Indicates the start of a new line segment. Zero or more points will follow.
        Indicates the end of the current line segment.
        Indicates a new point in the current line segment with the given x- and y-values.

        See more informations `here <https://d3js.org/d3-shape/curve#curve_areaStart>`_.
        """
        return curveCatmullRom(content=f"{self.content}.areaStart()")


    def areaEnd(self):
        """
        Indicates the end of the current area segment.
        Indicates the start of a new line segment. Zero or more points will follow.
        Indicates the end of the current line segment.
        Indicates a new point in the current line segment with the given x- and y-values.

        See more informations `here <https://d3js.org/d3-shape/curve#curve_areaEnd>`_.
        """
        return curveCatmullRom(content=f"{self.content}.areaEnd()")


    def lineStart(self):
        """
        Indicates the start of a new line segment. Zero or more points will follow.
        Indicates the end of the current line segment.
        Indicates a new point in the current line segment with the given x- and y-values.

        See more informations `here <https://d3js.org/d3-shape/curve#curve_lineStart>`_.
        """
        return curveCatmullRom(content=f"{self.content}.lineStart()")


    def lineEnd(self):
        """
        Indicates the end of the current line segment.
        Indicates a new point in the current line segment with the given x- and y-values.

        See more informations `here <https://d3js.org/d3-shape/curve#curve_lineEnd>`_.
        """
        return curveCatmullRom(content=f"{self.content}.lineEnd()")


    def point(self, x=None, y=None):
        """
        Indicates a new point in the current line segment with the given x- and y-values.

        See more informations `here <https://d3js.org/d3-shape/curve#curve_point>`_.
        """
        arguments = ", ".join(map(repr, filter(partial(is_not, None), (x, y))))
        return curveCatmullRom(content=f"{self.content}.point({arguments})")

