📄 qwt__plot__curve_8cpp-source.html
字号:
<a name="l00622"></a>00622 <span class="comment">// we always need the complete </span><a name="l00623"></a>00623 <span class="comment">// curve for fitting</span><a name="l00624"></a>00624 from = 0;<a name="l00625"></a>00625 to = <a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>() - 1;<a name="l00626"></a>00626 }<a name="l00627"></a>00627 <a class="code" href="class_qwt_plot_curve.html#66fb80deaa39c0b7c70b2914dc74d194">drawLines</a>(painter, xMap, yMap, from, to);<a name="l00628"></a>00628 <span class="keywordflow">break</span>;<a name="l00629"></a>00629 <span class="keywordflow">case</span> Sticks:<a name="l00630"></a>00630 <a class="code" href="class_qwt_plot_curve.html#64062381af95034c9d590517bd4d7bfb">drawSticks</a>(painter, xMap, yMap, from, to);<a name="l00631"></a>00631 <span class="keywordflow">break</span>;<a name="l00632"></a>00632 <span class="keywordflow">case</span> Steps:<a name="l00633"></a>00633 <a class="code" href="class_qwt_plot_curve.html#46fe8d36454bc19b71615e3df96aa2e9">drawSteps</a>(painter, xMap, yMap, from, to);<a name="l00634"></a>00634 <span class="keywordflow">break</span>;<a name="l00635"></a>00635 <span class="keywordflow">case</span> Dots:<a name="l00636"></a>00636 <a class="code" href="class_qwt_plot_curve.html#6fcda40f4bd62fb3a91017ed9e7e49dc">drawDots</a>(painter, xMap, yMap, from, to);<a name="l00637"></a>00637 <span class="keywordflow">break</span>;<a name="l00638"></a>00638 <span class="keywordflow">case</span> NoCurve:<a name="l00639"></a>00639 <span class="keywordflow">default</span>:<a name="l00640"></a>00640 <span class="keywordflow">break</span>;<a name="l00641"></a>00641 }<a name="l00642"></a>00642 }<a name="l00643"></a>00643 <a name="l00659"></a><a class="code" href="class_qwt_plot_curve.html#66fb80deaa39c0b7c70b2914dc74d194">00659</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#66fb80deaa39c0b7c70b2914dc74d194">QwtPlotCurve::drawLines</a>(QPainter *painter,<a name="l00660"></a>00660 <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &xMap, <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &yMap, <a name="l00661"></a>00661 <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00662"></a>00662 <span class="keyword"></span>{<a name="l00663"></a>00663 <span class="keywordtype">int</span> size = to - from + 1;<a name="l00664"></a>00664 <span class="keywordflow">if</span> ( size <= 0 )<a name="l00665"></a>00665 <span class="keywordflow">return</span>;<a name="l00666"></a>00666 <a name="l00667"></a>00667 QwtPolygon polyline;<a name="l00668"></a>00668 <span class="keywordflow">if</span> ( ( d_data->attributes & Fitted ) && d_data->curveFitter )<a name="l00669"></a>00669 {<a name="l00670"></a>00670 <span class="comment">// Transform x and y values to window coordinates</span><a name="l00671"></a>00671 <span class="comment">// to avoid a distinction between linear and</span><a name="l00672"></a>00672 <span class="comment">// logarithmic scales.</span><a name="l00673"></a>00673 <a name="l00674"></a>00674 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00675"></a>00675 <span class="preprocessor"></span> QwtArray<QwtDoublePoint> points(size);<a name="l00676"></a>00676 <span class="preprocessor">#else</span><a name="l00677"></a>00677 <span class="preprocessor"></span> QPolygonF points(size);<a name="l00678"></a>00678 <span class="preprocessor">#endif</span><a name="l00679"></a>00679 <span class="preprocessor"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = from; i <= to; i++)<a name="l00680"></a>00680 {<a name="l00681"></a>00681 QwtDoublePoint &p = points[i];<a name="l00682"></a>00682 p.setX( xMap.<a class="code" href="class_qwt_scale_map.html#053cad00dd463f45c7e1591c9f2d8296">xTransform</a>(<a class="code" href="class_qwt_plot_curve.html#312b1fe8635430c293ee8fdc9fcfd774">x</a>(i)) );<a name="l00683"></a>00683 p.setY( yMap.<a class="code" href="class_qwt_scale_map.html#053cad00dd463f45c7e1591c9f2d8296">xTransform</a>(<a class="code" href="class_qwt_plot_curve.html#db2885f90bfe2ce1f83929a20dffc38e">y</a>(i)) );<a name="l00684"></a>00684 }<a name="l00685"></a>00685 <a name="l00686"></a>00686 points = d_data->curveFitter->fitCurve(points);<a name="l00687"></a>00687 size = points.size();<a name="l00688"></a>00688 <a name="l00689"></a>00689 <span class="keywordflow">if</span> ( size == 0 )<a name="l00690"></a>00690 <span class="keywordflow">return</span>;<a name="l00691"></a>00691 <a name="l00692"></a>00692 <span class="comment">// Round QwtDoublePoints to QPoints</span><a name="l00693"></a>00693 <span class="comment">// When Qwt support for Qt3 has been dropped (Qwt 6.x)</span><a name="l00694"></a>00694 <span class="comment">// we will use a doubles for painting and the following</span><a name="l00695"></a>00695 <span class="comment">// step will be obsolete.</span><a name="l00696"></a>00696 <a name="l00697"></a>00697 polyline.resize(size);<a name="l00698"></a>00698 <a name="l00699"></a>00699 <span class="keyword">const</span> QwtDoublePoint *p = points.data();<a name="l00700"></a>00700 QPoint *pl = polyline.data();<a name="l00701"></a>00701 <span class="keywordflow">if</span> ( d_data->paintAttributes & PaintFiltered )<a name="l00702"></a>00702 {<a name="l00703"></a>00703 <a name="l00704"></a>00704 QPoint pp(qRound(p[0].<a class="code" href="class_qwt_plot_curve.html#312b1fe8635430c293ee8fdc9fcfd774">x</a>()), qRound(p[0].<a class="code" href="class_qwt_plot_curve.html#db2885f90bfe2ce1f83929a20dffc38e">y</a>()));<a name="l00705"></a>00705 pl[0] = pp;<a name="l00706"></a>00706 <a name="l00707"></a>00707 <span class="keywordtype">int</span> count = 1;<a name="l00708"></a>00708 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i < size; i++)<a name="l00709"></a>00709 {<a name="l00710"></a>00710 <span class="keyword">const</span> QPoint pi(qRound(p[i].<a class="code" href="class_qwt_plot_curve.html#312b1fe8635430c293ee8fdc9fcfd774">x</a>()), qRound(p[i].<a class="code" href="class_qwt_plot_curve.html#db2885f90bfe2ce1f83929a20dffc38e">y</a>()));<a name="l00711"></a>00711 <span class="keywordflow">if</span> ( pi != pp )<a name="l00712"></a>00712 {<a name="l00713"></a>00713 pl[count++] = pi;<a name="l00714"></a>00714 pp = pi;<a name="l00715"></a>00715 }<a name="l00716"></a>00716 }<a name="l00717"></a>00717 <span class="keywordflow">if</span> ( count != size )<a name="l00718"></a>00718 polyline.resize(count);<a name="l00719"></a>00719 }<a name="l00720"></a>00720 <span class="keywordflow">else</span><a name="l00721"></a>00721 {<a name="l00722"></a>00722 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i < size; i++ )<a name="l00723"></a>00723 {<a name="l00724"></a>00724 pl[i].setX( qRound(p[i].x()) );<a name="l00725"></a>00725 pl[i].setY( qRound(p[i].y()) );<a name="l00726"></a>00726 }<a name="l00727"></a>00727 }<a name="l00728"></a>00728 }<a name="l00729"></a>00729 <span class="keywordflow">else</span><a name="l00730"></a>00730 {<a name="l00731"></a>00731 polyline.resize(size);<a name="l00732"></a>00732 <a name="l00733"></a>00733 <span class="keywordflow">if</span> ( d_data->paintAttributes & PaintFiltered )<a name="l00734"></a>00734 {<a name="l00735"></a>00735 QPoint pp( xMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(x(from)), yMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(y(from)) );<a name="l00736"></a>00736 polyline.setPoint(0, pp);<a name="l00737"></a>00737 <a name="l00738"></a>00738 <span class="keywordtype">int</span> count = 1;<a name="l00739"></a>00739 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = from + 1; i <= to; i++)<a name="l00740"></a>00740 {<a name="l00741"></a>00741 <span class="keyword">const</span> QPoint pi(xMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(x(i)), yMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(y(i)));<a name="l00742"></a>00742 <span class="keywordflow">if</span> ( pi != pp )<a name="l00743"></a>00743 {<a name="l00744"></a>00744 polyline.setPoint(count, pi);<a name="l00745"></a>00745 count++;<a name="l00746"></a>00746 <a name="l00747"></a>00747 pp = pi;<a name="l00748"></a>00748 }<a name="l00749"></a>00749 }<a name="l00750"></a>00750 <span class="keywordflow">if</span> ( count != size )<a name="l00751"></a>00751 polyline.resize(count);<a name="l00752"></a>00752 }<a name="l00753"></a>00753 <span class="keywordflow">else</span><a name="l00754"></a>00754 {<a name="l00755"></a>00755 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = from; i <= to; i++)<a name="l00756"></a>00756 {<a name="l00757"></a>00757 <span class="keywordtype">int</span> xi = xMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(x(i));<a name="l00758"></a>00758 <span class="keywordtype">int</span> yi = yMap.<a class="code" href="class_qwt_scale_map.html#1ddda39f41e137560e625a8c66c1d2e1">transform</a>(y(i));<a name="l00759"></a>00759 <a name="l00760"></a>00760 polyline.setPoint(i - from, xi, yi);<a name="l00761"></a>00761 }<a name="l00762"></a>00762 }<a name="l00763"></a>00763 }<a name="l00764"></a>00764 <a name="l00765"></a>00765 <span class="keywordflow">if</span> ( d_data->paintAttributes & ClipPolygons )<a name="l00766"></a>00766 {<a name="l00767"></a>00767 <a class="code" href="class_qwt_rect.html">QwtRect</a> r = painter->window();<a name="l00768"></a>00768 polyline = r.<a class="code" href="class_qwt_rect.html#89bfabf3416a3b535451a83e91a12d13">clip</a>(polyline);<a name="l00769"></a>00769 }<a name="l00770"></a>00770 <a name="l00771"></a>00771 <a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">QwtPainter::drawPolyline</a>(painter, polyline);<a name="l00772"></a>00772 <a name="l00773"></a>00773 <span class="keywordflow">if</span> ( d_data->brush.style() != Qt::NoBrush )<a name="l00774"></a>00774 fillCurve(painter, xMap, yMap, polyline);<a name="l00775"></a>00775 }<a name="l00776"></a>00776 <a name="l00788"></a><a class="code" href="class_qwt_plot_curve.html#64062381af95034c9d590517bd4d7bfb">00788</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#64062381af95034c9d590517bd4d7bfb">QwtPlotCurve::drawSticks</a>(QPainter *painter,<a name="l00789"></a>00789 <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &xMap, <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> &yMap, <a name="l00790"></a>00790 <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00791"></a>00791 <span class="keyword"></span>{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -