1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *****************************************************************************/
9
10 #include "qwt_transform.h"
11 #include "qwt_math.h"
12
13 #if QT_VERSION < 0x040601
14 #define qExp(x) ::exp(x)
15 #endif
16
17 #if QT_VERSION >= 0x050400
18
19 //! Smallest allowed value for logarithmic scales: 1.0e-150
20 const double QwtLogTransform::LogMin = 1.0e-150;
21
22 //! Largest allowed value for logarithmic scales: 1.0e150
23 const double QwtLogTransform::LogMax = 1.0e150;
24
25 #else
26
27 //! Smallest allowed value for logarithmic scales: 1.0e-150
28 QT_STATIC_CONST_IMPL double QwtLogTransform::LogMin = 1.0e-150;
29
30 //! Largest allowed value for logarithmic scales: 1.0e150
31 QT_STATIC_CONST_IMPL double QwtLogTransform::LogMax = 1.0e150;
32
33 #endif
34
35 //! Constructor
QwtTransform()36 QwtTransform::QwtTransform()
37 {
38 }
39
40 //! Destructor
~QwtTransform()41 QwtTransform::~QwtTransform()
42 {
43 }
44
45 /*!
46 \param value Value to be bounded
47 \return value unmodified
48 */
bounded(double value) const49 double QwtTransform::bounded( double value ) const
50 {
51 return value;
52 }
53
54 //! Constructor
QwtNullTransform()55 QwtNullTransform::QwtNullTransform():
56 QwtTransform()
57 {
58 }
59
60 //! Destructor
~QwtNullTransform()61 QwtNullTransform::~QwtNullTransform()
62 {
63 }
64
65 /*!
66 \param value Value to be transformed
67 \return value unmodified
68 */
transform(double value) const69 double QwtNullTransform::transform( double value ) const
70 {
71 return value;
72 }
73
74 /*!
75 \param value Value to be transformed
76 \return value unmodified
77 */
invTransform(double value) const78 double QwtNullTransform::invTransform( double value ) const
79 {
80 return value;
81 }
82
83 //! \return Clone of the transformation
copy() const84 QwtTransform *QwtNullTransform::copy() const
85 {
86 return new QwtNullTransform();
87 }
88
89 //! Constructor
QwtLogTransform()90 QwtLogTransform::QwtLogTransform():
91 QwtTransform()
92 {
93 }
94
95 //! Destructor
~QwtLogTransform()96 QwtLogTransform::~QwtLogTransform()
97 {
98 }
99
100 /*!
101 \param value Value to be transformed
102 \return log( value )
103 */
transform(double value) const104 double QwtLogTransform::transform( double value ) const
105 {
106 return ::log( value );
107 }
108
109 /*!
110 \param value Value to be transformed
111 \return exp( value )
112 */
invTransform(double value) const113 double QwtLogTransform::invTransform( double value ) const
114 {
115 return qExp( value );
116 }
117
118 /*!
119 \param value Value to be bounded
120 \return qBound( LogMin, value, LogMax )
121 */
bounded(double value) const122 double QwtLogTransform::bounded( double value ) const
123 {
124 return qBound( LogMin, value, LogMax );
125 }
126
127 //! \return Clone of the transformation
copy() const128 QwtTransform *QwtLogTransform::copy() const
129 {
130 return new QwtLogTransform();
131 }
132
133 /*!
134 Constructor
135 \param exponent Exponent
136 */
QwtPowerTransform(double exponent)137 QwtPowerTransform::QwtPowerTransform( double exponent ):
138 QwtTransform(),
139 d_exponent( exponent )
140 {
141 }
142
143 //! Destructor
~QwtPowerTransform()144 QwtPowerTransform::~QwtPowerTransform()
145 {
146 }
147
148 /*!
149 \param value Value to be transformed
150 \return Exponentiation preserving the sign
151 */
transform(double value) const152 double QwtPowerTransform::transform( double value ) const
153 {
154 if ( value < 0.0 )
155 return -qPow( -value, 1.0 / d_exponent );
156 else
157 return qPow( value, 1.0 / d_exponent );
158
159 }
160
161 /*!
162 \param value Value to be transformed
163 \return Inverse exponentiation preserving the sign
164 */
invTransform(double value) const165 double QwtPowerTransform::invTransform( double value ) const
166 {
167 if ( value < 0.0 )
168 return -qPow( -value, d_exponent );
169 else
170 return qPow( value, d_exponent );
171 }
172
173 //! \return Clone of the transformation
copy() const174 QwtTransform *QwtPowerTransform::copy() const
175 {
176 return new QwtPowerTransform( d_exponent );
177 }
178