📄 qwt__plot__curve_8cpp-source.html
字号:
<a name="l00424"></a><a class="code" href="class_qwt_plot_curve.html#35533bd778842cf45b283a2baf5ff4a4">00424</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#35533bd778842cf45b283a2baf5ff4a4">QwtPlotCurve::setRawData</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> *xData, <span class="keyword">const</span> <span class="keywordtype">double</span> *yData, <span class="keywordtype">int</span> size)<a name="l00425"></a>00425 {<a name="l00426"></a>00426 <span class="keyword">delete</span> d_xy;<a name="l00427"></a>00427 d_xy = <span class="keyword">new</span> <a class="code" href="class_qwt_c_pointer_data.html">QwtCPointerData</a>(xData, yData, size);<a name="l00428"></a>00428 <a class="code" href="class_qwt_plot_item.html#d956fdbce5b0721abccce6d09fe4d5ce">itemChanged</a>();<a name="l00429"></a>00429 }<a name="l00430"></a>00430 <a name="l00437"></a><a class="code" href="class_qwt_plot_curve.html#592742a3aa52a81bd9ea548e81a50f12">00437</a> QwtDoubleRect <a class="code" href="class_qwt_plot_curve.html#592742a3aa52a81bd9ea548e81a50f12">QwtPlotCurve::boundingRect</a>()<span class="keyword"> const</span><a name="l00438"></a>00438 <span class="keyword"></span>{<a name="l00439"></a>00439 <span class="keywordflow">if</span> ( d_xy == NULL )<a name="l00440"></a>00440 <span class="keywordflow">return</span> QwtDoubleRect(1.0, 1.0, -2.0, -2.0); <span class="comment">// invalid</span><a name="l00441"></a>00441 <a name="l00442"></a>00442 <span class="keywordflow">return</span> d_xy-><a class="code" href="class_qwt_data.html#d72b6842ce6af1f61f9643786d63a91f">boundingRect</a>();<a name="l00443"></a>00443 }<a name="l00444"></a>00444 <a name="l00454"></a><a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">00454</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">QwtPlotCurve::draw</a>(QPainter *painter,<a name="l00455"></a>00455 <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="l00456"></a>00456 <span class="keyword">const</span> QRect &)<span class="keyword"> const</span><a name="l00457"></a>00457 <span class="keyword"></span>{<a name="l00458"></a>00458 <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">draw</a>(painter, xMap, yMap, 0, -1);<a name="l00459"></a>00459 }<a name="l00460"></a>00460 <a name="l00478"></a><a class="code" href="class_qwt_plot_curve.html#57cabe79dbb0df094f5c337689ff88a0">00478</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">QwtPlotCurve::draw</a>(<span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00479"></a>00479 <span class="keyword"></span>{<a name="l00480"></a>00480 <span class="keywordflow">if</span> ( !<a class="code" href="class_qwt_plot_item.html#4c99653a14a49ad94d466168d06e97b9">plot</a>() )<a name="l00481"></a>00481 <span class="keywordflow">return</span>;<a name="l00482"></a>00482 <a name="l00483"></a>00483 <a class="code" href="class_qwt_plot_canvas.html">QwtPlotCanvas</a> *canvas = <a class="code" href="class_qwt_plot_item.html#4c99653a14a49ad94d466168d06e97b9">plot</a>()-><a class="code" href="class_qwt_plot.html#afcc82150034fbeb393ceb9f54ba2f1a">canvas</a>();<a name="l00484"></a>00484 <a name="l00485"></a>00485 <span class="keywordtype">bool</span> directPaint = <span class="keyword">true</span>;<a name="l00486"></a>00486 <a name="l00487"></a>00487 <span class="preprocessor">#if QT_VERSION >= 0x040000</span><a name="l00488"></a>00488 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( !canvas->testAttribute(Qt::WA_WState_InPaintEvent) &&<a name="l00489"></a>00489 !canvas->testAttribute(Qt::WA_PaintOutsidePaintEvent) )<a name="l00490"></a>00490 {<a name="l00491"></a>00491 <span class="comment">/*</span><a name="l00492"></a>00492 <span class="comment"> We save curve and range in helper and call repaint.</span><a name="l00493"></a>00493 <span class="comment"> The helper filters the Paint event, to repeat</span><a name="l00494"></a>00494 <span class="comment"> the QwtPlotCurve::draw, but now from inside the paint</span><a name="l00495"></a>00495 <span class="comment"> event.</span><a name="l00496"></a>00496 <span class="comment"> */</span><a name="l00497"></a>00497 <a name="l00498"></a>00498 QwtPlotCurvePaintHelper helper(<span class="keyword">this</span>, from, to);<a name="l00499"></a>00499 canvas->installEventFilter(&helper);<a name="l00500"></a>00500 canvas->repaint();<a name="l00501"></a>00501 <a name="l00502"></a>00502 <span class="keywordflow">return</span>;<a name="l00503"></a>00503 }<a name="l00504"></a>00504 <span class="preprocessor">#endif</span><a name="l00505"></a>00505 <span class="preprocessor"></span><a name="l00506"></a>00506 <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> xMap = plot()->canvasMap(xAxis());<a name="l00507"></a>00507 <span class="keyword">const</span> <a class="code" href="class_qwt_scale_map.html">QwtScaleMap</a> yMap = plot()->canvasMap(yAxis());<a name="l00508"></a>00508 <a name="l00509"></a>00509 <span class="keywordflow">if</span> ( canvas->testPaintAttribute(QwtPlotCanvas::PaintCached) &&<a name="l00510"></a>00510 canvas->paintCache() && !canvas->paintCache()->isNull() )<a name="l00511"></a>00511 {<a name="l00512"></a>00512 QPainter cachePainter((QPixmap *)canvas->paintCache());<a name="l00513"></a>00513 cachePainter.translate(-canvas->contentsRect().x(),<a name="l00514"></a>00514 -canvas->contentsRect().y());<a name="l00515"></a>00515 <a name="l00516"></a>00516 draw(&cachePainter, xMap, yMap, from, to);<a name="l00517"></a>00517 }<a name="l00518"></a>00518 <a name="l00519"></a>00519 <span class="keywordflow">if</span> ( directPaint )<a name="l00520"></a>00520 {<a name="l00521"></a>00521 QPainter painter(canvas);<a name="l00522"></a>00522 <a name="l00523"></a>00523 painter.setClipping(<span class="keyword">true</span>);<a name="l00524"></a>00524 painter.setClipRect(canvas->contentsRect());<a name="l00525"></a>00525 <a name="l00526"></a>00526 draw(&painter, xMap, yMap, from, to);<a name="l00527"></a>00527 <a name="l00528"></a>00528 <span class="keywordflow">return</span>;<a name="l00529"></a>00529 }<a name="l00530"></a>00530 <a name="l00531"></a>00531 <span class="preprocessor">#if QT_VERSION >= 0x040000</span><a name="l00532"></a>00532 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( canvas->testPaintAttribute(QwtPlotCanvas::PaintCached) &&<a name="l00533"></a>00533 canvas->paintCache() )<a name="l00534"></a>00534 {<a name="l00535"></a>00535 <span class="comment">/*</span><a name="l00536"></a>00536 <span class="comment"> The cache is up to date. We flush it via repaint to the</span><a name="l00537"></a>00537 <span class="comment"> canvas. This works flicker free but is much ( > 10x )</span><a name="l00538"></a>00538 <span class="comment"> slower than direct painting.</span><a name="l00539"></a>00539 <span class="comment"> */</span><a name="l00540"></a>00540 <a name="l00541"></a>00541 <span class="keyword">const</span> <span class="keywordtype">bool</span> noBG = canvas->testAttribute(Qt::WA_NoBackground);<a name="l00542"></a>00542 <span class="keywordflow">if</span> ( !noBG )<a name="l00543"></a>00543 canvas->setAttribute(Qt::WA_NoBackground, <span class="keyword">true</span>);<a name="l00544"></a>00544 <a name="l00545"></a>00545 canvas->repaint(canvas->contentsRect());<a name="l00546"></a>00546 <a name="l00547"></a>00547 <span class="keywordflow">if</span> ( !noBG )<a name="l00548"></a>00548 canvas->setAttribute(Qt::WA_NoBackground, <span class="keyword">false</span>);<a name="l00549"></a>00549 <a name="l00550"></a>00550 <span class="keywordflow">return</span>;<a name="l00551"></a>00551 }<a name="l00552"></a>00552 <span class="preprocessor">#endif</span><a name="l00553"></a>00553 <span class="preprocessor"></span><a name="l00554"></a>00554 <span class="comment">// Ok, we give up </span><a name="l00555"></a>00555 canvas->repaint(canvas->contentsRect());<a name="l00556"></a>00556 }<a name="l00557"></a>00557 <a name="l00569"></a><a class="code" href="class_qwt_plot_curve.html#517b93ce008faddb49e706b882f44474">00569</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#8d52afdd1612ccb4dbf3f410886e680b">QwtPlotCurve::draw</a>(QPainter *painter,<a name="l00570"></a>00570 <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="l00571"></a>00571 <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00572"></a>00572 <span class="keyword"></span>{<a name="l00573"></a>00573 <span class="keywordflow">if</span> ( !painter || <a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>() <= 0 )<a name="l00574"></a>00574 <span class="keywordflow">return</span>;<a name="l00575"></a>00575 <a name="l00576"></a>00576 <span class="keywordflow">if</span> (to < 0)<a name="l00577"></a>00577 to = <a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>() - 1;<a name="l00578"></a>00578 <a name="l00579"></a>00579 <span class="keywordflow">if</span> ( verifyRange(<a class="code" href="class_qwt_plot_curve.html#261170c51a8e6853f333c76c501992b7">dataSize</a>(), from, to) > 0 )<a name="l00580"></a>00580 {<a name="l00581"></a>00581 painter->save();<a name="l00582"></a>00582 painter->setPen(d_data->pen);<a name="l00583"></a>00583 <a name="l00584"></a>00584 <span class="comment">/*</span><a name="l00585"></a>00585 <span class="comment"> Qt 4.0.0 is slow when drawing lines, but it麓s even </span><a name="l00586"></a>00586 <span class="comment"> slower when the painter has a brush. So we don't</span><a name="l00587"></a>00587 <span class="comment"> set the brush before we really need it.</span><a name="l00588"></a>00588 <span class="comment"> */</span><a name="l00589"></a>00589 <a name="l00590"></a>00590 <a class="code" href="class_qwt_plot_curve.html#cb4e2f26df075483bf6105bb5f2f74fc">drawCurve</a>(painter, d_data->style, xMap, yMap, from, to);<a name="l00591"></a>00591 painter->restore();<a name="l00592"></a>00592 <a name="l00593"></a>00593 <span class="keywordflow">if</span> (d_data->sym.style() != QwtSymbol::NoSymbol)<a name="l00594"></a>00594 {<a name="l00595"></a>00595 painter->save();<a name="l00596"></a>00596 <a class="code" href="class_qwt_plot_curve.html#b16f5a4329291305c267beab1a6d2dfe">drawSymbols</a>(painter, d_data->sym, xMap, yMap, from, to);<a name="l00597"></a>00597 painter->restore();<a name="l00598"></a>00598 }<a name="l00599"></a>00599 }<a name="l00600"></a>00600 }<a name="l00601"></a>00601 <a name="l00613"></a><a class="code" href="class_qwt_plot_curve.html#cb4e2f26df075483bf6105bb5f2f74fc">00613</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_curve.html#cb4e2f26df075483bf6105bb5f2f74fc">QwtPlotCurve::drawCurve</a>(QPainter *painter, <span class="keywordtype">int</span> style,<a name="l00614"></a>00614 <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="l00615"></a>00615 <span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to)<span class="keyword"> const</span><a name="l00616"></a>00616 <span class="keyword"></span>{<a name="l00617"></a>00617 <span class="keywordflow">switch</span> (style)<a name="l00618"></a>00618 {<a name="l00619"></a>00619 <span class="keywordflow">case</span> Lines:<a name="l00620"></a>00620 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_plot_curve.html#0dc5e6af9ec33a1b54e3c3041c00b939">testCurveAttribute</a>(Fitted) )<a name="l00621"></a>00621 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -