Use mouse wheel for zooming instead of pressing the mouse button and detecting vertical movement.

Mon, 22 Apr 2013 17:15:25 +0300

author
Santeri Piippo <crimsondusk64@gmail.com>
date
Mon, 22 Apr 2013 17:15:25 +0300
changeset 131
3ccb10f6ed0b
parent 130
ec4b30b166fe
child 132
577e8e89d8de

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;

mercurial