📄 qwt__text_8cpp-source.html
字号:
<a name="l00520"></a>00520 <span class="preprocessor"></span><a name="l00521"></a>00521 <span class="keywordflow">if</span> ( !d_layoutCache->textSize.isValid() <a name="l00522"></a>00522 || d_layoutCache->font != font )<a name="l00523"></a>00523 {<a name="l00524"></a>00524 d_layoutCache->textSize = d_data->textEngine->textSize(<a name="l00525"></a>00525 font, d_data->renderFlags, d_data->text);<a name="l00526"></a>00526 d_layoutCache->font = font;<a name="l00527"></a>00527 }<a name="l00528"></a>00528 <a name="l00529"></a>00529 QSize sz = d_layoutCache->textSize;<a name="l00530"></a>00530 <a name="l00531"></a>00531 <span class="keyword">const</span> <a class="code" href="class_qwt_metrics_map.html">QwtMetricsMap</a> map = <a class="code" href="class_qwt_painter.html#3de95bfc83c9beee537404b41749bad5">QwtPainter::metricsMap</a>();<a name="l00532"></a>00532 <a name="l00533"></a>00533 <span class="keywordflow">if</span> ( d_data->layoutAttributes & MinimumLayout )<a name="l00534"></a>00534 {<a name="l00535"></a>00535 <span class="keywordtype">int</span> left, right, top, bottom;<a name="l00536"></a>00536 d_data->textEngine->textMargins(font, d_data->text,<a name="l00537"></a>00537 left, right, top, bottom);<a name="l00538"></a>00538 sz -= QSize(left + right, top + bottom);<a name="l00539"></a>00539 <span class="preprocessor">#if QT_VERSION >= 0x040000</span><a name="l00540"></a>00540 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( !map.<a class="code" href="class_qwt_metrics_map.html#35701bcf62dea107f4211fcc0adbf35e">isIdentity</a>() )<a name="l00541"></a>00541 {<a name="l00542"></a>00542 #ifdef __GNUC__<a name="l00543"></a>00543 #endif<a name="l00544"></a>00544 <span class="comment">/*</span><a name="l00545"></a>00545 <span class="comment"> When printing in high resolution, the tick labels</span><a name="l00546"></a>00546 <span class="comment"> of are cut of. We need to find out why, but for</span><a name="l00547"></a>00547 <span class="comment"> the moment we add a couple of pixels instead.</span><a name="l00548"></a>00548 <span class="comment"> */</span><a name="l00549"></a>00549 sz += QSize(3, 0);<a name="l00550"></a>00550 }<a name="l00551"></a>00551 <span class="preprocessor">#endif</span><a name="l00552"></a>00552 <span class="preprocessor"></span> }<a name="l00553"></a>00553 <a name="l00554"></a>00554 sz = map.<a class="code" href="class_qwt_metrics_map.html#3b2300920bf39300b0b5c969e296f5e1">screenToLayout</a>(sz);<a name="l00555"></a>00555 <span class="keywordflow">return</span> sz;<a name="l00556"></a>00556 }<a name="l00557"></a>00557 <a name="l00564"></a><a class="code" href="class_qwt_text.html#3907eb112ff2259adbaad4c433178354">00564</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_text.html#3907eb112ff2259adbaad4c433178354">QwtText::draw</a>(QPainter *painter, <span class="keyword">const</span> QRect &rect)<span class="keyword"> const</span><a name="l00565"></a>00565 <span class="keyword"></span>{<a name="l00566"></a>00566 <span class="keywordflow">if</span> ( d_data->paintAttributes & PaintBackground )<a name="l00567"></a>00567 {<a name="l00568"></a>00568 <span class="keywordflow">if</span> ( d_data->backgroundPen != Qt::NoPen || <a name="l00569"></a>00569 d_data->backgroundBrush != Qt::NoBrush )<a name="l00570"></a>00570 {<a name="l00571"></a>00571 painter->save();<a name="l00572"></a>00572 painter->setPen(d_data->backgroundPen);<a name="l00573"></a>00573 painter->setBrush(d_data->backgroundBrush);<a name="l00574"></a>00574 <a class="code" href="class_qwt_painter.html#9d606b6a681b9e1d0e0823c8a169ac7e">QwtPainter::drawRect</a>(painter, rect);<a name="l00575"></a>00575 painter->restore();<a name="l00576"></a>00576 }<a name="l00577"></a>00577 }<a name="l00578"></a>00578 <a name="l00579"></a>00579 painter->save();<a name="l00580"></a>00580 <a name="l00581"></a>00581 <span class="keywordflow">if</span> ( d_data->paintAttributes & PaintUsingTextFont )<a name="l00582"></a>00582 {<a name="l00583"></a>00583 painter->setFont(d_data->font);<a name="l00584"></a>00584 }<a name="l00585"></a>00585 <a name="l00586"></a>00586 <span class="keywordflow">if</span> ( d_data->paintAttributes & PaintUsingTextColor )<a name="l00587"></a>00587 {<a name="l00588"></a>00588 <span class="keywordflow">if</span> ( d_data->color.isValid() )<a name="l00589"></a>00589 painter->setPen(d_data->color);<a name="l00590"></a>00590 }<a name="l00591"></a>00591 <a name="l00592"></a>00592 QRect expandedRect = rect;<a name="l00593"></a>00593 <span class="keywordflow">if</span> ( d_data->layoutAttributes & MinimumLayout )<a name="l00594"></a>00594 {<a name="l00595"></a>00595 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00596"></a>00596 <span class="preprocessor"></span> <span class="keyword">const</span> QFont <a class="code" href="class_qwt_text.html#76db41eeae98fbfa0933a38328a240ac">font</a>(painter->font());<a name="l00597"></a>00597 <span class="preprocessor">#else</span><a name="l00598"></a>00598 <span class="preprocessor"></span> <span class="comment">// We want to calculate in screen metrics. So</span><a name="l00599"></a>00599 <span class="comment">// we need a font that uses screen metrics</span><a name="l00600"></a>00600 <a name="l00601"></a>00601 <span class="keyword">const</span> QFont <a class="code" href="class_qwt_text.html#76db41eeae98fbfa0933a38328a240ac">font</a>(painter->font(), QApplication::desktop());<a name="l00602"></a>00602 <span class="preprocessor">#endif</span><a name="l00603"></a>00603 <span class="preprocessor"></span><a name="l00604"></a>00604 <span class="keywordtype">int</span> left, right, top, bottom;<a name="l00605"></a>00605 d_data->textEngine->textMargins(<a name="l00606"></a>00606 <a class="code" href="class_qwt_text.html#76db41eeae98fbfa0933a38328a240ac">font</a>, d_data->text,<a name="l00607"></a>00607 left, right, top, bottom);<a name="l00608"></a>00608 <a name="l00609"></a>00609 <span class="keyword">const</span> <a class="code" href="class_qwt_metrics_map.html">QwtMetricsMap</a> map = <a class="code" href="class_qwt_painter.html#3de95bfc83c9beee537404b41749bad5">QwtPainter::metricsMap</a>();<a name="l00610"></a>00610 left = map.<a class="code" href="class_qwt_metrics_map.html#e1cce24cb234af56b3e52bfad1d153ac">screenToLayoutX</a>(left);<a name="l00611"></a>00611 right = map.<a class="code" href="class_qwt_metrics_map.html#e1cce24cb234af56b3e52bfad1d153ac">screenToLayoutX</a>(right);<a name="l00612"></a>00612 top = map.<a class="code" href="class_qwt_metrics_map.html#8965c1ac879173a2dcc609f4ed911a8e">screenToLayoutY</a>(top);<a name="l00613"></a>00613 bottom = map.<a class="code" href="class_qwt_metrics_map.html#8965c1ac879173a2dcc609f4ed911a8e">screenToLayoutY</a>(bottom);<a name="l00614"></a>00614 <a name="l00615"></a>00615 expandedRect.setTop(rect.top() - top);<a name="l00616"></a>00616 expandedRect.setBottom(rect.bottom() + bottom);<a name="l00617"></a>00617 expandedRect.setLeft(rect.left() - left);<a name="l00618"></a>00618 expandedRect.setRight(rect.right() + right);<a name="l00619"></a>00619 }<a name="l00620"></a>00620 <a name="l00621"></a>00621 d_data->textEngine->draw(painter, expandedRect, <a name="l00622"></a>00622 d_data->renderFlags, d_data->text);<a name="l00623"></a>00623 <a name="l00624"></a>00624 painter->restore();<a name="l00625"></a>00625 }<a name="l00626"></a>00626 <a name="l00640"></a><a class="code" href="class_qwt_text.html#053d8fdb4de77bd3b6f2eb0ecd3980ca">00640</a> <span class="keyword">const</span> <a class="code" href="class_qwt_text_engine.html">QwtTextEngine</a> *<a class="code" href="class_qwt_text.html#053d8fdb4de77bd3b6f2eb0ecd3980ca">QwtText::textEngine</a>(<span class="keyword">const</span> QString &text,<a name="l00641"></a>00641 <a class="code" href="class_qwt_text.html#63e0d6a59a427a37ed0bfa71b782fd76">QwtText::TextFormat</a> format)<a name="l00642"></a>00642 {<a name="l00643"></a>00643 <span class="keywordflow">if</span> ( engineDict == NULL )<a name="l00644"></a>00644 engineDict = <span class="keyword">new</span> QwtTextEngineDict();<a name="l00645"></a>00645 <a name="l00646"></a>00646 <span class="keywordflow">return</span> engineDict->textEngine(text, format);<a name="l00647"></a>00647 }<a name="l00648"></a>00648 <a name="l00667"></a><a class="code" href="class_qwt_text.html#ef6a1e71b1feba3116ce69f6c9de70ad">00667</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_text.html#ef6a1e71b1feba3116ce69f6c9de70ad">QwtText::setTextEngine</a>(<a class="code" href="class_qwt_text.html#63e0d6a59a427a37ed0bfa71b782fd76">QwtText::TextFormat</a> format, <a name="l00668"></a>00668 <a class="code" href="class_qwt_text_engine.html">QwtTextEngine</a> *engine)<a name="l00669"></a>00669 {<a name="l00670"></a>00670 <span class="keywordflow">if</span> ( engineDict == NULL )<a name="l00671"></a>00671 engineDict = <span class="keyword">new</span> QwtTextEngineDict();<a name="l00672"></a>00672 <a name="l00673"></a>00673 engineDict->setTextEngine(format, engine);<a name="l00674"></a>00674 }<a name="l00675"></a>00675 <a name="l00687"></a><a class="code" href="class_qwt_text.html#2828c4976bd30572d236811bc30037be">00687</a> <span class="keyword">const</span> <a class="code" href="class_qwt_text_engine.html">QwtTextEngine</a> *<a class="code" href="class_qwt_text.html#053d8fdb4de77bd3b6f2eb0ecd3980ca">QwtText::textEngine</a>(<a class="code" href="class_qwt_text.html#63e0d6a59a427a37ed0bfa71b782fd76">QwtText::TextFormat</a> format)<a name="l00688"></a>00688 {<a name="l00689"></a>00689 <span class="keywordflow">if</span> ( engineDict == NULL )<a name="l00690"></a>00690 engineDict = <span class="keyword">new</span> QwtTextEngineDict();<a name="l00691"></a>00691 <a name="l00692"></a>00692 <span class="keywordflow">return</span> engineDict->textEngine(format);<a name="l00693"></a>00693 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Feb 26 21:22:39 2007 for Qwt User's Guide by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -