0025442: Visualization, TKOpenGl - prevent inclusion of system header glxext.h
[occt.git] / src / OpenGl / OpenGl_Font.cxx
old mode 100644 (file)
new mode 100755 (executable)
index 3f1736c..2b888b6
@@ -1,26 +1,23 @@
 // Created on: 2013-01-29
 // Created by: Kirill GAVRILOV
-// Copyright (c) 2013 OPEN CASCADE SAS
+// Copyright (c) 2013-2014 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
 #include <OpenGl_Font.hxx>
 
 #include <OpenGl_Context.hxx>
 #include <Standard_Assert.hxx>
+#include <TCollection_ExtendedString.hxx>
 
 IMPLEMENT_STANDARD_HANDLE (OpenGl_Font, OpenGl_Resource)
 IMPLEMENT_STANDARD_RTTIEXT(OpenGl_Font, OpenGl_Resource)
@@ -39,7 +36,7 @@ OpenGl_Font::OpenGl_Font (const Handle(Font_FTFont)&     theFont,
   myTileSizeX (0),
   myTileSizeY (0),
   myLastTileId (-1),
-  myTextureFormat (GL_ALPHA8)
+  myTextureFormat (GL_ALPHA)
 {
   memset (&myLastTilePx, 0, sizeof(myLastTilePx));
 }
@@ -57,7 +54,7 @@ OpenGl_Font::~OpenGl_Font()
 // function : Release
 // purpose  :
 // =======================================================================
-void OpenGl_Font::Release (const OpenGl_Context* theCtx)
+void OpenGl_Font::Release (OpenGl_Context* theCtx)
 {
   if (myTextures.IsEmpty())
   {
@@ -123,12 +120,19 @@ bool OpenGl_Font::createTexture (const Handle(OpenGl_Context)& theCtx)
   if (!aBlackImg.InitZero (Image_PixMap::ImgGray, Standard_Size(aTextureSizeX), Standard_Size(aTextureSizeY))
    || !aTexture->Init (theCtx, aBlackImg, Graphic3d_TOT_2D)) // myTextureFormat
   {
+    TCollection_ExtendedString aMsg;
+    aMsg += "New texture intialization of size ";
+    aMsg += aTextureSizeX;
+    aMsg += "x";
+    aMsg += aTextureSizeY;
+    aMsg += " for textured font has failed.";
+    theCtx->PushMessage (GL_DEBUG_SOURCE_APPLICATION_ARB, GL_DEBUG_TYPE_ERROR_ARB, 0, GL_DEBUG_SEVERITY_HIGH_ARB, aMsg);
     return false;
   }
 
   aTexture->Bind (theCtx);
-  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
-  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, theCtx->TextureWrapClamp());
+  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, theCtx->TextureWrapClamp());
   aTexture->Unbind (theCtx);
   return true;
 }
@@ -169,8 +173,10 @@ bool OpenGl_Font::renderGlyph (const Handle(OpenGl_Context)& theCtx,
   }
 
   aTexture->Bind (theCtx);
+#if !defined(GL_ES_VERSION_2_0)
   glPixelStorei (GL_UNPACK_LSB_FIRST,  GL_FALSE);
   glPixelStorei (GL_UNPACK_ROW_LENGTH, 0);
+#endif
   glPixelStorei (GL_UNPACK_ALIGNMENT,  1);
 
   glTexSubImage2D (GL_TEXTURE_2D, 0,