Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Problems.GrammaticalOptimization/DynamicDataDisplay/Charts/Axes/Numeric/CustomBaseNumericLabelProvider.cs @ 13398

Last change on this file since 13398 was 12503, checked in by aballeit, 10 years ago

#2283 added GUI and charts; fixed MCTS

File size: 2.4 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using Microsoft.Research.DynamicDataDisplay;
7
8namespace Microsoft.Research.DynamicDataDisplay.Charts.Axes.Numeric
9{
10  public class CustomBaseNumericLabelProvider : LabelProvider<double>
11  {
12    private double customBase = 2;
13    /// <summary>
14    /// Gets or sets the custom base.
15    /// </summary>
16    /// <value>The custom base.</value>
17    public double CustomBase
18    {
19      get { return customBase; }
20      set
21      {
22        if (Double.IsNaN(value))
23          throw new ArgumentException(Strings.Exceptions.CustomBaseTicksProviderBaseIsNaN);
24        if (value <= 0)
25          throw new ArgumentOutOfRangeException(Strings.Exceptions.CustomBaseTicksProviderBaseIsTooSmall);
26
27        customBase = value;
28      }
29    }
30
31    /// <summary>
32    /// Initializes a new instance of the <see cref="CustomBaseNumericLabelProvider"/> class.
33    /// </summary>
34    public CustomBaseNumericLabelProvider() { }
35
36    /// <summary>
37    /// Initializes a new instance of the <see cref="CustomBaseNumericLabelProvider"/> class.
38    /// </summary>
39    public CustomBaseNumericLabelProvider(double customBase)
40      : this()
41    {
42      CustomBase = customBase;
43    }
44
45    /// <summary>
46    /// Initializes a new instance of the <see cref="CustomBaseNumericLabelProvider"/> class.
47    /// </summary>
48    /// <param name="customBase">The custom base.</param>
49    /// <param name="customBaseString">The custom base string.</param>
50    public CustomBaseNumericLabelProvider(double customBase, string customBaseString)
51      : this(customBase)
52    {
53      CustomBaseString = customBaseString;
54    }
55
56    private string customBaseString = null;
57    /// <summary>
58    /// Gets or sets the custom base string.
59    /// </summary>
60    /// <value>The custom base string.</value>
61    public string CustomBaseString
62    {
63      get { return customBaseString; }
64      set
65      {
66        if (customBaseString != value)
67        {
68          customBaseString = value;
69          RaiseChanged();
70        }
71      }
72    }
73
74    protected override string GetStringCore(LabelTickInfo<double> tickInfo)
75    {
76      double value = tickInfo.Tick / customBase;
77
78      string customBaseStr = customBaseString ?? customBase.ToString();
79      string result;
80      if (value == 1)
81        result = customBaseStr;
82      else if (value == -1)
83      {
84        result = "-" + customBaseStr;
85      }
86      else
87        result = value.ToString() + customBaseStr;
88
89      return result;
90    }
91  }
92}
Note: See TracBrowser for help on using the repository browser.