📄 qwt__plot__zoomer_8cpp-source.html
字号:
<a name="l00231"></a><a class="code" href="class_qwt_plot_zoomer.html#80e1f91cf51b88aa11f2d976f01b4a3f">00231</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#7a1711597f441223efdb7d9931fe19b9">QwtPlotZoomer::setZoomBase</a>(<span class="keyword">const</span> QwtDoubleRect &base)<a name="l00232"></a>00232 {<a name="l00233"></a>00233 <span class="keyword">const</span> <a class="code" href="class_qwt_plot.html">QwtPlot</a> *plt = <a class="code" href="class_qwt_plot_picker.html#c5906d5fe7543f3db7808da44d8197a9">plot</a>();<a name="l00234"></a>00234 <span class="keywordflow">if</span> ( !plt )<a name="l00235"></a>00235 <span class="keywordflow">return</span>;<a name="l00236"></a>00236 <a name="l00237"></a>00237 <span class="keyword">const</span> QwtDoubleRect sRect = <a class="code" href="class_qwt_plot_picker.html#4bdeadb4e7a794bab248d1e2a2c76345">scaleRect</a>();<a name="l00238"></a>00238 <span class="keyword">const</span> QwtDoubleRect bRect = base | sRect;<a name="l00239"></a>00239 <a name="l00240"></a>00240 d_data->zoomStack.clear();<a name="l00241"></a>00241 d_data->zoomStack.push(bRect);<a name="l00242"></a>00242 d_data->zoomRectIndex = 0;<a name="l00243"></a>00243 <a name="l00244"></a>00244 <span class="keywordflow">if</span> ( base != sRect )<a name="l00245"></a>00245 {<a name="l00246"></a>00246 d_data->zoomStack.push(sRect);<a name="l00247"></a>00247 d_data->zoomRectIndex++;<a name="l00248"></a>00248 }<a name="l00249"></a>00249 <a name="l00250"></a>00250 <a class="code" href="class_qwt_plot_zoomer.html#0d0f90bbd5fe99d5231b3cee00fffabe">rescale</a>();<a name="l00251"></a>00251 }<a name="l00252"></a>00252 <a name="l00258"></a><a class="code" href="class_qwt_plot_zoomer.html#ef67ca3d673cbd6063f0574621c808ae">00258</a> QwtDoubleRect <a class="code" href="class_qwt_plot_zoomer.html#ef67ca3d673cbd6063f0574621c808ae">QwtPlotZoomer::zoomRect</a>()<span class="keyword"> const</span><a name="l00259"></a>00259 <span class="keyword"></span>{<a name="l00260"></a>00260 <span class="keywordflow">return</span> d_data->zoomStack[d_data->zoomRectIndex];<a name="l00261"></a>00261 }<a name="l00262"></a>00262 <a name="l00266"></a><a class="code" href="class_qwt_plot_zoomer.html#63797aa3b9e540a2c5f539fa34a05fbc">00266</a> uint <a class="code" href="class_qwt_plot_zoomer.html#63797aa3b9e540a2c5f539fa34a05fbc">QwtPlotZoomer::zoomRectIndex</a>()<span class="keyword"> const</span><a name="l00267"></a>00267 <span class="keyword"></span>{<a name="l00268"></a>00268 <span class="keywordflow">return</span> d_data->zoomRectIndex;<a name="l00269"></a>00269 }<a name="l00270"></a>00270 <a name="l00282"></a><a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">00282</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">QwtPlotZoomer::zoom</a>(<span class="keyword">const</span> QwtDoubleRect &rect)<a name="l00283"></a>00283 { <a name="l00284"></a>00284 <span class="keywordflow">if</span> ( d_data->maxStackDepth >= 0 && <a name="l00285"></a>00285 <span class="keywordtype">int</span>(d_data->zoomRectIndex) >= d_data->maxStackDepth )<a name="l00286"></a>00286 {<a name="l00287"></a>00287 <span class="keywordflow">return</span>;<a name="l00288"></a>00288 }<a name="l00289"></a>00289 <a name="l00290"></a>00290 <span class="keyword">const</span> QwtDoubleRect <a class="code" href="class_qwt_plot_zoomer.html#ef67ca3d673cbd6063f0574621c808ae">zoomRect</a> = d_data->zoomStack[0] & rect.normalized();<a name="l00291"></a>00291 <span class="keywordflow">if</span> ( zoomRect != d_data->zoomStack[d_data->zoomRectIndex] )<a name="l00292"></a>00292 {<a name="l00293"></a>00293 <span class="keywordflow">for</span> ( uint i = <span class="keywordtype">int</span>(d_data->zoomStack.count()) - 1; <a name="l00294"></a>00294 i > d_data->zoomRectIndex; i-- )<a name="l00295"></a>00295 {<a name="l00296"></a>00296 (<span class="keywordtype">void</span>)d_data->zoomStack.pop();<a name="l00297"></a>00297 }<a name="l00298"></a>00298 <a name="l00299"></a>00299 d_data->zoomStack.push(zoomRect);<a name="l00300"></a>00300 d_data->zoomRectIndex++;<a name="l00301"></a>00301 <a name="l00302"></a>00302 <a class="code" href="class_qwt_plot_zoomer.html#0d0f90bbd5fe99d5231b3cee00fffabe">rescale</a>();<a name="l00303"></a>00303 <a name="l00304"></a>00304 emit <a class="code" href="class_qwt_plot_zoomer.html#e4e9b90ccfb97f4eae54c667f79644ff">zoomed</a>(zoomRect);<a name="l00305"></a>00305 }<a name="l00306"></a>00306 }<a name="l00307"></a>00307 <a name="l00319"></a><a class="code" href="class_qwt_plot_zoomer.html#0cee73f15c5791553cb52c4e7b3e881e">00319</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">QwtPlotZoomer::zoom</a>(<span class="keywordtype">int</span> offset)<a name="l00320"></a>00320 {<a name="l00321"></a>00321 <span class="keywordflow">if</span> ( offset == 0 )<a name="l00322"></a>00322 d_data->zoomRectIndex = 0;<a name="l00323"></a>00323 <span class="keywordflow">else</span><a name="l00324"></a>00324 {<a name="l00325"></a>00325 <span class="keywordtype">int</span> newIndex = d_data->zoomRectIndex + offset;<a name="l00326"></a>00326 newIndex = qwtMax(0, newIndex);<a name="l00327"></a>00327 newIndex = qwtMin(<span class="keywordtype">int</span>(d_data->zoomStack.count()) - 1, newIndex);<a name="l00328"></a>00328 <a name="l00329"></a>00329 d_data->zoomRectIndex = uint(newIndex);<a name="l00330"></a>00330 }<a name="l00331"></a>00331 <a name="l00332"></a>00332 <a class="code" href="class_qwt_plot_zoomer.html#0d0f90bbd5fe99d5231b3cee00fffabe">rescale</a>();<a name="l00333"></a>00333 <a name="l00334"></a>00334 emit <a class="code" href="class_qwt_plot_zoomer.html#e4e9b90ccfb97f4eae54c667f79644ff">zoomed</a>(<a class="code" href="class_qwt_plot_zoomer.html#ef67ca3d673cbd6063f0574621c808ae">zoomRect</a>());<a name="l00335"></a>00335 }<a name="l00336"></a>00336 <a name="l00343"></a><a class="code" href="class_qwt_plot_zoomer.html#0d0f90bbd5fe99d5231b3cee00fffabe">00343</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#0d0f90bbd5fe99d5231b3cee00fffabe">QwtPlotZoomer::rescale</a>()<a name="l00344"></a>00344 {<a name="l00345"></a>00345 <a class="code" href="class_qwt_plot.html">QwtPlot</a> *plt = <a class="code" href="class_qwt_plot_picker.html#c5906d5fe7543f3db7808da44d8197a9">plot</a>();<a name="l00346"></a>00346 <span class="keywordflow">if</span> ( !plt )<a name="l00347"></a>00347 <span class="keywordflow">return</span>;<a name="l00348"></a>00348 <a name="l00349"></a>00349 <span class="keyword">const</span> QwtDoubleRect &rect = d_data->zoomStack[d_data->zoomRectIndex];<a name="l00350"></a>00350 <span class="keywordflow">if</span> ( rect != <a class="code" href="class_qwt_plot_picker.html#4bdeadb4e7a794bab248d1e2a2c76345">scaleRect</a>() )<a name="l00351"></a>00351 {<a name="l00352"></a>00352 <span class="keyword">const</span> <span class="keywordtype">bool</span> doReplot = plt-><a class="code" href="class_qwt_plot.html#f14053ca41be0f9c6f820ed3c4379831">autoReplot</a>();<a name="l00353"></a>00353 plt-><a class="code" href="class_qwt_plot.html#654934ec2ad167101dacb5174f5172d6">setAutoReplot</a>(<span class="keyword">false</span>);<a name="l00354"></a>00354 <a name="l00355"></a>00355 <span class="keywordtype">double</span> x1 = rect.left();<a name="l00356"></a>00356 <span class="keywordtype">double</span> x2 = rect.right();<a name="l00357"></a>00357 <span class="keywordflow">if</span> ( plt-><a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#9cdd6d56e990173a00c6c81edbe8818d">xAxis</a>())-><a class="code" href="class_qwt_scale_div.html#a3b6edf00144cdc0a59fbc91784faec3">lBound</a>() > <a name="l00358"></a>00358 plt-><a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#9cdd6d56e990173a00c6c81edbe8818d">xAxis</a>())-><a class="code" href="class_qwt_scale_div.html#94287d3de0b107e66beea42cfeb1caef">hBound</a>() )<a name="l00359"></a>00359 {<a name="l00360"></a>00360 qSwap(x1, x2);<a name="l00361"></a>00361 }<a name="l00362"></a>00362 <a name="l00363"></a>00363 plt-><a class="code" href="class_qwt_plot.html#cef5ea818944b93b8695d0c16924eed6">setAxisScale</a>(<a class="code" href="class_qwt_plot_picker.html#9cdd6d56e990173a00c6c81edbe8818d">xAxis</a>(), x1, x2);<a name="l00364"></a>00364 <a name="l00365"></a>00365 <span class="keywordtype">double</span> y1 = rect.top();<a name="l00366"></a>00366 <span class="keywordtype">double</span> y2 = rect.bottom();<a name="l00367"></a>00367 <span class="keywordflow">if</span> ( plt-><a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#3068fb734845abfdf5dff00ead18377f">yAxis</a>())-><a class="code" href="class_qwt_scale_div.html#a3b6edf00144cdc0a59fbc91784faec3">lBound</a>() > <a name="l00368"></a>00368 plt-><a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#3068fb734845abfdf5dff00ead18377f">yAxis</a>())-><a class="code" href="class_qwt_scale_div.html#94287d3de0b107e66beea42cfeb1caef">hBound</a>() )<a name="l00369"></a>00369 {<a name="l00370"></a>00370 qSwap(y1, y2);<a name="l00371"></a>00371 }<a name="l00372"></a>00372 plt->setAxisScale(yAxis(), y1, y2);<a name="l00373"></a>00373 <a name="l00374"></a>00374 plt->setAutoReplot(doReplot);<a name="l00375"></a>00375 <a name="l00376"></a>00376 plt->replot();<a name="l00377"></a>00377 }<a name="l00378"></a>00378 }<a name="l00379"></a>00379 <a name="l00387"></a><a class="code" href="class_qwt_plot_zoomer.html#6cb755e06b83e50e8353dd706f7fb6f0">00387</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#6cb755e06b83e50e8353dd706f7fb6f0">QwtPlotZoomer::setAxis</a>(<span class="keywordtype">int</span> xAxis, <span class="keywordtype">int</span> yAxis)<a name="l00388"></a>00388 {<a name="l00389"></a>00389 <span class="keywordflow">if</span> ( xAxis != <a class="code" href="class_qwt_plot_picker.html#9cdd6d56e990173a00c6c81edbe8818d">QwtPlotPicker::xAxis</a>() || yAxis != <a class="code" href="class_qwt_plot_picker.html#3068fb734845abfdf5dff00ead18377f">QwtPlotPicker::yAxis</a>() )<a name="l00390"></a>00390 {<a name="l00391"></a>00391 <a class="code" href="class_qwt_plot_picker.html#a901c86543585c7056133a5cb6652e3d">QwtPlotPicker::setAxis</a>(xAxis, yAxis);<a name="l00392"></a>00392 <a class="code" href="class_qwt_plot_zoomer.html#7a1711597f441223efdb7d9931fe19b9">setZoomBase</a>(<a class="code" href="class_qwt_plot_picker.html#4bdeadb4e7a794bab248d1e2a2c76345">scaleRect</a>());<a name="l00393"></a>00393 }<a name="l00394"></a>00394 }<a name="l00395"></a>00395 <a name="l00406"></a><a class="code" href="class_qwt_plot_zoomer.html#abded662ecb3555b3a29cf3daacf79de">00406</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#abded662ecb3555b3a29cf3daacf79de">QwtPlotZoomer::widgetMouseReleaseEvent</a>(QMouseEvent *me)<a name="l00407"></a>00407 {<a name="l00408"></a>00408 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_event_pattern.html#ab4d0d2780ed7b3de54502b05fb9f366">mouseMatch</a>(MouseSelect2, me) )<a name="l00409"></a>00409 <a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">zoom</a>(0);<a name="l00410"></a>00410 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_event_pattern.html#ab4d0d2780ed7b3de54502b05fb9f366">mouseMatch</a>(MouseSelect3, me) )<a name="l00411"></a>00411 <a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">zoom</a>(-1);<a name="l00412"></a>00412 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_event_pattern.html#ab4d0d2780ed7b3de54502b05fb9f366">mouseMatch</a>(MouseSelect6, me) )<a name="l00413"></a>00413 <a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">zoom</a>(+1);<a name="l00414"></a>00414 <span class="keywordflow">else</span> <a name="l00415"></a>00415 <a class="code" href="class_qwt_picker.html#c009633e005b6290e07b902f2a58e45e">QwtPlotPicker::widgetMouseReleaseEvent</a>(me);<a name="l00416"></a>00416 }<a name="l00417"></a>00417 <a name="l00429"></a><a class="code" href="class_qwt_plot_zoomer.html#a44e42dcf37547a6b93d04a593f140c6">00429</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_zoomer.html#a44e42dcf37547a6b93d04a593f140c6">QwtPlotZoomer::widgetKeyPressEvent</a>(QKeyEvent *ke)<a name="l00430"></a>00430 {<a name="l00431"></a>00431 <span class="keywordflow">if</span> ( !<a class="code" href="class_qwt_picker.html#f825f383c74928d1541f139e102983f9">isActive</a>() )<a name="l00432"></a>00432 {<a name="l00433"></a>00433 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_event_pattern.html#0a727c4369d8535eed5695a2a76b7e79">keyMatch</a>(KeyUndo, ke) )<a name="l00434"></a>00434 <a class="code" href="class_qwt_plot_zoomer.html#eeed51dfa01136f00961e679dcbb9d9d">zoom</a>(-1);<a name="l00435"></a>00435 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_event_pattern.html#0a727c4369d8535eed5695a2a76b7e79">keyMatch</a>(KeyRedo, ke) )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -