draw.cpp

changeset 26
83184d9407c7
parent 25
c74bb88f537d
child 27
2ba799d294bc
--- a/draw.cpp	Mon Mar 18 12:15:23 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-#include <QtGui>
-#include <QGLWidget>
-#include "common.h"
-#include "io.h"
-#include "draw.h"
-#include "bbox.h"
-
-renderer::renderer (QWidget* parent) {
-	parent = parent; // shhh, GCC
-	fRotX = fRotY = fRotZ = 0.0;
-	fZoom = 1.0;
-}
-
-void renderer::initializeGL () {
-	glLoadIdentity();
-	glMatrixMode (GL_MODELVIEW);
-	glClearColor (0.8f, 0.8f, 0.85f, 1.0f);
-	glEnable (GL_DEPTH_TEST);
-	glShadeModel (GL_SMOOTH);
-	glEnable (GL_MULTISAMPLE);
-	
-	CompileObjects ();
-}
-
-void renderer::hardRefresh () {
-	CompileObjects ();
-	paintGL ();
-}
-
-void renderer::resizeGL (int w, int h) {
-	glViewport (0, 0, w, h);
-}
-
-void renderer::paintGL () {
-	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-	
-	glPushMatrix ();
-		glTranslatef (
-			(g_BBox.v0.x + g_BBox.v1.x) / -2.0,
-			(g_BBox.v0.y + g_BBox.v1.y) / -2.0,
-			(g_BBox.v0.z + g_BBox.v1.z) / -2.0
-		);
-		
-		// glTranslatef (0.0f, 0.0f, -5.0f);
-		glTranslatef (0.0f, 0.0f, fZoom);
-		
-		// glScalef (0.75f, 1.15f, 0.0f);
-		glRotatef (fRotX, 1.0f, 0.0f, 0.0f);
-		glRotatef (fRotY, 0.0f, 1.0f, 0.0f);
-		glRotatef (fRotZ, 0.0f, 0.0f, 1.0f);
-		
-		glMatrixMode (GL_MODELVIEW);
-		
-		glCallList (objlist);
-		glColor3f (0.0, 0.5, 1.0);
-	glPopMatrix ();
-}
-
-void renderer::CompileObjects () {
-	printf ("compile all objects\n");
-	
-	objlist = glGenLists (1);
-	glNewList (objlist, GL_COMPILE);
-	
-	if (!g_CurrentFile) {
-		printf ("renderer: no files loaded, cannot compile anything\n");
-		return;
-	}
-	
-	for (ulong i = 0; i < g_CurrentFile->objects.size(); i++)
-		CompileOneObject (g_CurrentFile->objects[i]);
-	
-	glEndList ();
-}
-
-#define GL_VERTEX(V) \
-	glVertex3d (V.x, V.y, V.z);
-
-void renderer::CompileOneObject (LDObject* obj) {
-	if (!obj)
-		return;
-	
-	switch (obj->getType ()) {
-	case OBJ_CondLine: // For now, treat condlines like normal lines.
-	case OBJ_Line:
-		{
-			glColor3f (0.0f, 0.0f, 0.0f); // Draw all lines black for now
-			// draw lines
-			LDLine* line = static_cast<LDLine*> (obj);
-			glBegin (GL_LINES);
-			for (short i = 0; i < 2; ++i)
-				GL_VERTEX (line->vaCoords[i])
-			glEnd ();
-		}
-		break;
-	
-	case OBJ_Triangle:
-		{
-			LDTriangle* tri = static_cast<LDTriangle*> (obj);
-			glColor3f (0.5f, 0.5f, 0.5f); // Draw all polygons gray for now
-			glBegin (GL_TRIANGLES);
-			for (short i = 0; i < 3; ++i)
-				GL_VERTEX (tri->vaCoords[i])
-			glEnd ();
-		}
-		break;
-		
-	case OBJ_Quad:
-		{
-			LDQuad* quad = static_cast<LDQuad*> (obj);
-			glColor3f (0.5f, 0.5f, 0.5f);
-			glBegin (GL_QUADS);
-			for (short i = 0; i < 4; ++i)
-				GL_VERTEX (quad->vaCoords[i])
-			glEnd ();
-		}
-		break;
-	
-	default:
-		break;
-	}
-}
-
-void renderer::ClampAngle (double& fAngle) {
-	while (fAngle < 0)
-		fAngle += 360.0;
-	while (fAngle > 360.0)
-		fAngle -= 360.0;
-}
-
-void renderer::mouseMoveEvent (QMouseEvent *event) {
-	int dx = event->x () - lastPos.x ();
-	int dy = event->y () - lastPos.y ();
-	
-	if (event->buttons () & Qt::LeftButton) {
-		fRotX = fRotX + (dy);
-		fRotY = fRotY + (dx);
-		ClampAngle (fRotX);
-		ClampAngle (fRotY);
-	}
-	
-	if (event->buttons () & Qt::RightButton) {
-		fRotX = fRotX + (dy);
-		fRotZ = fRotZ + (dx);
-		ClampAngle (fRotX);
-		ClampAngle (fRotZ);
-	}
-	
-	if (event->buttons () & Qt::MidButton) {
-		fZoom += (dy / 100.0);
-		fZoom = clamp (fZoom, 0.1, 10.0);
-	}
-	
-	printf ("%.3f %.3f %.3f %.3f\n",
-		fRotX, fRotY, fRotZ, fZoom);
-	lastPos = event->pos();
-	updateGL ();
-}
\ No newline at end of file

mercurial