Example #1
0
        // Acción que determina que clase utilitzar para crear los "Charts"
        public void CrearChart(Button button, Label label = null)
        {
            ClearLastElements();

            BaseChart.Chart.Series.RemoveAllSeries();

            //Themes.RefreshTheme();
            Themes.BasicAxes(BaseChart.Chart.Axes.Left, BaseChart.Chart.Axes.Right);
            Themes.AplicarTheme(BaseChart);

            switch (button.Text)
            {
            case "Line":
                lineChart = new LineChart(BaseChart);
                break;

            case "Column Bar":
                columnBarChart = new ColumnBarChart(BaseChart);
                break;

            case "Area":
                areaChart = new AreaChart(BaseChart);
                break;

            case "Pie":
                pieChart = new PieChart(BaseChart);
                break;

            case "Fast Line":
                fastLineChart = new FastLineChart(BaseChart);
                break;

            case "Horizontal Area":
                horizAreaChart = new HorizontalAreaChart(BaseChart);
                break;

            case "Horizontal Bar":
                horizBarChart = new HorizontalBarChart(BaseChart);
                break;

            case "Horizontal Line":
                horizLineChart = new HorizontalLineChart(BaseChart);
                break;

            case "Donut":
                donutChart = new DonutChart(BaseChart);
                break;

            case "Bubble":
                bubbleChart = new BubbleChart(BaseChart);
                break;

            case "Shape":
                shapeChart = new ShapeChart(BaseChart);
                break;

            case "Gantt":
                gantChart = new GanttChart(BaseChart);
                break;

            case "Point/Scatter":
                point_scatterChart = new Point_ScatterChart(BaseChart);
                break;

            case "Interpolating Line":
                interpolatingChart = new InterpolatingChartFeatures(BaseChart);
                break;

            case "Bar Styles":
                coneBarChart = new BarStylesChartFeatures(BaseChart);
                break;

            case "Zoom & Panning":
                zoomPaningArrowChart = new ZoomPanningChartFeatures(BaseChart);
                break;

            case "Bar Gradient":
                gradientBarChart = new GradientBarChartFeatures(BaseChart);
                break;

            case "Bubble Transparent":
                bubbleTranspChart = new BubbleTransparencyChartFeatures(BaseChart);
                break;

            case "Real Time":
                fLineRealTimeChart = new FLineRealTimeChartFeatures(BaseChart);
                break;

            case "Stack Area":
                stackAreaChart = new StackAreaChartFeatures(BaseChart);
                break;

            case "Multiple Pies":
                multiPiesChart = new MultiplePiesChartFeatures(BaseChart);
                break;

            case "Semi-Pie":
                semiPieChart = new Semi_PieChartFeatures(BaseChart);
                break;

            case "Semi-Donut":
                semiDonutChart = new Semi_DonutChartFeatures(BaseChart);
                break;

            case "Arrow":
                arrowChart = new ArrowChart(BaseChart);
                break;

            case "Polar":
                polarChart = new PolarChart(BaseChart);
                break;

            case "Radar":
                radarChart = new RadarChart(BaseChart);
                break;

            case "Pyramid":
                pyramidChart = new PyramidChart(BaseChart);
                break;

            case "Candle":
                candleChart = new CandleChart(BaseChart);
                break;

            case "Histogram":
                histogramChart = new HistogramChart(BaseChart);
                break;

            case "Error":
                errorChart = new ErrorChart(BaseChart);
                break;

            case "ErrorBar":
                errorBarChart = new ErrorBarChart(BaseChart);
                break;

            case "Funnel":
                funnelChart = new FunnelChart(BaseChart);
                break;

            case "Smith":
                smithChart = new SmithChart(BaseChart);
                break;

            case "Bezier":
                bezierChart = new BezierChart(BaseChart);
                break;

            case "HighLow":
                highLowChart = new HighLowChart(BaseChart);
                break;

            case "Speed Time":
                realTimeChart = new SpeedTimeChart(BaseChart);
                break;

            case "Waterfall":
                waterfallChart = new WaterfallChart(BaseChart);
                break;

            case "Volume":
                volumeChart = new VolumeChart(BaseChart);
                break;

            case "Color Grid":
                colorGridChart = new ColorGridChart(BaseChart);
                break;

            case "Polar Bar":
                polarBarChart = new PolarBarChart(BaseChart);
                break;

            case "Inverted Pyramid":
                invertedPyramidChart = new InvertedPyramidChart(BaseChart);
                break;

            case "Horizontal Histogram":
                horizHistogramChart = new HorizHistogramChart(BaseChart);
                break;

            case "Circular Gauge":
                basicCircGaugeChart = new BasicCircularGaugeChart(BaseChart);
                break;

            case "Car Fuel":
                carFuelChart = new CarFuelChart(BaseChart);
                break;

            case "Custom Hand":
                custPointerGaugeChart = new CustomPointerChart(BaseChart);
                break;

            case "Acceleration":
                accelerationCircularGaugeChart = new AccelerationCircularGaugeChart(BaseChart);
                break;

            case "Knob Gauge":
                basicKnobGaugeChart = new BasicKnobGaugeChart(BaseChart);
                break;

            case "Temperature Knob":
                temperatureKnobChart = new TemperatureKnobChart(BaseChart);
                break;

            case "Compass":
                try { compassChart = new CompassChart(BaseChart); }
                catch (Exception e) {  }
                break;

            case "Map GIS":
                mapGSIChart = new MapGISChart(BaseChart);
                break;

            case "World Map":
                worldMapChart = new WorldMapChart(BaseChart);
                break;

            case "TreeMap":
                treeMapChart = new TreeMapChart(BaseChart);
                break;

            case "Basic Clock":
                basicClockChart = new BasicClockChart(BaseChart);
                break;

            case "Custom Clock":
                customClockChart = new CustomClockChart(BaseChart);
                break;

            case "Organizational Chart":
                basicOrganizationalChart = new BasicOrganizationalChart(BaseChart);
                break;

            case "Numeric Gauge":
                numericGaugeChart = new NumericGaugeChart(BaseChart);
                break;

            case "Linear Gauge":
                linearGaugeChart = new LinearGaugeChart(BaseChart);
                break;

            case "Scales":
                scalesLinearChart = new ScalesLinearChart(BaseChart);
                break;

            case "SubLines":
                moreLinesLinearChart = new MoreLinesLinearChart(BaseChart);
                break;

            case "Mobile Battery":
                batteryLinearChart = new BatteryLinearChart(BaseChart);
                break;

            case "Basic Calendar":
                basicCalendarChart = new BasicCalendarChart(BaseChart, label);
                break;

            case "Special Dates":
                specialDatesChart = new SpecialDatesChart(BaseChart, label);
                break;

            case "TagCloud":
                tagCloudChart = new TagCloudChart(BaseChart);
                break;

            case "Add":
                addStdFunctionsChart = new AddStdFunctionsChart(BaseChart);
                break;

            case "Subtract":
                subtStdFunctionsChart = new SubtStdFunctionsChart(BaseChart);
                break;

            case "Multiply":
                multStdFunctionsChart = new MultStdFunctionsChart(BaseChart);
                break;

            case "Divide":
                divStdFunctionsChart = new DivStdFunctionsChart(BaseChart);
                break;

            case "Count":
                countStdFunctionsChart = new CountStdFunctionsChart(BaseChart);
                break;

            case "Average":
                avgStdFunctionsChart = new AvgStdFunctionsChart(BaseChart);
                break;

            case "High":
                highStdFunctionsChart = new HighStdFunctionsChart(BaseChart);
                break;

            case "Low":
                lowStdFunctionsChart = new LowStdFunctionsChart(BaseChart);
                break;

            case "Median Function":
                medianStdFunctionsChart = new MedianStdFunctionsChart(BaseChart);
                break;

            case "Percent Change":
                percentStdFunctionsChart = new PercentStdFunctionsChart(BaseChart);
                break;

            case "ADX":
                adxProFunctionChart = new ADXProFunctionChart(BaseChart);
                break;

            case "AC":
                acProFunctionChart = new ACProFunctionChart(BaseChart);
                break;

            case "Alligator":
                alligatorProFunctionChart = new AlligatorProFunctionChart(BaseChart);
                break;

            case "AO":
                aoProFunctionChart = new AOProFunctionChart(BaseChart);
                break;

            case "ATR":
                atrProFunctionChart = new ATRProFunctionChart(BaseChart);
                break;

            case "Bollinger Bands":
                bollingerProFunctionChart = new BollingerProFunctionChart(BaseChart);
                break;

            case "CCI":
                cciProFunctionChart = new CCIProFunctionChart(BaseChart);
                break;

            case "CLV":
                clvProFunctionChart = new CLVProFunctionChart(BaseChart);
                break;

            case "Compression OHLC":
                compressionOHLCProFunctionChart = new CompressionOHLCProFunctionChart(BaseChart);
                break;

            case "Exp. Average":
                expAverageProFunctionChart = new ExpAverageProFunctionChart(BaseChart);
                break;

            case "Exp. Moving Average":
                expMovAverageProFunctionChart = new ExpMovAverageProFunctionChart(BaseChart);
                break;

            case "Gator Oscillator":
                gatorOscillProFunctionChart = new GatorOscillProFunctionChart(BaseChart);
                break;

            case "Kurtosis":
                kurtosisProFunctionChart = new KurtosisProFunctionChart(BaseChart);
                break;

            case "MACD":
                macdProFunctionChart = new MACDProFunctionChart(BaseChart);
                break;

            case "Momentum":
                momentumProFunctionChart = new MomentumProFunctionChart(BaseChart);
                break;

            case "Momentum Div.":
                momentumDivProFunctionChart = new MomentumDivProFunctionChart(BaseChart);
                break;

            case "Money Flow":
                moneyFlowProFunctionChart = new MoneyFlowProFunctionChart(BaseChart);
                break;

            case "OBV":
                obvProFunctionChart = new OBVProFunctionChart(BaseChart);
                break;

            case "PVO":
                pvoProFunctionChart = new PVOProFunctionChart(BaseChart);
                break;

            case "RSI":
                rsiProFunctionChart = new RSIProFunctionChart(BaseChart);
                break;

            case "RVI":
                rviProFunctionChart = new RVIProFunctionChart(BaseChart);
                break;

            case "Slope":
                slopeProFunctionChart = new SlopeProFunctionChart(BaseChart);
                break;

            case "Smoothed Mov Avg":
                smoothMovAvgProFunctionChart = new SmoothMovAvgProFunctionChart(BaseChart);
                break;

            case "S.A.R.":
                sarProFunctionChart = new SARProFunctionChart(BaseChart);
                break;

            case "Cross Point":
                crossPointsProFunctionsChart = new CrossPointsProFunctionsChart(BaseChart);
                break;

            case "Correlation":
                correlationProFunctionChart = new CorrelationProFunctionChart(BaseChart);
                break;

            case "Cumulative":
                cumulativeProFunctionChart = new CumulativeProFunctionChart(BaseChart);
                break;

            case "Custom Function":
                calculateEventProFunctionChart = new CalculateEventProFunctionChart(BaseChart);
                break;

            case "Exponential Trend":
                exponentialTrendProFunctionChart = new ExponentialTrendProFunctionChart(BaseChart);
                break;

            case "Fitting Linearizable":
                fittingProFunctionChart = new FittingProFunctionChart(BaseChart);
                break;

            case "Performance":
                performanceProFunctionChart = new PerformanceProFunctionChart(BaseChart);
                break;

            case "Perimeter":
                perimeterProFunctionChart = new PerimeterProFunctionChart(BaseChart);
                break;

            case "Finding Coefficients":
                findCoeffProFunctionChart = new FindCoeffProFunctionChart(BaseChart);
                break;

            case "Down Sampling":
                downSamplingProFunctionChart = new DownSamplingProFunctionChart(BaseChart);
                break;

            case "RMS":
                rmsProFunctionChart = new RMSProFunctionChart(BaseChart);
                break;

            case "Smoothing Function":
                smoothingProFunctionChart = new SmoothingProFunctionChart(BaseChart);
                break;

            case "Standard Deviation":
                stdDeviationProFunctionChart = new StdDeviationProFunctionChart(BaseChart);
                break;

            case "Trendline":
                trendlineProFunctionChart = new TrendlineProFunctionChart(BaseChart);
                break;

            case "Variance":
                varianceProFunctionChart = new VarianceProFunctionChart(BaseChart);
                break;

            case "SPC":
                spcProFunctionChart = new SPCProFunctionChart(BaseChart);
                break;

            case "Cumulative Histogram":
                cumulativeHistogProFunctionChart = new CumulativeHistogProFunctionChart(BaseChart);
                break;

            case "Skewness":
                skewnessProFunctionChart = new SkewnessProFunctionChart(BaseChart);
                break;
            }

            Themes.AplicarOptions(BaseChart);
        }
        private void RegisterAttributes()
        {
            SeriesChartType[]   array = null;
            CustomAttributeInfo customAttributeInfo = null;

            array = new SeriesChartType[1]
            {
                SeriesChartType.Column
            };
            registeredCustomAttributes.Add(new CustomAttributeInfo("ShowColumnAs", typeof(ColumnChartExtensions), "Normal", SR.DescriptionCustomAttributeColumnChartShowColumnAs, array, appliesToSeries: true, appliesToDataPoint: false));
            registeredCustomAttributes.Add(new CustomAttributeInfo("HistogramSegmentIntervalNumber", typeof(int), 20, SR.DescriptionCustomAttributeHistogramSegmentIntervalNumber, array, appliesToSeries: true, appliesToDataPoint: false));
            registeredCustomAttributes.Add(new CustomAttributeInfo("HistogramSegmentIntervalWidth", typeof(double), 0.0, SR.DescriptionCustomAttributeHistogramSegmentIntervalWidth, array, appliesToSeries: true, appliesToDataPoint: false));
            registeredCustomAttributes.Add(new CustomAttributeInfo("HistogramShowPercentOnSecondaryYAxis", typeof(bool), true, SR.DescriptionCustomAttributeHistogramShowPercentOnSecondaryYAxis, array, appliesToSeries: true, appliesToDataPoint: false));
            array = new SeriesChartType[6]
            {
                SeriesChartType.Bar,
                SeriesChartType.Column,
                SeriesChartType.RangeColumn,
                SeriesChartType.BoxPlot,
                SeriesChartType.Gantt,
                SeriesChartType.ErrorBar
            };
            customAttributeInfo = new CustomAttributeInfo("DrawSideBySide", typeof(AxisEnabled), "Auto", SR.DescriptionCustomAttributeDrawSideBySide, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[15]
            {
                SeriesChartType.Point,
                SeriesChartType.Bubble,
                SeriesChartType.Line,
                SeriesChartType.Spline,
                SeriesChartType.StepLine,
                SeriesChartType.Column,
                SeriesChartType.RangeColumn,
                SeriesChartType.Gantt,
                SeriesChartType.Radar,
                SeriesChartType.Range,
                SeriesChartType.SplineRange,
                SeriesChartType.Polar,
                SeriesChartType.Area,
                SeriesChartType.SplineArea,
                SeriesChartType.Bar
            };
            registeredCustomAttributes.Add(new CustomAttributeInfo("EmptyPointValue", typeof(EmptyPointTypes), "Average", SR.DescriptionCustomAttributeEmptyPointValue, array, appliesToSeries: true, appliesToDataPoint: false));
            array = new SeriesChartType[3]
            {
                SeriesChartType.StackedBar,
                SeriesChartType.StackedBar100,
                SeriesChartType.Gantt
            };
            customAttributeInfo = new CustomAttributeInfo("BarLabelStyle", typeof(BarValueLabelDrawingStyle), "Center", SR.DescriptionCustomAttributeBarLabelStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[4]
            {
                SeriesChartType.StackedBar,
                SeriesChartType.StackedBar100,
                SeriesChartType.StackedColumn,
                SeriesChartType.StackedColumn100
            };
            customAttributeInfo = new CustomAttributeInfo("StackedGroupName", typeof(string), string.Empty, SR.DescriptionCustomAttributeStackedGroupName, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Bar
            };
            customAttributeInfo = new CustomAttributeInfo("BarLabelStyle", typeof(BarValueLabelDrawingStyle), "Outside", SR.DescriptionCustomAttributeBarLabelStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[8]
            {
                SeriesChartType.Bar,
                SeriesChartType.Column,
                SeriesChartType.StackedBar,
                SeriesChartType.StackedBar100,
                SeriesChartType.StackedColumn,
                SeriesChartType.StackedColumn100,
                SeriesChartType.Gantt,
                SeriesChartType.RangeColumn
            };
            customAttributeInfo = new CustomAttributeInfo("DrawingStyle", typeof(BarDrawingStyle), "Default", SR.DescriptionCustomAttributeDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[12]
            {
                SeriesChartType.Bar,
                SeriesChartType.Candlestick,
                SeriesChartType.Column,
                SeriesChartType.StackedBar,
                SeriesChartType.StackedBar100,
                SeriesChartType.StackedColumn,
                SeriesChartType.StackedColumn100,
                SeriesChartType.Stock,
                SeriesChartType.BoxPlot,
                SeriesChartType.ErrorBar,
                SeriesChartType.Gantt,
                SeriesChartType.RangeColumn
            };
            customAttributeInfo          = new CustomAttributeInfo("PointWidth", typeof(float), 0.8f, SR.DescriptionCustomAttributePointWidth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 2f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("PixelPointWidth", typeof(int), 0, SR.DescriptionCustomAttributePixelPointWidth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("MinPixelPointWidth", typeof(int), 0, SR.DescriptionCustomAttributeMinPixelPointWidth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("MaxPixelPointWidth", typeof(int), 0, SR.DescriptionCustomAttributeMaxPixelPointWidth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Candlestick
            };
            customAttributeInfo = new CustomAttributeInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeCandlePriceUpColor, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PriceDownColor", typeof(Color), "", SR.DescriptionCustomAttributePriceDownColor, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[2]
            {
                SeriesChartType.Stock,
                SeriesChartType.Candlestick
            };
            customAttributeInfo = new CustomAttributeInfo("LabelValueType", typeof(StockLabelValueTypes), "Close", SR.DescriptionCustomAttributeLabelValueType, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Stock
            };
            customAttributeInfo = new CustomAttributeInfo("OpenCloseStyle", typeof(StockOpenCloseMarkStyle), "Line", SR.DescriptionCustomAttributeOpenCloseStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ShowOpenClose", typeof(StockShowOpenCloseTypes), "Both", SR.DescriptionCustomAttributeShowOpenClose, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Bubble
            };
            customAttributeInfo = new CustomAttributeInfo("BubbleScaleMin", typeof(float), 0f, SR.DescriptionCustomAttributeBubbleScaleMin, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BubbleScaleMax", typeof(float), 0f, SR.DescriptionCustomAttributeBubbleScaleMax, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("BubbleMaxSize", typeof(float), 15f, SR.DescriptionCustomAttributeBubbleMaxSize, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("BubbleMinSize", typeof(float), 3f, SR.DescriptionCustomAttributeBubbleMaxSize, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BubbleUseSizeForLabel", typeof(bool), false, SR.DescriptionCustomAttributeBubbleUseSizeForLabel, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[2]
            {
                SeriesChartType.Pie,
                SeriesChartType.Doughnut
            };
            customAttributeInfo             = new CustomAttributeInfo("PieDrawingStyle", typeof(PieDrawingStyle), "Default", SR.DescriptionCustomAttributePieDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.AppliesTo3D = false;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedStyle", typeof(CollectedPieStyle), "None", SR.DescriptionCustomAttributeCollectedStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("CollectedThreshold", typeof(double), 5.0, SR.DescriptionCustomAttributeCollectedThreshold, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0.0;
            customAttributeInfo.MaxValue = double.MaxValue;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedThresholdUsePercent", typeof(bool), true, SR.DescriptionCustomAttributeCollectedThresholdUsePercent, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedSliceExploded", typeof(bool), false, SR.DescriptionCustomAttributeCollectedSliceExploded, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedLabel", typeof(string), SR.DescriptionCustomAttributeCollectedLabelDefaultText, SR.DescriptionCustomAttributeCollectedLabel, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedLegendText", typeof(string), SR.DescriptionCustomAttributeCollectedLegendDefaultText, SR.DescriptionCustomAttributeCollectedLegendText, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedToolTip", typeof(string), string.Empty, SR.DescriptionCustomAttributeCollectedToolTip, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CollectedColor", typeof(Color), "", SR.DescriptionCustomAttributeCollectedColor, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            registeredCustomAttributes.Add(new CustomAttributeInfo("CollectedChartShowLegend", typeof(bool), false, SR.DescriptionCustomAttributeShowCollectedLegend, array, appliesToSeries: true, appliesToDataPoint: false));
            registeredCustomAttributes.Add(new CustomAttributeInfo("CollectedChartShowLabels", typeof(bool), false, SR.DescriptionCustomAttributeShowCollectedPointLabels, array, appliesToSeries: true, appliesToDataPoint: false));
            customAttributeInfo          = new CustomAttributeInfo("PieStartAngle", typeof(int), 0, SR.DescriptionCustomAttributePieStartAngle, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            customAttributeInfo.MaxValue = 360;
            registeredCustomAttributes.Add(customAttributeInfo);
            registeredCustomAttributes.Add(new CustomAttributeInfo("Exploded", typeof(bool), false, SR.DescriptionCustomAttributePieDonutExploded, array, appliesToSeries: false, appliesToDataPoint: true));
            customAttributeInfo             = new CustomAttributeInfo("LabelsRadialLineSize", typeof(float), 1f, SR.DescriptionCustomAttributeLabelsRadialLineSize, array, appliesToSeries: true, appliesToDataPoint: true);
            customAttributeInfo.AppliesTo3D = false;
            customAttributeInfo.MinValue    = 0f;
            customAttributeInfo.MaxValue    = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("LabelsHorizontalLineSize", typeof(float), 1f, SR.DescriptionCustomAttributeLabelsHorizontalLineSize, array, appliesToSeries: true, appliesToDataPoint: true);
            customAttributeInfo.AppliesTo3D = false;
            customAttributeInfo.MinValue    = 0f;
            customAttributeInfo.MaxValue    = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            registeredCustomAttributes.Add(new CustomAttributeInfo("PieLabelStyle", typeof(PieLabelStyle), "Inside", SR.DescriptionCustomAttributePieLabelStyle, array, appliesToSeries: true, appliesToDataPoint: true));
            customAttributeInfo          = new CustomAttributeInfo("MinimumRelativePieSize", typeof(float), 30f, SR.DescriptionCustomAttributeMinimumRelativePieSize, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 10f;
            customAttributeInfo.MaxValue = 70f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("3DLabelLineSize", typeof(float), 100f, SR.DescriptionCustomAttribute_3DLabelLineSize, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.AppliesTo2D = false;
            customAttributeInfo.MinValue    = 30f;
            customAttributeInfo.MaxValue    = 200f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PieLineColor", typeof(Color), "", SR.DescriptionCustomAttributePieLineColor, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("DoughnutRadius", typeof(float), 60f, SR.DescriptionCustomAttributeDoughnutRadius, new SeriesChartType[1]
            {
                SeriesChartType.Doughnut
            }, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 99f;
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[12]
            {
                SeriesChartType.Point,
                SeriesChartType.Column,
                SeriesChartType.Bubble,
                SeriesChartType.Line,
                SeriesChartType.Spline,
                SeriesChartType.StepLine,
                SeriesChartType.Area,
                SeriesChartType.SplineArea,
                SeriesChartType.Range,
                SeriesChartType.SplineRange,
                SeriesChartType.Radar,
                SeriesChartType.Polar
            };
            registeredCustomAttributes.Add(new CustomAttributeInfo("LabelStyle", typeof(LabelAlignments), "Auto", SR.DescriptionCustomAttributeLabelStyle, array, appliesToSeries: true, appliesToDataPoint: true));
            array = new SeriesChartType[7]
            {
                SeriesChartType.Line,
                SeriesChartType.Spline,
                SeriesChartType.StepLine,
                SeriesChartType.Area,
                SeriesChartType.SplineArea,
                SeriesChartType.Range,
                SeriesChartType.SplineRange
            };
            customAttributeInfo             = new CustomAttributeInfo("ShowMarkerLines", typeof(bool), false, SR.DescriptionCustomAttributeShowMarkerLines, array, appliesToSeries: true, appliesToDataPoint: true);
            customAttributeInfo.AppliesTo2D = false;
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[3]
            {
                SeriesChartType.Spline,
                SeriesChartType.SplineArea,
                SeriesChartType.SplineRange
            };
            customAttributeInfo          = new CustomAttributeInfo("LineTension", typeof(float), 0.5f, SR.DescriptionCustomAttributeLineTension, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 2f;
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[28]
            {
                SeriesChartType.Area,
                SeriesChartType.Bar,
                SeriesChartType.Bubble,
                SeriesChartType.Candlestick,
                SeriesChartType.Column,
                SeriesChartType.Line,
                SeriesChartType.Point,
                SeriesChartType.Spline,
                SeriesChartType.SplineArea,
                SeriesChartType.StackedArea,
                SeriesChartType.StackedArea100,
                SeriesChartType.StackedBar,
                SeriesChartType.StackedBar100,
                SeriesChartType.StackedColumn,
                SeriesChartType.StackedColumn100,
                SeriesChartType.StepLine,
                SeriesChartType.Stock,
                SeriesChartType.ThreeLineBreak,
                SeriesChartType.BoxPlot,
                SeriesChartType.ErrorBar,
                SeriesChartType.Gantt,
                SeriesChartType.Kagi,
                SeriesChartType.PointAndFigure,
                SeriesChartType.Range,
                SeriesChartType.RangeColumn,
                SeriesChartType.Renko,
                SeriesChartType.SplineRange,
                SeriesChartType.FastLine
            };
            customAttributeInfo             = new CustomAttributeInfo("PixelPointDepth", typeof(int), 0, SR.DescriptionCustomAttributePixelPointDepth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue    = 0;
            customAttributeInfo.AppliesTo2D = false;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("PixelPointGapDepth", typeof(int), 0, SR.DescriptionCustomAttributePixelPointGapDepth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue    = 0;
            customAttributeInfo.AppliesTo2D = false;
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[2]
            {
                SeriesChartType.FastLine,
                SeriesChartType.FastPoint
            };
            array = new SeriesChartType[1]
            {
                SeriesChartType.Polar
            };
            customAttributeInfo = new CustomAttributeInfo("AreaDrawingStyle", typeof(CircularAreaDrawingStyles), "Circle", SR.DescriptionCustomAttributePolarAreaDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CircularLabelsStyle", typeof(CircularAxisLabelsStyle), "Auto", SR.DescriptionCustomAttributePolarCircularLabelsStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PolarDrawingStyle", typeof(PolarDrawingStyles), "Line", SR.DescriptionCustomAttributePolarDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Radar
            };
            customAttributeInfo = new CustomAttributeInfo("AreaDrawingStyle", typeof(CircularAreaDrawingStyles), "Circle", SR.DescriptionCustomAttributeRadarAreaDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CircularLabelsStyle", typeof(CircularAxisLabelsStyle), "Auto", SR.DescriptionCustomAttributeRadarCircularLabelsStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("RadarDrawingStyle", typeof(RadarDrawingStyle), "Area", SR.DescriptionCustomAttributeRadarDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.BoxPlot
            };
            customAttributeInfo          = new CustomAttributeInfo("BoxPlotPercentile", typeof(float), 25f, SR.DescriptionCustomAttributeBoxPlotPercentile, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 1000f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("BoxPlotWhiskerPercentile", typeof(float), 10f, SR.DescriptionCustomAttributeBoxPlotWhiskerPercentile, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 1000f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BoxPlotShowAverage", typeof(bool), true, SR.DescriptionCustomAttributeBoxPlotShowAverage, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BoxPlotShowMedian", typeof(bool), true, SR.DescriptionCustomAttributeBoxPlotShowMedian, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BoxPlotShowUnusualValues", typeof(bool), false, SR.DescriptionCustomAttributeBoxPlotShowUnusualValues, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BoxPlotSeries", typeof(string), "", SR.DescriptionCustomAttributeBoxPlotSeries, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.ErrorBar
            };
            customAttributeInfo = new CustomAttributeInfo("ErrorBarStyle", typeof(ErrorBarStyle), "Both", SR.DescriptionCustomAttributeErrorBarStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ErrorBarCenterMarkerStyle", typeof(ErrorBarMarkerStyles), "Line", SR.DescriptionCustomAttributeErrorBarCenterMarkerStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ErrorBarSeries", typeof(string), "", SR.DescriptionCustomAttributeErrorBarSeries, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ErrorBarType", typeof(string), string.Format(CultureInfo.InvariantCulture, "{0}({1:N0})", ErrorBarType.StandardError, ErrorBarChart.DefaultErrorBarTypeValue(ErrorBarType.StandardError)), SR.DescriptionCustomAttributeErrorBarType, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.PointAndFigure
            };
            customAttributeInfo          = new CustomAttributeInfo("UsedYValueHigh", typeof(int), 0, SR.DescriptionCustomAttributeUsedYValueHigh, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            customAttributeInfo.MaxValue = 20;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("UsedYValueLow", typeof(int), 1, SR.DescriptionCustomAttributeUsedYValueLow, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            customAttributeInfo.MaxValue = 20;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BoxSize", typeof(string), "4%", SR.DescriptionCustomAttributePointFigureBoxSize, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ProportionalSymbols", typeof(bool), true, SR.DescriptionCustomAttributeProportionalSymbols, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ReversalAmount", typeof(int), "3", SR.DescriptionCustomAttributeReversalAmount, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Kagi
            };
            customAttributeInfo          = new CustomAttributeInfo("UsedYValue", typeof(int), 0, SR.DescriptionCustomAttributeUsedYValue, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            customAttributeInfo.MaxValue = 20;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("ReversalAmount", typeof(string), "3%", SR.DescriptionCustomAttributeKagiReversalAmount, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Renko
            };
            customAttributeInfo          = new CustomAttributeInfo("UsedYValue", typeof(int), 0, SR.DescriptionCustomAttributeRenkoUsedYValue, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            customAttributeInfo.MaxValue = 20;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("BoxSize", typeof(string), "4%", SR.DescriptionCustomAttributeBoxSize, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.ThreeLineBreak
            };
            customAttributeInfo          = new CustomAttributeInfo("UsedYValue", typeof(int), 0, SR.DescriptionCustomAttributeThreeLineBreakUsedYValue, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0;
            customAttributeInfo.MaxValue = 20;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("NumberOfLinesInBreak", typeof(int), 3, SR.DescriptionCustomAttributeNumberOfLinesInBreak, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Funnel
            };
            customAttributeInfo = new CustomAttributeInfo("FunnelLabelStyle", typeof(FunnelLabelStyle), "OutsideInColumn", SR.DescriptionCustomAttributeFunnelLabelStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("FunnelNeckWidth", typeof(float), 5f, SR.DescriptionCustomAttributeFunnelNeckWidth, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("FunnelNeckHeight", typeof(float), 5f, SR.DescriptionCustomAttributeFunnelNeckHeight, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("FunnelMinPointHeight", typeof(float), 0f, SR.DescriptionCustomAttributeFunnelMinPointHeight, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("Funnel3DRotationAngle", typeof(float), 5f, SR.DescriptionCustomAttributeFunnel3DRotationAngle, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.AppliesTo2D = false;
            customAttributeInfo.MinValue    = -10f;
            customAttributeInfo.MaxValue    = 10f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("FunnelPointGap", typeof(float), 0f, SR.DescriptionCustomAttributeFunnelPointGap, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("Funnel3DDrawingStyle", typeof(Funnel3DDrawingStyle), "CircularBase", SR.DescriptionCustomAttributeFunnel3DDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.AppliesTo2D = false;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("FunnelStyle", typeof(FunnelStyle), "YIsHeight", SR.DescriptionCustomAttributeFunnelStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("FunnelInsideLabelAlignment", typeof(FunnelLabelVerticalAlignment), "Center", SR.DescriptionCustomAttributeFunnelInsideLabelAlignment, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("FunnelOutsideLabelPlacement", typeof(FunnelLabelPlacement), "Right", SR.DescriptionCustomAttributeFunnelOutsideLabelPlacement, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CalloutLineColor", typeof(Color), "Black", SR.DescriptionCustomAttributeCalloutLineColor, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[1]
            {
                SeriesChartType.Pyramid
            };
            customAttributeInfo = new CustomAttributeInfo("PyramidLabelStyle", typeof(FunnelLabelStyle), "OutsideInColumn", SR.DescriptionCustomAttributePyramidLabelStyle, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("PyramidMinPointHeight", typeof(float), 0f, SR.DescriptionCustomAttributePyramidMinPointHeight, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("Pyramid3DRotationAngle", typeof(float), 5f, SR.DescriptionCustomAttributePyramid3DRotationAngle, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.AppliesTo2D = false;
            customAttributeInfo.MinValue    = -10f;
            customAttributeInfo.MaxValue    = 10f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo          = new CustomAttributeInfo("PyramidPointGap", typeof(float), 0f, SR.DescriptionCustomAttributePyramidPointGap, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.MinValue = 0f;
            customAttributeInfo.MaxValue = 100f;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo             = new CustomAttributeInfo("Pyramid3DDrawingStyle", typeof(Funnel3DDrawingStyle), "SquareBase", SR.DescriptionCustomAttributePyramid3DDrawingStyle, array, appliesToSeries: true, appliesToDataPoint: false);
            customAttributeInfo.AppliesTo2D = false;
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PyramidInsideLabelAlignment", typeof(FunnelLabelVerticalAlignment), "Center", SR.DescriptionCustomAttributePyramidInsideLabelAlignment, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PyramidOutsideLabelPlacement", typeof(FunnelLabelPlacement), "Right", SR.DescriptionCustomAttributePyramidOutsideLabelPlacement, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("CalloutLineColor", typeof(Color), "Black", SR.DescriptionCustomAttributeCalloutLineColor, array, appliesToSeries: true, appliesToDataPoint: true);
            registeredCustomAttributes.Add(customAttributeInfo);
            customAttributeInfo = new CustomAttributeInfo("PyramidValueType", typeof(PyramidValueType), "Linear", SR.DescriptionCustomAttributePyramidValueType, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
            array = new SeriesChartType[4]
            {
                SeriesChartType.Pie,
                SeriesChartType.Doughnut,
                SeriesChartType.Funnel,
                SeriesChartType.Pyramid
            };
            customAttributeInfo = new CustomAttributeInfo("SkipPaletteColorForEmptyPoint", typeof(bool), true, SR.DescriptionCustomAttributeSkipPaletteColorForEmptyPoint, array, appliesToSeries: true, appliesToDataPoint: false);
            registeredCustomAttributes.Add(customAttributeInfo);
        }