Version: 9.15.0
GLViewer_BaseObjects.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2025 CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 // Author : OPEN CASCADE
24 // File: GLViewer_BaseObjects.h
25 // Created: November, 2004
26 //
27 #ifndef GLVIEWER_BASEOBJECTS_H
28 #define GLVIEWER_BASEOBJECTS_H
29 
30 #include "GLViewer.h"
31 #include "GLViewer_Object.h"
32 
33 #include <QColor>
34 
35 #include <TColStd_SequenceOfInteger.hxx>
36 
37 #ifdef WIN32
38 #pragma warning( disable:4251 )
39 #endif
40 
46 {
47 public:
49  GLViewer_MarkerSet( int number = 1, float size = 5.0, const QString& toolTip = "GLMarker" );
52 
53  // redefined methods
54  virtual void compute();
55  virtual GLViewer_Drawer* createDrawer();
56 
57  virtual GLboolean highlight( GLfloat x, GLfloat y, GLfloat tol = 15.0, GLboolean isCircle = GL_FALSE );
58  virtual GLboolean unhighlight();
59  virtual GLboolean select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull = GL_FALSE,
60  GLboolean isCircle = GL_FALSE, GLboolean isShift = GL_FALSE );
61  virtual GLboolean unselect();
62 
63  virtual GLViewer_Rect* getUpdateRect();
64 
65  virtual void moveObject( float, float, bool fromGroup = false );
66 
67  virtual QByteArray getByteCopy();
68  virtual bool initializeFromByteCopy( QByteArray );
69 
70  virtual bool translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS );
71  virtual bool translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS );
72 
73 #ifdef WIN32
74  virtual bool translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS );
75 #endif
76 
78  void setXCoord( GLfloat* xCoord, int size );
80  void setYCoord( GLfloat* yCoord, int size );
82  GLfloat* getXCoord() const { return myXCoord; }
84  GLfloat* getYCoord() const { return myYCoord; }
85 
87  void setNumMarkers( GLint );
89  GLint getNumMarkers() const { return myNumber; };
91  void setMarkerSize( const float size ) { myMarkerSize = size; }
93  float getMarkerSize() const { return myMarkerSize; }
94 
96  void exportNumbers( QList<int>& high, QList<int>& unhigh,
97  QList<int>& sel, QList<int>& unsel );
98 
100  QList<int> getSelectedElements() { return mySelNumbers; }
102  bool addOrRemoveSelected( int index );
104  void addSelected( const TColStd_SequenceOfInteger& );
106  void setSelected( const TColStd_SequenceOfInteger& );
107 
108 protected:
109  GLint myNumber;
110  GLfloat* myXCoord;
111  GLfloat* myYCoord;
112  GLfloat myMarkerSize;
119  TColStd_SequenceOfInteger mySelectedIndexes;
120 };
121 
127 {
128 public:
129  GLViewer_Polyline( int number = 1, float size = 5.0, const QString& toolTip = "GLPolyline" );
130  virtual ~GLViewer_Polyline();
131 
132  // redefined methods
133  virtual void compute();
134  virtual GLViewer_Drawer* createDrawer();
135 
136  virtual GLboolean highlight( GLfloat x, GLfloat y, GLfloat tol = 15.0, GLboolean isCircle = GL_FALSE );
137  virtual GLboolean unhighlight();
138  virtual GLboolean select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull = GL_FALSE,
139  GLboolean isCircle = GL_FALSE, GLboolean isShift = GL_FALSE );
140  virtual GLboolean unselect();
141 
142  virtual GLViewer_Rect* getUpdateRect();
143 
144  virtual void moveObject( float, float, bool fromGroup = false );
145 
146  virtual QByteArray getByteCopy();
147  virtual bool initializeFromByteCopy( QByteArray );
148 
149  virtual bool translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS );
150  virtual bool translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS );
151 
152 #ifdef WIN32
153  virtual bool translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS );
154 #endif
155 
157  void setXCoord( GLfloat* xCoord, int size );
159  void setYCoord( GLfloat* yCoord, int size );
161  GLfloat* getXCoord() const { return myXCoord; }
163  GLfloat* getYCoord() const { return myYCoord; }
164 
166  void setNumber( GLint );
168  GLint getNumber() const { return myNumber; };
169 
171  void setClosed( GLboolean closed ) { myIsClosed = closed; }
173  GLboolean isClosed() const { return myIsClosed; }
174 
176  void setHighSelAll( GLboolean highSelAll ) { myHighSelAll = highSelAll; }
178  GLboolean isHighSelAll() const { return myHighSelAll; }
179 
181  void exportNumbers( QList<int>& high, QList<int>& unhigh,
182  QList<int>& sel, QList<int>& unsel );
183 
185  QList<int> getSelectedElements() { return mySelNumbers; }
186 
187 protected:
188  GLfloat* myXCoord;
189  GLfloat* myYCoord;
190  GLint myNumber;
191  GLboolean myIsClosed;
192  GLboolean myHighSelAll;
193 
200  TColStd_SequenceOfInteger mySelectedIndexes;
201 
202  GLboolean myHighFlag;
203 };
204 
210 {
211 public:
212  GLViewer_TextObject( const QString&, float xPos = 0, float yPos = 0,
213  const QColor& color = QColor( 0, 255, 0 ), const QString& toolTip = "GLText" );
215 
216  virtual void compute();
217  virtual GLViewer_Drawer* createDrawer();
218 
219  virtual void setDrawer( GLViewer_Drawer* theDrawer );
220 
221  virtual GLboolean highlight( GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle = GL_FALSE );
222  virtual GLboolean unhighlight();
223  virtual GLboolean select( GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull = GL_FALSE,
224  GLboolean isCircle = GL_FALSE, GLboolean isShift = GL_FALSE );
225  virtual GLboolean unselect();
226 
227  virtual GLViewer_Rect* getUpdateRect();
228 
229  virtual void moveObject( float, float, bool fromGroup = false );
230 
231  virtual QByteArray getByteCopy();
232  virtual bool initializeFromByteCopy( QByteArray );
233 
234  virtual bool translateToPS( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aPSCS );
235  virtual bool translateToHPGL( QFile& hFile, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aHPGLCS );
236 
237 #ifdef WIN32
238  virtual bool translateToEMF( HDC dc, GLViewer_CoordSystem* aViewerCS, GLViewer_CoordSystem* aEMFCS );
239 #endif
240 
241  int getWidth(){ return myWidth; }
242  int getHeight(){ return myWidth; }
243  void setWidth( int w ){ myWidth=w; }
244  void setHeight( int h ){ myHeight=h; }
245 
246 protected:
248  int myWidth;
249  int myHeight;
250 };
251 
252 #ifdef WIN32
253 #pragma warning ( default:4251 )
254 #endif
255 
256 #endif
#define GLVIEWER_API
Macro for exports.
Definition: GLViewer.h:37
Class implementing mathematical model of 2D coordinate system.
Definition: GLViewer_CoordSystem.h:45
Definition: GLViewer_Drawer.h:193
Definition: GLViewer_BaseObjects.h:46
QList< int > myPrevHNumbers
Definition: GLViewer_BaseObjects.h:118
GLfloat myMarkerSize
Definition: GLViewer_BaseObjects.h:112
GLint getNumMarkers() const
returns markers number
Definition: GLViewer_BaseObjects.h:89
TColStd_SequenceOfInteger mySelectedIndexes
Definition: GLViewer_BaseObjects.h:119
QList< int > myUHNumbers
Definition: GLViewer_BaseObjects.h:114
GLfloat * getYCoord() const
Returns y coords.
Definition: GLViewer_BaseObjects.h:84
GLfloat * myXCoord
Definition: GLViewer_BaseObjects.h:110
GLfloat * myYCoord
Definition: GLViewer_BaseObjects.h:111
QList< int > myHNumbers
Definition: GLViewer_BaseObjects.h:113
QList< int > myCurSelNumbers
Definition: GLViewer_BaseObjects.h:116
void setMarkerSize(const float size)
Sets merker radius.
Definition: GLViewer_BaseObjects.h:91
QList< int > mySelNumbers
Definition: GLViewer_BaseObjects.h:115
float getMarkerSize() const
Returns merker radius.
Definition: GLViewer_BaseObjects.h:93
QList< int > getSelectedElements()
Returns selected numbers.
Definition: GLViewer_BaseObjects.h:100
GLint myNumber
Definition: GLViewer_BaseObjects.h:109
GLfloat * getXCoord() const
Returns x coords.
Definition: GLViewer_BaseObjects.h:82
QList< int > myUSelNumbers
Definition: GLViewer_BaseObjects.h:117
Definition: GLViewer_Object.h:65
virtual QByteArray getByteCopy()
A function for coding object to the byte copy.
Definition: GLViewer_Object.cxx:140
virtual bool translateToHPGL(QFile &hFile, GLViewer_CoordSystem *aViewerCS, GLViewer_CoordSystem *aHPGLCS)=0
A function translate object in to HPGL file on disk.
virtual void setSelected(GLboolean state)
Installs select status to object.
Definition: GLViewer_Object.h:158
virtual GLboolean unselect()=0
Clears all select information.
virtual bool translateToPS(QFile &hFile, GLViewer_CoordSystem *aViewerCS, GLViewer_CoordSystem *aPSCS)=0
A function translate object in to PostScript file on disk.
virtual GLboolean unhighlight()=0
Clears all highlight information.
virtual GLboolean select(GLfloat x, GLfloat y, GLfloat tol, GLViewer_Rect rect, GLboolean isFull=GL_FALSE, GLboolean isCircle=GL_FALSE, GLboolean isShift=GL_FALSE)=0
Computes select presentation.
virtual GLboolean highlight(GLfloat x, GLfloat y, GLfloat tol, GLboolean isCircle=GL_FALSE)=0
Computes highlight presentation.
virtual GLViewer_Rect * getUpdateRect()=0
Returns update object rectangle.
virtual void setDrawer(GLViewer_Drawer *theDrawer)
Installing already exist drawer with same type.
Definition: GLViewer_Object.h:78
virtual bool initializeFromByteCopy(QByteArray)
A function for decoding object from the byte copy.
Definition: GLViewer_Object.cxx:212
virtual GLViewer_Drawer * createDrawer()=0
Creates correspond drawer.
virtual void moveObject(float dx, float dy, bool fromGroup=false)=0
Moves object per by recomputing.
virtual void compute()=0
Main method. Computes all needed information about object for presentation in drawer.
Definition: GLViewer_BaseObjects.h:127
QList< int > mySelNumbers
Definition: GLViewer_BaseObjects.h:196
void setHighSelAll(GLboolean highSelAll)
On/off highlight as whole object status.
Definition: GLViewer_BaseObjects.h:176
GLfloat * getXCoord() const
Returns x coords.
Definition: GLViewer_BaseObjects.h:161
QList< int > myUSelNumbers
Definition: GLViewer_BaseObjects.h:197
GLint myNumber
Definition: GLViewer_BaseObjects.h:190
GLboolean isClosed() const
Checks closed status of polyline.
Definition: GLViewer_BaseObjects.h:173
GLboolean myHighSelAll
Definition: GLViewer_BaseObjects.h:192
QList< int > getSelectedElements()
Returns numbers of selected lines.
Definition: GLViewer_BaseObjects.h:185
QList< int > myUHNumbers
Definition: GLViewer_BaseObjects.h:195
GLfloat * myYCoord
Definition: GLViewer_BaseObjects.h:189
GLfloat * myXCoord
Definition: GLViewer_BaseObjects.h:188
QList< int > myPrevHNumbers
Definition: GLViewer_BaseObjects.h:199
GLboolean myHighFlag
Definition: GLViewer_BaseObjects.h:202
QList< int > myCurSelNumbers
Definition: GLViewer_BaseObjects.h:198
GLboolean myIsClosed
Definition: GLViewer_BaseObjects.h:191
GLfloat * getYCoord() const
Returns y coords.
Definition: GLViewer_BaseObjects.h:163
void setClosed(GLboolean closed)
On/off closed status of polyline.
Definition: GLViewer_BaseObjects.h:171
TColStd_SequenceOfInteger mySelectedIndexes
Definition: GLViewer_BaseObjects.h:200
QList< int > myHNumbers
Definition: GLViewer_BaseObjects.h:194
GLboolean isHighSelAll() const
Checks highlight as whole object status.
Definition: GLViewer_BaseObjects.h:178
GLint getNumber() const
Returns number of points.
Definition: GLViewer_BaseObjects.h:168
Definition: GLViewer_Geom.h:69
Definition: GLViewer_BaseObjects.h:210
int getHeight()
Definition: GLViewer_BaseObjects.h:242
int myWidth
Definition: GLViewer_BaseObjects.h:248
int myHeight
Definition: GLViewer_BaseObjects.h:249
void setWidth(int w)
Definition: GLViewer_BaseObjects.h:243
int getWidth()
Definition: GLViewer_BaseObjects.h:241
void setHeight(int h)
Definition: GLViewer_BaseObjects.h:244
bool myHighFlag
Definition: GLViewer_BaseObjects.h:247
Quantity_Color color(const QColor &)
Convert QColor object to Quantity_Color object.
Definition: OCCViewer.cxx:28