internal CalculatedLine(LineBuilder lineBuilder, IList<IList<PointD>> pointData)
        {
            Expression = lineBuilder.Expression;
            Window = lineBuilder.Window;
            XScale = lineBuilder.XScale;
            YScale = lineBuilder.YScale;
            Increment = lineBuilder.Increment;

            PointData = pointData;
        }
        private CalculatedLine CalculateLine(Expression expr)
        {
            CalculatedLine line;

            try
            {
                switch (expr.Type)
                {
                    case ExpressionType.Linear:
                        line =
                            LinearLineCalculator.Calculate(
                                (StandardExpression)expr,
                                Calculator,
                                _window,
                                DisplayRectangle.Width,
                                XScale,
                                YScale,
                                _resolution);
                        break;
                    case ExpressionType.Polar:
                        line =
                            _polarCalc.Calculate(
                                (StandardExpression)expr,
                                Calculator,
                                _window,
                                XScale,
                                YScale);
                        break;
                    case ExpressionType.Parametric:
                        line =
                            _paraCalc.Calculate(
                                (ParametricExpression)expr,
                                Calculator,
                                _window,
                                XScale,
                                YScale);
                        break;
                    default:
                        throw new NotSupportedException("Type not implemented.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

                var calculatedLine = new LineBuilder(expr, Window, XScale, YScale, 0);
                return calculatedLine.SealLine();
            }

            return line;
        }