From: Carsten Niehaus Date: Wed, 14 Jun 2006 14:32:06 +0000 (+0000) Subject: some patches by Benoit in his opengl-code X-Git-Tag: v3.80.3~103^2~63 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=9700c62f2056aacd44b2734d291b2f968d75a09f;p=libqmvoc.git some patches by Benoit in his opengl-code svn path=/trunk/KDE/kdeedu/kalzium/src/kalziumglwidget.h; revision=551384 --- diff --git a/kalzium/kalziumglwidget.cpp b/kalzium/kalziumglwidget.cpp index 2296741..7aa6a3e 100644 --- a/kalzium/kalziumglwidget.cpp +++ b/kalzium/kalziumglwidget.cpp @@ -130,44 +130,44 @@ void KalziumGLWidget::initializeGL() GL_SEPARATE_SPECULAR_COLOR_EXT ); } -void KalziumGLWidget::getColor( const OBAtom &a, GLfloat &r, GLfloat &g, GLfloat &b ) +void KalziumGLWidget::getColor( OBAtom &a, GLfloat &r, GLfloat &g, GLfloat &b ) { -//X if ( a.IsOxygen() ) -//X {//red -//X r = 1.0; -//X g = 0.0; -//X b = 0.0; -//X } -//X else if ( a.IsSulfur() ) -//X {//yellow -//X r = 1.0; -//X g = 1.0; -//X b = 0.0; -//X } -//X else if ( a.IsCarbon() ) -//X {//almost black -//X r = 0.25; -//X g = 0.25; -//X b = 0.25; -//X } -//X else if ( a.IsNitrogen() ) -//X { -//X r = 1.0; -//X g = 0.9; -//X b = 0.5; -//X } -//X else if ( a.IsHydrogen() ) -//X {//white -//X r = 1.0; -//X g = 1.0; -//X b = 1.0; -//X } -//X else -//X { -//X r = 0.5; -//X g = 0.5; -//X b = 0.5; -//X } + if ( a.IsOxygen() ) + {//red + r = 1.0; + g = 0.0; + b = 0.0; + } + else if ( a.IsSulfur() ) + {//yellow + r = 1.0; + g = 1.0; + b = 0.0; + } + else if ( a.IsCarbon() ) + {//almost black + r = 0.25; + g = 0.25; + b = 0.25; + } + else if ( a.IsNitrogen() ) + { + r = 1.0; + g = 0.9; + b = 0.5; + } + else if ( a.IsHydrogen() ) + {//white + r = 1.0; + g = 1.0; + b = 1.0; + } + else + { + r = 0.5; + g = 0.5; + b = 0.5; + } } void KalziumGLWidget::paintGL() @@ -181,8 +181,8 @@ void KalziumGLWidget::paintGL() glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glLoadIdentity(); -//X glTranslate##GLSUFFIX( 0.0, 0.0, -3.0 * m_molRadius); -//X glMultMatrix##GLSUFFIX( m_RotationMatrix ); + GLTRANSLATE ( 0.0, 0.0, -3.0 * m_molRadius); + GLMULTMATRIX ( m_RotationMatrix ); glEnable( GL_NORMALIZE ); FOR_ATOMS_OF_MOL( a, m_molecule ) @@ -216,9 +216,9 @@ void KalziumGLWidget::paintGL() FLOAT z3 = (z1 + z2) / 2; GLfloat r, g, b; - // getColor( *static_cast(bond->GetBgn()), r, g, b ); + getColor( *static_cast(bond->GetBgn()), r, g, b ); drawBond( x1, y1, z1, x3, y3, z3, r, g, b ); - // getColor( *static_cast(bond->GetEnd()), r, g, b ); + getColor( *static_cast(bond->GetEnd()), r, g, b ); drawBond( x2, y2, z2, x3, y3, z3, r, g, b ); } } @@ -362,8 +362,8 @@ void KalziumGLWidget::drawSphere( GLdouble x, GLdouble y, GLdouble z, glPopMatrix(); } -void KalziumGLWidget::drawBond( GLdouble x1, GLdouble y1, GLdouble z1, - GLdouble x2, GLdouble y2, GLdouble z2, +void KalziumGLWidget::drawBond( FLOAT x1, FLOAT y1, FLOAT z1, + FLOAT x2, FLOAT y2, FLOAT z2, GLfloat red, GLfloat green, GLfloat blue ) { GLfloat ambientColor [] = { red / 2, green / 2, blue / 2, 1.0 }; @@ -376,10 +376,10 @@ void KalziumGLWidget::drawBond( GLdouble x1, GLdouble y1, GLdouble z1, glMaterialf(GL_FRONT, GL_SHININESS, 50.0); // the "axis vector" of the cylinder - GLdouble axis[3] = { x2 - x1, y2 - y1, z2 - z1 }; + FLOAT axis[3] = { x2 - x1, y2 - y1, z2 - z1 }; // find two vectors v, w such that (axis,v,w) is an orthogonal basis. - GLdouble v[3], w[3]; + FLOAT v[3], w[3]; construct_ortho_3D_basis_given_first_vector3( axis, v, w ); // normalize v and w. We DON'T want to normalize axis @@ -387,7 +387,7 @@ void KalziumGLWidget::drawBond( GLdouble x1, GLdouble y1, GLdouble z1, normalize3( w ); // construct the 4D transformation matrix - GLdouble matrix[16]; + FLOAT matrix[16]; // column 1 matrix[0] = v[0]; @@ -415,7 +415,7 @@ void KalziumGLWidget::drawBond( GLdouble x1, GLdouble y1, GLdouble z1, //now we can do the actual drawing ! glPushMatrix(); - glMultMatrixd( matrix ); + GLMULTMATRIX( matrix ); drawGenericBond(); glPopMatrix(); } diff --git a/kalzium/kalziumglwidget.h b/kalzium/kalziumglwidget.h index fc640dd..49e2396 100644 --- a/kalzium/kalziumglwidget.h +++ b/kalzium/kalziumglwidget.h @@ -21,13 +21,16 @@ #if(FLOAT==double) #define GLFLOAT GLdouble -#define GLSUFFIX d +#define GLTRANSLATE glTranslated +#define GLMULTMATRIX glMultMatrixd #define SQRT sqrt #define COS cos #define SIN sin #define FABS fabs #elif(FLOAT==float) #define GLFLOAT GLfloat +#define GLTRANSLATE glTranslatef +#define GLMULTMATRIX glMultMatrixf #define GLSUFFIX f #define SQRT sqrtf #define COS cosf @@ -35,9 +38,6 @@ #define FABS fabsf #endif -/** - * @autor Benoit Jacob - */ class GLVertexArray { protected: @@ -58,9 +58,6 @@ class GLVertexArray void draw(); }; -/** - * @autor Benoit Jacob - */ class SphereVertexArray : public GLVertexArray { protected: @@ -101,7 +98,7 @@ class KalziumGLWidget : public QGLWidget */ virtual ~KalziumGLWidget(); - void getColor( const OpenBabel::OBAtom &a, GLfloat &r, GLfloat &g, GLfloat &b ); + virtual void getColor( OpenBabel::OBAtom &a, GLfloat &r, GLfloat &g, GLfloat &b ); public slots: /**