summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorm0dB <79429057+m0dB@users.noreply.github.com>2023-05-13 14:20:48 +0200
committerm0dB <79429057+m0dB@users.noreply.github.com>2023-05-27 01:28:25 +0200
commitbf72f07bf36764c1fc16df73fe86cbf120892888 (patch)
treed590c176e6b5fda0efe56182c3d66b42a9116535
parent60132d54823a9e9646012943207a36635788bb13 (diff)
call WGLWidget resizeGL with devicePixelRatio applied, to mimic QGLWidget, use the argument to resizeGL when resizing the waveformrendermark
-rw-r--r--src/waveform/renderers/allshader/waveformrendermark.cpp29
-rw-r--r--src/waveform/renderers/allshader/waveformrendermark.h4
-rw-r--r--src/widget/openglwindow.cpp4
-rw-r--r--src/widget/wglwidgetqopengl.cpp4
-rw-r--r--src/widget/wglwidgetqopengl.h2
5 files changed, 26 insertions, 17 deletions
diff --git a/src/waveform/renderers/allshader/waveformrendermark.cpp b/src/waveform/renderers/allshader/waveformrendermark.cpp
index 830642a1f2..4f27e4ba80 100644
--- a/src/waveform/renderers/allshader/waveformrendermark.cpp
+++ b/src/waveform/renderers/allshader/waveformrendermark.cpp
@@ -53,9 +53,9 @@ void allshader::WaveformRenderMark::initializeGL() {
m_textureShader.init();
for (const auto& pMark : m_marks) {
- generateMarkImage(pMark);
+ generateMarkImage(pMark, m_waveformRenderer->getBreadth());
}
- generatePlayPosMarkTexture();
+ generatePlayPosMarkTexture(m_waveformRenderer->getBreadth());
}
void allshader::WaveformRenderMark::drawTexture(float x, float y, QOpenGLTexture* texture) {
@@ -172,7 +172,7 @@ void allshader::WaveformRenderMark::paintGL() {
}
if (pMark->m_image.isNull()) {
- generateMarkImage(pMark);
+ generateMarkImage(pMark, m_waveformRenderer->getBreadth());
}
const double samplePosition = pMark->getSamplePosition();
@@ -237,11 +237,11 @@ void allshader::WaveformRenderMark::paintGL() {
drawTexture(drawOffset, 0.f, m_pPlayPosMarkTexture.get());
}
-void allshader::WaveformRenderMark::generatePlayPosMarkTexture() {
+void allshader::WaveformRenderMark::generatePlayPosMarkTexture(float breadth) {
float imgwidth;
float imgheight;
- const float height = m_waveformRenderer->getBreadth();
+ const float height = breadth;
const float devicePixelRatio = m_waveformRenderer->getDevicePixelRatio();
const float lineX = 5.5f;
@@ -316,11 +316,18 @@ void allshader::WaveformRenderMark::drawTriangle(QPainter* painter,
painter->fillPath(triangle, fillColor);
}
-void allshader::WaveformRenderMark::resizeGL(int, int) {
+void allshader::WaveformRenderMark::resizeGL(int w, int h) {
+ const float devicePixelRatio = m_waveformRenderer->getDevicePixelRatio();
+ const float breadth =
+ static_cast<float>(
+ m_waveformRenderer->getOrientation() == Qt::Vertical ? w
+ : h) /
+ devicePixelRatio;
+
for (const auto& pMark : m_marks) {
- generateMarkImage(pMark);
+ generateMarkImage(pMark, breadth);
}
- generatePlayPosMarkTexture();
+ generatePlayPosMarkTexture(breadth);
}
void allshader::WaveformRenderMark::onSetTrack() {
@@ -373,12 +380,12 @@ void allshader::WaveformRenderMark::checkCuesUpdated() {
pMark->m_text = newLabel;
int dimBrightThreshold = m_waveformRenderer->getDimBrightThreshold();
pMark->setBaseColor(newColor, dimBrightThreshold);
- generateMarkImage(pMark);
+ generateMarkImage(pMark, m_waveformRenderer->getBreadth());
}
}
}
-void allshader::WaveformRenderMark::generateMarkImage(WaveformMarkPointer pMark) {
+void allshader::WaveformRenderMark::generateMarkImage(WaveformMarkPointer pMark, float breadth) {
// Load the pixmap from file.
// If that succeeds loading the text and stroke is skipped.
const float devicePixelRatio = m_waveformRenderer->getDevicePixelRatio();
@@ -463,7 +470,7 @@ void allshader::WaveformRenderMark::generateMarkImage(WaveformMarkPointer pMark)
float height;
width = 2.f * labelRectWidth + 1.f;
- height = m_waveformRenderer->getBreadth();
+ height = breadth;
pMark->m_image = QImage(
static_cast<int>(width * devicePixelRatio),
diff --git a/src/waveform/renderers/allshader/waveformrendermark.h b/src/waveform/renderers/allshader/waveformrendermark.h
index 32188cd352..4f77e5f821 100644
--- a/src/waveform/renderers/allshader/waveformrendermark.h
+++ b/src/waveform/renderers/allshader/waveformrendermark.h
@@ -42,8 +42,8 @@ class allshader::WaveformRenderMark final : public QObject, public allshader::Wa
private:
void checkCuesUpdated();
- void generateMarkImage(WaveformMarkPointer pMark);
- void generatePlayPosMarkTexture();
+ void generateMarkImage(WaveformMarkPointer pMark, float breadth);
+ void generatePlayPosMarkTexture(float breadth);
void drawTriangle(QPainter* painter,
const QBrush& fillColor,
diff --git a/src/widget/openglwindow.cpp b/src/widget/openglwindow.cpp
index 4e701db1bc..89ea1a9aa9 100644
--- a/src/widget/openglwindow.cpp
+++ b/src/widget/openglwindow.cpp
@@ -38,7 +38,9 @@ void OpenGLWindow::paintGL() {
void OpenGLWindow::resizeGL(int w, int h) {
if (m_pWidget) {
- m_pWidget->resizeGL(w, h);
+ // QGLWidget::resizeGL has devicePixelRatio applied, so we mimic the same behaviour
+ m_pWidget->resizeGL(static_cast<int>(static_cast<float>(w) * devicePixelRatio()),
+ static_cast<int>(static_cast<float>(h) * devicePixelRatio()));
m_dirty = true;
}
}
diff --git a/src/widget/wglwidgetqopengl.cpp b/src/widget/wglwidgetqopengl.cpp
index fc7810b3e8..9e5bd33d72 100644
--- a/src/widget/wglwidgetqopengl.cpp
+++ b/src/widget/wglwidgetqopengl.cpp
@@ -25,8 +25,8 @@ QPaintDevice* WGLWidget::paintDevice() {
return m_pOpenGLWindow;
}
-void WGLWidget::setTrackDropTarget(TrackDropTarget* target) {
- m_pTrackDropTarget = target;
+void WGLWidget::setTrackDropTarget(TrackDropTarget* pTarget) {
+ m_pTrackDropTarget = pTarget;
}
TrackDropTarget* WGLWidget::trackDropTarget() const {
diff --git a/src/widget/wglwidgetqopengl.h b/src/widget/wglwidgetqopengl.h
index 68b94b7921..7666d823f8 100644
--- a/src/widget/wglwidgetqopengl.h
+++ b/src/widget/wglwidgetqopengl.h
@@ -40,7 +40,7 @@ class WGLWidget : public QWidget {
virtual void resizeGL(int w, int h);
virtual void initializeGL();
- void setTrackDropTarget(TrackDropTarget* target);
+ void setTrackDropTarget(TrackDropTarget* pTarget);
TrackDropTarget* trackDropTarget() const;
protected: