18 #include "msdevstudio/MSconfig.h"
37 using namespace hippodraw;
69 double low = range.
low();
70 double high = range.
high();
71 double rangeMag = high / low;
74 m_rmag = floor( log10( rangeMag ) );
77 m_pmag = ceil( log10( low ) );
81 double m_tmag = floor(
m_rmag / 3.0 );
106 double low = init_range.
low();
107 double high = init_range.
high();
109 myhigh = mylow = pow( 10.0,
m_pmag );
119 while( myhigh <= high * m_scale_factor ) {
125 if( myhigh / mylow < 10.0 ) {
131 while( myhigh / mylow < 10.0 ) {
138 Range new_range ( mylow, myhigh, init_range.
pos() );
143 double new_width = new_range.
length();
144 double init_width = init_range.
length();
146 if ( new_width > init_width * 10 ){
162 Range newRange ( low, high, init_range.
pos() );
187 double low = r.
low();
188 double high = r.
high();
189 double pos = r.
pos();
191 if( low > 0.0 )
return r;
195 double l = pos / 10.0;
196 double h = pos * 10.0;
201 if( pos == DBL_MAX || pos <= 0.0 ) {
213 if( tick_step == 1.0 ) {
214 int base =
static_cast<int>( current /
215 pow( 10.0, floor( log10( current ) ) ) );
244 current *= tick_step;
254 if( tick_step == 1.0 ) {
255 int base =
static_cast<int>( current /
256 pow( 10.0, floor( log10( current ) ) ) );
282 current /= tick_step;
296 double k = log10 ( high / low );
298 double x = ( parm - 50 ) / 50.0;
300 double new_low = low * pow ( 10.0, k * x );
302 new_low = max ( new_low, 10.0 * DBL_EPSILON );
303 new_low = min ( new_low, high - 100.0 * DBL_EPSILON );
319 double k = log10 ( high / low );
321 double multiplier = ( parm - 50 ) / 50.0;
323 double new_high = high * pow ( 10.0, k * multiplier );