1975 lines
60 KiB
C#
1975 lines
60 KiB
C#
|
//-------------------------------------------------------------
|
|||
|
// <copyright company=<3D>Microsoft Corporation<6F>>
|
|||
|
// Copyright <20> Microsoft Corporation. All Rights Reserved.
|
|||
|
// </copyright>
|
|||
|
//-------------------------------------------------------------
|
|||
|
// @owner=alexgor, deliant
|
|||
|
//=================================================================
|
|||
|
// File: CustomProperties.cs
|
|||
|
//
|
|||
|
// Namespace: System.Web.UI.WebControls[Windows.Forms].Charting.Utilities
|
|||
|
//
|
|||
|
// Classes: CustomPropertyRegistry, CustomPropertyInfo,
|
|||
|
// CustomPropertyName
|
|||
|
//
|
|||
|
// Purpose: CustomPropertyRegistry contains information for all
|
|||
|
// chart custom properties. This informatin is used at
|
|||
|
// design-time to provide simple editors for the
|
|||
|
// CustomProperty property of the Series and DataPoint.
|
|||
|
//
|
|||
|
// Custom Properties Overview:
|
|||
|
// ---------------------------
|
|||
|
//
|
|||
|
// Different chart types may have unique settings that only apply to
|
|||
|
// this chart type. For example, <20>Exploded<65> attribute on the data point
|
|||
|
// only make sense in case of Pie and Doughnut chart types. Instead of
|
|||
|
// adding properties that only will work with specific chart types
|
|||
|
// CustomProperties were introduced.
|
|||
|
//
|
|||
|
// Custom properties are implemented using the CustomProperties property
|
|||
|
// of both Series objects and their associated DataPoint objects. Here
|
|||
|
// is an example of setting data point custom attribute:
|
|||
|
//
|
|||
|
// Chart1.Series["Default"].Points[0][CustomPropertyName.Exploded] = "true";
|
|||
|
//
|
|||
|
// Custom attribute names are case-sensitive. You should be mindful of
|
|||
|
// this fact when formatting custom properties in code-behind. Further,
|
|||
|
// if the CustomProperty value contains a comma, then each comma must
|
|||
|
// be preceded by a '\' character to escape the comma. This is useful
|
|||
|
// when, for example, an RGB color value is set in your application.
|
|||
|
// In such cases, the setting of custom properties that contain commas
|
|||
|
// can either be done at runtime, or design-time.
|
|||
|
//
|
|||
|
// Reviewed: AG - Microsoft 5, 2007
|
|||
|
//
|
|||
|
//===================================================================
|
|||
|
|
|||
|
|
|||
|
#region Used Namespaces
|
|||
|
|
|||
|
using System;
|
|||
|
using System.Drawing;
|
|||
|
using System.Collections;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.ComponentModel.Design;
|
|||
|
|
|||
|
#if Microsoft_CONTROL
|
|||
|
using System.Windows.Forms.DataVisualization.Charting;
|
|||
|
using System.Windows.Forms.DataVisualization.Charting.ChartTypes;
|
|||
|
#else
|
|||
|
using System.Web.UI.DataVisualization.Charting;
|
|||
|
using System.Web.UI.DataVisualization.Charting.ChartTypes;
|
|||
|
#endif
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#if Microsoft_CONTROL
|
|||
|
namespace System.Windows.Forms.DataVisualization.Charting.Utilities
|
|||
|
#else // Microsoft_CONTROL
|
|||
|
namespace System.Web.UI.DataVisualization.Charting.Utilities
|
|||
|
#endif // Microsoft_CONTROL
|
|||
|
{
|
|||
|
#region Enumerations
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Circular chart drawing style.
|
|||
|
/// </summary>
|
|||
|
internal enum PolarDrawingStyles
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Series are drawn as lines.
|
|||
|
/// </summary>
|
|||
|
Line,
|
|||
|
/// <summary>
|
|||
|
/// Series are drawn as markers.
|
|||
|
/// </summary>
|
|||
|
Marker
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// CircularAreaDrawingStyle
|
|||
|
/// </summary>
|
|||
|
internal enum CircularAreaDrawingStyles
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Drawn as polygon
|
|||
|
/// </summary>
|
|||
|
Polygon,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Drawn as circle
|
|||
|
/// </summary>
|
|||
|
Circle = 1,
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Marker Style
|
|||
|
/// </summary>
|
|||
|
internal enum ErrorBarMarkerStyles
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Marker disabled
|
|||
|
/// </summary>
|
|||
|
None = 0,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is Square
|
|||
|
/// </summary>
|
|||
|
Square = 1,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is Circle
|
|||
|
/// </summary>
|
|||
|
Circle = 2,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is Diamond
|
|||
|
/// </summary>
|
|||
|
Diamond = 3,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is Triangle
|
|||
|
/// </summary>
|
|||
|
Triangle = 4,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is Cross
|
|||
|
/// </summary>
|
|||
|
Cross = 5,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is 4 corner star
|
|||
|
/// </summary>
|
|||
|
Star4 = 6,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is 5 corner star
|
|||
|
/// </summary>
|
|||
|
Star5 = 7,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is 6 corner star
|
|||
|
/// </summary>
|
|||
|
Star6 = 8,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The marker style is 10 corner star
|
|||
|
/// </summary>
|
|||
|
Star10 = 9,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Line marker
|
|||
|
/// </summary>
|
|||
|
Line = 10
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// AxisName of stock chart markers
|
|||
|
/// </summary>
|
|||
|
internal enum StockShowOpenCloseTypes
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Open and Close markers are shown.
|
|||
|
/// </summary>
|
|||
|
Both,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Only Open markers are shown.
|
|||
|
/// </summary>
|
|||
|
Open,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Only Close markers are shown.
|
|||
|
/// </summary>
|
|||
|
Close,
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// IsEmpty point value attribute
|
|||
|
/// </summary>
|
|||
|
internal enum EmptyPointTypes
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Average of two neighbor points is used.
|
|||
|
/// </summary>
|
|||
|
Average,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Zero value is used
|
|||
|
/// </summary>
|
|||
|
Zero
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Stock chart point labels attribute
|
|||
|
/// </summary>
|
|||
|
internal enum StockLabelValueTypes
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// High Y value is used to generate point label.
|
|||
|
/// </summary>
|
|||
|
High,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Low Y value is used to generate point label.
|
|||
|
/// </summary>
|
|||
|
Low,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Open Y value is used to generate point label.
|
|||
|
/// </summary>
|
|||
|
Open,
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Close Y value is used to generate point label.
|
|||
|
/// </summary>
|
|||
|
Close,
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Data point label alignment.
|
|||
|
/// </summary>
|
|||
|
[Flags]
|
|||
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue")]
|
|||
|
internal enum LabelAlignments
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Automatic position.
|
|||
|
/// </summary>
|
|||
|
Auto = 0,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the top of the marker.
|
|||
|
/// </summary>
|
|||
|
Top = 1,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the bottom of the marker.
|
|||
|
/// </summary>
|
|||
|
Bottom = 2,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the right of the marker.
|
|||
|
/// </summary>
|
|||
|
Right = 4,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the left of the marker.
|
|||
|
/// </summary>
|
|||
|
Left = 8,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the top-left of the marker.
|
|||
|
/// </summary>
|
|||
|
TopLeft = 16,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the top-right of the marker.
|
|||
|
/// </summary>
|
|||
|
TopRight = 32,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the bottom-left of the marker.
|
|||
|
/// </summary>
|
|||
|
BottomLeft = 64,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned on the bottom-right of the marker.
|
|||
|
/// </summary>
|
|||
|
BottomRight = 128,
|
|||
|
/// <summary>
|
|||
|
/// Label aligned in the center of the marker.
|
|||
|
/// </summary>
|
|||
|
Center = 256,
|
|||
|
}
|
|||
|
|
|||
|
#endregion //Enumerations
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// CustomPropertyName class contains constant strings defining
|
|||
|
/// names of all custom properties used in the chart.
|
|||
|
/// </summary>
|
|||
|
internal static class CustomPropertyName
|
|||
|
{
|
|||
|
#region Common Custom Properties Names
|
|||
|
|
|||
|
internal const string DrawSideBySide = "DrawSideBySide";
|
|||
|
internal const string EmptyPointValue = "EmptyPointValue";
|
|||
|
internal const string IsXAxisQuantitative = "IsXAxisQuantitative";
|
|||
|
internal const string BarLabelStyle = "BarLabelStyle";
|
|||
|
internal const string StackedGroupName = "StackedGroupName";
|
|||
|
internal const string DrawingStyle = "DrawingStyle";
|
|||
|
internal const string PointWidth = "PointWidth";
|
|||
|
internal const string PixelPointWidth = "PixelPointWidth";
|
|||
|
internal const string MinPixelPointWidth = "MinPixelPointWidth";
|
|||
|
internal const string MaxPixelPointWidth = "MaxPixelPointWidth";
|
|||
|
internal const string PriceUpColor = "PriceUpColor";
|
|||
|
internal const string PriceDownColor = "PriceDownColor";
|
|||
|
internal const string LabelValueType = "LabelValueType";
|
|||
|
internal const string OpenCloseStyle = "OpenCloseStyle";
|
|||
|
internal const string ShowOpenClose = "ShowOpenClose";
|
|||
|
internal const string BubbleScaleMin = "BubbleScaleMin";
|
|||
|
internal const string BubbleScaleMax = "BubbleScaleMax";
|
|||
|
internal const string BubbleMaxSize = "BubbleMaxSize";
|
|||
|
internal const string BubbleMinSize = "BubbleMinSize";
|
|||
|
internal const string BubbleUseSizeForLabel = "BubbleUseSizeForLabel";
|
|||
|
internal const string PieDrawingStyle = "PieDrawingStyle";
|
|||
|
internal const string CollectedStyle = "CollectedStyle";
|
|||
|
internal const string CollectedThreshold = "CollectedThreshold";
|
|||
|
internal const string CollectedThresholdUsePercent = "CollectedThresholdUsePercent";
|
|||
|
internal const string CollectedSliceExploded = "CollectedSliceExploded";
|
|||
|
internal const string CollectedLabel = "CollectedLabel";
|
|||
|
internal const string CollectedLegendText = "CollectedLegendText";
|
|||
|
internal const string CollectedToolTip = "CollectedToolTip";
|
|||
|
internal const string CollectedColor = "CollectedColor";
|
|||
|
internal const string CollectedChartShowLegend = "CollectedChartShowLegend";
|
|||
|
internal const string CollectedChartShowLabels = "CollectedChartShowLabels";
|
|||
|
internal const string PieStartAngle = "PieStartAngle";
|
|||
|
internal const string Exploded = "Exploded";
|
|||
|
internal const string LabelsRadialLineSize = "LabelsRadialLineSize";
|
|||
|
internal const string LabelsHorizontalLineSize = "LabelsHorizontalLineSize";
|
|||
|
internal const string PieLabelStyle = "PieLabelStyle";
|
|||
|
internal const string MinimumRelativePieSize = "MinimumRelativePieSize";
|
|||
|
internal const string _3DLabelLineSize = "3DLabelLineSize";
|
|||
|
internal const string PieLineColor = "PieLineColor";
|
|||
|
internal const string PieAutoAxisLabels = "AutoAxisLabels";
|
|||
|
internal const string DoughnutRadius = "DoughnutRadius";
|
|||
|
internal const string LabelStyle = "LabelStyle";
|
|||
|
internal const string ShowMarkerLines = "ShowMarkerLines";
|
|||
|
internal const string LineTension = "LineTension";
|
|||
|
internal const string PixelPointDepth = "PixelPointDepth";
|
|||
|
internal const string PixelPointGapDepth = "PixelPointGapDepth";
|
|||
|
internal const string PermittedPixelError = "PermittedPixelError";
|
|||
|
internal const string CircularLabelsStyle = "CircularLabelsStyle";
|
|||
|
internal const string PolarDrawingStyle = "PolarDrawingStyle";
|
|||
|
internal const string AreaDrawingStyle = "AreaDrawingStyle";
|
|||
|
internal const string RadarDrawingStyle = "RadarDrawingStyle";
|
|||
|
internal const string BoxPlotPercentile = "BoxPlotPercentile";
|
|||
|
internal const string BoxPlotWhiskerPercentile = "BoxPlotWhiskerPercentile";
|
|||
|
internal const string BoxPlotShowAverage = "BoxPlotShowAverage";
|
|||
|
internal const string BoxPlotShowMedian = "BoxPlotShowMedian";
|
|||
|
internal const string BoxPlotShowUnusualValues = "BoxPlotShowUnusualValues";
|
|||
|
internal const string BoxPlotSeries = "BoxPlotSeries";
|
|||
|
internal const string ErrorBarStyle = "ErrorBarStyle";
|
|||
|
internal const string ErrorBarCenterMarkerStyle = "ErrorBarCenterMarkerStyle";
|
|||
|
internal const string ErrorBarSeries = "ErrorBarSeries";
|
|||
|
internal const string ErrorBarType = "ErrorBarType";
|
|||
|
internal const string UsedYValueHigh = "UsedYValueHigh";
|
|||
|
internal const string UsedYValueLow = "UsedYValueLow";
|
|||
|
internal const string BoxSize = "BoxSize";
|
|||
|
internal const string ProportionalSymbols = "ProportionalSymbols";
|
|||
|
internal const string ReversalAmount = "ReversalAmount";
|
|||
|
internal const string UsedYValue = "UsedYValue";
|
|||
|
internal const string NumberOfLinesInBreak = "NumberOfLinesInBreak";
|
|||
|
internal const string FunnelLabelStyle = "FunnelLabelStyle";
|
|||
|
internal const string FunnelNeckWidth = "FunnelNeckWidth";
|
|||
|
internal const string FunnelNeckHeight = "FunnelNeckHeight";
|
|||
|
internal const string FunnelMinPointHeight = "FunnelMinPointHeight";
|
|||
|
internal const string Funnel3DRotationAngle = "Funnel3DRotationAngle";
|
|||
|
internal const string FunnelPointGap = "FunnelPointGap";
|
|||
|
internal const string Funnel3DDrawingStyle = "Funnel3DDrawingStyle";
|
|||
|
internal const string FunnelStyle = "FunnelStyle";
|
|||
|
internal const string FunnelInsideLabelAlignment = "FunnelInsideLabelAlignment";
|
|||
|
internal const string FunnelOutsideLabelPlacement = "FunnelOutsideLabelPlacement";
|
|||
|
internal const string CalloutLineColor = "CalloutLineColor";
|
|||
|
internal const string PyramidLabelStyle = "PyramidLabelStyle";
|
|||
|
internal const string PyramidMinPointHeight = "PyramidMinPointHeight";
|
|||
|
internal const string Pyramid3DRotationAngle = "Pyramid3DRotationAngle";
|
|||
|
internal const string PyramidPointGap = "PyramidPointGap";
|
|||
|
internal const string Pyramid3DDrawingStyle = "Pyramid3DDrawingStyle";
|
|||
|
internal const string PyramidInsideLabelAlignment = "PyramidInsideLabelAlignment";
|
|||
|
internal const string PyramidOutsideLabelPlacement = "PyramidOutsideLabelPlacement";
|
|||
|
internal const string PyramidValueType = "PyramidValueType";
|
|||
|
|
|||
|
#endregion // Common Custom Properties Names
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// CustomPropertyRegistry contains information for all chart
|
|||
|
/// custom properties. This data is exposed through the
|
|||
|
/// <20>registeredCustomProperties<65> field which is an ArrayList
|
|||
|
/// containing CustomPropertyInfo classes.
|
|||
|
/// </summary>
|
|||
|
internal class CustomPropertyRegistry : IServiceProvider
|
|||
|
{
|
|||
|
#region Fields
|
|||
|
|
|||
|
// List of registered properties
|
|||
|
internal ArrayList registeredCustomProperties = new ArrayList();
|
|||
|
|
|||
|
// Defines maximum value which can be set to the attribute which uses pixels
|
|||
|
internal static int MaxValueOfPixelAttribute = 10000;
|
|||
|
|
|||
|
internal static System.Collections.Generic.List<SeriesChartType> IsXAxisQuantitativeChartTypes =
|
|||
|
new System.Collections.Generic.List<SeriesChartType >(
|
|||
|
new SeriesChartType[] {
|
|||
|
SeriesChartType.Line,
|
|||
|
SeriesChartType.FastLine,
|
|||
|
SeriesChartType.Spline,
|
|||
|
SeriesChartType.Point,
|
|||
|
SeriesChartType.FastPoint,
|
|||
|
SeriesChartType.Bubble,
|
|||
|
SeriesChartType.RangeColumn,
|
|||
|
SeriesChartType.RangeBar,
|
|||
|
});
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Constructor and Services
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Custom properties registry public constructor.
|
|||
|
/// </summary>
|
|||
|
public CustomPropertyRegistry()
|
|||
|
{
|
|||
|
// Register properties used in the chart
|
|||
|
RegisterProperties();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Returns custom properties registry service object.
|
|||
|
/// </summary>
|
|||
|
/// <param name="serviceType">Service type to get.</param>
|
|||
|
/// <returns>Custom properties registry service.</returns>
|
|||
|
[EditorBrowsableAttribute(EditorBrowsableState.Never)]
|
|||
|
object IServiceProvider.GetService(Type serviceType)
|
|||
|
{
|
|||
|
if(serviceType == typeof(CustomPropertyRegistry))
|
|||
|
{
|
|||
|
return this;
|
|||
|
}
|
|||
|
throw (new ArgumentException(SR.ExceptionCustomAttributesRegistryUnsupportedType( serviceType.ToString()) ));
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Properties Regestering methods
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// This method registers all standard custom properties used in
|
|||
|
/// the chart and provides all the additional information like
|
|||
|
/// description, value validation and scenarios where custom
|
|||
|
/// attribute can be used.
|
|||
|
/// </summary>
|
|||
|
private void RegisterProperties()
|
|||
|
{
|
|||
|
SeriesChartType[] chartTypes = null;
|
|||
|
CustomPropertyInfo attrInfo = null;
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** DrawSideBySide properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Bar,
|
|||
|
SeriesChartType.Column,
|
|||
|
|
|||
|
SeriesChartType.RangeColumn,
|
|||
|
SeriesChartType.BoxPlot,
|
|||
|
SeriesChartType.RangeBar,
|
|||
|
SeriesChartType.ErrorBar,
|
|||
|
|
|||
|
};
|
|||
|
// "DrawSideBySide" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.DrawSideBySide,
|
|||
|
typeof(AxisEnabled),
|
|||
|
"Auto",
|
|||
|
SR.DescriptionCustomAttributeDrawSideBySide,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** IsXAxisQuantitative properties
|
|||
|
//***********************************************************************
|
|||
|
registeredCustomProperties.Add(new CustomPropertyInfo(
|
|||
|
CustomPropertyName.IsXAxisQuantitative,
|
|||
|
typeof(bool),
|
|||
|
"false",
|
|||
|
SR.DescriptionCustomAttributeIsXAxisQuantitive,
|
|||
|
IsXAxisQuantitativeChartTypes.ToArray(),
|
|||
|
true,
|
|||
|
false));
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** EmptyPointValue properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Point,
|
|||
|
SeriesChartType.Bubble,
|
|||
|
SeriesChartType.Line,
|
|||
|
SeriesChartType.Spline,
|
|||
|
SeriesChartType.StepLine,
|
|||
|
SeriesChartType.Column,
|
|||
|
SeriesChartType.RangeColumn,
|
|||
|
SeriesChartType.RangeBar,
|
|||
|
SeriesChartType.Radar,
|
|||
|
SeriesChartType.Range,
|
|||
|
SeriesChartType.SplineRange,
|
|||
|
SeriesChartType.Polar,
|
|||
|
SeriesChartType.Area,
|
|||
|
SeriesChartType.SplineArea,
|
|||
|
SeriesChartType.Bar,
|
|||
|
};
|
|||
|
registeredCustomProperties.Add( new CustomPropertyInfo(
|
|||
|
CustomPropertyName.EmptyPointValue,
|
|||
|
typeof(EmptyPointTypes),
|
|||
|
"Average",
|
|||
|
SR.DescriptionCustomAttributeEmptyPointValue,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false) );
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Bar label styles properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.StackedBar,
|
|||
|
SeriesChartType.StackedBar100,
|
|||
|
SeriesChartType.RangeBar,
|
|||
|
};
|
|||
|
// "BarLabelStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BarLabelStyle,
|
|||
|
typeof(BarValueLabelDrawingStyle),
|
|||
|
"Center",
|
|||
|
SR.DescriptionCustomAttributeBarLabelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Stacked Column/Bar properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.StackedBar,
|
|||
|
SeriesChartType.StackedBar100,
|
|||
|
SeriesChartType.StackedColumn,
|
|||
|
SeriesChartType.StackedColumn100,
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
// "StackedGroupName" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.StackedGroupName,
|
|||
|
typeof(string),
|
|||
|
string.Empty,
|
|||
|
SR.DescriptionCustomAttributeStackedGroupName,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add(attrInfo);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Bar label styles properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Bar,
|
|||
|
};
|
|||
|
// "BarLabelStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BarLabelStyle,
|
|||
|
typeof(BarValueLabelDrawingStyle),
|
|||
|
"Outside",
|
|||
|
SR.DescriptionCustomAttributeBarLabelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Bar and Columnt chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Bar,
|
|||
|
SeriesChartType.Column,
|
|||
|
SeriesChartType.StackedBar,
|
|||
|
SeriesChartType.StackedBar100,
|
|||
|
SeriesChartType.StackedColumn,
|
|||
|
SeriesChartType.StackedColumn100,
|
|||
|
SeriesChartType.RangeBar,
|
|||
|
SeriesChartType.RangeColumn,
|
|||
|
|
|||
|
};
|
|||
|
// "DrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.DrawingStyle,
|
|||
|
typeof(BarDrawingStyle),
|
|||
|
"Default",
|
|||
|
SR.DescriptionCustomAttributeDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Chart types point width properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Bar,
|
|||
|
SeriesChartType.Candlestick,
|
|||
|
SeriesChartType.Column,
|
|||
|
SeriesChartType.StackedBar,
|
|||
|
SeriesChartType.StackedBar100,
|
|||
|
SeriesChartType.StackedColumn,
|
|||
|
SeriesChartType.StackedColumn100,
|
|||
|
SeriesChartType.Stock,
|
|||
|
SeriesChartType.BoxPlot,
|
|||
|
SeriesChartType.ErrorBar,
|
|||
|
SeriesChartType.RangeBar,
|
|||
|
SeriesChartType.RangeColumn,
|
|||
|
};
|
|||
|
// "PointWidth" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PointWidth,
|
|||
|
typeof(float),
|
|||
|
0.8f,
|
|||
|
SR.DescriptionCustomAttributePointWidth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 2f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PixelPointWidth" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PixelPointWidth,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributePixelPointWidth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = CustomPropertyRegistry.MaxValueOfPixelAttribute;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "MinPixelPointWidth" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.MinPixelPointWidth,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributeMinPixelPointWidth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = CustomPropertyRegistry.MaxValueOfPixelAttribute;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "MaxPixelPointWidth" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.MaxPixelPointWidth,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributeMaxPixelPointWidth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = CustomPropertyRegistry.MaxValueOfPixelAttribute;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** CandleStick chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Candlestick };
|
|||
|
|
|||
|
// "PriceUpColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PriceUpColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeCandlePriceUpColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PriceDownColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PriceDownColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributePriceDownColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Stock and CandleStick chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Stock, SeriesChartType.Candlestick };
|
|||
|
|
|||
|
// "LabelValueType" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.LabelValueType,
|
|||
|
typeof(StockLabelValueTypes),
|
|||
|
"Close",
|
|||
|
SR.DescriptionCustomAttributeLabelValueType,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Stock chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Stock };
|
|||
|
|
|||
|
// "OpenCloseStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.OpenCloseStyle,
|
|||
|
typeof(StockOpenCloseMarkStyle),
|
|||
|
"Line",
|
|||
|
SR.DescriptionCustomAttributeOpenCloseStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ShowOpenClose" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ShowOpenClose,
|
|||
|
typeof(StockShowOpenCloseTypes),
|
|||
|
"Both",
|
|||
|
SR.DescriptionCustomAttributeShowOpenClose,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Bubble chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Bubble };
|
|||
|
|
|||
|
// "BubbleScaleMin" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BubbleScaleMin,
|
|||
|
typeof(float),
|
|||
|
0f,
|
|||
|
SR.DescriptionCustomAttributeBubbleScaleMin,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BubbleScaleMax" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BubbleScaleMax,
|
|||
|
typeof(float),
|
|||
|
0f,
|
|||
|
SR.DescriptionCustomAttributeBubbleScaleMax,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BubbleMaxSize" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BubbleMaxSize,
|
|||
|
typeof(float),
|
|||
|
15f,
|
|||
|
SR.DescriptionCustomAttributeBubbleMaxSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BubbleMinSize" attribute of the Bubble chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BubbleMinSize,
|
|||
|
typeof(float),
|
|||
|
3f,
|
|||
|
SR.DescriptionCustomAttributeBubbleMaxSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BubbleUseSizeForLabel" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BubbleUseSizeForLabel,
|
|||
|
typeof(bool),
|
|||
|
false,
|
|||
|
SR.DescriptionCustomAttributeBubbleUseSizeForLabel,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Pie and Doughnut chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Pie,
|
|||
|
SeriesChartType.Doughnut
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
// "PieDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PieDrawingStyle,
|
|||
|
typeof(PieDrawingStyle),
|
|||
|
"Default",
|
|||
|
SR.DescriptionCustomAttributePieDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.AppliesTo3D = false;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
// "CollectedThreshold" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedThreshold,
|
|||
|
typeof(double),
|
|||
|
0.0,
|
|||
|
SR.DescriptionCustomAttributeCollectedThreshold,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0.0;
|
|||
|
attrInfo.MaxValue = double.MaxValue;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CollectedThresholdUsePercent" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedThresholdUsePercent,
|
|||
|
typeof(bool),
|
|||
|
true,
|
|||
|
SR.DescriptionCustomAttributeCollectedThresholdUsePercent,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CollectedSliceExploded" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedSliceExploded,
|
|||
|
typeof(bool),
|
|||
|
false,
|
|||
|
SR.DescriptionCustomAttributeCollectedSliceExploded,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CollectedLabel" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedLabel,
|
|||
|
typeof(string),
|
|||
|
string.Empty,
|
|||
|
SR.DescriptionCustomAttributeCollectedLabel,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CollectedLegendText" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedLegendText,
|
|||
|
typeof(string),
|
|||
|
SR.DescriptionCustomAttributeCollectedLegendDefaultText,
|
|||
|
SR.DescriptionCustomAttributeCollectedLegendText,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CollectedToolTip" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedToolTip,
|
|||
|
typeof(string),
|
|||
|
string.Empty,
|
|||
|
SR.DescriptionCustomAttributeCollectedToolTip,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CollectedColor" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CollectedColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeCollectedColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
// "PieStartAngle" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PieStartAngle,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributePieStartAngle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = 360;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// "Exploded" attribute of the Pie chart
|
|||
|
registeredCustomProperties.Add( new CustomPropertyInfo(
|
|||
|
CustomPropertyName.Exploded,
|
|||
|
typeof(bool),
|
|||
|
false,
|
|||
|
SR.DescriptionCustomAttributePieDonutExploded,
|
|||
|
chartTypes,
|
|||
|
false,
|
|||
|
true) );
|
|||
|
|
|||
|
// "LabelsRadialLineSize" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.LabelsRadialLineSize,
|
|||
|
typeof(float),
|
|||
|
1f,
|
|||
|
SR.DescriptionCustomAttributeLabelsRadialLineSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
attrInfo.AppliesTo3D = false;
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "LabelsHorizontalLineSize" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.LabelsHorizontalLineSize,
|
|||
|
typeof(float),
|
|||
|
1f,
|
|||
|
SR.DescriptionCustomAttributeLabelsHorizontalLineSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
attrInfo.AppliesTo3D = false;
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
// "PieLabelStyle" attribute of the Pie chart
|
|||
|
registeredCustomProperties.Add( new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PieLabelStyle,
|
|||
|
typeof(PieLabelStyle),
|
|||
|
"Inside",
|
|||
|
SR.DescriptionCustomAttributePieLabelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true) );
|
|||
|
|
|||
|
|
|||
|
// "MinimumRelativePieSize" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.MinimumRelativePieSize,
|
|||
|
typeof(float),
|
|||
|
30f,
|
|||
|
SR.DescriptionCustomAttributeMinimumRelativePieSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 10f;
|
|||
|
attrInfo.MaxValue = 70f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "3DLabelLineSize" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName._3DLabelLineSize,
|
|||
|
typeof(float),
|
|||
|
100f,
|
|||
|
SR.DescriptionCustomAttribute_3DLabelLineSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
attrInfo.MinValue = 30f;
|
|||
|
attrInfo.MaxValue = 200f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PieLineColor" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PieLineColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributePieLineColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Doughnut chart types properties
|
|||
|
//***********************************************************************
|
|||
|
|
|||
|
// "DoughnutRadius" attribute of the Pie chart
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.DoughnutRadius,
|
|||
|
typeof(float),
|
|||
|
60f,
|
|||
|
SR.DescriptionCustomAttributeDoughnutRadius,
|
|||
|
new SeriesChartType[] { SeriesChartType.Doughnut },
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 99f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Other
|
|||
|
//***********************************************************************
|
|||
|
|
|||
|
// "LabelStyle" attribute
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Point,
|
|||
|
SeriesChartType.Column,
|
|||
|
SeriesChartType.Bubble,
|
|||
|
SeriesChartType.Line,
|
|||
|
SeriesChartType.Spline,
|
|||
|
SeriesChartType.StepLine,
|
|||
|
SeriesChartType.Area,
|
|||
|
SeriesChartType.SplineArea,
|
|||
|
SeriesChartType.Range,
|
|||
|
SeriesChartType.SplineRange,
|
|||
|
SeriesChartType.Radar,
|
|||
|
SeriesChartType.Polar,
|
|||
|
|
|||
|
};
|
|||
|
registeredCustomProperties.Add( new CustomPropertyInfo(
|
|||
|
CustomPropertyName.LabelStyle,
|
|||
|
typeof(LabelAlignments),
|
|||
|
"Auto",
|
|||
|
SR.DescriptionCustomAttributeLabelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true) );
|
|||
|
|
|||
|
// "ShowMarkerLines" attribute
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Line,
|
|||
|
SeriesChartType.Spline,
|
|||
|
SeriesChartType.StepLine,
|
|||
|
SeriesChartType.Area,
|
|||
|
SeriesChartType.SplineArea,
|
|||
|
SeriesChartType.Range,
|
|||
|
SeriesChartType.SplineRange
|
|||
|
};
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ShowMarkerLines,
|
|||
|
typeof(bool),
|
|||
|
false,
|
|||
|
SR.DescriptionCustomAttributeShowMarkerLines,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "LineTension" attribute
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Spline,
|
|||
|
SeriesChartType.SplineArea,
|
|||
|
SeriesChartType.SplineRange
|
|||
|
};
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.LineTension,
|
|||
|
typeof(float),
|
|||
|
0.5f,
|
|||
|
SR.DescriptionCustomAttributeLineTension,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 2f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PixelPointDepth" attribute
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
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.RangeBar,
|
|||
|
SeriesChartType.Kagi,
|
|||
|
SeriesChartType.PointAndFigure,
|
|||
|
SeriesChartType.Range,
|
|||
|
SeriesChartType.RangeColumn,
|
|||
|
SeriesChartType.Renko,
|
|||
|
SeriesChartType.SplineRange,
|
|||
|
SeriesChartType.FastLine,
|
|||
|
};
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PixelPointDepth,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributePixelPointDepth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = CustomPropertyRegistry.MaxValueOfPixelAttribute;
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PixelPointGapDepth" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PixelPointGapDepth,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributePixelPointGapDepth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = CustomPropertyRegistry.MaxValueOfPixelAttribute;
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** FastLine chart type properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.FastLine,
|
|||
|
SeriesChartType.FastPoint,
|
|||
|
};
|
|||
|
|
|||
|
/* NOTE: This is an internal attribute
|
|||
|
*
|
|||
|
// "PermittedPixelError" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PixelPointGapDepth,
|
|||
|
typeof(float),
|
|||
|
1f,
|
|||
|
"Gets or sets the acceptable error in pixels for the data point filtering algorithm.",
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 1f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
*/
|
|||
|
//***********************************************************************
|
|||
|
//** Polar chart type properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Polar
|
|||
|
};
|
|||
|
// "AreaDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.AreaDrawingStyle,
|
|||
|
typeof(CircularAreaDrawingStyles),
|
|||
|
"Circle",
|
|||
|
SR.DescriptionCustomAttributePolarAreaDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CircularLabelsStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CircularLabelsStyle,
|
|||
|
typeof(CircularAxisLabelsStyle),
|
|||
|
"Auto",
|
|||
|
SR.DescriptionCustomAttributePolarCircularLabelsStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PolarDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PolarDrawingStyle,
|
|||
|
typeof(PolarDrawingStyles),
|
|||
|
"Line",
|
|||
|
SR.DescriptionCustomAttributePolarDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Radar chart type properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.Radar
|
|||
|
};
|
|||
|
// "AreaDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.AreaDrawingStyle,
|
|||
|
typeof(CircularAreaDrawingStyles),
|
|||
|
"Circle",
|
|||
|
SR.DescriptionCustomAttributeRadarAreaDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CircularLabelsStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CircularLabelsStyle,
|
|||
|
typeof(CircularAxisLabelsStyle),
|
|||
|
"Auto",
|
|||
|
SR.DescriptionCustomAttributeRadarCircularLabelsStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "RadarDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.RadarDrawingStyle,
|
|||
|
typeof(RadarDrawingStyle),
|
|||
|
"Area",
|
|||
|
SR.DescriptionCustomAttributeRadarDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** BoxPlot chart type properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.BoxPlot
|
|||
|
};
|
|||
|
// "BoxPlotPercentile" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxPlotPercentile,
|
|||
|
typeof(float),
|
|||
|
25f,
|
|||
|
SR.DescriptionCustomAttributeBoxPlotPercentile,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 1000f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxPlotWhiskerPercentile" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxPlotWhiskerPercentile,
|
|||
|
typeof(float),
|
|||
|
10f,
|
|||
|
SR.DescriptionCustomAttributeBoxPlotWhiskerPercentile,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 1000f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxPlotShowAverage" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxPlotShowAverage,
|
|||
|
typeof(bool),
|
|||
|
true,
|
|||
|
SR.DescriptionCustomAttributeBoxPlotShowAverage,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxPlotShowMedian" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxPlotShowMedian,
|
|||
|
typeof(bool),
|
|||
|
true,
|
|||
|
SR.DescriptionCustomAttributeBoxPlotShowMedian,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxPlotShowUnusualValues" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxPlotShowUnusualValues,
|
|||
|
typeof(bool),
|
|||
|
false,
|
|||
|
SR.DescriptionCustomAttributeBoxPlotShowUnusualValues,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxPlotSeries" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxPlotSeries,
|
|||
|
typeof(string),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeBoxPlotSeries,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** ErrorBar chart type properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] {
|
|||
|
SeriesChartType.ErrorBar
|
|||
|
};
|
|||
|
// "ErrorBarStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ErrorBarStyle,
|
|||
|
typeof(ErrorBarStyle),
|
|||
|
"Both",
|
|||
|
SR.DescriptionCustomAttributeErrorBarStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ErrorBarCenterMarkerStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ErrorBarCenterMarkerStyle,
|
|||
|
typeof(ErrorBarMarkerStyles),
|
|||
|
"Line",
|
|||
|
SR.DescriptionCustomAttributeErrorBarCenterMarkerStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ErrorBarSeries" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ErrorBarSeries,
|
|||
|
typeof(string),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeErrorBarSeries,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ErrorBarType" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ErrorBarType,
|
|||
|
typeof(string),
|
|||
|
String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}({1:N0})", ErrorBarType.StandardError, ErrorBarChart.DefaultErrorBarTypeValue(ErrorBarType.StandardError)),
|
|||
|
SR.DescriptionCustomAttributeErrorBarType,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** PointAndFigure chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.PointAndFigure };
|
|||
|
|
|||
|
// "UsedYValueHigh" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.UsedYValueHigh,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributeUsedYValueHigh,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = 20;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "UsedYValueLow" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.UsedYValueLow,
|
|||
|
typeof(int),
|
|||
|
1,
|
|||
|
SR.DescriptionCustomAttributeUsedYValueLow,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = 20;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PriceUpColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PriceUpColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeBarsPriceUpColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxSize" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxSize,
|
|||
|
typeof(string),
|
|||
|
"4%",
|
|||
|
SR.DescriptionCustomAttributePointFigureBoxSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ProportionalSymbols" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ProportionalSymbols,
|
|||
|
typeof(bool),
|
|||
|
true,
|
|||
|
SR.DescriptionCustomAttributeProportionalSymbols,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ReversalAmount" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ReversalAmount,
|
|||
|
typeof(int),
|
|||
|
"3",
|
|||
|
SR.DescriptionCustomAttributeReversalAmount,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Kagi chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Kagi };
|
|||
|
|
|||
|
// "UsedYValue" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.UsedYValue,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributeUsedYValue,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = 20;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PriceUpColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PriceUpColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeBarsPriceUpColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "ReversalAmount" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.ReversalAmount,
|
|||
|
typeof(string),
|
|||
|
"3%",
|
|||
|
SR.DescriptionCustomAttributeKagiReversalAmount,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Renko chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Renko };
|
|||
|
|
|||
|
// "UsedYValue" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.UsedYValue,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributeRenkoUsedYValue,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = 20;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PriceUpColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PriceUpColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeBarsPriceUpColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "BoxSize" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.BoxSize,
|
|||
|
typeof(string),
|
|||
|
"4%",
|
|||
|
SR.DescriptionCustomAttributeBoxSize,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** ThreeLineBreak chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.ThreeLineBreak };
|
|||
|
|
|||
|
// "UsedYValue" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.UsedYValue,
|
|||
|
typeof(int),
|
|||
|
0,
|
|||
|
SR.DescriptionCustomAttributeThreeLineBreakUsedYValue,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0;
|
|||
|
attrInfo.MaxValue = 20;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PriceUpColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PriceUpColor,
|
|||
|
typeof(Color),
|
|||
|
"",
|
|||
|
SR.DescriptionCustomAttributeBarsPriceUpColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "NumberOfLinesInBreak" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.NumberOfLinesInBreak,
|
|||
|
typeof(int),
|
|||
|
3,
|
|||
|
SR.DescriptionCustomAttributeNumberOfLinesInBreak,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Funnel chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Funnel };
|
|||
|
|
|||
|
|
|||
|
// "FunnelLabelStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelLabelStyle,
|
|||
|
typeof(FunnelLabelStyle),
|
|||
|
"OutsideInColumn",
|
|||
|
SR.DescriptionCustomAttributeFunnelLabelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
// "FunnelNeckWidth" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelNeckWidth,
|
|||
|
typeof(float),
|
|||
|
5f,
|
|||
|
SR.DescriptionCustomAttributeFunnelNeckWidth,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "FunnelNeckHeight" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelNeckHeight,
|
|||
|
typeof(float),
|
|||
|
5f,
|
|||
|
SR.DescriptionCustomAttributeFunnelNeckHeight,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "FunnelMinPointHeight" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelMinPointHeight,
|
|||
|
typeof(float),
|
|||
|
0f,
|
|||
|
SR.DescriptionCustomAttributeFunnelMinPointHeight,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "Funnel3DRotationAngle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.Funnel3DRotationAngle,
|
|||
|
typeof(float),
|
|||
|
5f,
|
|||
|
SR.DescriptionCustomAttributeFunnel3DRotationAngle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
attrInfo.MinValue = -10f;
|
|||
|
attrInfo.MaxValue = 10f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "FunnelPointGap" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelPointGap,
|
|||
|
typeof(float),
|
|||
|
0f,
|
|||
|
SR.DescriptionCustomAttributeFunnelPointGap,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "Funnel3DDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.Funnel3DDrawingStyle,
|
|||
|
typeof(Funnel3DDrawingStyle),
|
|||
|
"CircularBase",
|
|||
|
SR.DescriptionCustomAttributeFunnel3DDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "FunnelStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelStyle,
|
|||
|
typeof(FunnelStyle),
|
|||
|
"YIsHeight",
|
|||
|
SR.DescriptionCustomAttributeFunnelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "FunnelInsideLabelAlignment" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelInsideLabelAlignment,
|
|||
|
typeof(FunnelLabelVerticalAlignment),
|
|||
|
"Center",
|
|||
|
SR.DescriptionCustomAttributeFunnelInsideLabelAlignment,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "FunnelOutsideLabelPlacement" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.FunnelOutsideLabelPlacement,
|
|||
|
typeof(FunnelLabelPlacement),
|
|||
|
"Right",
|
|||
|
SR.DescriptionCustomAttributeFunnelOutsideLabelPlacement,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CalloutLineColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CalloutLineColor,
|
|||
|
typeof(Color),
|
|||
|
"Black",
|
|||
|
SR.DescriptionCustomAttributeCalloutLineColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
//***********************************************************************
|
|||
|
//** Pyramid chart types properties
|
|||
|
//***********************************************************************
|
|||
|
chartTypes = new SeriesChartType[] { SeriesChartType.Pyramid };
|
|||
|
|
|||
|
|
|||
|
// "PyramidLabelStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PyramidLabelStyle,
|
|||
|
typeof(FunnelLabelStyle),
|
|||
|
"OutsideInColumn",
|
|||
|
SR.DescriptionCustomAttributePyramidLabelStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
// "PyramidMinPointHeight" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PyramidMinPointHeight,
|
|||
|
typeof(float),
|
|||
|
0f,
|
|||
|
SR.DescriptionCustomAttributePyramidMinPointHeight,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "Pyramid3DRotationAngle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.Pyramid3DRotationAngle,
|
|||
|
typeof(float),
|
|||
|
5f,
|
|||
|
SR.DescriptionCustomAttributePyramid3DRotationAngle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
attrInfo.MinValue = -10f;
|
|||
|
attrInfo.MaxValue = 10f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PyramidPointGap" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PyramidPointGap,
|
|||
|
typeof(float),
|
|||
|
0f,
|
|||
|
SR.DescriptionCustomAttributePyramidPointGap,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.MinValue = 0f;
|
|||
|
attrInfo.MaxValue = 100f;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "Pyramid3DDrawingStyle" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.Pyramid3DDrawingStyle,
|
|||
|
typeof(Funnel3DDrawingStyle),
|
|||
|
"SquareBase",
|
|||
|
SR.DescriptionCustomAttributePyramid3DDrawingStyle,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
attrInfo.AppliesTo2D = false;
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PyramidInsideLabelAlignment" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PyramidInsideLabelAlignment,
|
|||
|
typeof(FunnelLabelVerticalAlignment),
|
|||
|
"Center",
|
|||
|
SR.DescriptionCustomAttributePyramidInsideLabelAlignment,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PyramidOutsideLabelPlacement" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PyramidOutsideLabelPlacement,
|
|||
|
typeof(FunnelLabelPlacement),
|
|||
|
"Right",
|
|||
|
SR.DescriptionCustomAttributePyramidOutsideLabelPlacement,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "CalloutLineColor" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.CalloutLineColor,
|
|||
|
typeof(Color),
|
|||
|
"Black",
|
|||
|
SR.DescriptionCustomAttributeCalloutLineColor,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
true);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
// "PyramidValueType" attribute
|
|||
|
attrInfo = new CustomPropertyInfo(
|
|||
|
CustomPropertyName.PyramidValueType,
|
|||
|
typeof(PyramidValueType),
|
|||
|
"Linear",
|
|||
|
SR.DescriptionCustomAttributePyramidValueType,
|
|||
|
chartTypes,
|
|||
|
true,
|
|||
|
false);
|
|||
|
registeredCustomProperties.Add( attrInfo );
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#endregion // Attributes Regestering methods
|
|||
|
|
|||
|
#region Registry methods
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Adds custom attribute information into the registry.
|
|||
|
/// </summary>
|
|||
|
/// <param name="customPropertyInfo">Custom attribute information.</param>
|
|||
|
public void Register(CustomPropertyInfo customPropertyInfo)
|
|||
|
{
|
|||
|
// Add custom attribute information to the hash table
|
|||
|
registeredCustomProperties.Add(customPropertyInfo);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// CustomPropertyInfo class stores information about single
|
|||
|
/// custom attribute. It includes Name, Description, Default
|
|||
|
/// Value, any restrictions and the conditions when it can
|
|||
|
/// be used.
|
|||
|
///
|
|||
|
/// Most of the custom attribute can only be used when specific
|
|||
|
/// chart type is selected. Some of the properties only work
|
|||
|
/// in 2D or 3D mode and some can be applied to the whole
|
|||
|
/// series or data points only.
|
|||
|
/// </summary>
|
|||
|
internal class CustomPropertyInfo
|
|||
|
{
|
|||
|
#region Public Fields
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Attribute name.
|
|||
|
/// </summary>
|
|||
|
public string Name = String.Empty;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Attribute value type.
|
|||
|
/// </summary>
|
|||
|
public Type ValueType = typeof(int);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Attribute default value.
|
|||
|
/// </summary>
|
|||
|
public object DefaultValue = null;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Attribute description.
|
|||
|
/// </summary>
|
|||
|
public string Description = String.Empty;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Array of chart type supported by the attribute
|
|||
|
/// </summary>
|
|||
|
public SeriesChartType[] AppliesToChartType = null;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Indicates that attribute can be applied on series.
|
|||
|
/// </summary>
|
|||
|
public bool AppliesToSeries = true;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Indicates that attribute can be applied on data point.
|
|||
|
/// </summary>
|
|||
|
public bool AppliesToDataPoint = true;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Indicates that attribute can be applied on 3D chart type.
|
|||
|
/// </summary>
|
|||
|
public bool AppliesTo3D = true;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Indicates that attribute can be applied on 2D chart type.
|
|||
|
/// </summary>
|
|||
|
public bool AppliesTo2D = true;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Attribute minimum value.
|
|||
|
/// </summary>
|
|||
|
public object MinValue = null;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Attribute maximum value.
|
|||
|
/// </summary>
|
|||
|
public object MaxValue = null;
|
|||
|
|
|||
|
#endregion // Public Fields
|
|||
|
|
|||
|
#region Constructor
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Public constructor.
|
|||
|
/// </summary>
|
|||
|
/// <param name="name">Attribute name</param>
|
|||
|
/// <param name="valueType">Attribute value type.</param>
|
|||
|
/// <param name="defaultValue">Attribute default value.</param>
|
|||
|
/// <param name="description">Attribute description.</param>
|
|||
|
/// <param name="appliesToChartType">Array of chart types where attribute used.</param>
|
|||
|
/// <param name="appliesToSeries">True if properties can be set in series.</param>
|
|||
|
/// <param name="appliesToDataPoint">True if properties can be set in data point.</param>
|
|||
|
public CustomPropertyInfo(
|
|||
|
string name,
|
|||
|
Type valueType,
|
|||
|
object defaultValue,
|
|||
|
string description,
|
|||
|
SeriesChartType[] appliesToChartType,
|
|||
|
bool appliesToSeries,
|
|||
|
bool appliesToDataPoint)
|
|||
|
{
|
|||
|
this.Name = name;
|
|||
|
this.ValueType = valueType;
|
|||
|
this.DefaultValue = defaultValue;
|
|||
|
this.Description = description;
|
|||
|
this.AppliesToChartType = appliesToChartType;
|
|||
|
this.AppliesToSeries = appliesToSeries;
|
|||
|
this.AppliesToDataPoint = appliesToDataPoint;
|
|||
|
}
|
|||
|
|
|||
|
#endregion // Constructor
|
|||
|
}
|
|||
|
}
|