00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <qglobal.h>
00013 #if QT_VERSION >= 0x040000
00014
00015 #include <qstring.h>
00016 #include <qpainter.h>
00017 #include "qwt_mathml_text_engine.h"
00018
00019 #include <qtmmlwidget.h>
00020
00022 QwtMathMLTextEngine::QwtMathMLTextEngine()
00023 {
00024 }
00025
00027 QwtMathMLTextEngine::~QwtMathMLTextEngine()
00028 {
00029 }
00030
00041 int QwtMathMLTextEngine::heightForWidth(const QFont& font, int flags,
00042 const QString& text, int) const
00043 {
00044 return textSize(font, flags, text).height();
00045 }
00046
00056 QSize QwtMathMLTextEngine::textSize(const QFont &font,
00057 int, const QString& text) const
00058 {
00059 static QString t;
00060 static QSize sz;
00061
00062 if ( text != t )
00063 {
00064 QtMmlDocument doc;
00065 doc.setContent(text);
00066 doc.setBaseFontPointSize(font.pointSize());
00067
00068 sz = doc.size();
00069 t = text;
00070 }
00071
00072 return sz;
00073 }
00074
00083 void QwtMathMLTextEngine::textMargins(const QFont &, const QString &,
00084 int &left, int &right, int &top, int &bottom) const
00085 {
00086 left = right = top = bottom = 0;
00087 }
00088
00097 void QwtMathMLTextEngine::draw(QPainter *painter, const QRect &rect,
00098 int flags, const QString& text) const
00099 {
00100 QtMmlDocument doc;
00101 doc.setContent(text);
00102 doc.setBaseFontPointSize(painter->font().pointSize());
00103
00104 const QSize docSize = doc.size();
00105
00106 QPoint pos = rect.topLeft();
00107 if ( rect.width() > docSize.width() )
00108 {
00109 if ( flags & Qt::AlignRight )
00110 pos.setX(rect.right() - docSize.width());
00111 if ( flags & Qt::AlignHCenter )
00112 pos.setX(rect.center().x() - docSize.width() / 2);
00113 }
00114 if ( rect.height() > docSize.height() )
00115 {
00116 if ( flags & Qt::AlignBottom )
00117 pos.setY(rect.bottom() - docSize.height());
00118 if ( flags & Qt::AlignVCenter )
00119 pos.setY(rect.center().y() - docSize.height() / 2);
00120 }
00121
00122 doc.paint(painter, pos);
00123 }
00124
00131 bool QwtMathMLTextEngine::mightRender(const QString &text) const
00132 {
00133 return text.trimmed().startsWith("<math");
00134 }
00135
00136 #endif // QT_VERSION < 0x040000