]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/glcmn.cpp
Upgrade bundled zlib to 1.2.8.
[wxWidgets.git] / src / common / glcmn.cpp
index e52e4173e8ec230499bd61810c96944d39f7c02a..09d9dd65824d22d8d2f246c3f85e3c09cdc91d0a 100644 (file)
@@ -3,7 +3,6 @@
 // Purpose:     wxGLCanvasBase implementation
 // Author:      Vadim Zeitlin
 // Created:     2007-04-09
-// RCS-ID:      $Id$
 // Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -59,22 +58,26 @@ bool wxGLCanvasBase::SetCurrent(const wxGLContext& context) const
     // that SetCurrent() can only be called for a shown window, so check for it
     wxASSERT_MSG( IsShownOnScreen(), wxT("can't make hidden GL canvas current") );
 
-    
+
     return context.SetCurrent(*static_cast<const wxGLCanvas *>(this));
 }
 
-#ifndef wxHAS_OPENGL_ES
 bool wxGLCanvasBase::SetColour(const wxString& colour)
 {
     wxColour col = wxTheColourDatabase->Find(colour);
-    if ( !col.Ok() )
+    if ( !col.IsOk() )
         return false;
 
+#ifdef wxHAS_OPENGL_ES
+    wxGLAPI::glColor3f((GLfloat) (col.Red() / 256.), (GLfloat) (col.Green() / 256.),
+                (GLfloat) (col.Blue() / 256.));
+#else
     GLboolean isRGBA;
     glGetBooleanv(GL_RGBA_MODE, &isRGBA);
     if ( isRGBA )
     {
-        glColor3f(col.Red() / 256., col.Green() / 256., col.Blue() / 256.);
+        glColor3f((GLfloat) (col.Red() / 256.), (GLfloat) (col.Green() / 256.),
+                (GLfloat) (col.Blue() / 256.));
     }
     else // indexed colour
     {
@@ -87,10 +90,9 @@ bool wxGLCanvasBase::SetColour(const wxString& colour)
 
         glIndexi(pix);
     }
-
+#endif
     return true;
 }
-#endif
 
 wxGLCanvasBase::~wxGLCanvasBase()
 {
@@ -181,7 +183,7 @@ bool SetState( int flag, bool desired )
         if ( desired )
             glEnableClientState(flag);
         else
-            glDisableClientState(flag);            
+            glDisableClientState(flag);
     }
     return former;
 }
@@ -191,7 +193,7 @@ void RestoreState( int flag, bool desired )
     if ( desired )
         glEnableClientState(flag);
     else
-        glDisableClientState(flag);            
+        glDisableClientState(flag);
 }
 #endif
 
@@ -206,6 +208,16 @@ wxGLAPI::~wxGLAPI()
 {
 }
 
+void wxGLAPI::glFrustum(GLfloat left, GLfloat right, GLfloat bottom,
+                            GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+#if wxUSE_OPENGL_EMULATION
+    ::glFrustumf(left, right, bottom, top, zNear, zFar);
+#else
+    ::glFrustum(left, right, bottom, top, zNear, zFar);
+#endif
+}
+
 void wxGLAPI::glBegin(GLenum mode)
 {
 #if wxUSE_OPENGL_EMULATION
@@ -213,12 +225,12 @@ void wxGLAPI::glBegin(GLenum mode)
     {
         wxFAIL_MSG("nested glBegin");
     }
-    
+
     s_mode = mode;
     s_texCoordsUsed = false;
     s_colorsUsed = false;
     s_normalsUsed = false;
-    
+
     s_texCoords.clear();
     s_normals.clear();
     s_colors.clear();
@@ -235,7 +247,7 @@ void wxGLAPI::glTexCoord2f(GLfloat s, GLfloat t)
     {
         wxFAIL_MSG("glTexCoord2f called outside glBegin/glEnd");
     }
-    
+
     else
     {
         s_texCoordsUsed = true;
@@ -258,16 +270,16 @@ void wxGLAPI::glVertex3f(GLfloat x, GLfloat y, GLfloat z)
     {
         s_texCoords.push_back(s_currentTexCoord[0]);
         s_texCoords.push_back(s_currentTexCoord[1]);
-        
+
         s_normals.push_back(s_currentNormal[0]);
         s_normals.push_back(s_currentNormal[1]);
         s_normals.push_back(s_currentNormal[2]);
-        
+
         s_colors.push_back(s_currentColor[0]);
         s_colors.push_back(s_currentColor[1]);
         s_colors.push_back(s_currentColor[2]);
         s_colors.push_back(s_currentColor[3]);
-        
+
         s_vertices.push_back(x);
         s_vertices.push_back(y);
         s_vertices.push_back(z);
@@ -285,9 +297,9 @@ void wxGLAPI::glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)
     else
     {
         s_normalsUsed = true;
-        s_currentNormal[0] = nx;   
-        s_currentNormal[1] = ny;   
-        s_currentNormal[2] = nz;   
+        s_currentNormal[0] = nx;
+        s_currentNormal[1] = ny;
+        s_currentNormal[2] = nz;
     }
 #else
     ::glNormal3f(nx,ny,nz);
@@ -315,7 +327,7 @@ void wxGLAPI::glColor4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
 void wxGLAPI::glColor3f(GLfloat r, GLfloat g, GLfloat b)
 {
 #if wxUSE_OPENGL_EMULATION
-    glColor4f(r,g,b,1.0); 
+    glColor4f(r,g,b,1.0);
 #else
     ::glColor3f(r,g,b);
 #endif
@@ -328,34 +340,34 @@ void wxGLAPI::glEnd()
     bool formerNormals = SetState( GL_NORMAL_ARRAY, s_normalsUsed );
     bool formerTexCoords = SetState( GL_TEXTURE_COORD_ARRAY, s_texCoordsUsed );
     bool formerVertex = glIsEnabled(GL_VERTEX_ARRAY);
-    
+
     if( !formerVertex )
         glEnableClientState(GL_VERTEX_ARRAY);
-    
+
     if ( s_colorsUsed )
         glColorPointer( 4, GL_FLOAT, 0, &s_colors[0] );
-    
+
     if ( s_normalsUsed )
         glNormalPointer( GL_FLOAT, 0, &s_normals[0] );
-    
+
     if ( s_texCoordsUsed )
         glTexCoordPointer( 2, GL_FLOAT, 0, &s_texCoords[0] );
-    
+
     glVertexPointer(3, GL_FLOAT, 0, &s_vertices[0]);
     glDrawArrays( s_mode, 0, s_vertices.size() / 3 );
-    
+
     if ( s_colorsUsed != formerColors )
         RestoreState( GL_COLOR_ARRAY, formerColors );
-    
+
     if ( s_normalsUsed != formerNormals )
         RestoreState( GL_NORMAL_ARRAY, formerColors );
-    
+
     if ( s_texCoordsUsed != formerTexCoords )
         RestoreState( GL_TEXTURE_COORD_ARRAY, formerColors );
-    
+
     if( !formerVertex )
         glDisableClientState(GL_VERTEX_ARRAY);
-    
+
     s_mode = 0xFF;
 #else
     ::glEnd();