-// Copyright (C) 2005 OPEN CASCADE
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// Author : OPEN CASCADE
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : OPEN CASCADE
// File: GLViewer_Drawer.h
// Created: November, 2004
-
+//
#ifndef GLVIEWER_DRAWER_H
#define GLVIEWER_DRAWER_H
-#ifdef WNT
+#ifdef WIN32
#include "windows.h"
#endif
-#include <qcolor.h>
-#include <qobject.h>
-#include <qfile.h>
-#include <qfont.h>
-#include <qgl.h>
+#include <QColor>
+#include <QFont>
+
+class QFile;
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#else
#include <GL/gl.h>
+#endif
#include "GLViewer.h"
#include "GLViewer_Defs.h"
+#include "GLViewer_Geom.h"
class GLViewer_Object;
class GLViewer_Rect;
class GLViewer_CoordSystem;
-#ifdef WNT
+#ifdef WIN32
#pragma warning( disable:4251 )
#endif
/*!
*/
struct GLVIEWER_API GLViewer_TexFindId
{
- //! Font description
- QString myFontString;
- //! View POrt ID
- int myViewPortId;
+ //! Font family description
+ QString myFontFamily;
+ //! Bold parameter
+ bool myIsBold;
+ //! Italic parameter
+ bool myIsItal;
+ //! Underline parameter
+ bool myIsUndl;
+ //! Font Size
+ int myPointSize;
+ //! View Port ID
+ long myViewPortId;
//! Overloaded operator for using struct as MAP key
bool operator < (const GLViewer_TexFindId theStruct) const
{
- if ( myViewPortId != theStruct.myViewPortId ) return myViewPortId < theStruct.myViewPortId;
- else return myFontString < theStruct.myFontString;
+ if ( myViewPortId != theStruct.myViewPortId )
+ return myViewPortId < theStruct.myViewPortId;
+ else if ( myPointSize != theStruct.myPointSize )
+ return myPointSize < theStruct.myPointSize;
+ else if ( myIsBold != theStruct.myIsBold )
+ return myIsBold < theStruct.myIsBold;
+ else if ( myIsItal != theStruct.myIsItal )
+ return myIsItal < theStruct.myIsItal;
+ else if ( myIsUndl != theStruct.myIsUndl )
+ return myIsUndl < theStruct.myIsUndl;
+ else
+ return myFontFamily < theStruct.myFontFamily;
}
};
-/***************************************************************************
-** Class: GLViewer_TexFont
-** Descr: Font for GLViewer_Drawer
-** Module: GLViewer
-** Created: UI team, 03.10.01
-****************************************************************************/
+/*!
+ \class GLViewer_TexFont
+ Font for GLViewer_Drawer, Drawing bitmap and texture fonts in GLViewer
+*/
-/*!
- * Class GLViewer_TexFont
- * Drawing bitmap and texture fonts in GLViewer
- */
class GLVIEWER_API GLViewer_TexFont
{
public:
~GLViewer_TexFont();
//! Generating font texture
- void generateTexture();
+ bool generateTexture();
//! Drawing string theStr in point with coords theX and theY
- void drawString( QString theStr, GLdouble theX = 0.0, GLdouble theY = 0.0 );
+ void drawString( QString theStr,
+ GLdouble theX = 0.0,
+ GLdouble theY = 0.0,
+ GLfloat theScale = 1.0 );
//! Returns separator between letters
int getSeparator(){ return mySeparator; }
static QMap<GLViewer_TexFindId,GLViewer_TexIdStored> TexFontBase;
//! Map for strorage generated bitmaps fonts
static QMap<GLViewer_TexFindId,GLuint> BitmapFontCache;
+
+private:
+ //! Initializes font parameters
+ void init();
-protected:
+private:
+ //! Number of characters in the font texture
+ int myNbSymbols;
//! Array of letter width
int* myWidths;
//! Array of letter positions in texture
bool myIsResizeable;
//! Min/mag filter
GLuint myMinMagFilter;
+ //! Font height
+ int myFontHeight;
+ //! Diagnostic information
+ int myMaxRowWidth;
};
-/***************************************************************************
-** Class: GLViewer_Drawer
-** Descr: Drawer for GLObject
-** Module: GLViewer
-** Created: UI team, 03.10.01
-****************************************************************************/
/*!
- * Class GLViewer_Drawer
- * Drawer for GLViewer_Objects.
- * Drawer creates only one times per one type of object
- */
+ \class GLViewer_Drawer
+ Drawer for GLViewer_Objects.
+ Drawer creates only one times per one type of object
+*/
class GLVIEWER_API GLViewer_Drawer
{
public:
//! Returns object priority
int getPriority() const { return myPriority; }
- //! The function enables and disables antialiasing in Open GL (for points, lines and polygons).
- void setAntialiasing(const bool on);
+ //! The function enables and disables antialiasing in Open GL (for points, lines and polygons).
+ void setAntialiasing(const bool on);
//! Clears all generated textures
static void destroyAllTextures();
*/
void drawText( const QString& text,
GLfloat xPos,
- GLfloat yPos,
+ GLfloat yPos,
const QColor& color,
QFont* aFont,
int theSeparator,
*\param smallFont - font format
*/
void drawGLText( QString text,
- float x,
- float y,
+ float x,
+ float y,
int hPosition = GLText_Center,
int vPosition = GLText_Center,
QColor color = Qt::black,
/*!
*\param format - the default text displaying format
*/
- inline void setTextFormat( DisplayTextFormat format ) { myTextFormat = format; }
+ inline void setTextFormat( const DisplayTextFormat format ) { myTextFormat = format; }
//! Returns a default text displaying format used by drawGLText method
inline DisplayTextFormat textFormat() const { return myTextFormat; }
+ //! Sets a text string displaying scale factor (used only with text format DTF_TEXTURE_SCALABLE)
+ /*!
+ *\param factor - scale factor
+ */
+ inline void setTextScale( const GLfloat factor ) { myTextScale = factor; }
+
+ //! Returns a text string displaying scale factor
+ inline GLfloat textScale() const { return myTextScale; }
+
+ //! Returns a rectangle of text (without viewer scale)
+ GLViewer_Rect textRect( const QString& ) const;
+
+
//! Draw rectangle with predefined color
static void drawRectangle( GLViewer_Rect* theRect, QColor = Qt::black );
protected:
+ //! Draw basic primitives: rectangle, contour, polygon, vertex, cross, arrow
+ //* with predefined color
+ static void drawRectangle( GLViewer_Rect*, GLfloat, GLfloat = 0, QColor = Qt::black,
+ bool = false, QColor = Qt::white );
+ static void drawContour( GLViewer_Rect*, QColor, GLfloat, GLushort, bool );
+ static void drawContour( const GLViewer_PntList&, QColor, GLfloat );
+ static void drawPolygon( GLViewer_Rect*, QColor, GLushort, bool );
+ static void drawPolygon( const GLViewer_PntList&, QColor );
+ static void drawVertex( GLfloat, GLfloat, QColor );
+ static void drawCross( GLfloat, GLfloat, QColor );
+ static void drawArrow( const GLfloat red, const GLfloat green, const GLfloat blue,
+ GLfloat, GLfloat, GLfloat, GLfloat,
+ GLfloat, GLfloat, GLfloat, GLboolean = GL_FALSE );
+
//! Draw object text
virtual void drawText( GLViewer_Object* theObject );
float myYScale;
//! List of objects
- QValueList<GLViewer_Object*> myObjects;
+ QList<GLViewer_Object*> myObjects;
//! List generated textures
GLuint myTextList;
QFont myFont;
//! Default text displaying format for drawGLText() method
DisplayTextFormat myTextFormat;
+
+ //! Scale factor for text string draw, by default 0.125
+ //! (used only with text format DTF_TEXTURE_SCALABLE)
+ GLfloat myTextScale;
};
-#ifdef WNT
+#ifdef WIN32
#pragma warning ( default:4251 )
#endif