public static LayoutVertexToPointMap GetVertexCenters(IReadOnlyRelativeLayout relativeLayout,
                                                              double horizontalGap, double verticalGap)
        {
            var calculator = new AbsolutePositionCalculator(relativeLayout, horizontalGap, verticalGap);

            return(calculator.CalculateVertexCenters());
        }
        private AbsolutePositionCalculator(IReadOnlyRelativeLayout relativeLayout, double horizontalGap, double verticalGap)
        {
            _relativeLayout = relativeLayout;
            _horizontalGap  = horizontalGap;
            _verticalGap    = verticalGap;

            _layerCenterYPositions  = new Dictionary <IReadOnlyLayoutVertexLayer, double>();
            _vertexCenterXPositions = new Dictionary <LayoutVertexBase, double>();
        }