From 9a13e5127ab3edf0801e90de02a34140b506625a Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Sun, 3 Jul 2022 21:30:12 +0200 Subject: [PATCH] JKQTMathText: improve documentation (fixes issue #74), add new draw()-variant, which accepts a QPointF --- .../jkqtmathtext/jkqtmathtext_draw_flags.png | Bin 0 -> 32465 bytes .../jkqtmathtext/jkqtmathtext_drawboxes.png | Bin 0 -> 12195 bytes examples/jkqtmathtext_test/testform.cpp | 84 ++++++++++++++---- examples/jkqtmathtext_test/testform.h | 1 + examples/jkqtmathtext_test/testform.ui | 84 ++++++++++++++---- lib/jkqtmathtext/jkqtmathtext.cpp | 5 ++ lib/jkqtmathtext/jkqtmathtext.h | 33 ++++++- 7 files changed, 171 insertions(+), 36 deletions(-) create mode 100644 doc/images/jkqtmathtext/jkqtmathtext_draw_flags.png create mode 100644 doc/images/jkqtmathtext/jkqtmathtext_drawboxes.png diff --git a/doc/images/jkqtmathtext/jkqtmathtext_draw_flags.png b/doc/images/jkqtmathtext/jkqtmathtext_draw_flags.png new file mode 100644 index 0000000000000000000000000000000000000000..71044728f576b181fa5418199bf3d1fdd8c3e9f5 GIT binary patch literal 32465 zcmeFZhc}#E+cqvm1QAKJC_y565WN#bkKUpudKZi`YC;e_qD32JFhuX&L_+j3dM6mY zj?s0# z-?a|sd<)>04?wc7L0ZmMAkVk1mN@dRmX=O#HqIauo!h`8{tAjOrL?_Fwr2^wsFCSh z{+?OeJ2j1~>yY8$*-AC657;APwx-dip9ha6et6rdHkE_JL55yz#+J3}o`Ma_(-|3h zR&|>P*FWBTM=yvc`U}5Bw58K?G8P%J9APG0LB_6OVHj<8N^6Ln?-fn7jN+^*ik*vv zXRP|6Y~*-%dle+%XWl%txu<}nI5_W_JJ@FJ#$E71UAuMo2-A9aLn|Nrb<(KCd?VYwK6gDDx`TKUx@4?ByOoIE(MC&?{9*iSVNQfmG@ z<-c+BFr+3eq?_1*ThHnZ^9?2vssWV~Sb+DjARIrXONa0ovjqs}%?~Sd=KZIKR9I-u znBg1Yc5W!1Bd%isQ3Bm-RhO zByZ;$d&ec_+_~=eE$|cJHaqLjh-+^Yb^ouwG4`CTw(KDXKcOU`ZE%to#8Bt1#3HV} zuw}FY6-Q1PghuvLYfA)0wn+E(_xo?#n-&%n#KPi2F;3x;cX5;}7I_*%0DZ{FtrD=! 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

5%9O5+a+Qp>d@OHBm)lA*(q5=r)l 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 literal 0 HcmV?d00001 diff --git a/examples/jkqtmathtext_test/testform.cpp b/examples/jkqtmathtext_test/testform.cpp index 437d550e2e..92173bcfa4 100644 --- a/examples/jkqtmathtext_test/testform.cpp +++ b/examples/jkqtmathtext_test/testform.cpp @@ -251,11 +251,11 @@ TestForm::TestForm(QWidget *parent) : ui->cmbFont->setCurrentIndex(1); connect(ui->chkBoxes, SIGNAL(toggled(bool)), this, SLOT(updateMath())); + connect(ui->chkBigBox, SIGNAL(toggled(bool)), this, SLOT(updateMath())); connect(ui->chkAntiAlias, SIGNAL(toggled(bool)), this, SLOT(updateMath())); - connect(ui->chkAntiAliasHQ, SIGNAL(toggled(bool)), this, SLOT(updateMath())); connect(ui->chkAntiAliasText, SIGNAL(toggled(bool)), this, SLOT(updateMath())); - connect(ui->chkSmoothTransform, SIGNAL(toggled(bool)), this, SLOT(updateMath())); connect(ui->chkSimulateBlackboard, SIGNAL(toggled(bool)), this, SLOT(updateMath())); + connect(ui->cmbLastAlign, SIGNAL(currentIndexChanged(int)), this, SLOT(updateMath())); connect(ui->cmbFont, SIGNAL(currentIndexChanged(int)), this, SLOT(updateMath())); connect(ui->cmbScript, SIGNAL(currentIndexChanged(int)), this, SLOT(updateMath())); connect(ui->cmbTestset, SIGNAL(currentIndexChanged(int)), this, SLOT(updateMath())); @@ -309,15 +309,17 @@ double TestForm::draw(QPainter& painter, double X, double YY, JKQTMathText& mt, durationSizingMS=ht.getTime()/1000.0; qDebug()<<" sizing in "<chkBigBox->isChecked()) { + p.setColor("lightcoral"); + p.setStyle(Qt::DashLine); + p.setWidth(2); + painter.setPen(p); + QRectF r(X, Y-mt.getAscent(painter),s.width(), s.height()); + painter.drawRect(r); + p.setColor("lightblue"); + painter.setPen(p); + painter.drawLine(X, Y, X+s.width(), Y); + } ht.start(); p.setStyle(Qt::SolidLine); p.setWidth(1); @@ -341,6 +343,52 @@ double TestForm::draw(QPainter& painter, double X, double YY, JKQTMathText& mt, return mt.getDescent(painter)+mt.getAscent(painter)+40; } +double TestForm::drawAligned(QPainter& painter, double X, double YY, JKQTMathText& mt, QString name) { + + + double Y=YY; + painter.save(); + ht.start(); + const QSizeF s=mt.getSize(painter); + const QRectF rect(X, Y, s.width()+32, s.height()+32); + int flags=Qt::AlignLeft|Qt::AlignTop; + switch(ui->cmbLastAlign->currentIndex()) { + case 0: flags=Qt::AlignLeft|Qt::AlignTop; break; + case 1: flags=Qt::AlignLeft|Qt::AlignVCenter; break; + case 2: flags=Qt::AlignLeft|Qt::AlignBottom; break; + case 3: flags=Qt::AlignHCenter|Qt::AlignTop; break; + case 4: flags=Qt::AlignHCenter|Qt::AlignVCenter; break; + case 5: flags=Qt::AlignHCenter|Qt::AlignBottom; break; + case 6: flags=Qt::AlignRight|Qt::AlignTop; break; + case 7: flags=Qt::AlignRight|Qt::AlignVCenter; break; + case 8: flags=Qt::AlignRight|Qt::AlignBottom; break; + } + + QPen p=painter.pen(); + p.setColor("darkred"); + p.setStyle(Qt::SolidLine); + p.setWidth(2); + painter.setPen(p); + painter.drawRect(rect); + p.setStyle(Qt::SolidLine); + p.setWidth(1); + p.setColor("black"); + painter.setPen(p); + mt.draw(painter, flags, rect, ui->chkBoxes->isChecked()); + p.setColor("blue"); + painter.setPen(p); + + QFont f; + f.setFamily("sans serif"); + f.setUnderline(true); + f.setPointSize(10); + painter.setFont(f); + painter.drawText(X, Y-6, name+":"); + painter.restore(); + qDebug()<labRenderTimes->setText(""); - for (int i=0; i0) { + bool ok=true; + int size=sl.last().trimmed().toUInt(&ok); + if (!ok) size=font().pointSizeF(); + mt.setFontSize(size); + Y+=drawAligned(painter, X1, Y, mt, QString("%1, %2pt, align: %3").arg(ui->cmbTestset->currentText()).arg(size).arg(ui->cmbLastAlign->currentText())); + } + painter.end(); diff --git a/examples/jkqtmathtext_test/testform.h b/examples/jkqtmathtext_test/testform.h index d7cd0e9324..e187d1b4e6 100644 --- a/examples/jkqtmathtext_test/testform.h +++ b/examples/jkqtmathtext_test/testform.h @@ -28,6 +28,7 @@ class TestForm : public QWidget Ui::TestForm *ui; JKQTPHighResTimer ht; double draw(QPainter& painter, double X, double YY, JKQTMathText& mt, QString name, double &durationSizingMS, double &durationTimingMS, QStringList *lstErrors=nullptr); + double drawAligned(QPainter& painter, double X, double YY, JKQTMathText& mt, QString name); QTreeWidgetItem* createTree(JKQTMathTextNode* node, QTreeWidgetItem *parent=NULL); }; diff --git a/examples/jkqtmathtext_test/testform.ui b/examples/jkqtmathtext_test/testform.ui index b67e7e41f4..458be4d26f 100644 --- a/examples/jkqtmathtext_test/testform.ui +++ b/examples/jkqtmathtext_test/testform.ui @@ -588,7 +588,7 @@ - + @@ -685,7 +685,7 @@ - 90,30,20,10 + 90,30,20,10,12 @@ -699,6 +699,16 @@ + + + + big-box + + + true + + + @@ -709,13 +719,6 @@ - - - - HQ anti-aliase - - - @@ -726,13 +729,6 @@ - - - - smooth transform - - - @@ -746,6 +742,62 @@ + + + + last-align + + + + + + + + lt + + + + + lc + + + + + lb + + + + + ct + + + + + cc + + + + + cb + + + + + rt + + + + + rc + + + + + rb + + + + diff --git a/lib/jkqtmathtext/jkqtmathtext.cpp b/lib/jkqtmathtext/jkqtmathtext.cpp index c42afe952a..fc9fd8e1b2 100644 --- a/lib/jkqtmathtext/jkqtmathtext.cpp +++ b/lib/jkqtmathtext/jkqtmathtext.cpp @@ -1648,6 +1648,11 @@ void JKQTMathText::getSizeDetail(QPainter& painter, double& width, double& ascen } } +void JKQTMathText::draw(QPainter &painter, QPointF x, bool drawBoxes) +{ + draw(painter, x.x(), x.y(), drawBoxes); +} + void JKQTMathText::draw(QPainter& painter, double x, double y, bool drawBoxes){ if (getNodeTree()!=nullptr) { JKQTMathTextEnvironment ev; diff --git a/lib/jkqtmathtext/jkqtmathtext.h b/lib/jkqtmathtext/jkqtmathtext.h index 235cbb0508..ec462c59f9 100644 --- a/lib/jkqtmathtext/jkqtmathtext.h +++ b/lib/jkqtmathtext/jkqtmathtext.h @@ -253,11 +253,36 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathText : public QObject { double getAscent(QPainter& painter); /** \brief return the detailes sizes of the text */ void getSizeDetail(QPainter& painter, double& width, double& ascent, double& descent, double& strikeoutPos); - /** \brief draw a representation to the QPainter object at the specified position */ - void draw(QPainter& painter, double x, double y, bool drawBoxes=false); - /** \brief overloaded version of draw(QPainter& painter, double x, double y). + /** \brief draw a representation to the object at the specified position \a x , \a y * - * This version draws the text inside the given rectangle according to the specified flags. + * \param painter the QPainter to use for drawing + * \param x position of the left border of the text/expression to be drawn (see sketch below) + * \param drawBoxes if \c true boxes defining the size of each node are drawn, example output: \image html jkqtmathtext/jkqtmathtext_drawboxes.png + * + * Here is an illustration of the geometry of the drawn text/expression: + * \image html jkqtmathtext/jkqtmathtext_node_geo.png + */ + void draw(QPainter& painter, QPointF x, bool drawBoxes=false); + /** \brief draw a representation to the object at the specified position \a x , \a y + * + * \param painter the QPainter to use for drawing + * \param x x-position of the left border of the text/expression to be drawn (see sketch below) + * \param y y-position of the baseline of the text/expression to be drawn (see sketch below) + * \param drawBoxes if \c true boxes defining the size of each node are drawn, example output: \image html jkqtmathtext/jkqtmathtext_drawboxes.png + * + * Here is an illustration of the geometry of the drawn text/expression: + * \image html jkqtmathtext/jkqtmathtext_node_geo.png + */ + void draw(QPainter& painter, double x, double y, bool drawBoxes=false); + /** \brief draw into a rectangle \a rect with alignment defined in \a flags (see below) + * + * \param painter the QPainter to use for drawing + * \param rect rectangle to draw the text/expression into (see sketch below) + * \param flags alignment within \a rect (see below), use e.g. \c Qt::AlignHCenter|Qt::AlignVCenter to center the expression inside \a rect + * \param drawBoxes if \c true boxes defining the size of each node are drawn, example output: \image html jkqtmathtext/jkqtmathtext_drawboxes.png + * + * These options are interpreted for \a flags (dark-red is the rectangle \a rect): + * \image html jkqtmathtext/jkqtmathtext_draw_flags.png */ void draw(QPainter& painter, unsigned int flags, QRectF rect, bool drawBoxes=false);