Fix handling for a couple of cases where we need device pixel co-ords

* When interacting with the C++ UI we have to use device pixels, so
  multiply/divide by the device pixel ratio.
This commit is contained in:
baldurk
2017-06-19 16:17:20 +01:00
parent b87cf00c86
commit ac885b1882
3 changed files with 28 additions and 12 deletions
+2
View File
@@ -2384,6 +2384,8 @@ void BufferViewer::render_clicked(QMouseEvent *e)
QPoint curpos = e->pos();
curpos *= ui->render->devicePixelRatioF();
if((e->buttons() & Qt::RightButton) && m_Output)
{
m_Ctx.Replay().AsyncInvoke(lit("PickVertex"), [this, curpos](IReplayController *r) {
+23 -12
View File
@@ -2171,8 +2171,10 @@ void TextureViewer::render_mouseMove(QMouseEvent *e)
if(m_Output == NULL)
return;
m_CurHoverPixel.setX(int(((float)e->x() - m_TexDisplay.offx) / m_TexDisplay.scale));
m_CurHoverPixel.setY(int(((float)e->y() - m_TexDisplay.offy) / m_TexDisplay.scale));
m_CurHoverPixel.setX(int((float(e->x() * ui->render->devicePixelRatio()) - m_TexDisplay.offx) /
m_TexDisplay.scale));
m_CurHoverPixel.setY(int((float(e->y() * ui->render->devicePixelRatio()) - m_TexDisplay.offy) /
m_TexDisplay.scale));
if(m_TexDisplay.texid != ResourceId())
{
@@ -2316,7 +2318,7 @@ float TextureViewer::CurMaxScrollX()
if(texptr != NULL)
size = QSizeF(texptr->width, texptr->height);
return ui->render->width() - size.width() * m_TexDisplay.scale;
return realRenderWidth() - size.width() * m_TexDisplay.scale;
}
float TextureViewer::CurMaxScrollY()
@@ -2328,7 +2330,7 @@ float TextureViewer::CurMaxScrollY()
if(texptr != NULL)
size = QSizeF(texptr->width, texptr->height);
return ui->render->height() - size.height() * m_TexDisplay.scale;
return realRenderHeight() - size.height() * m_TexDisplay.scale;
}
QPoint TextureViewer::getScrollPosition()
@@ -2371,7 +2373,7 @@ void TextureViewer::UI_CalcScrollbars()
size = QSizeF(texptr->width, texptr->height);
}
if((int)floor(size.width() * m_TexDisplay.scale) <= ui->render->width())
if((int)floor(size.width() * m_TexDisplay.scale) <= realRenderWidth())
{
ui->renderHScroll->setEnabled(false);
}
@@ -2379,13 +2381,12 @@ void TextureViewer::UI_CalcScrollbars()
{
ui->renderHScroll->setEnabled(true);
ui->renderHScroll->setMaximum(
(int)ceil(size.width() * m_TexDisplay.scale - (float)ui->render->width()));
ui->renderHScroll->setMaximum((int)ceil(size.width() * m_TexDisplay.scale - realRenderWidth()));
ui->renderHScroll->setPageStep(qMax(1, ui->renderHScroll->maximum() / 6));
ui->renderHScroll->setSingleStep(int(m_TexDisplay.scale));
}
if((int)floor(size.height() * m_TexDisplay.scale) <= ui->render->height())
if((int)floor(size.height() * m_TexDisplay.scale) <= realRenderHeight())
{
ui->renderVScroll->setEnabled(false);
}
@@ -2393,8 +2394,7 @@ void TextureViewer::UI_CalcScrollbars()
{
ui->renderVScroll->setEnabled(true);
ui->renderVScroll->setMaximum(
(int)ceil(size.height() * m_TexDisplay.scale - (float)ui->render->height()));
ui->renderVScroll->setMaximum((int)ceil(size.height() * m_TexDisplay.scale - realRenderHeight()));
ui->renderVScroll->setPageStep(qMax(1, ui->renderVScroll->maximum() / 6));
ui->renderVScroll->setSingleStep(int(m_TexDisplay.scale));
}
@@ -2755,11 +2755,22 @@ float TextureViewer::GetFitScale()
if(texptr == NULL)
return 1.0f;
float xscale = (float)ui->render->width() / (float)texptr->width;
float yscale = (float)ui->render->height() / (float)texptr->height;
float xscale = (float)realRenderWidth() / (float)texptr->width;
float yscale = (float)realRenderHeight() / (float)texptr->height;
return qMin(xscale, yscale);
}
int TextureViewer::realRenderWidth() const
{
return ui->render->width() * ui->render->devicePixelRatio();
}
int TextureViewer::realRenderHeight() const
{
return ui->render->height() * ui->render->devicePixelRatio();
}
void TextureViewer::UI_UpdateFittedScale()
{
if(ui->fitToWindow->isChecked())
+3
View File
@@ -254,6 +254,9 @@ private:
float GetFitScale();
int realRenderWidth() const;
int realRenderHeight() const;
QPoint getScrollPosition();
void setScrollPosition(const QPoint &pos);