Version: 9.16.0
GLViewer_ViewPort2d.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 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
55class GLViewer_Grid;
56class GLViewer_Object;
58
59class QtxToolTip;
60
61class QWidget;
62class QRubberBand;
63
69{
70 Q_OBJECT
71
74
75public:
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
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
130
132 void turnCompass( GLboolean on );
134 void drawCompass();
135
138
140 virtual BlockStatus currentBlock();
141
143 void startSelectByRect( int x, int y );
145 void drawSelectByRect( int x, int y );
147 void finishSelectByRect();
148
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
166signals:
169
171
172protected:
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
198protected 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
211protected:
216
217 GLfloat myMargin;
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
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
virtual QPaintDevice * getPaintDevice()
Definition: GLViewer_ViewPort2d.h:90
float * myCurDragPosY
Definition: GLViewer_ViewPort2d.h:234
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
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
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_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
GLViewer_ViewFrame * getViewFrame() const
Returns parent window.
Definition: GLViewer_ViewPort2d.h:87
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
GLViewer_Grid * getGrid() const
Returns rectangular grid.
Definition: GLViewer_ViewPort2d.h:82
QRubberBand * myRectBand
selection rectangle rubber band
Definition: GLViewer_ViewPort2d.h:251
GLViewer_Rect * getBorder() const
Get current borders of scene.
Definition: GLViewer_ViewPort2d.h:100
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