📄 qwt__painter_8cpp-source.html
字号:
<a name="l00377"></a>00377 <span class="preprocessor"></span><a name="l00381"></a>00381 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00382"></a>00382 <span class="preprocessor"></span><a name="l00383"></a>00383 <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#7a259f26e7312eb6d41995650e222458">QwtPainter::drawSimpleRichText</a>(QPainter *painter, <span class="keyword">const</span> QRect &rect,<a name="l00384"></a>00384 <span class="keywordtype">int</span> flags, QSimpleRichText &text)<a name="l00385"></a>00385 {<a name="l00386"></a>00386 QColorGroup cg;<a name="l00387"></a>00387 cg.setColor(QColorGroup::Text, painter->pen().color());<a name="l00388"></a>00388 <a name="l00389"></a>00389 <span class="keyword">const</span> QRect scaledRect = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(rect, painter);<a name="l00390"></a>00390 <a name="l00391"></a>00391 text.setWidth(painter, scaledRect.width());<a name="l00392"></a>00392 <a name="l00393"></a>00393 <span class="comment">// QSimpleRichText is Qt::AlignTop by default</span><a name="l00394"></a>00394 <a name="l00395"></a>00395 <span class="keywordtype">int</span> y = scaledRect.y();<a name="l00396"></a>00396 <span class="keywordflow">if</span> (flags & Qt::AlignBottom)<a name="l00397"></a>00397 y += (scaledRect.height() - text.height());<a name="l00398"></a>00398 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags & Qt::AlignVCenter)<a name="l00399"></a>00399 y += (scaledRect.height() - text.height())/2;<a name="l00400"></a>00400 <a name="l00401"></a>00401 text.draw(painter, scaledRect.x(), y, scaledRect, cg);<a name="l00402"></a>00402 }<a name="l00403"></a>00403 <span class="preprocessor">#else</span><a name="l00404"></a><a class="code" href="class_qwt_painter.html#7a259f26e7312eb6d41995650e222458">00404</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#7a259f26e7312eb6d41995650e222458">QwtPainter::drawSimpleRichText</a>(QPainter *painter, <span class="keyword">const</span> QRect &rect,<a name="l00405"></a>00405 <span class="keywordtype">int</span> flags, QTextDocument &text)<a name="l00406"></a>00406 {<a name="l00407"></a>00407 <span class="keyword">const</span> QRect scaledRect = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(rect, painter);<a name="l00408"></a>00408 text.setPageSize(QSize(scaledRect.width(), QWIDGETSIZE_MAX));<a name="l00409"></a>00409 <a name="l00410"></a>00410 QAbstractTextDocumentLayout* layout = text.documentLayout();<a name="l00411"></a>00411 <a name="l00412"></a>00412 <span class="keyword">const</span> <span class="keywordtype">int</span> height = qRound(layout->documentSize().height());<a name="l00413"></a>00413 <span class="keywordtype">int</span> y = scaledRect.y();<a name="l00414"></a>00414 <span class="keywordflow">if</span> (flags & Qt::AlignBottom)<a name="l00415"></a>00415 y += (scaledRect.height() - height);<a name="l00416"></a>00416 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (flags & Qt::AlignVCenter)<a name="l00417"></a>00417 y += (scaledRect.height() - height)/2;<a name="l00418"></a>00418 <a name="l00419"></a>00419 QAbstractTextDocumentLayout::PaintContext context;<a name="l00420"></a>00420 context.palette.setColor(QPalette::Text, painter->pen().color());<a name="l00421"></a>00421 <a name="l00422"></a>00422 painter->save();<a name="l00423"></a>00423 <a name="l00424"></a>00424 painter->translate(scaledRect.x(), scaledRect.y());<a name="l00425"></a>00425 layout->draw(painter, context);<a name="l00426"></a>00426 <a name="l00427"></a>00427 painter->restore();<a name="l00428"></a>00428 }<a name="l00429"></a>00429 <span class="preprocessor">#endif</span><a name="l00430"></a>00430 <span class="preprocessor"></span><a name="l00431"></a>00431 <span class="preprocessor">#endif // !QT_NO_RICHTEXT</span><a name="l00432"></a>00432 <span class="preprocessor"></span><a name="l00433"></a>00433 <a name="l00437"></a><a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">00437</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(QPainter *painter, <span class="keywordtype">int</span> x1, <span class="keywordtype">int</span> y1, <span class="keywordtype">int</span> x2, <span class="keywordtype">int</span> y2)<a name="l00438"></a>00438 {<a name="l00439"></a>00439 <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00440"></a>00440 <a name="l00441"></a>00441 <span class="keywordflow">if</span> ( deviceClipping && <a name="l00442"></a>00442 !(deviceClipRect().contains(x1, y1) && deviceClipRect().contains(x2, y2)) )<a name="l00443"></a>00443 {<a name="l00444"></a>00444 QwtPolygon pa(2);<a name="l00445"></a>00445 pa.setPoint(0, x1, y1);<a name="l00446"></a>00446 pa.setPoint(1, x2, y2);<a name="l00447"></a>00447 <a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">drawPolyline</a>(painter, pa);<a name="l00448"></a>00448 <span class="keywordflow">return</span>;<a name="l00449"></a>00449 }<a name="l00450"></a>00450 <a name="l00451"></a>00451 <span class="keywordflow">if</span> ( d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#35701bcf62dea107f4211fcc0adbf35e">isIdentity</a>() )<a name="l00452"></a>00452 {<a name="l00453"></a>00453 #<span class="keywordflow">if</span> QT_VERSION >= 0x030200 && QT_VERSION < 0x040000<a name="l00454"></a>00454 <span class="keywordflow">if</span> ( !painter->device()->isExtDev() )<a name="l00455"></a>00455 #endif<a name="l00456"></a>00456 {<a name="l00457"></a>00457 painter->drawLine(x1, y1, x2, y2);<a name="l00458"></a>00458 <span class="keywordflow">return</span>;<a name="l00459"></a>00459 }<a name="l00460"></a>00460 }<a name="l00461"></a>00461 <a name="l00462"></a>00462 <span class="keyword">const</span> QPoint p1 = d_metricsMap.layoutToDevice(QPoint(x1, y1));<a name="l00463"></a>00463 <span class="keyword">const</span> QPoint p2 = d_metricsMap.layoutToDevice(QPoint(x2, y2));<a name="l00464"></a>00464 <a name="l00465"></a>00465 <span class="preprocessor">#if QT_VERSION >= 0x030200 && QT_VERSION < 0x040000</span><a name="l00466"></a>00466 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( painter->device()->isExtDev() )<a name="l00467"></a>00467 {<a name="l00468"></a>00468 <span class="comment">// Strange: the postscript driver of QPrinter adds an offset </span><a name="l00469"></a>00469 <span class="comment">// of 0.5 to the start/endpoint when using drawLine, but not</span><a name="l00470"></a>00470 <span class="comment">// for lines painted with drawLineSegments.</span><a name="l00471"></a>00471 <a name="l00472"></a>00472 QwtPolygon pa(2);<a name="l00473"></a>00473 pa.setPoint(0, p1);<a name="l00474"></a>00474 pa.setPoint(1, p2);<a name="l00475"></a>00475 painter->drawLineSegments(pa);<a name="l00476"></a>00476 }<a name="l00477"></a>00477 <span class="keywordflow">else</span><a name="l00478"></a>00478 painter->drawLine(p1, p2);<a name="l00479"></a>00479 <span class="preprocessor">#else</span><a name="l00480"></a>00480 <span class="preprocessor"></span> painter->drawLine(p1, p2);<a name="l00481"></a>00481 <span class="preprocessor">#endif</span><a name="l00482"></a>00482 <span class="preprocessor"></span>}<a name="l00483"></a>00483 <a name="l00487"></a><a class="code" href="class_qwt_painter.html#ea6a68bdfab18525b39f18413fc41950">00487</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#ea6a68bdfab18525b39f18413fc41950">QwtPainter::drawPolygon</a>(QPainter *painter, <span class="keyword">const</span> QwtPolygon &pa)<a name="l00488"></a>00488 {<a name="l00489"></a>00489 <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00490"></a>00490 <a name="l00491"></a>00491 QwtPolygon cpa = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(pa);<a name="l00492"></a>00492 <span class="keywordflow">if</span> ( deviceClipping )<a name="l00493"></a>00493 {<a name="l00494"></a>00494 <span class="preprocessor">#ifdef __GNUC__</span><a name="l00495"></a>00495 <span class="preprocessor"></span><span class="preprocessor">#endif</span><a name="l00496"></a>00496 <span class="preprocessor"></span> cpa = <a class="code" href="class_qwt_painter.html#241e86dde3636d8e25acc40a135dd054">clip</a>(cpa);<a name="l00497"></a>00497 }<a name="l00498"></a>00498 painter->drawPolygon(cpa);<a name="l00499"></a>00499 }<a name="l00500"></a>00500 <a name="l00504"></a><a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">00504</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#fec384335c12a3cf84d82cbeb30cd537">QwtPainter::drawPolyline</a>(QPainter *painter, <span class="keyword">const</span> QwtPolygon &pa)<a name="l00505"></a>00505 {<a name="l00506"></a>00506 <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00507"></a>00507 <a name="l00508"></a>00508 QwtPolygon cpa = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(pa);<a name="l00509"></a>00509 <span class="keywordflow">if</span> ( deviceClipping )<a name="l00510"></a>00510 cpa = <a class="code" href="class_qwt_painter.html#241e86dde3636d8e25acc40a135dd054">clip</a>(cpa);<a name="l00511"></a>00511 painter->drawPolyline(cpa);<a name="l00512"></a>00512 }<a name="l00513"></a>00513 <a name="l00518"></a><a class="code" href="class_qwt_painter.html#f75e34851777099b742910612e8e4b39">00518</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_painter.html#f75e34851777099b742910612e8e4b39">QwtPainter::drawPoint</a>(QPainter *painter, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y)<a name="l00519"></a>00519 {<a name="l00520"></a>00520 <span class="keyword">const</span> <span class="keywordtype">bool</span> deviceClipping = needDeviceClipping(painter, d_deviceClipping);<a name="l00521"></a>00521 <a name="l00522"></a>00522 <span class="keyword">const</span> QPoint pos = d_metricsMap.<a class="code" href="class_qwt_metrics_map.html#180736dad3afe26c2579f6fefcb9f2d9">layoutToDevice</a>(QPoint(x, y));<a name="l00523"></a>00523 <a name="l00524"></a>00524 <span class="keywordflow">if</span> ( deviceClipping && !deviceClipRect().contains(pos) )<a name="l00525"></a>00525 <span class="keywordflow">return</span>;<a name="l00526"></a>00526 <a name="l00527"></a>00527 painter->drawPoint(pos);<a name="l00528"></a>00528 }<a name="l00529"></a>00529 <a name="l00530"></a>00530 <span class="keywordtype">void</span> QwtPainter::drawColoredArc(QPainter *painter, <span class="keyword">const</span> QRect &rect, <a name="l00531"></a>00531 <span class="keywordtype">int</span> peak, <span class="keywordtype">int</span> arc, <span class="keywordtype">int</span> interval, <span class="keyword">const</span> QColor &c1, <span class="keyword">const</span> QColor &c2)<a name="l00532"></a>00532 {<a name="l00533"></a>00533 <span class="keywordtype">int</span> h1, s1, v1;<a name="l00534"></a>00534 <span class="keywordtype">int</span> h2, s2, v2;<a name="l00535"></a>00535 <a name="l00536"></a>00536 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00537"></a>00537 <span class="preprocessor"></span> c1.hsv(&h1, &s1, &v1);<a name="l00538"></a>00538 c2.hsv(&h2, &s2, &v2);<a name="l00539"></a>00539 <span class="preprocessor">#else</span><a name="l00540"></a>00540 <span class="preprocessor"></span> c1.getHsv(&h1, &s1, &v1);<a name="l00541"></a>00541 c2.getHsv(&h2, &s2, &v2);<a name="l00542"></a>00542 <span class="preprocessor">#endif</span><a name="l00543"></a>00543 <span class="preprocessor"></span> <a name="l00544"></a>00544 arc /= 2;<a name="l00545"></a>00545 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> angle = -arc; angle < arc; angle += interval)<a name="l00546"></a>00546 {<a name="l00547"></a>00547 <span class="keywordtype">double</span> ratio;<a name="l00548"></a>00548 <span class="keywordflow">if</span> ( angle >= 0 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -