Version: 9.12.0
GLViewer_ViewPort2d.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2023 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_ViewPort2d.h
25 // Created: November, 2004
26 //
27 #ifndef GLVIEWER_VIEWPORT2D_H
28 #define GLVIEWER_VIEWPORT2D_H
29 
30 #ifdef WIN32
31 #include <windows.h>
32 #endif
33 
34 #ifdef __APPLE__
35 #include <OpenGL/gl.h>
36 #include <OpenGL/glu.h>
37 #else
38 #include <GL/gl.h>
39 #include <GL/glu.h>
40 #endif
41 
42 #include "GLViewer_ViewPort.h"
43 #include "GLViewer_Widget.h"
44 #include "GLViewer_Geom.h"
45 
46 #include <QtOpenGL>
47 #include <QColor>
48 #include <QPaintDevice>
49 
50 #ifdef WIN32
51 #pragma warning( disable:4251 )
52 #endif
53 
54 class GLViewer_Compass;
55 class GLViewer_Grid;
56 class GLViewer_Object;
57 class GLViewer_ViewFrame;
58 
59 class QtxToolTip;
60 
61 class QWidget;
62 class QRubberBand;
63 
69 {
70  Q_OBJECT
71 
74 
75 public:
76  GLViewer_ViewPort2d( QWidget* parent, GLViewer_ViewFrame* theViewFrame = NULL );
78 
80  void turnGrid( GLboolean on );
82  GLViewer_Grid* getGrid() const { return myGrid; }
84  void setGridColor( const QColor gridColor, const QColor axisColor );
85 
89  GLViewer_Widget* getGLWidget() const { return myGLWidget; }
90  virtual QPaintDevice* getPaintDevice() { return myGLWidget; }
91 
93  void setBackgroundColor( const QColor& color);
95  QColor backgroundColor() const;
96 
98  void setBorder( GLViewer_Rect* border ) { myBorder = border; }
100  GLViewer_Rect* getBorder() const { return myBorder; }
101 
103  void setMargin( GLfloat margin ) { myMargin = margin; }
105  GLfloat getMargin() const { return myMargin; }
106 
108  int getWidth() const { return myWidth; }
110  int getHeight() const { return myHeight; }
111 
112 
114  void getScale( GLfloat& xSc, GLfloat& ySc ) const { xSc = myXScale; ySc = myYScale; }
116  void getPan( GLfloat& xPan, GLfloat& yPan ) const { xPan = myXPan; yPan = myYPan; }
117 
119  void initResize( int width, int height );
120 
122  void startRotation( int, int );
124  void rotate( int, int );
126  void endRotation();
127 
129  bool isDragProcess(){ return myIsDragProcess; }
130 
132  void turnCompass( GLboolean on );
134  void drawCompass();
135 
137  int getViewPortId(){ return myViewPortId; }
138 
140  virtual BlockStatus currentBlock();
141 
143  void startSelectByRect( int x, int y );
145  void drawSelectByRect( int x, int y );
147  void finishSelectByRect();
148 
150  bool startPulling( GLViewer_Pnt );
152  void drawPulling( GLViewer_Pnt );
154  void finishPulling();
156  bool isPulling() const { return myIsPulling; }
157 
159  QRect selectionRect();
160 
162  GLViewer_Rect win2GLV( const QRect& ) const;
164  QRect GLV2win( const GLViewer_Rect& ) const;
165 
166 signals:
169 
170  void objectMoved();
171 
172 protected:
173  void onDragObject( QMouseEvent* );
174 
175  virtual void mouseMoveEvent( QMouseEvent *);
176  virtual void mousePressEvent( QMouseEvent *);
177  virtual void mouseReleaseEvent( QMouseEvent *);
178  virtual void mouseDoubleClickEvent( QMouseEvent *);
179 
180  virtual void paintEvent( QPaintEvent* );
181  virtual void resizeEvent( QResizeEvent* );
182 
184  virtual void reset();
186  virtual void pan( int dx, int dy );
188  virtual void setCenter( int x, int y );
190  virtual void zoom( int x0, int y0, int x1, int y1 );
192  virtual void fitRect( const QRect& );
194  virtual void fitSelect();
196  virtual void fitAll( bool keepScale = false, bool withZ = true );
197 
198 protected slots:
200  void onStartDragObject();
202  void onPasteObject();
204  void onCutObject();
206  void onCopyObject();
207 
209  void onMaybeTip( QPoint thePoint, QString& text, QFont& font, QRect& theTextReg, QRect& theViewReg );
210 
211 protected:
216 
217  GLfloat myMargin;
218  int myHeight;
219  int myWidth;
220 
221  GLfloat myXScale;
222  GLfloat myYScale;
223  GLfloat myXOldScale;
224  GLfloat myYOldScale;
225  GLfloat myXPan;
226  GLfloat myYPan;
227 
230 
231  //dragging
235 
236  //selection by rect
237  QPoint* mypFirstPoint;
238  QPoint* mypLastPoint;
239 
240  //pulling
243 
245 
246  //GLViewer_ObjectTip* myObjectTip;
250 
251  QRubberBand* myRectBand;
252 };
253 
254 #ifdef WIN32
255 #pragma warning ( default:4251 )
256 #endif
257 
258 #endif
BlockStatus
Definition: GLViewer_ViewPort.h:50
Definition: GLViewer_Compass.h:48
Definition: GLViewer_Grid.h:54
Definition: GLViewer_Object.h:65
Definition: GLViewer_Geom.h:69
Definition: GLViewer_ViewFrame.h:52
Definition: GLViewer_ViewPort2d.h:69
void onStartDragObject()
Initializes drag process.
Definition: GLViewer_ViewPort2d.cxx:142
virtual void fitRect(const QRect &)
Transforms view by rectangle.
Definition: GLViewer_ViewPort2d.cxx:747
GLfloat myYPan
Definition: GLViewer_ViewPort2d.h:226
int getWidth() const
Returns width of view.
Definition: GLViewer_ViewPort2d.h:108
virtual void mouseMoveEvent(QMouseEvent *)
Definition: GLViewer_ViewPort2d.cxx:355
void rotate(int, int)
Process rotation.
Definition: GLViewer_ViewPort2d.cxx:928
virtual void paintEvent(QPaintEvent *)
Definition: GLViewer_ViewPort2d.cxx:575
void startSelectByRect(int x, int y)
Initializes before selecting by rect.
Definition: GLViewer_ViewPort2d.cxx:1165
void setBackgroundColor(const QColor &color)
Sets background color.
Definition: GLViewer_ViewPort2d.cxx:501
void vpUpdateValues()
Emits after any transformation.
QColor myBackgroundColor
Definition: GLViewer_ViewPort2d.h:215
bool startPulling(GLViewer_Pnt)
\warnign It is for ouv
Definition: GLViewer_ViewPort2d.cxx:1243
QRect selectionRect()
Returns selection by rect.
Definition: GLViewer_ViewPort2d.cxx:1227
virtual void mouseDoubleClickEvent(QMouseEvent *)
Definition: GLViewer_ViewPort2d.cxx:441
void onCutObject()
Cuts object to clipboard.
Definition: GLViewer_ViewPort2d.cxx:160
void turnCompass(GLboolean on)
On/off compass.
Definition: GLViewer_ViewPort2d.cxx:453
QRect GLV2win(const GLViewer_Rect &) const
Transforms global rect to window rect.
Definition: GLViewer_ViewPort2d.cxx:1336
float * myCurDragPosY
Definition: GLViewer_ViewPort2d.h:234
GLViewer_Rect * getBorder() const
Get current borders of scene.
Definition: GLViewer_ViewPort2d.h:100
GLViewer_Widget * getGLWidget() const
Returns painted widget.
Definition: GLViewer_ViewPort2d.h:89
void setBorder(GLViewer_Rect *border)
Sets borders of scene.
Definition: GLViewer_ViewPort2d.h:98
void onMaybeTip(QPoint thePoint, QString &text, QFont &font, QRect &theTextReg, QRect &theViewReg)
Sets tool tip with.
Definition: GLViewer_ViewPort2d.cxx:1365
float * myCurDragPosX
Definition: GLViewer_ViewPort2d.h:233
virtual void resizeEvent(QResizeEvent *)
Definition: GLViewer_ViewPort2d.cxx:585
GLViewer_ViewFrame * getViewFrame() const
Returns parent window.
Definition: GLViewer_ViewPort2d.h:87
void initResize(int width, int height)
Resize view.
Definition: GLViewer_ViewPort2d.cxx:522
void startRotation(int, int)
Begins rotation.
Definition: GLViewer_ViewPort2d.cxx:919
void drawCompass()
Draws compass.
Definition: GLViewer_ViewPort2d.cxx:987
bool myIsMouseReleaseBlock
flag to block mouse release event just after mouse double-click
Definition: GLViewer_ViewPort2d.h:249
GLViewer_Rect * myBorder
Definition: GLViewer_ViewPort2d.h:214
GLfloat myYOldScale
Definition: GLViewer_ViewPort2d.h:224
virtual void fitSelect()
Transforms view by selection.
Definition: GLViewer_ViewPort2d.cxx:802
GLViewer_Grid * myGrid
Definition: GLViewer_ViewPort2d.h:228
void onPasteObject()
Pastes object from clipboard.
Definition: GLViewer_ViewPort2d.cxx:232
GLfloat myXOldScale
Definition: GLViewer_ViewPort2d.h:223
GLfloat myXPan
Definition: GLViewer_ViewPort2d.h:225
QtxToolTip * myObjectTip
Definition: GLViewer_ViewPort2d.h:247
GLfloat getMargin() const
Returns margin of borders.
Definition: GLViewer_ViewPort2d.h:105
GLViewer_Compass * myCompass
Definition: GLViewer_ViewPort2d.h:229
void getPan(GLfloat &xPan, GLfloat &yPan) const
returns offsets
Definition: GLViewer_ViewPort2d.h:116
int getViewPortId()
Returns unique ID of ViewPort.
Definition: GLViewer_ViewPort2d.h:137
void onCopyObject()
Copies object to clipboard.
Definition: GLViewer_ViewPort2d.cxx:198
void endRotation()
Completes rotation.
Definition: GLViewer_ViewPort2d.cxx:977
void setGridColor(const QColor gridColor, const QColor axisColor)
Returns grid color.
Definition: GLViewer_ViewPort2d.cxx:484
bool isDragProcess()
Checks of dragging process state.
Definition: GLViewer_ViewPort2d.h:129
void turnGrid(GLboolean on)
On/off rectangular grid.
Definition: GLViewer_ViewPort2d.cxx:465
vpDragState
Dragging states.
Definition: GLViewer_ViewPort2d.h:73
@ inDrag
Definition: GLViewer_ViewPort2d.h:73
@ initDrag
Definition: GLViewer_ViewPort2d.h:73
@ noDrag
Definition: GLViewer_ViewPort2d.h:73
virtual QPaintDevice * getPaintDevice()
Definition: GLViewer_ViewPort2d.h:90
QPoint * mypFirstPoint
Definition: GLViewer_ViewPort2d.h:237
virtual void setCenter(int x, int y)
Sets view center in global coords.
Definition: GLViewer_ViewPort2d.cxx:669
virtual void fitAll(bool keepScale=false, bool withZ=true)
Transform view by view borders ( if.
Definition: GLViewer_ViewPort2d.cxx:827
void drawPulling(GLViewer_Pnt)
\warnign It is for ouv
Definition: GLViewer_ViewPort2d.cxx:1268
virtual void mouseReleaseEvent(QMouseEvent *)
Definition: GLViewer_ViewPort2d.cxx:386
GLViewer_Grid * getGrid() const
Returns rectangular grid.
Definition: GLViewer_ViewPort2d.h:82
GLViewer_Widget * myGLWidget
Definition: GLViewer_ViewPort2d.h:213
void drawSelectByRect(int x, int y)
Draw selecting rectandle.
Definition: GLViewer_ViewPort2d.cxx:1186
void getScale(GLfloat &xSc, GLfloat &ySc) const
Returns scale factors.
Definition: GLViewer_ViewPort2d.h:114
GLViewer_ViewPort2d(QWidget *parent, GLViewer_ViewFrame *theViewFrame=NULL)
Definition: GLViewer_ViewPort2d.cxx:74
void finishPulling()
\warnign It is for ouv
Definition: GLViewer_ViewPort2d.cxx:1295
GLfloat myYScale
Definition: GLViewer_ViewPort2d.h:222
QPoint * mypLastPoint
Definition: GLViewer_ViewPort2d.h:238
int myWidth
Definition: GLViewer_ViewPort2d.h:219
GLViewer_ViewFrame * myViewFrame
Definition: GLViewer_ViewPort2d.h:212
virtual void reset()
Returns view to begin state.
Definition: GLViewer_ViewPort2d.cxx:594
void finishSelectByRect()
Pass rect into selector and update.
Definition: GLViewer_ViewPort2d.cxx:1205
GLViewer_Object * myPullingObject
Definition: GLViewer_ViewPort2d.h:242
virtual void mousePressEvent(QMouseEvent *)
Definition: GLViewer_ViewPort2d.cxx:333
int myIsDragProcess
Definition: GLViewer_ViewPort2d.h:232
virtual void zoom(int x0, int y0, int x1, int y1)
Process zoming transformation with mouse tracking from ( x0, y0 ) to ( x1, y1 )
Definition: GLViewer_ViewPort2d.cxx:701
QColor backgroundColor() const
Returns background color.
Definition: GLViewer_ViewPort2d.cxx:514
GLfloat myMargin
Definition: GLViewer_ViewPort2d.h:217
int getHeight() const
Returns height of view.
Definition: GLViewer_ViewPort2d.h:110
bool myIsPulling
Definition: GLViewer_ViewPort2d.h:241
bool isPulling() const
\warnign It is for ouv
Definition: GLViewer_ViewPort2d.h:156
virtual void pan(int dx, int dy)
Sets offset to view.
Definition: GLViewer_ViewPort2d.cxx:634
GLViewer_Rect win2GLV(const QRect &) const
Transforms window rect to global rect.
Definition: GLViewer_ViewPort2d.cxx:1306
virtual BlockStatus currentBlock()
Redefined method.
Definition: GLViewer_ViewPort2d.cxx:1150
void onDragObject(QMouseEvent *)
Definition: GLViewer_ViewPort2d.cxx:280
int myViewPortId
Definition: GLViewer_ViewPort2d.h:244
int myHeight
Definition: GLViewer_ViewPort2d.h:218
GLfloat myXScale
Definition: GLViewer_ViewPort2d.h:221
~GLViewer_ViewPort2d()
Definition: GLViewer_ViewPort2d.cxx:124
void setMargin(GLfloat margin)
Sets margin of borders.
Definition: GLViewer_ViewPort2d.h:103
QRubberBand * myRectBand
selection rectangle rubber band
Definition: GLViewer_ViewPort2d.h:251
Definition: GLViewer_ViewPort.h:62
Definition: GLViewer_Widget.h:44
Definition: QtxToolTip.h:36
Quantity_Color color(const QColor &)
Convert QColor object to Quantity_Color object.
Definition: OCCViewer.cxx:28
Definition: GLViewer_Geom.h:45