"""Point Structure."""
from rules.drawable import *
circleADT = {
    parent:(Arc,),
    "new":{
        tuple():{
            args:tuple(),
            trgt:Circle.default
        },
        (Point, float,):{
            args:("centre", "radius"),
            trgt:Circle.fromMetrics,
        },
        (Line,):{
            args:("diameter",),
            trgt:Circle.fromDiameter,
        },
        retVal:Circle
    },
    "copy":{
        tuple():{
            args:tuple(),
            trgt:Circle.fromCircle
        },
        retVal:Circle
    },
    "radius":{
        tuple():{
            args:tuple(),
            trgt:Circle.getRadius
        },
        retVal:float
    },
    "centre":{
        tuple():{
            args:tuple(),
            trgt:Circle.getCentre
        },
        retVal:Point
    },
    "area":{
        tuple():{
            args:tuple(),
            trgt:Circle.area
        },
        retVal:float
    },
    "diameter":{
        (float,):{
            args:("angle",),
            trgt:Circle.diameterAlongSlope
        },
        (Point,):{
            args:("point",),
            trgt:Circle.diameterAlongPoint
        },
        retVal:Line
    },
    "common_chord":{
        (Circle,):{
            args:("circle",),
            trgt:Circle.commonChord
        },
        retVal:Line
    },
    "tangent":{
        (Point,):{
            args:("point",),
            trgt:Circle.tangentAt
        },
        (float,):{
            args:("angle",),
            trgt:Circle.tangentAt
        },
        retVal:Point
    }
}