⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qwt__plot__zoomer_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<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 &amp;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-&gt;zoomStack.clear();<a name="l00241"></a>00241     d_data-&gt;zoomStack.push(bRect);<a name="l00242"></a>00242     d_data-&gt;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-&gt;zoomStack.push(sRect);<a name="l00247"></a>00247         d_data-&gt;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-&gt;zoomStack[d_data-&gt;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-&gt;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 &amp;rect)<a name="l00283"></a>00283 {   <a name="l00284"></a>00284     <span class="keywordflow">if</span> ( d_data-&gt;maxStackDepth &gt;= 0 &amp;&amp; <a name="l00285"></a>00285         <span class="keywordtype">int</span>(d_data-&gt;zoomRectIndex) &gt;= d_data-&gt;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-&gt;zoomStack[0] &amp; rect.normalized();<a name="l00291"></a>00291     <span class="keywordflow">if</span> ( zoomRect != d_data-&gt;zoomStack[d_data-&gt;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-&gt;zoomStack.count()) - 1; <a name="l00294"></a>00294            i &gt; d_data-&gt;zoomRectIndex; i-- )<a name="l00295"></a>00295         {<a name="l00296"></a>00296             (<span class="keywordtype">void</span>)d_data-&gt;zoomStack.pop();<a name="l00297"></a>00297         }<a name="l00298"></a>00298 <a name="l00299"></a>00299         d_data-&gt;zoomStack.push(zoomRect);<a name="l00300"></a>00300         d_data-&gt;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-&gt;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-&gt;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-&gt;zoomStack.count()) - 1, newIndex);<a name="l00328"></a>00328 <a name="l00329"></a>00329         d_data-&gt;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 &amp;rect = d_data-&gt;zoomStack[d_data-&gt;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-&gt;<a class="code" href="class_qwt_plot.html#f14053ca41be0f9c6f820ed3c4379831">autoReplot</a>();<a name="l00353"></a>00353         plt-&gt;<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-&gt;<a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#9cdd6d56e990173a00c6c81edbe8818d">xAxis</a>())-&gt;<a class="code" href="class_qwt_scale_div.html#a3b6edf00144cdc0a59fbc91784faec3">lBound</a>() &gt; <a name="l00358"></a>00358             plt-&gt;<a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#9cdd6d56e990173a00c6c81edbe8818d">xAxis</a>())-&gt;<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-&gt;<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-&gt;<a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#3068fb734845abfdf5dff00ead18377f">yAxis</a>())-&gt;<a class="code" href="class_qwt_scale_div.html#a3b6edf00144cdc0a59fbc91784faec3">lBound</a>() &gt; <a name="l00368"></a>00368             plt-&gt;<a class="code" href="class_qwt_plot.html#596fc7e7960324ddc949c36242c5e6d6">axisScaleDiv</a>(<a class="code" href="class_qwt_plot_picker.html#3068fb734845abfdf5dff00ead18377f">yAxis</a>())-&gt;<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-&gt;setAxisScale(yAxis(), y1, y2);<a name="l00373"></a>00373 <a name="l00374"></a>00374         plt-&gt;setAutoReplot(doReplot);<a name="l00375"></a>00375 <a name="l00376"></a>00376         plt-&gt;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 + -