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

📄 qwt__scale__engine_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00427"></a>00427     interval = interval.<a class="code" href="class_qwt_double_interval.html#e4735252fef79bff0bda2dc61fb886c2">normalized</a>();<a name="l00428"></a>00428 <a name="l00429"></a>00429     interval.<a class="code" href="class_qwt_double_interval.html#610a87e9921738cf3a4ef1f4cbd96f02">setMinValue</a>(interval.<a class="code" href="class_qwt_double_interval.html#2d7d56e81ee75911f176c94f6aaf4b8b">minValue</a>() - <a class="code" href="class_qwt_scale_engine.html#51447104ab614a157c2bac6a0f0f7dc9">loMargin</a>());<a name="l00430"></a>00430     interval.<a class="code" href="class_qwt_double_interval.html#34863ae20465138c887f6de55a5f1bed">setMaxValue</a>(interval.<a class="code" href="class_qwt_double_interval.html#8fd8629d76f24d5494e59458cd79c4e2">maxValue</a>() + <a class="code" href="class_qwt_scale_engine.html#a1e2d260975cef6546a3829213bc5f2f">hiMargin</a>());<a name="l00431"></a>00431 <a name="l00432"></a>00432     <span class="keywordflow">if</span> (<a class="code" href="class_qwt_scale_engine.html#b43cac5ff8843531bbb02b4401e8fb62">testAttribute</a>(QwtScaleEngine::Symmetric))<a name="l00433"></a>00433         interval = interval.<a class="code" href="class_qwt_double_interval.html#762d619c1af104da8b73c6009b7cd669">symmetrize</a>(<a class="code" href="class_qwt_scale_engine.html#5962458870865df797e84e3bd6badf02">reference</a>());<a name="l00434"></a>00434  <a name="l00435"></a>00435     <span class="keywordflow">if</span> (<a class="code" href="class_qwt_scale_engine.html#b43cac5ff8843531bbb02b4401e8fb62">testAttribute</a>(QwtScaleEngine::IncludeReference))<a name="l00436"></a>00436         interval = interval.<a class="code" href="class_qwt_double_interval.html#718e883366caa45e24b2ba4b9d529f11">extend</a>(<a class="code" href="class_qwt_scale_engine.html#5962458870865df797e84e3bd6badf02">reference</a>());<a name="l00437"></a>00437 <a name="l00438"></a>00438     <span class="keywordflow">if</span> (interval.<a class="code" href="class_qwt_double_interval.html#b5d610e0d1fc9a5a3bc020dd39326327">width</a>() == 0.0)<a name="l00439"></a>00439         interval = <a class="code" href="class_qwt_scale_engine.html#f06bc397d46b40c69fe5c82b7f2c3267">buildInterval</a>(interval.<a class="code" href="class_qwt_double_interval.html#2d7d56e81ee75911f176c94f6aaf4b8b">minValue</a>());<a name="l00440"></a>00440 <a name="l00441"></a>00441     stepSize = <a class="code" href="class_qwt_scale_engine.html#ff30158c5ccfee78f4c3e01c0fb5f4de">divideInterval</a>(interval.<a class="code" href="class_qwt_double_interval.html#b5d610e0d1fc9a5a3bc020dd39326327">width</a>(), qwtMax(maxNumSteps, 1));<a name="l00442"></a>00442 <a name="l00443"></a>00443     <span class="keywordflow">if</span> ( !<a class="code" href="class_qwt_scale_engine.html#b43cac5ff8843531bbb02b4401e8fb62">testAttribute</a>(QwtScaleEngine::Floating) )<a name="l00444"></a>00444         interval = <a class="code" href="class_qwt_linear_scale_engine.html#152ccac12d8782b43b7a82061a4e1947">align</a>(interval, stepSize);<a name="l00445"></a>00445 <a name="l00446"></a>00446     x1 = interval.<a class="code" href="class_qwt_double_interval.html#2d7d56e81ee75911f176c94f6aaf4b8b">minValue</a>();<a name="l00447"></a>00447     x2 = interval.<a class="code" href="class_qwt_double_interval.html#8fd8629d76f24d5494e59458cd79c4e2">maxValue</a>();<a name="l00448"></a>00448 <a name="l00449"></a>00449     <span class="keywordflow">if</span> (<a class="code" href="class_qwt_scale_engine.html#b43cac5ff8843531bbb02b4401e8fb62">testAttribute</a>(QwtScaleEngine::Inverted))<a name="l00450"></a>00450     {<a name="l00451"></a>00451         qSwap(x1, x2);<a name="l00452"></a>00452         stepSize = -stepSize;<a name="l00453"></a>00453     }<a name="l00454"></a>00454 }<a name="l00455"></a>00455 <a name="l00468"></a><a class="code" href="class_qwt_linear_scale_engine.html#afed94c688e67c95a6ecf18e8bb522ab">00468</a> <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a> <a class="code" href="class_qwt_linear_scale_engine.html#afed94c688e67c95a6ecf18e8bb522ab">QwtLinearScaleEngine::divideScale</a>(<span class="keywordtype">double</span> x1, <span class="keywordtype">double</span> x2,<a name="l00469"></a>00469     <span class="keywordtype">int</span> maxMajSteps, <span class="keywordtype">int</span> maxMinSteps, <span class="keywordtype">double</span> stepSize)<span class="keyword"> const</span><a name="l00470"></a>00470 <span class="keyword"></span>{<a name="l00471"></a>00471     <a class="code" href="class_qwt_double_interval.html">QwtDoubleInterval</a> interval = <a class="code" href="class_qwt_double_interval.html">QwtDoubleInterval</a>(x1, x2).normalized();<a name="l00472"></a>00472     <span class="keywordflow">if</span> (interval.<a class="code" href="class_qwt_double_interval.html#b5d610e0d1fc9a5a3bc020dd39326327">width</a>() &lt;= 0 )<a name="l00473"></a>00473         <span class="keywordflow">return</span> <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a>();<a name="l00474"></a>00474 <a name="l00475"></a>00475     stepSize = qwtAbs(stepSize);<a name="l00476"></a>00476     <span class="keywordflow">if</span> ( stepSize == 0.0 )<a name="l00477"></a>00477     {<a name="l00478"></a>00478         <span class="keywordflow">if</span> ( maxMajSteps &lt; 1 )<a name="l00479"></a>00479             maxMajSteps = 1;<a name="l00480"></a>00480 <a name="l00481"></a>00481         stepSize = <a class="code" href="class_qwt_scale_engine.html#ff30158c5ccfee78f4c3e01c0fb5f4de">divideInterval</a>(interval.<a class="code" href="class_qwt_double_interval.html#b5d610e0d1fc9a5a3bc020dd39326327">width</a>(), maxMajSteps);<a name="l00482"></a>00482     }<a name="l00483"></a>00483 <a name="l00484"></a>00484     <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a> scaleDiv;<a name="l00485"></a>00485 <a name="l00486"></a>00486     <span class="keywordflow">if</span> ( stepSize != 0.0 )<a name="l00487"></a>00487     {<a name="l00488"></a>00488         QwtValueList ticks[QwtScaleDiv::NTickTypes];<a name="l00489"></a>00489         buildTicks(interval, stepSize, maxMinSteps, ticks);<a name="l00490"></a>00490 <a name="l00491"></a>00491         scaleDiv = <a class="code" href="class_qwt_scale_div.html">QwtScaleDiv</a>(interval, ticks);<a name="l00492"></a>00492     }<a name="l00493"></a>00493 <a name="l00494"></a>00494     <span class="keywordflow">if</span> ( x1 &gt; x2 )<a name="l00495"></a>00495         scaleDiv.invert();<a name="l00496"></a>00496 <a name="l00497"></a>00497     <span class="keywordflow">return</span> scaleDiv;<a name="l00498"></a>00498 }<a name="l00499"></a>00499 <a name="l00500"></a>00500 <span class="keywordtype">void</span> QwtLinearScaleEngine::buildTicks(<a name="l00501"></a>00501     <span class="keyword">const</span> <a class="code" href="class_qwt_double_interval.html">QwtDoubleInterval</a>&amp; interval, <span class="keywordtype">double</span> stepSize, <span class="keywordtype">int</span> maxMinSteps,<a name="l00502"></a>00502     QwtValueList ticks[QwtScaleDiv::NTickTypes])<span class="keyword"> const</span><a name="l00503"></a>00503 <span class="keyword"></span>{<a name="l00504"></a>00504     <span class="keyword">const</span> <a class="code" href="class_qwt_double_interval.html">QwtDoubleInterval</a> boundingInterval =<a name="l00505"></a>00505         <a class="code" href="class_qwt_linear_scale_engine.html#152ccac12d8782b43b7a82061a4e1947">align</a>(interval, stepSize);<a name="l00506"></a>00506     <a name="l00507"></a>00507     ticks[QwtScaleDiv::MajorTick] = <a name="l00508"></a>00508         buildMajorTicks(boundingInterval, stepSize);<a name="l00509"></a>00509 <a name="l00510"></a>00510     <span class="keywordflow">if</span> ( maxMinSteps &gt; 0 )<a name="l00511"></a>00511     {<a name="l00512"></a>00512         buildMinorTicks(ticks[QwtScaleDiv::MajorTick], maxMinSteps, stepSize,<a name="l00513"></a>00513             ticks[QwtScaleDiv::MinorTick], ticks[QwtScaleDiv::MediumTick]);<a name="l00514"></a>00514     }<a name="l00515"></a>00515     <a name="l00516"></a>00516     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt; QwtScaleDiv::NTickTypes; i++ )<a name="l00517"></a>00517     {<a name="l00518"></a>00518         ticks[i] = <a class="code" href="class_qwt_scale_engine.html#f4522cd83e7885f19d35579d42fbc1fc">strip</a>(ticks[i], interval);<a name="l00519"></a>00519 <a name="l00520"></a>00520         <span class="comment">// ticks very close to 0.0 are </span><a name="l00521"></a>00521         <span class="comment">// explicitely set to 0.0</span><a name="l00522"></a>00522 <a name="l00523"></a>00523         <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> j = 0; j &lt; (int)ticks[i].count(); j++ )<a name="l00524"></a>00524         {<a name="l00525"></a>00525             <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_scale_arithmetic.html#6c6f982022550fba9ccee034f87461ce">QwtScaleArithmetic::compareEps</a>(ticks[i][j], 0.0, stepSize) == 0 )<a name="l00526"></a>00526                 ticks[i][j] = 0.0;<a name="l00527"></a>00527         }<a name="l00528"></a>00528     }<a name="l00529"></a>00529 }<a name="l00530"></a>00530 <a name="l00531"></a>00531 QwtValueList QwtLinearScaleEngine::buildMajorTicks(<a name="l00532"></a>00532     <span class="keyword">const</span> <a class="code" href="class_qwt_double_interval.html">QwtDoubleInterval</a> &amp;interval, <span class="keywordtype">double</span> stepSize)<span class="keyword"> const</span><a name="l00533"></a>00533 <span class="keyword"></span>{<a name="l00534"></a>00534     <span class="keywordtype">int</span> numTicks = qRound(interval.<a class="code" href="class_qwt_double_interval.html#b5d610e0d1fc9a5a3bc020dd39326327">width</a>() / stepSize) + 1;<a name="l00535"></a>00535 <span class="preprocessor">#if 1</span><a name="l00536"></a>00536 <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( numTicks &gt; 10000 )<a name="l00537"></a>00537         numTicks = 10000;<a name="l00538"></a>00538 <span class="preprocessor">#endif</span><a name="l00539"></a>00539 <span class="preprocessor"></span><a name="l00540"></a>00540     QwtValueList ticks;<a name="l00541"></a>00541 <a name="l00542"></a>00542     ticks += interval.<a class="code" href="class_qwt_double_interval.html#2d7d56e81ee75911f176c94f6aaf4b8b">minValue</a>();<a name="l00543"></a>00543     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; numTicks - 1; i++)<a name="l00544"></a>00544         ticks += interval.<a class="code" href="class_qwt_double_interval.html#2d7d56e81ee75911f176c94f6aaf4b8b">minValue</a>() + i * stepSize;<a name="l00545"></a>00545     ticks += interval.<a class="code" href="class_qwt_double_interval.html#8fd8629d76f24d5494e59458cd79c4e2">maxValue</a>();<a name="l00546"></a>00546 <a name="l00547"></a>00547     <span class="keywordflow">return</span> ticks;<a name="l00548"></a>00548 }<a name="l00549"></a>00549 <a name="l00550"></a>00550 <span class="keywordtype">void</span> QwtLinearScaleEngine::buildMinorTicks(<a name="l00551"></a>00551     <span class="keyword">const</span> QwtValueList&amp; majorTicks,<a name="l00552"></a>00552     <span class="keywordtype">int</span> maxMinSteps, <span class="keywordtype">double</span> stepSize,<a name="l00553"></a>00553     QwtValueList &amp;minorTicks, <a name="l00554"></a>00554     QwtValueList &amp;mediumTicks)<span class="keyword"> const</span><a name="l00555"></a>00555 <span class="keyword"></span>{   <a name="l00556"></a>00556     <span class="keywordtype">double</span> minStep = <a class="code" href="class_qwt_scale_engine.html#ff30158c5ccfee78f4c3e01c0fb5f4de">divideInterval</a>(stepSize, maxMinSteps);<a name="l00557"></a>00557     <span class="keywordflow">if</span> (minStep == 0.0)  <a name="l00558"></a>00558         <span class="keywordflow">return</span>; <a name="l00559"></a>00559         <a name="l00560"></a>00560     <span class="comment">// # minor steps per interval</span><a name="l00561"></a>00561     <span class="keywordtype">int</span> nMin = qwtAbs(qRound(stepSize / minStep)) - 1;<a name="l00562"></a>00562     <a name="l00563"></a>00563     <span class="comment">// Do the minor steps fit into the interval?</span><a name="l00564"></a>00564     <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_scale_arithmetic.html#6c6f982022550fba9ccee034f87461ce">QwtScaleArithmetic::compareEps</a>((nMin +  1) * qwtAbs(minStep), <a name="l00565"></a>00565         qwtAbs(stepSize), stepSize) &gt; 0)<a name="l00566"></a>00566     {   <a name="l00567"></a>00567         nMin = 1;<a name="l00568"></a>00568         minStep = stepSize * 0.5;<a name="l00569"></a>00569     }<a name="l00570"></a>00570 <a name="l00571"></a>00571     <span class="keywordtype">int</span> medIndex = -1;<a name="l00572"></a>00572     <span class="keywordflow">if</span> ( nMin % 2 )<a name="l00573"></a>00573         medIndex = nMin / 2;<a name="l00574"></a>00574 <a name="l00575"></a>00575     <span class="comment">// calculate minor ticks</span><a name="l00576"></a>00576 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -