📄 qwt__round__scale__draw_8cpp-source.html
字号:
<a name="l00174"></a>00174 <a name="l00175"></a>00175 <span class="keywordtype">double</span> <a class="code" href="class_qwt_round_scale_draw.html#2eb03d12749a44f7ca8a8ff92514dd56">radius</a> = d_data->radius;<a name="l00176"></a>00176 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Ticks) ||<a name="l00177"></a>00177 <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Backbone) )<a name="l00178"></a>00178 {<a name="l00179"></a>00179 radius += <a class="code" href="class_qwt_abstract_scale_draw.html#b31323219c1a750adde91470698cfa0f">spacing</a>();<a name="l00180"></a>00180 }<a name="l00181"></a>00181 <a name="l00182"></a>00182 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Ticks) )<a name="l00183"></a>00183 radius += <a class="code" href="class_qwt_abstract_scale_draw.html#70d03241a4502cf546c5075d28658601">majTickLength</a>();<a name="l00184"></a>00184 <a name="l00185"></a>00185 <span class="keyword">const</span> QSize sz = <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#6e7ff0a75f1eecc37478f9ca643da379">textSize</a>(painter->font());<a name="l00186"></a>00186 <span class="keyword">const</span> <span class="keywordtype">double</span> arc = tval / 16.0 / 360.0 * 2 * M_PI;<a name="l00187"></a>00187 <a name="l00188"></a>00188 <span class="keyword">const</span> <span class="keywordtype">int</span> x = d_data->center.x() +<a name="l00189"></a>00189 qRound((radius + sz.width() / 2.0) * sin(arc));<a name="l00190"></a>00190 <span class="keyword">const</span> <span class="keywordtype">int</span> y = d_data->center.y() -<a name="l00191"></a>00191 qRound( (radius + sz.height() / 2.0) * cos(arc));<a name="l00192"></a>00192 <a name="l00193"></a>00193 <span class="keyword">const</span> QRect r(x - sz.width() / 2, y - sz.height() / 2,<a name="l00194"></a>00194 sz.width(), sz.height() );<a name="l00195"></a>00195 <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#3907eb112ff2259adbaad4c433178354">draw</a>(painter, r);<a name="l00196"></a>00196 }<a name="l00197"></a>00197 <a name="l00207"></a><a class="code" href="class_qwt_round_scale_draw.html#a4f77a6cbb019ca42f857bf2019acff2">00207</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_round_scale_draw.html#a4f77a6cbb019ca42f857bf2019acff2">QwtRoundScaleDraw::drawTick</a>(QPainter *painter, <span class="keywordtype">double</span> value, <span class="keywordtype">int</span> len)<span class="keyword"> const</span><a name="l00208"></a>00208 <span class="keyword"></span>{<a name="l00209"></a>00209 <span class="keywordflow">if</span> ( len <= 0 )<a name="l00210"></a>00210 <span class="keywordflow">return</span>;<a name="l00211"></a>00211 <a name="l00212"></a>00212 <span class="keyword">const</span> <span class="keywordtype">int</span> tval = <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(value);<a name="l00213"></a>00213 <a name="l00214"></a>00214 <span class="keyword">const</span> <span class="keywordtype">int</span> cx = d_data->center.x();<a name="l00215"></a>00215 <span class="keyword">const</span> <span class="keywordtype">int</span> cy = d_data->center.y();<a name="l00216"></a>00216 <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="class_qwt_round_scale_draw.html#2eb03d12749a44f7ca8a8ff92514dd56">radius</a> = d_data->radius;<a name="l00217"></a>00217 <a name="l00218"></a>00218 <span class="keywordflow">if</span> ((tval <= d_data->minAngle + 359 * 16)<a name="l00219"></a>00219 || (tval >= d_data->minAngle - 359 * 16))<a name="l00220"></a>00220 {<a name="l00221"></a>00221 <span class="keyword">const</span> <span class="keywordtype">double</span> arc = double(tval) / 16.0 * M_PI / 180.0;<a name="l00222"></a>00222 <a name="l00223"></a>00223 <span class="keyword">const</span> <span class="keywordtype">double</span> sinArc = sin(arc);<a name="l00224"></a>00224 <span class="keyword">const</span> <span class="keywordtype">double</span> cosArc = cos(arc);<a name="l00225"></a>00225 <a name="l00226"></a>00226 <span class="keyword">const</span> <span class="keywordtype">int</span> x1 = qRound( cx + radius * sinArc );<a name="l00227"></a>00227 <span class="keyword">const</span> <span class="keywordtype">int</span> x2 = qRound( cx + (radius + len) * sinArc );<a name="l00228"></a>00228 <span class="keyword">const</span> <span class="keywordtype">int</span> y1 = qRound( cy - radius * cosArc );<a name="l00229"></a>00229 <span class="keyword">const</span> <span class="keywordtype">int</span> y2 = qRound( cy - (radius + len) * cosArc );<a name="l00230"></a>00230 <a name="l00231"></a>00231 <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(painter, x1, y1, x2, y2);<a name="l00232"></a>00232 }<a name="l00233"></a>00233 }<a name="l00234"></a>00234 <a name="l00241"></a><a class="code" href="class_qwt_round_scale_draw.html#845dc48b006ee168415112f39e80da09">00241</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_round_scale_draw.html#845dc48b006ee168415112f39e80da09">QwtRoundScaleDraw::drawBackbone</a>(QPainter *painter)<span class="keyword"> const</span><a name="l00242"></a>00242 <span class="keyword"></span>{<a name="l00243"></a>00243 <span class="keyword">const</span> <span class="keywordtype">int</span> a1 = qRound(qwtMin(<a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p1(), <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p2()) - 90 * 16);<a name="l00244"></a>00244 <span class="keyword">const</span> <span class="keywordtype">int</span> a2 = qRound(qwtMax(<a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p1(), <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().p2()) - 90 * 16);<a name="l00245"></a>00245 <a name="l00246"></a>00246 <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="class_qwt_round_scale_draw.html#2eb03d12749a44f7ca8a8ff92514dd56">radius</a> = d_data->radius;<a name="l00247"></a>00247 <span class="keyword">const</span> <span class="keywordtype">int</span> x = d_data->center.x() - radius;<a name="l00248"></a>00248 <span class="keyword">const</span> <span class="keywordtype">int</span> y = d_data->center.y() - radius;<a name="l00249"></a>00249 <a name="l00250"></a>00250 painter->drawArc(x, y, 2 * radius, 2 * radius,<a name="l00251"></a>00251 -a2, a2 - a1 + 1); <span class="comment">// counterclockwise</span><a name="l00252"></a>00252 }<a name="l00253"></a>00253 <a name="l00269"></a><a class="code" href="class_qwt_round_scale_draw.html#50f5d69dceab6ccf5e00bd2a7953d897">00269</a> <span class="keywordtype">int</span> <a class="code" href="class_qwt_round_scale_draw.html#50f5d69dceab6ccf5e00bd2a7953d897">QwtRoundScaleDraw::extent</a>(<span class="keyword">const</span> QPen &pen, <span class="keyword">const</span> QFont &font)<span class="keyword"> const</span><a name="l00270"></a>00270 <span class="keyword"></span>{<a name="l00271"></a>00271 <span class="keywordtype">int</span> d = 0;<a name="l00272"></a>00272 <a name="l00273"></a>00273 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#95d74d9eaa5520754295efb33a4db50f">hasComponent</a>(QwtAbstractScaleDraw::Labels) )<a name="l00274"></a>00274 {<a name="l00275"></a>00275 <span class="keyword">const</span> <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a> &sd = <a class="code" href="class_qwt_abstract_scale_draw.html#82510027cd5bee269628c9d6302a19a9">scaleDiv</a>();<a name="l00276"></a>00276 <span class="keyword">const</span> QwtValueList &ticks = sd.<a class="code" href="class_qwt_scale_div.html#c6310b93e4b505e62d2141ba6a8e90ee">ticks</a>(QwtScaleDiv::MajorTick);<a name="l00277"></a>00277 <span class="keywordflow">for</span> (uint i = 0; i < (uint)ticks.count(); i++)<a name="l00278"></a>00278 {<a name="l00279"></a>00279 <span class="keyword">const</span> <span class="keywordtype">double</span> value = ticks[i];<a name="l00280"></a>00280 <span class="keywordflow">if</span> ( !sd.<a class="code" href="class_qwt_scale_div.html#9fe271ba1bee08d01033ce964c3216c1">contains</a>(value) )<a name="l00281"></a>00281 <span class="keywordflow">continue</span>;<a name="l00282"></a>00282 <a name="l00283"></a>00283 <span class="keyword">const</span> <a class="code" href="class_qwt_text.html">QwtText</a> <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a> = <a class="code" href="class_qwt_abstract_scale_draw.html#5e703dcb115a51024f89f92e61c2c8d8">tickLabel</a>(font, value);<a name="l00284"></a>00284 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#25843b1120b648752ed5be2247ebe43f">isEmpty</a>() )<a name="l00285"></a>00285 <span class="keywordflow">continue</span>;<a name="l00286"></a>00286 <a name="l00287"></a>00287 <span class="keyword">const</span> <span class="keywordtype">int</span> tval = <a class="code" href="class_qwt_abstract_scale_draw.html#9777f34effee2395dde92a42ef7902fd">map</a>().<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(value);<a name="l00288"></a>00288 <span class="keywordflow">if</span> ((tval < d_data->minAngle + 360 * 16)<a name="l00289"></a>00289 && (tval > d_data->minAngle - 360 * 16))<a name="l00290"></a>00290 {<a name="l00291"></a>00291 <span class="keyword">const</span> <span class="keywordtype">double</span> arc = tval / 16.0 / 360.0 * 2 * M_PI;<a name="l00292"></a>00292 <a name="l00293"></a>00293 <span class="keyword">const</span> QSize sz = <a class="code" href="class_qwt_abstract_scale_draw.html#4ff88bc827dd6c6ca9298de13483b61f">label</a>.<a class="code" href="class_qwt_text.html#6e7ff0a75f1eecc37478f9ca643da379">textSize</a>(font);<a name="l00294"></a>00294 <span class="keyword">const</span> <span class="keywordtype">double</span> off = qwtMax(sz.width(), sz.height());<a name="l00295"></a>00295 <a name="l00296"></a>00296 <span class="keywordtype">double</span> x = off * sin(arc);<a name="l00297"></a>00297 <span class="keywordtype">double</span> y = off * cos(arc);<a name="l00298"></a>00298 <a name="l00299"></a>00299 <span class="keyword">const</span> <span class="keywordtype">int</span> dist = (int)ceil(sqrt(x * x + y * y) + 1 );<a name="l00300"></a>00300 <span class="keywordflow">if</span> ( dist > d )<a name="l00301"></a>00301 d = dist;<a name="l00302"></a>00302 }<a name="l00303"></a>00303 }<a name="l00304"></a>00304 }<a name="l00305"></a>00305 <a name="l00306"></a>00306 <span class="keywordflow">if</span> ( hasComponent(QwtAbstractScaleDraw::Ticks) )<a name="l00307"></a>00307 {<a name="l00308"></a>00308 d += majTickLength();<a name="l00309"></a>00309 }<a name="l00310"></a>00310 <a name="l00311"></a>00311 <span class="keywordflow">if</span> ( hasComponent(QwtAbstractScaleDraw::Backbone) )<a name="l00312"></a>00312 {<a name="l00313"></a>00313 <span class="keyword">const</span> <span class="keywordtype">int</span> pw = qwtMax( 1, pen.width() ); <span class="comment">// penwidth can be zero</span><a name="l00314"></a>00314 d += pw;<a name="l00315"></a>00315 }<a name="l00316"></a>00316 <a name="l00317"></a>00317 <span class="keywordflow">if</span> ( hasComponent(QwtAbstractScaleDraw::Labels) &&<a name="l00318"></a>00318 ( hasComponent(QwtAbstractScaleDraw::Ticks) || <a name="l00319"></a>00319 hasComponent(QwtAbstractScaleDraw::Backbone) ) )<a name="l00320"></a>00320 {<a name="l00321"></a>00321 d += spacing();<a name="l00322"></a>00322 }<a name="l00323"></a>00323 <a name="l00324"></a>00324 d = qwtMax(d, minimumExtent());<a name="l00325"></a>00325 <a name="l00326"></a>00326 <span class="keywordflow">return</span> d;<a name="l00327"></a>00327 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Feb 26 21:22:38 2007 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.4.6 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -