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'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 Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related 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 >= QMIN(d_x1, d_x2)) && (x <= 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 >= QMIN(d_y1, d_y2)) && (x <= 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 < LogMin)
00090 d1 = LogMin;
00091 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d1 > LogMax)
00092 d1 = LogMax;
00093
00094 <span class="keywordflow">if</span> (d2 < LogMin)
00095 d2 = LogMin;
00096 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d2 > 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 > LogMax)
00159 x = LogMax;
00160 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (x < LogMin)
00161 x = LogMin;
00162 x = log(x);
00163 }
00164
00165 <span class="keywordflow">if</span> ( x > qwtMax(d_x1, d_x2) )
00166 x = qwtMax(d_x1, d_x2);
00167 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( x < 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>
|