internal static void PickScale( GraphPane pane, Graphics g, float scaleFactor, Scale scale ) { // Test for trivial condition of range = 0 and pick a suitable default if ( scale._max - scale._min < 1.0 ) { if ( scale._maxAuto ) scale._max = scale._min + 0.5; else scale._min = scale._max - 0.5; } else { // Calculate the new step size if ( scale._majorStepAuto ) { // Calculate the step size based on targetSteps scale._majorStep = CalcStepSize( scale._max - scale._min, ( scale._ownerAxis is XAxis || scale._ownerAxis is X2Axis ) ? Default.TargetXSteps : Default.TargetYSteps ); if ( scale.IsPreventLabelOverlap ) { // Calculate the maximum number of labels double maxLabels = scale.CalcMaxLabels( g, pane, scaleFactor ); // Calculate a step size based on the width of the labels double tmpStep = Math.Ceiling( ( scale._max - scale._min ) / maxLabels ); // Use the greater of the two step sizes if ( tmpStep > scale._majorStep ) scale._majorStep = tmpStep; } } scale._majorStep = (int)scale._majorStep; if ( scale._majorStep < 1.0 ) scale._majorStep = 1.0; // Calculate the new minor step size if ( scale._minorStepAuto ) scale._minorStep = CalcStepSize( scale._majorStep, ( scale._ownerAxis is XAxis || scale._ownerAxis is X2Axis ) ? Default.TargetMinorXSteps : Default.TargetMinorYSteps ); if ( scale._minAuto ) scale._min -= 0.5; if ( scale._maxAuto ) scale._max += 0.5; } }