📄 qwt__plot__magnifier_8cpp-source.html
字号:
<a name="l00271"></a>00271 {<a name="l00272"></a>00272 <span class="keywordflow">if</span> ( me->button() != d_data->mouseButton )<a name="l00273"></a>00273 <span class="keywordflow">return</span>;<a name="l00274"></a>00274 <a name="l00275"></a>00275 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00276"></a>00276 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( (me->state() & Qt::KeyButtonMask) !=<a name="l00277"></a>00277 (d_data->mouseButtonState & Qt::KeyButtonMask) )<a name="l00278"></a>00278 #<span class="keywordflow">else</span><a name="l00279"></a>00279 <span class="keywordflow">if</span> ( (me->modifiers() & Qt::KeyboardModifierMask) !=<a name="l00280"></a>00280 (<span class="keywordtype">int</span>)(d_data->mouseButtonState & Qt::KeyboardModifierMask) )<a name="l00281"></a>00281 <span class="preprocessor">#endif</span><a name="l00282"></a>00282 <span class="preprocessor"></span> {<a name="l00283"></a>00283 <span class="keywordflow">return</span>;<a name="l00284"></a>00284 }<a name="l00285"></a>00285 <a name="l00286"></a>00286 d_data->hasMouseTracking = <a class="code" href="class_qwt_plot_magnifier.html#947d94f9517bb096851738b5c2bf4b7d">canvas</a>()->hasMouseTracking();<a name="l00287"></a>00287 <a class="code" href="class_qwt_plot_magnifier.html#947d94f9517bb096851738b5c2bf4b7d">canvas</a>()->setMouseTracking(<span class="keyword">true</span>);<a name="l00288"></a>00288 d_data->mousePos = me->pos();<a name="l00289"></a>00289 d_data->mousePressed = <span class="keyword">true</span>;<a name="l00290"></a>00290 }<a name="l00291"></a>00291 <a name="l00292"></a><a class="code" href="class_qwt_plot_magnifier.html#c49949cda6c26f8fc55e6d7970a46b55">00292</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_magnifier.html#c49949cda6c26f8fc55e6d7970a46b55">QwtPlotMagnifier::widgetMouseReleaseEvent</a>(QMouseEvent *)<a name="l00293"></a>00293 {<a name="l00294"></a>00294 d_data->mousePressed = <span class="keyword">false</span>;<a name="l00295"></a>00295 <a class="code" href="class_qwt_plot_magnifier.html#947d94f9517bb096851738b5c2bf4b7d">canvas</a>()->setMouseTracking(d_data->hasMouseTracking);<a name="l00296"></a>00296 }<a name="l00297"></a>00297 <a name="l00298"></a><a class="code" href="class_qwt_plot_magnifier.html#36181a5722bbc2b12628de7c1c86234e">00298</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_magnifier.html#36181a5722bbc2b12628de7c1c86234e">QwtPlotMagnifier::widgetMouseMoveEvent</a>(QMouseEvent *me)<a name="l00299"></a>00299 {<a name="l00300"></a>00300 <span class="keywordflow">if</span> ( !d_data->mousePressed )<a name="l00301"></a>00301 <span class="keywordflow">return</span>;<a name="l00302"></a>00302 <a name="l00303"></a>00303 <span class="keyword">const</span> <span class="keywordtype">int</span> dy = me->pos().y() - d_data->mousePos.y();<a name="l00304"></a>00304 <span class="keywordflow">if</span> ( dy != 0 )<a name="l00305"></a>00305 {<a name="l00306"></a>00306 <span class="keywordtype">double</span> f = d_data->mouseFactor;<a name="l00307"></a>00307 <span class="keywordflow">if</span> ( dy < 0 )<a name="l00308"></a>00308 f = 1 / f;<a name="l00309"></a>00309 <a name="l00310"></a>00310 <a class="code" href="class_qwt_plot_magnifier.html#271ae5ad42c3dd12812246d2dee687ea">rescale</a>(f);<a name="l00311"></a>00311 }<a name="l00312"></a>00312 <a name="l00313"></a>00313 d_data->mousePos = me->pos();<a name="l00314"></a>00314 }<a name="l00315"></a>00315 <a name="l00316"></a><a class="code" href="class_qwt_plot_magnifier.html#e0740870e16e8bfa910271d10d0839b9">00316</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_magnifier.html#e0740870e16e8bfa910271d10d0839b9">QwtPlotMagnifier::widgetWheelEvent</a>(QWheelEvent *we)<a name="l00317"></a>00317 {<a name="l00318"></a>00318 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00319"></a>00319 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( (we->state() & Qt::KeyButtonMask) !=<a name="l00320"></a>00320 (d_data->wheelButtonState & Qt::KeyButtonMask) )<a name="l00321"></a>00321 #<span class="keywordflow">else</span><a name="l00322"></a>00322 <span class="keywordflow">if</span> ( (we->modifiers() & Qt::KeyboardModifierMask) !=<a name="l00323"></a>00323 (<span class="keywordtype">int</span>)(d_data->wheelButtonState & Qt::KeyboardModifierMask) )<a name="l00324"></a>00324 <span class="preprocessor">#endif</span><a name="l00325"></a>00325 <span class="preprocessor"></span> {<a name="l00326"></a>00326 <span class="keywordflow">return</span>;<a name="l00327"></a>00327 }<a name="l00328"></a>00328 <a name="l00329"></a>00329 <span class="keywordflow">if</span> ( d_data->wheelFactor != 0.0 )<a name="l00330"></a>00330 {<a name="l00331"></a>00331 <span class="comment">/*</span><a name="l00332"></a>00332 <span class="comment"> A positive delta indicates that the wheel was </span><a name="l00333"></a>00333 <span class="comment"> rotated forwards away from the user; a negative </span><a name="l00334"></a>00334 <span class="comment"> value indicates that the wheel was rotated </span><a name="l00335"></a>00335 <span class="comment"> backwards toward the user.</span><a name="l00336"></a>00336 <span class="comment"> Most mouse types work in steps of 15 degrees, </span><a name="l00337"></a>00337 <span class="comment"> in which case the delta value is a multiple </span><a name="l00338"></a>00338 <span class="comment"> of 120 (== 15 * 8).</span><a name="l00339"></a>00339 <span class="comment"> */</span><a name="l00340"></a>00340 <span class="keywordtype">double</span> f = ::pow(d_data->wheelFactor, <a name="l00341"></a>00341 qwtAbs(we->delta() / 120));<a name="l00342"></a>00342 <span class="keywordflow">if</span> ( we->delta() > 0 )<a name="l00343"></a>00343 f = 1 / f;<a name="l00344"></a>00344 <a name="l00345"></a>00345 <a class="code" href="class_qwt_plot_magnifier.html#271ae5ad42c3dd12812246d2dee687ea">rescale</a>(f);<a name="l00346"></a>00346 }<a name="l00347"></a>00347 }<a name="l00348"></a>00348 <a name="l00349"></a><a class="code" href="class_qwt_plot_magnifier.html#7863d3b5d6a30a54e51be541eab5196f">00349</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_magnifier.html#7863d3b5d6a30a54e51be541eab5196f">QwtPlotMagnifier::widgetKeyPressEvent</a>(QKeyEvent *ke)<a name="l00350"></a>00350 {<a name="l00351"></a>00351 <span class="keyword">const</span> <span class="keywordtype">int</span> key = ke->key();<a name="l00352"></a>00352 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00353"></a>00353 <span class="preprocessor"></span> <span class="keyword">const</span> <span class="keywordtype">int</span> state = ke->state();<a name="l00354"></a>00354 <span class="preprocessor">#else</span><a name="l00355"></a>00355 <span class="preprocessor"></span> <span class="keyword">const</span> <span class="keywordtype">int</span> state = ke->modifiers();<a name="l00356"></a>00356 <span class="preprocessor">#endif</span><a name="l00357"></a>00357 <span class="preprocessor"></span><a name="l00358"></a>00358 <span class="keywordflow">if</span> ( key == d_data->zoomInKey && <a name="l00359"></a>00359 state == d_data->zoomInKeyButtonState )<a name="l00360"></a>00360 {<a name="l00361"></a>00361 <a class="code" href="class_qwt_plot_magnifier.html#271ae5ad42c3dd12812246d2dee687ea">rescale</a>(d_data->keyFactor);<a name="l00362"></a>00362 }<a name="l00363"></a>00363 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( key == d_data->zoomOutKey && <a name="l00364"></a>00364 state == d_data->zoomOutKeyButtonState )<a name="l00365"></a>00365 {<a name="l00366"></a>00366 <a class="code" href="class_qwt_plot_magnifier.html#271ae5ad42c3dd12812246d2dee687ea">rescale</a>(1.0 / d_data->keyFactor);<a name="l00367"></a>00367 }<a name="l00368"></a>00368 }<a name="l00369"></a>00369 <a name="l00370"></a><a class="code" href="class_qwt_plot_magnifier.html#911d5a15ba84046bee754b8385c0382b">00370</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_magnifier.html#911d5a15ba84046bee754b8385c0382b">QwtPlotMagnifier::widgetKeyReleaseEvent</a>(QKeyEvent *)<a name="l00371"></a>00371 {<a name="l00372"></a>00372 }<a name="l00373"></a>00373 <a name="l00374"></a><a class="code" href="class_qwt_plot_magnifier.html#271ae5ad42c3dd12812246d2dee687ea">00374</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_magnifier.html#271ae5ad42c3dd12812246d2dee687ea">QwtPlotMagnifier::rescale</a>(<span class="keywordtype">double</span> factor)<a name="l00375"></a>00375 {<a name="l00376"></a>00376 <span class="keywordflow">if</span> ( factor == 1.0 || factor == 0.0 )<a name="l00377"></a>00377 <span class="keywordflow">return</span>;<a name="l00378"></a>00378 <a name="l00379"></a>00379 <span class="keywordtype">bool</span> doReplot = <span class="keyword">false</span>;<a name="l00380"></a>00380 <a class="code" href="class_qwt_plot.html">QwtPlot</a>* plt = <a class="code" href="class_qwt_plot_magnifier.html#e0197fb4f393e149585ff62f8e29cea6">plot</a>();<a name="l00381"></a>00381 <a name="l00382"></a>00382 <span class="keyword">const</span> <span class="keywordtype">bool</span> autoReplot = plt-><a class="code" href="class_qwt_plot.html#f14053ca41be0f9c6f820ed3c4379831">autoReplot</a>();<a name="l00383"></a>00383 plt-><a class="code" href="class_qwt_plot.html#654934ec2ad167101dacb5174f5172d6">setAutoReplot</a>(<span class="keyword">false</span>);<a name="l00384"></a>00384 <a name="l00385"></a>00385 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> axisId = 0; axisId < QwtPlot::axisCnt; axisId++ )<a name="l00386"></a>00386 {<a name="l00387"></a>00387 <span class="keyword">const</span> <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a> *scaleDiv = plt-><a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(axisId);<a name="l00388"></a>00388 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_plot_magnifier.html#cb4c33465bdd3c19c07ea3fa836c1f8d">isAxisEnabled</a>(axisId) && scaleDiv->isValid() )<a name="l00389"></a>00389 {<a name="l00390"></a>00390 <span class="keyword">const</span> <span class="keywordtype">double</span> center =<a name="l00391"></a>00391 scaleDiv-><a class="code" href="class_qwt_scale_div.html#a3b6edf00144cdc0a59fbc91784faec3">lBound</a>() + scaleDiv->range() / 2;<a name="l00392"></a>00392 <span class="keyword">const</span> <span class="keywordtype">double</span> width_2 = scaleDiv->range() / 2 * factor;<a name="l00393"></a>00393 <a name="l00394"></a>00394 plt-><a class="code" href="class_qwt_plot.html#cef5ea818944b93b8695d0c16924eed6">setAxisScale</a>(axisId, center - width_2, center + width_2);<a name="l00395"></a>00395 doReplot = <span class="keyword">true</span>;<a name="l00396"></a>00396 }<a name="l00397"></a>00397 }<a name="l00398"></a>00398 <a name="l00399"></a>00399 plt->setAutoReplot(autoReplot);<a name="l00400"></a>00400 <a name="l00401"></a>00401 <span class="keywordflow">if</span> ( doReplot )<a name="l00402"></a>00402 plt->replot();<a name="l00403"></a>00403 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Feb 26 21:22:37 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 + -