File: qwt__dimap_8cpp-source.html

package info (click to toggle)
libqwt 4.2.0-4.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 9,832 kB
  • ctags: 5,512
  • sloc: cpp: 22,973; ansic: 244; makefile: 66
file content (144 lines) | stat: -rw-r--r-- 8,536 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Qwt User&apos;s Guide: qwt_dimap.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.8 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>qwt_dimap.cpp</h1><pre class="fragment"><div>00001 <span class="comment">/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************</span>
00002 <span class="comment"> * Qwt Widget Library</span>
00003 <span class="comment"> * Copyright (C) 1997   Josef Wilgen</span>
00004 <span class="comment"> * Copyright (C) 2002   Uwe Rathmann</span>
00005 <span class="comment"> * </span>
00006 <span class="comment"> * This library is free software; you can redistribute it and/or</span>
00007 <span class="comment"> * modify it under the terms of the Qwt License, Version 1.0</span>
00008 <span class="comment"> *****************************************************************************/</span>
00009 
00010 <span class="preprocessor">#include "qwt_dimap.h"</span>
00011 
00012 QT_STATIC_CONST_IMPL <span class="keywordtype">double</span> QwtDiMap::LogMin = 1.0e-150;
00013 QT_STATIC_CONST_IMPL <span class="keywordtype">double</span> QwtDiMap::LogMax = 1.0e150;
00014 
<a name="l00020"></a><a class="code" href="class_qwt_di_map.html#a0">00020</a> <a class="code" href="class_qwt_di_map.html#a0">QwtDiMap::QwtDiMap</a>():
00021     d_x1(0.0),
00022     d_x2(1.0),
00023     d_y1(0),
00024     d_y2(1),
00025     d_cnv(1.0),
00026     d_log(FALSE)
00027 {
00028 }
00029 
00030 
<a name="l00043"></a><a class="code" href="class_qwt_di_map.html#a1">00043</a> <a class="code" href="class_qwt_di_map.html#a0">QwtDiMap::QwtDiMap</a>(<span class="keywordtype">int</span> i1, <span class="keywordtype">int</span> i2, <span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2, <span class="keywordtype">bool</span> logarithmic)
00044 {
00045     <span class="comment">// setIntRange(i1, i2)  calls newFactor() with uninitialized memory</span>
00046     d_y1 = i1;
00047     d_y2 = i2;
00048     <a class="code" href="class_qwt_di_map.html#a6">setDblRange</a>(d1, d2, logarithmic);
00049 }
00050 
<a name="l00054"></a><a class="code" href="class_qwt_di_map.html#a2">00054</a> <a class="code" href="class_qwt_di_map.html#a2">QwtDiMap::~QwtDiMap</a>()
00055 {
00056 }
00057 
<a name="l00063"></a><a class="code" href="class_qwt_di_map.html#a3">00063</a> <span class="keywordtype">bool</span> <a class="code" href="class_qwt_di_map.html#a3">QwtDiMap::contains</a>(<span class="keywordtype">double</span> x)<span class="keyword"> const</span>
00064 <span class="keyword"></span>{
00065     <span class="keywordflow">return</span> ( (x &gt;= QMIN(d_x1, d_x2)) &amp;&amp; (x &lt;= QMAX(d_x1, d_x2)));
00066 }
00067 
<a name="l00073"></a><a class="code" href="class_qwt_di_map.html#a4">00073</a> <span class="keywordtype">bool</span> <a class="code" href="class_qwt_di_map.html#a3">QwtDiMap::contains</a>(<span class="keywordtype">int</span> x)<span class="keyword"> const</span>
00074 <span class="keyword"></span>{
00075     <span class="keywordflow">return</span> ( (x &gt;= QMIN(d_y1, d_y2)) &amp;&amp; (x &lt;= QMAX(d_y1, d_y2)));
00076 }
00077 
<a name="l00084"></a><a class="code" href="class_qwt_di_map.html#a6">00084</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_di_map.html#a6">QwtDiMap::setDblRange</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2, <span class="keywordtype">bool</span> lg)
00085 {
00086     <span class="keywordflow">if</span> (lg)
00087     {
00088         d_log = TRUE;
00089         <span class="keywordflow">if</span> (d1 &lt; LogMin) 
00090            d1 = LogMin;
00091         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d1 &gt; LogMax) 
00092            d1 = LogMax;
00093         
00094         <span class="keywordflow">if</span> (d2 &lt; LogMin) 
00095            d2 = LogMin;
00096         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d2 &gt; LogMax) 
00097            d2 = LogMax;
00098         
00099         d_x1 = log(d1);
00100         d_x2 = log(d2);
00101     }
00102     <span class="keywordflow">else</span>
00103     {
00104         d_log = FALSE;
00105         d_x1 = d1;
00106         d_x2 = d2;
00107     }
00108     newFactor();
00109 }
00110 
<a name="l00116"></a><a class="code" href="class_qwt_di_map.html#a5">00116</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_di_map.html#a5">QwtDiMap::setIntRange</a>(<span class="keywordtype">int</span> i1, <span class="keywordtype">int</span> i2)
00117 {
00118     d_y1 = i1;
00119     d_y2 = i2;
00120     newFactor();
00121 }
00122 
<a name="l00132"></a><a class="code" href="class_qwt_di_map.html#a8">00132</a> <span class="keywordtype">double</span> <a class="code" href="class_qwt_di_map.html#a8">QwtDiMap::invTransform</a>(<span class="keywordtype">int</span> y)<span class="keyword"> const </span>
00133 <span class="keyword"></span>{
00134     <span class="keywordflow">if</span> (d_cnv == 0.0)
00135        <span class="keywordflow">return</span> 0.0;
00136     <span class="keywordflow">else</span>
00137     {
00138         <span class="keywordflow">if</span>(d_log) 
00139            <span class="keywordflow">return</span> exp(d_x1 + <span class="keywordtype">double</span>(y - d_y1) / d_cnv );
00140         <span class="keywordflow">else</span>
00141            <span class="keywordflow">return</span> ( d_x1 + double(y - d_y1) / d_cnv );  
00142     }
00143 }
00144 
<a name="l00155"></a><a class="code" href="class_qwt_di_map.html#a9">00155</a> <span class="keywordtype">int</span> <a class="code" href="class_qwt_di_map.html#a9">QwtDiMap::limTransform</a>(<span class="keywordtype">double</span> x)<span class="keyword"> const</span>
00156 <span class="keyword"></span>{
00157     <span class="keywordflow">if</span> (d_log) {
00158     <span class="keywordflow">if</span> (x &gt; LogMax)
00159         x = LogMax;
00160     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (x &lt; LogMin)
00161         x = LogMin;
00162     x = log(x);
00163     }
00164 
00165     <span class="keywordflow">if</span> ( x &gt; qwtMax(d_x1, d_x2) )
00166     x = qwtMax(d_x1, d_x2);
00167     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( x &lt; qwtMin(d_x1, d_x2))
00168     x = qwtMin(d_x1, d_x2);
00169 
00170     <span class="keywordflow">return</span> d_log ? <a class="code" href="class_qwt_di_map.html#a7">transform</a>(exp(x)) : <a class="code" href="class_qwt_di_map.html#a7">transform</a>(x);
00171 }
00172 
<a name="l00185"></a><a class="code" href="class_qwt_di_map.html#a10">00185</a> <span class="keywordtype">double</span> <a class="code" href="class_qwt_di_map.html#a10">QwtDiMap::xTransform</a>(<span class="keywordtype">double</span> x)<span class="keyword"> const</span>
00186 <span class="keyword"></span>{
00187     <span class="keywordtype">double</span> rv;
00188     
00189     <span class="keywordflow">if</span> (d_log)
00190        rv = double(d_y1) + (log(x) - d_x1) * d_cnv;    
00191     <span class="keywordflow">else</span>
00192        rv = double(d_y1) + (x - d_x1) * d_cnv;
00193 
00194     <span class="keywordflow">return</span> rv;
00195 }
00196 
00197 
00201 <span class="keywordtype">void</span> QwtDiMap::newFactor()
00202 {
00203     <span class="keywordflow">if</span> (d_x2 != d_x1)
00204        d_cnv = double(d_y2 - d_y1) / (d_x2 - d_x1); 
00205     <span class="keywordflow">else</span> 
00206        d_cnv = 0.0;
00207 }
</div></pre><hr size="1"><address style="align: right;"><small>Generated on Tue Nov 16 21:12:20 2004 for Qwt User's Guide by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.8 </small></address>
</body>
</html>