Smrf.NodeXL.Visualization.Wpf.TriangleVertexDrawingHistory.GetLabelLocation C# (CSharp) Method

GetLabelLocation() public method

public GetLabelLocation ( VertexLabelPosition labelPosition ) : Point
labelPosition VertexLabelPosition
return Point
    GetLabelLocation
    (
        VertexLabelPosition labelPosition
    )
    {
        AssertValid();

        Rect oVertexBounds =
            WpfGraphicsUtil.TriangleBoundsFromCenterAndHalfWidth(
                this.VertexLocation, m_dHalfWidth);

        Double dCenterX = oVertexBounds.Left + oVertexBounds.Width / 2.0;

        // These were determined experimentally to avoid trigonometry method
        // calls and to make the labels look good.

        Double dCenterY = oVertexBounds.Top +
            1.2 * (oVertexBounds.Height / 2.0);

        Double dOffsetX = m_dHalfWidth * 1.0;

        switch (labelPosition)
        {
            case VertexLabelPosition.TopLeft:
            case VertexLabelPosition.TopCenter:
            case VertexLabelPosition.TopRight:

                return ( new Point(dCenterX, oVertexBounds.Top) );

            case VertexLabelPosition.MiddleLeft:

                return ( new Point(dCenterX - dOffsetX, dCenterY) );

            case VertexLabelPosition.MiddleCenter:

                return ( new Point(dCenterX, dCenterY) );

            case VertexLabelPosition.MiddleRight:

                return ( new Point(dCenterX + dOffsetX, dCenterY) );

            case VertexLabelPosition.BottomLeft:

                return (oVertexBounds.BottomLeft);

            case VertexLabelPosition.BottomCenter:

                return ( new Point(dCenterX, oVertexBounds.Bottom) );

            case VertexLabelPosition.BottomRight:

                return (oVertexBounds.BottomRight);

            default:

                Debug.Assert(false);
                return (this.VertexLocation);
        }
    }