Mercurial > projects > qtd
diff examples/opengl/hellogl/glwidget.d @ 4:0a29ce1ae854
CMake build script.
Small fixes in examples.
author | SokoL_SD |
---|---|
date | Wed, 13 May 2009 19:01:55 +0000 |
parents | e78566595089 |
children | 834feae7809b |
line wrap: on
line diff
--- a/examples/opengl/hellogl/glwidget.d Wed May 13 17:34:40 2009 +0000 +++ b/examples/opengl/hellogl/glwidget.d Wed May 13 19:01:55 2009 +0000 @@ -50,7 +50,7 @@ class GLWidget : QGLWidget { // Q_OBJECT - + public: this(QWidget parent = null) { @@ -59,17 +59,18 @@ xRot = 0; yRot = 0; zRot = 0; - + trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0); trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0); + } - + ~this() { makeCurrent(); glDeleteLists(object, 1); - } - + } + QSize minimumSizeHint() { return QSize(50, 50); @@ -91,7 +92,7 @@ updateGL(); } } - + void setYRotation(int angle) { normalizeAngle(&angle); @@ -101,7 +102,7 @@ updateGL(); } } - + void setZRotation(int angle) { normalizeAngle(&angle); @@ -111,11 +112,11 @@ updateGL(); } } - + mixin Signal!("xRotationChanged", int); mixin Signal!("yRotationChanged", int); mixin Signal!("zRotationChanged", int); - + protected: void initializeGL() @@ -142,7 +143,7 @@ { int side = qMin(width, height); glViewport((width - side) / 2, (height - side) / 2, side, side); - + glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0); @@ -153,12 +154,12 @@ { lastPos = QPoint(event.pos.x, event.pos.y); } - + void mouseMoveEvent(QMouseEvent event) { int dx = event.x - lastPos.x; int dy = event.y - lastPos.y; - + if (event.buttons() & Qt.LeftButton) { setXRotation(xRot + 8 * dy); setYRotation(yRot + 8 * dx); @@ -173,9 +174,9 @@ { GLuint list = glGenLists(1); glNewList(list, GL_COMPILE); - + glBegin(GL_QUADS); - + GLdouble x1 = +0.06; GLdouble y1 = -0.14; GLdouble x2 = +0.14; @@ -184,10 +185,10 @@ GLdouble y3 = +0.00; GLdouble x4 = +0.30; GLdouble y4 = +0.22; - + quad(x1, y1, x2, y2, y2, x2, y1, x1); quad(x3, y3, x4, y4, y4, x4, y3, x3); - + extrude(x1, y1, x2, y2); extrude(x2, y2, y2, x2); extrude(y2, x2, y1, x1); @@ -195,61 +196,61 @@ extrude(x3, y3, x4, y4); extrude(x4, y4, y4, x4); extrude(y4, x4, y3, x3); - + const double Pi = 3.14159265358979323846; const int NumSectors = 200; - + for (int i = 0; i < NumSectors; ++i) { double angle1 = (i * 2 * Pi) / NumSectors; GLdouble x5 = 0.30 * sin(angle1); GLdouble y5 = 0.30 * cos(angle1); GLdouble x6 = 0.20 * sin(angle1); GLdouble y6 = 0.20 * cos(angle1); - + double angle2 = ((i + 1) * 2 * Pi) / NumSectors; GLdouble x7 = 0.20 * sin(angle2); GLdouble y7 = 0.20 * cos(angle2); GLdouble x8 = 0.30 * sin(angle2); GLdouble y8 = 0.30 * cos(angle2); - + quad(x5, y5, x6, y6, x7, y7, x8, y8); - + extrude(x6, y6, x7, y7); extrude(x8, y8, x5, y5); } - + glEnd(); glEndList(); return list; } - + void quad(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2, GLdouble x3, GLdouble y3, GLdouble x4, GLdouble y4) { qglColor(trolltechGreen); - + glVertex3d(x1, y1, -0.05); glVertex3d(x2, y2, -0.05); glVertex3d(x3, y3, -0.05); glVertex3d(x4, y4, -0.05); - + glVertex3d(x4, y4, +0.05); glVertex3d(x3, y3, +0.05); glVertex3d(x2, y2, +0.05); glVertex3d(x1, y1, +0.05); } - + void extrude(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) { qglColor(trolltechGreen.darker(rndint(250 + (100 * x1)))); - + glVertex3d(x1, y1, +0.05); glVertex3d(x2, y2, +0.05); glVertex3d(x2, y2, -0.05); glVertex3d(x1, y1, -0.05); } - + void normalizeAngle(int *angle) { while (*angle < 0) @@ -257,7 +258,7 @@ while (*angle > 360 * 16) *angle -= 360 * 16; } - + GLuint object; int xRot; int yRot;