diff options
Diffstat (limited to 'examples/widgets/touch/fingerpaint/scribblearea.cpp')
-rw-r--r-- | examples/widgets/touch/fingerpaint/scribblearea.cpp | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/examples/widgets/touch/fingerpaint/scribblearea.cpp b/examples/widgets/touch/fingerpaint/scribblearea.cpp deleted file mode 100644 index fb5e62906b..0000000000 --- a/examples/widgets/touch/fingerpaint/scribblearea.cpp +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include <QtWidgets> -#if defined(QT_PRINTSUPPORT_LIB) -#include <QtPrintSupport/qtprintsupportglobal.h> -#if QT_CONFIG(printdialog) -#include <QPrinter> -#include <QPrintDialog> -#endif -#endif - -#include "scribblearea.h" - -static const qreal MinimumDiameter = 3.0; -static const qreal MaximumDiameter = 50.0; - -//! [0] -ScribbleArea::ScribbleArea(QWidget *parent) - : QWidget(parent) -{ - setAttribute(Qt::WA_AcceptTouchEvents); - setAttribute(Qt::WA_StaticContents); - modified = false; - - myPenColors - << QColor("green") - << QColor("purple") - << QColor("red") - << QColor("blue") - << QColor("yellow") - - << QColor("pink") - << QColor("orange") - << QColor("brown") - << QColor("grey") - << QColor("black"); -} -//! [0] - -//! [1] -bool ScribbleArea::openImage(const QString &fileName) -//! [1] //! [2] -{ - QImage loadedImage; - if (!loadedImage.load(fileName)) - return false; - - QSize newSize = loadedImage.size().expandedTo(size()); - resizeImage(&loadedImage, newSize); - image = loadedImage; - modified = false; - update(); - return true; -} -//! [2] - -//! [3] -bool ScribbleArea::saveImage(const QString &fileName, const char *fileFormat) -//! [3] //! [4] -{ - QImage visibleImage = image; - resizeImage(&visibleImage, size()); - - if (visibleImage.save(fileName, fileFormat)) { - modified = false; - return true; - } else { - return false; - } -} -//! [4] - -//! [9] -void ScribbleArea::clearImage() -//! [9] //! [10] -{ - image.fill(qRgb(255, 255, 255)); - modified = true; - update(); -} -//! [10] - -//! [12] //! [13] -void ScribbleArea::paintEvent(QPaintEvent *event) -//! [13] //! [14] -{ - QPainter painter(this); - const QRect rect = event->rect(); - painter.drawImage(rect.topLeft(), image, rect); -} -//! [14] - -//! [15] -void ScribbleArea::resizeEvent(QResizeEvent *event) -//! [15] //! [16] -{ - if (width() > image.width() || height() > image.height()) { - int newWidth = qMax(width() + 128, image.width()); - int newHeight = qMax(height() + 128, image.height()); - resizeImage(&image, QSize(newWidth, newHeight)); - update(); - } - QWidget::resizeEvent(event); -} -//! [16] - -//! [19] -void ScribbleArea::resizeImage(QImage *image, const QSize &newSize) -//! [19] //! [20] -{ - if (image->size() == newSize) - return; - - QImage newImage(newSize, QImage::Format_RGB32); - newImage.fill(qRgb(255, 255, 255)); - QPainter painter(&newImage); - painter.drawImage(QPoint(0, 0), *image); - *image = newImage; -} -//! [20] - -//! [21] -void ScribbleArea::print() -{ -#if defined(QT_PRINTSUPPORT_LIB) && QT_CONFIG(printdialog) - QPrinter printer(QPrinter::HighResolution); - - QPrintDialog printDialog(&printer, this); -//! [21] //! [22] - if (printDialog.exec() == QDialog::Accepted) { - QPainter painter(&printer); - QRect rect = painter.viewport(); - QSize size = image.size(); - size.scale(rect.size(), Qt::KeepAspectRatio); - painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); - painter.setWindow(image.rect()); - painter.drawImage(0, 0, image); - } -#endif // QT_CONFIG(printdialog) -} -//! [22] - -bool ScribbleArea::event(QEvent *event) -{ - switch (event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - { - const QTouchEvent *touch = static_cast<QTouchEvent *>(event); - const auto touchPoints = static_cast<QTouchEvent *>(event)->points(); - for (const QTouchEvent::TouchPoint &touchPoint : touchPoints) { - switch (touchPoint.state()) { - case QEventPoint::Stationary: - case QEventPoint::Released: - // don't do anything if this touch point hasn't moved or has been released - continue; - default: - { - QSizeF diams = touchPoint.ellipseDiameters(); - if (diams.isEmpty()) { - qreal diameter = MaximumDiameter; - if (touch->pointingDevice()->capabilities().testFlag(QPointingDevice::Capability::Pressure)) - diameter = MinimumDiameter + (MaximumDiameter - MinimumDiameter) * touchPoint.pressure(); - diams = QSizeF(diameter, diameter); - } - - QPainter painter(&image); - painter.setPen(Qt::NoPen); - painter.setBrush(myPenColors.at(touchPoint.id() % myPenColors.count())); - painter.drawEllipse(touchPoint.position(), diams.width() / 2, diams.height() / 2); - painter.end(); - - modified = true; - const int rad = 2; - QRectF rect(QPointF(), diams); - rect.moveCenter(touchPoint.position()); - update(rect.toRect().adjusted(-rad,-rad, +rad, +rad)); - } - break; - } - } - break; - } - default: - return QWidget::event(event); - } - return true; -} |