1
0

QtBiomeVisualiser: Zoom is now limited and aligned to steps.

This commit is contained in:
madmaxoft
2014-10-03 12:33:03 +02:00
parent 2f945475f2
commit f625b33d56
4 changed files with 169 additions and 59 deletions

View File

@@ -80,6 +80,27 @@ void BiomeView::setChunkSource(std::shared_ptr<ChunkSource> a_ChunkSource)
void BiomeView::setPosition(int a_BlockX, int a_BlockZ)
{
m_X = a_BlockX;
m_Z = a_BlockZ;
redraw();
}
void BiomeView::setZoomLevel(double a_ZoomLevel)
{
m_Zoom = a_ZoomLevel;
redraw();
}
void BiomeView::redraw()
{
if (!hasData())
@@ -307,12 +328,12 @@ void BiomeView::wheelEvent(QWheelEvent * a_Event)
m_MouseWheelDelta += a_Event->delta();
while (m_MouseWheelDelta >= DELTA_STEP)
{
increaseZoom();
emit wheelUp();
m_MouseWheelDelta -= DELTA_STEP;
}
while (m_MouseWheelDelta <= -DELTA_STEP)
{
decreaseZoom();
emit wheelDown();
m_MouseWheelDelta += DELTA_STEP;
}
}
@@ -360,14 +381,14 @@ void BiomeView::keyPressEvent(QKeyEvent * a_Event)
case Qt::Key_PageUp:
case Qt::Key_Q:
{
increaseZoom();
emit increaseZoom();
break;
}
case Qt::Key_PageDown:
case Qt::Key_E:
{
decreaseZoom();
emit decreaseZoom();
break;
}
}
@@ -376,52 +397,3 @@ void BiomeView::keyPressEvent(QKeyEvent * a_Event)
void BiomeView::decreaseZoom()
{
if (m_Zoom > 1.001)
{
m_Zoom--;
if (m_Zoom < 1.0)
{
// Just crossed the 100%, fixate the 100% threshold:
m_Zoom = 1.0;
}
}
else if (m_Zoom > 0.01)
{
m_Zoom = m_Zoom / 2;
}
redraw();
}
void BiomeView::increaseZoom()
{
if (m_Zoom > 0.99)
{
if (m_Zoom > 20.0)
{
// Zoom too large
return;
}
m_Zoom++;
}
else
{
m_Zoom = m_Zoom * 2;
if (m_Zoom > 1.0)
{
// Just crossed the 100%, fixate the 100% threshold:
m_Zoom = 1.0;
}
}
redraw();
}