summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/opengl/paintedwindow/paintedwindow.cpp47
-rw-r--r--examples/opengl/paintedwindow/paintedwindow.h1
2 files changed, 44 insertions, 4 deletions
diff --git a/examples/opengl/paintedwindow/paintedwindow.cpp b/examples/opengl/paintedwindow/paintedwindow.cpp
index 88a8f74f91..543c13eab3 100644
--- a/examples/opengl/paintedwindow/paintedwindow.cpp
+++ b/examples/opengl/paintedwindow/paintedwindow.cpp
@@ -40,9 +40,11 @@
#include "paintedwindow.h"
+#include <QGuiApplication>
#include <QOpenGLContext>
#include <QOpenGLPaintDevice>
#include <QPainter>
+#include <QScreen>
#include <QTimer>
#include <qmath.h>
@@ -74,19 +76,56 @@ void PaintedWindow::exposeEvent(QExposeEvent *)
paint();
}
+void PaintedWindow::mousePressEvent(QMouseEvent *)
+{
+ Qt::ScreenOrientation o = orientation();
+ if (o == Qt::UnknownOrientation)
+ o = QGuiApplication::primaryScreen()->primaryOrientation();
+
+ switch (o) {
+ case Qt::LandscapeOrientation:
+ setOrientation(Qt::PortraitOrientation);
+ break;
+ case Qt::PortraitOrientation:
+ setOrientation(Qt::InvertedLandscapeOrientation);
+ break;
+ case Qt::InvertedLandscapeOrientation:
+ setOrientation(Qt::InvertedPortraitOrientation);
+ break;
+ case Qt::InvertedPortraitOrientation:
+ setOrientation(Qt::LandscapeOrientation);
+ break;
+ default:
+ Q_ASSERT(false);
+ }
+
+ paint();
+}
+
void PaintedWindow::paint()
{
m_context->makeCurrent(this);
- QPainterPath path;
- path.addEllipse(0, 0, width(), height());
-
QOpenGLPaintDevice device(size());
+ Qt::ScreenOrientation screenOrientation = QGuiApplication::primaryScreen()->primaryOrientation();
+ Qt::ScreenOrientation appOrientation = orientation();
+
+ QRect rect(0, 0, width(), height());
+ QRect mapped = QScreen::mapBetween(appOrientation, screenOrientation, rect);
+
+ QPainterPath path;
+ path.addEllipse(mapped);
+
QPainter painter(&device);
- painter.fillRect(0, 0, width(), height(), Qt::white);
+ painter.setTransform(QScreen::transformBetween(appOrientation, screenOrientation, rect));
+ painter.fillRect(mapped, Qt::white);
painter.setRenderHint(QPainter::Antialiasing);
painter.fillPath(path, Qt::blue);
+ QFont font;
+ font.setPixelSize(64);
+ painter.setFont(font);
+ painter.drawText(mapped, Qt::AlignCenter, "Hello");
painter.end();
m_context->swapBuffers(this);
diff --git a/examples/opengl/paintedwindow/paintedwindow.h b/examples/opengl/paintedwindow/paintedwindow.h
index 1792a0a744..dcf8110e24 100644
--- a/examples/opengl/paintedwindow/paintedwindow.h
+++ b/examples/opengl/paintedwindow/paintedwindow.h
@@ -63,6 +63,7 @@ private slots:
private:
void resizeEvent(QResizeEvent *);
void exposeEvent(QExposeEvent *);
+ void mousePressEvent(QMouseEvent *);
QOpenGLContext *m_context;
};