Mon, 22 Apr 2013 17:15:25 +0300
Use mouse wheel for zooming instead of pressing the mouse button and detecting vertical movement.
gldraw.cpp | file | annotate | diff | comparison | revisions | |
gldraw.h | file | annotate | diff | comparison | revisions |
--- a/gldraw.cpp Mon Apr 22 17:01:37 2013 +0300 +++ b/gldraw.cpp Mon Apr 22 17:15:25 2013 +0300 @@ -41,9 +41,9 @@ cfg (bool, gl_colorbfc, true); cfg (bool, gl_selflash, false); -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= GLRenderer::GLRenderer (QWidget* parent) { parent = parent; // shhh, GCC fRotX = fRotY = fRotZ = 0.0f; @@ -54,9 +54,9 @@ connect (qPulseTimer, SIGNAL (timeout ()), this, SLOT (slot_timerUpdate ())); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::initializeGL () { glLoadIdentity(); glMatrixMode (GL_MODELVIEW); @@ -82,9 +82,9 @@ compileObjects (); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= QColor GLRenderer::getMainColor () { QColor col (gl_maincolor.value.chars()); @@ -95,7 +95,7 @@ return col; } -// ------------------------------------------------------------------------- // +// ----------------------------------------------------------------------------- void GLRenderer::setBackground () { QColor col (gl_bgcolor.value.chars()); @@ -212,15 +212,15 @@ ((double) a) / 255.0f); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::refresh () { paintGL (); swapBuffers (); } -// ========================================================================= // +// ============================================================================= void GLRenderer::hardRefresh () { compileObjects (); refresh (); @@ -228,9 +228,9 @@ glLineWidth (gl_linethickness); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::resizeGL (int w, int h) { glViewport (0, 0, w, h); glLoadIdentity (); @@ -238,9 +238,9 @@ gluPerspective (45.0f, (double)w / (double)h, 0.1f, 100.0f); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::paintGL () { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_MODELVIEW); @@ -263,9 +263,9 @@ glPopMatrix (); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::compileObjects () { uaObjLists.clear (); @@ -301,9 +301,9 @@ } } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= template<class T> void GLRenderer::compileSubObject (LDObject* obj, const GLenum eGLType, const short dVerts) { @@ -316,9 +316,9 @@ glEnd (); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::compileOneObject (LDObject* obj) { setObjectColor (obj); @@ -407,9 +407,9 @@ } } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::compileVertex (vertex& vrt) { glVertex3d ( (vrt.x + g_faObjectOffset[0]) / g_StoredBBoxSize, @@ -417,9 +417,9 @@ -(vrt.z + g_faObjectOffset[2]) / g_StoredBBoxSize); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::clampAngle (double& fAngle) { while (fAngle < 0) fAngle += 360.0; @@ -427,9 +427,9 @@ fAngle -= 360.0; } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::mouseReleaseEvent (QMouseEvent* event) { if ((qMouseButtons & Qt::LeftButton) && !(event->buttons() & Qt::LeftButton)) { if (ulTotalMouseMove < 10) @@ -439,16 +439,16 @@ } } -// ========================================================================= // +// ============================================================================= void GLRenderer::mousePressEvent (QMouseEvent* event) { qMouseButtons = event->buttons(); if (event->buttons() & Qt::LeftButton) ulTotalMouseMove = 0; } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::mouseMoveEvent (QMouseEvent *event) { int dx = event->x () - lastPos.x (); int dy = event->y () - lastPos.y (); @@ -468,18 +468,13 @@ clampAngle (fRotZ); } - if (event->buttons () & Qt::MidButton) { - fZoom += (dy / 100.0); - fZoom = clamp (fZoom, 0.01, 100.0); - } - lastPos = event->pos(); updateGL (); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::keyPressEvent (QKeyEvent* qEvent) { qKeyMods = qEvent->modifiers (); } @@ -488,9 +483,17 @@ qKeyMods = qEvent->modifiers (); } -// ========================================================================= // -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// ========================================================================= // +// ============================================================================= +void GLRenderer::wheelEvent (QWheelEvent* ev) { + fZoom += (-ev->delta () / 100.0); + fZoom = clamp (fZoom, 0.01, 100.0); + ev->accept (); + updateGL (); +} + +// ============================================================================= +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// ============================================================================= void GLRenderer::updateSelFlash () { if (gl_selflash && g_ForgeWindow->paSelection.size() > 0) { qPulseTimer->start (g_dPulseInterval);
--- a/gldraw.h Mon Apr 22 17:01:37 2013 +0300 +++ b/gldraw.h Mon Apr 22 17:15:25 2013 +0300 @@ -60,6 +60,7 @@ void mouseReleaseEvent (QMouseEvent* event); void keyPressEvent (QKeyEvent* qEvent); void keyReleaseEvent (QKeyEvent* qEvent); + void wheelEvent (QWheelEvent* ev); private: std::vector<GLuint> uaObjLists;