Integration of OCCT 6.5.0 from SVN
[occt.git] / src / Message / Message_ProgressScale.cxx
CommitLineData
7fd59977 1#include <Message_ProgressScale.ixx>
2
3static const Standard_Real ZERO = 1e-10;
4static const Standard_Real INFINITE = 1e100;
5
6//=======================================================================
7//function : Message_ProgressScale
8//purpose :
9//=======================================================================
10
11Message_ProgressScale::Message_ProgressScale () :
12 myMin(0.), myMax(100.), myStep(1.), myInfinite(Standard_False),
13 myFirst(0.), myLast(1.)
14{
15}
16
17//=======================================================================
18//function : LocalToBase
19//purpose :
20//=======================================================================
21
22Standard_Real Message_ProgressScale::LocalToBase (const Standard_Real val) const
23{
24 if ( val <= myMin ) return myFirst;
25 if ( myMax - myMin <= ZERO ) return myLast;
26
27 if ( ! myInfinite ) {
28 if ( val >= myMax ) return myLast;
29 return myFirst + ( myLast - myFirst ) * ( val - myMin ) / ( myMax - myMin );
30 }
31 Standard_Real x = ( val - myMin ) / ( myMax - myMin );
32// return myFirst + ( myLast - myFirst ) * ( 1. - exp ( -x ) ); // exponent
33 return myFirst + ( myLast - myFirst ) * x / ( 1. + x ); // hyperbola
34}
35
36//=======================================================================
37//function : BaseToLocal
38//purpose :
39//=======================================================================
40
41Standard_Real Message_ProgressScale::BaseToLocal (const Standard_Real val) const
42{
43 if ( myLast - val <= ZERO )
44 return myInfinite ? INFINITE : myMax;
45 if ( ! myInfinite )
46 return myMin + ( myMax - myMin ) * ( val - myFirst ) / ( myLast - myFirst );
47// Standard_Real x = log ( ( val - myFirst ) / ( myLast - val ) ); // exponent
48 Standard_Real x = ( val - myFirst ) / ( myLast - val ); // hyperbola
49 return myMin + x * ( myMax - myMin );
50}