From 47e0309ea800f6cd9b9e54fb12875fe87e33df74 Mon Sep 17 00:00:00 2001 From: Paul Wicking Date: Mon, 31 Aug 2020 14:25:21 +0200 Subject: [PATCH] Doc: compile plaintextlayout snippet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Done-with: Nico Vertriest Task-number: QTBUG-81486 Change-Id: I2bac37fd41703cc4cfb7de3946b31412c4af37b9 Reviewed-by: Topi Reiniƶ --- .../plaintextlayout/plaintextlayout.pro | 9 +- .../doc/snippets/plaintextlayout/window.cpp | 107 +++++++++--------- src/gui/doc/snippets/snippets.pro | 1 + 3 files changed, 58 insertions(+), 59 deletions(-) diff --git a/src/gui/doc/snippets/plaintextlayout/plaintextlayout.pro b/src/gui/doc/snippets/plaintextlayout/plaintextlayout.pro index 6283406f25..a0cf7a7b68 100644 --- a/src/gui/doc/snippets/plaintextlayout/plaintextlayout.pro +++ b/src/gui/doc/snippets/plaintextlayout/plaintextlayout.pro @@ -1,3 +1,6 @@ -HEADERS = window.h -SOURCES = main.cpp \ - window.cpp +TEMPLATE = lib +TARGET = plaintextlayout_snippets +QT += core gui widgets + +SOURCES = \ + window.cpp diff --git a/src/gui/doc/snippets/plaintextlayout/window.cpp b/src/gui/doc/snippets/plaintextlayout/window.cpp index 9bc4df05f1..36c061635e 100644 --- a/src/gui/doc/snippets/plaintextlayout/window.cpp +++ b/src/gui/doc/snippets/plaintextlayout/window.cpp @@ -47,72 +47,67 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ +#include +#include +#include -#include -#include - -#include "window.h" - -Window::Window(QWidget *parent) - : QWidget(parent) +namespace plaintextlayout { +class Window : public QWidget { - text = QString("Support for text rendering and layout in Qt 4 has been " - "redesigned around a system that allows textual content to " - "be represented in a more flexible way than was possible " - "with Qt 3. Qt 4 also provides a more convenient " - "programming interface for editing documents. These " - "improvements are made available through a reimplementation " - "of the existing text rendering engine, and the " - "introduction of several new classes. " - "See the relevant module overview for a detailed discussion " - "of this framework. The following sections provide a brief " - "overview of the main concepts behind Scribe."); +protected: + void paintEvent(QPaintEvent *event) override; - setWindowTitle(tr("Plain Text Layout")); -} +private: + QFont font; + QString text; +}; void Window::paintEvent(QPaintEvent *event) { + //! [0] - QTextLayout textLayout(text, font); - qreal margin = 10; - qreal radius = qMin(width()/2.0, height()/2.0) - margin; - QFontMetrics fm(font); +QTextLayout textLayout(text, font); +qreal margin = 10; +qreal radius = qMin(width()/2.0, height()/2.0) - margin; +QFontMetrics fm(font); - qreal lineHeight = fm.height(); - qreal y = 0; +qreal lineHeight = fm.height(); +qreal y = 0; - textLayout.beginLayout(); +textLayout.beginLayout(); - while (1) { - // create a new line - QTextLine line = textLayout.createLine(); - if (!line.isValid()) - break; +while (1) { + // create a new line + QTextLine line = textLayout.createLine(); + if (!line.isValid()) + break; - qreal x1 = qMax(0.0, pow(pow(radius,2)-pow(radius-y,2), 0.5)); - qreal x2 = qMax(0.0, pow(pow(radius,2)-pow(radius-(y+lineHeight),2), 0.5)); - qreal x = qMax(x1, x2) + margin; - qreal lineWidth = (width() - margin) - x; + qreal x1 = qMax(0.0, pow(pow(radius,2)-pow(radius-y,2), 0.5)); + qreal x2 = qMax(0.0, pow(pow(radius,2)-pow(radius-(y+lineHeight),2), 0.5)); + qreal x = qMax(x1, x2) + margin; + qreal lineWidth = (width() - margin) - x; - line.setLineWidth(lineWidth); - line.setPosition(QPointF(x, margin+y)); - y += line.height(); - } - - textLayout.endLayout(); - - QPainter painter; - painter.begin(this); - painter.setRenderHint(QPainter::Antialiasing); - painter.fillRect(rect(), Qt::white); - painter.setBrush(QBrush(Qt::black)); - painter.setPen(QPen(Qt::black)); - textLayout.draw(&painter, QPoint(0,0)); - - painter.setBrush(QBrush(QColor("#a6ce39"))); - painter.setPen(QPen(Qt::black)); - painter.drawEllipse(QRectF(-radius, margin, 2*radius, 2*radius)); - painter.end(); -//! [0] + line.setLineWidth(lineWidth); + line.setPosition(QPointF(x, margin+y)); + y += line.height(); } + +textLayout.endLayout(); + +QPainter painter; +painter.begin(this); +painter.setRenderHint(QPainter::Antialiasing); +painter.fillRect(rect(), Qt::white); +painter.setBrush(QBrush(Qt::black)); +painter.setPen(QPen(Qt::black)); +textLayout.draw(&painter, QPoint(0,0)); + +painter.setBrush(QBrush(QColor("#a6ce39"))); +painter.setPen(QPen(Qt::black)); +painter.drawEllipse(QRectF(-radius, margin, 2*radius, 2*radius)); +painter.end(); +//! [0] + +Q_UNUSED(event); +} +} // plaintextlayout diff --git a/src/gui/doc/snippets/snippets.pro b/src/gui/doc/snippets/snippets.pro index eb2141895c..f0d68f5b94 100644 --- a/src/gui/doc/snippets/snippets.pro +++ b/src/gui/doc/snippets/snippets.pro @@ -12,6 +12,7 @@ contains(QT_BUILD_PARTS, tests) { droprectangle \ image \ picture \ + plaintextlayout \ qfontdatabase \ textblock-formats \ textblock-fragments \