00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef Qwav_DEFINES_H
00019 #define Qwav_DEFINES_H
00020
00021
00022
00023
00024
00025 #include <math.h>
00026
00027
00028
00029
00030
00031 #ifdef Qwav_USE_DOUBLE
00032 typedef double Float;
00033 #else
00034 typedef float Float;
00035 #endif
00036
00037
00038
00039
00040
00041 #ifndef Qwav_NO_NAMESPACE
00042 #define Qwav_BEGIN_NAMESPACE namespace qwav {
00043 #define Qwav_END_NAMESPACE }
00044 #define Qwav_USING_NAMESPACE using namespace qwav;
00045 #else
00046 #define Qwav_BEGIN_NAMESPACE
00047 #define Qwav_END_NAMESPACE
00048 #define Qwav_USING_NAMESPACE
00049 #endif
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 #if defined(_WIN32)
00062 # ifdef QWAV_COMPILELIBQWAV
00063 # define QWAV_EXPORTIMPORT __declspec(dllexport)
00064 # else
00065 # define QWAV_EXPORTIMPORT __declspec(dllimport)
00066 # endif
00067 #else
00068 # define QWAV_EXPORTIMPORT
00069 #endif
00070
00071 Qwav_BEGIN_NAMESPACE
00072
00073
00074
00075
00076
00088 template <typename T>
00089 T mapInterval(const T& val,
00090 const T& srcMin, const T& srcMax,
00091 const T& dstMin, const T& dstMax)
00092 {
00093 return (val-srcMin) / ((srcMax-srcMin)/(dstMax-dstMin)) + dstMin;
00094 }
00095
00096
00097
00098
00099
00100
00108 inline long pixel2Sample(int pixel,
00109 long firstSample,
00110 double zoomFac )
00111 {
00112 long sample = long( rint(firstSample + double(pixel) * zoomFac) );
00113 return sample;
00114 }
00115
00116
00117
00118
00119
00120
00121
00128 inline int sample2Pixel(long sample,
00129 long firstSample,
00130 double zoomFac)
00131 {
00132 if( sample - firstSample == 0 ) return 0;
00133 int result = int( rint(double(sample - firstSample) / zoomFac) );
00134
00135 return result;
00136 }
00137
00138
00139
00140
00141
00142
00149 template <class T>
00150 void clamp(T& val, T min, T max)
00151 {
00152 assert( min < max );
00153
00154 if( val < min )
00155 {
00156 val = min;
00157 return;
00158 }
00159 if( val > max )
00160 val = max;
00161 }
00162
00163
00164
00165
00166
00167 inline int valToPixelY( double val,
00168 int height,
00169 double zoomY,
00170 unsigned int topBorderDist=0,
00171 unsigned int bottomBorderDist=0 )
00172 {
00173 return int( rint( mapInterval(-val*zoomY,
00174 -1.0, 1.0,
00175 0.0+topBorderDist,
00176 double(height-1)-bottomBorderDist )) );
00177 }
00178
00179 Qwav_END_NAMESPACE
00180
00181
00182 #endif //Qwav_DEFINES_H
00183