Ejemplo n.º 1
0
        /// <summary>
        /// Determine the value for any minor tic.
        /// </summary>
        /// <remarks>
        /// This method properly accounts for <see cref="IsLog"/>, <see cref="IsText"/>,
        /// and other axis format settings.
        /// </remarks>
        /// <param name="baseVal">
        /// The value of the first major tic (floating point double).  This tic value is the base
        /// reference for all tics (including minor ones).
        /// </param>
        /// <param name="iTic">
        /// The major tic number (0 = first major tic).  For log scales, this is the actual power of 10.
        /// </param>
        /// <returns>
        /// The specified minor tic value (floating point double).
        /// </returns>
        private double CalcMinorTicValue( double baseVal, int iTic )
        {
            double[] dLogVal = { 0, 0.301029995663981, 0.477121254719662, 0.602059991327962,
                                    0.698970004336019, 0.778151250383644, 0.845098040014257,
                                    0.903089986991944, 0.954242509439325, 1 };

            if ( this.IsDate ) // date scale
            {
                XDate xDate= new XDate( baseVal );

                switch ( this.minorUnit )
                {
                    case DateUnit.Year:
                    default:
                        xDate.AddYears( (double) iTic * this.minorStep );
                        break;
                    case DateUnit.Month:
                        xDate.AddMonths( (double) iTic * this.minorStep );
                        break;
                    case DateUnit.Day:
                        xDate.AddDays( (double) iTic * this.minorStep );
                        break;
                    case DateUnit.Hour:
                        xDate.AddHours( (double) iTic * this.minorStep );
                        break;
                    case DateUnit.Minute:
                        xDate.AddMinutes( (double) iTic * this.minorStep );
                        break;
                    case DateUnit.Second:
                        xDate.AddSeconds( (double) iTic * this.minorStep );
                        break;
                }

                return xDate.XLDate;
            }
            else if ( this.IsLog ) // log scale
            {
                return baseVal + Math.Floor( (double) iTic / 9.0 ) + dLogVal[ ( iTic + 9 ) % 9 ];
            }
            else // regular linear scale
            {
                return baseVal + (double) this.minorStep * (double) iTic;
            }
        }
Ejemplo n.º 2
0
		/// <summary>
		/// Determine the value for any minor tic.
		/// </summary>
		/// <remarks>
		/// This method properly accounts for <see cref="Scale.IsLog"/>, <see cref="Scale.IsText"/>,
		/// and other axis format settings.
		/// </remarks>
		/// <param name="baseVal">
		/// The value of the first major tic (floating point double).  This tic value is the base
		/// reference for all tics (including minor ones).
		/// </param>
		/// <param name="iTic">
		/// The major tic number (0 = first major tic).  For log scales, this is the actual power of 10.
		/// </param>
		/// <returns>
		/// The specified minor tic value (floating point double).
		/// </returns>
		internal override double CalcMinorTicValue(double baseVal, int iTic)
		{
			XDate xDate = new XDate(baseVal);

			switch (_minorUnit) {
				case DateUnit.Year:
				default:
					xDate.AddYears((double) iTic*_minorStep);
					break;
				case DateUnit.Month:
					xDate.AddMonths((double) iTic*_minorStep);
					break;
				case DateUnit.Day:
					xDate.AddDays((double) iTic*_minorStep);
					break;
				case DateUnit.Hour:
					xDate.AddHours((double) iTic*_minorStep);
					break;
				case DateUnit.Minute:
					xDate.AddMinutes((double) iTic*_minorStep);
					break;
				case DateUnit.Second:
					xDate.AddSeconds((double) iTic*_minorStep);
					break;
			}

			return xDate.XLDate;
		}
Ejemplo n.º 3
0
        /// <summary>
        /// Determine the value for any major tic.
        /// </summary>
        /// <remarks>
        /// This method properly accounts for <see cref="IsLog"/>, <see cref="IsText"/>,
        /// and other axis format settings.
        /// </remarks>
        /// <param name="baseVal">
        /// The value of the first major tic (floating point double)
        /// </param>
        /// <param name="tic">
        /// The major tic number (0 = first major tic).  For log scales, this is the actual power of 10.
        /// </param>
        /// <returns>
        /// The specified major tic value (floating point double).
        /// </returns>
        private double CalcMajorTicValue( double baseVal, double tic )
        {
            if ( this.IsDate ) // date scale
            {
                XDate xDate = new XDate( baseVal );

                switch ( this.majorUnit )
                {
                    case DateUnit.Year:
                    default:
                        xDate.AddYears( tic * this.step );
                        break;
                    case DateUnit.Month:
                        xDate.AddMonths( tic * this.step );
                        break;
                    case DateUnit.Day:
                        xDate.AddDays( tic * this.step );
                        break;
                    case DateUnit.Hour:
                        xDate.AddHours( tic * this.step );
                        break;
                    case DateUnit.Minute:
                        xDate.AddMinutes( tic * this.step );
                        break;
                    case DateUnit.Second:
                        xDate.AddSeconds( tic * this.step );
                        break;
                }

                return xDate.XLDate;
            }
            else if ( this.IsLog ) // log scale
            {
                return baseVal + (double) tic;
            }
            else // regular linear scale
            {
                return baseVal + (double) this.step * tic;
            }
        }