Salome HOME
39de364ab57892885ac53338c3f16920f9bf8be2
[modules/gui.git] / src / GLViewer / GLViewer_Context.h
1 // File:      GLViewer_Context.h
2 // Created:   November, 2004
3 // Author:    OCC team
4 // Copyright (C) CEA 2004
5
6 /***************************************************************************
7 **  Class:   GLViewer_Context
8 **  Descr:   OpenGL Context
9 **  Module:  GLViewer
10 **  Created: UI team, 04.09.02
11 ****************************************************************************/
12 #ifndef GLVIEWER_CONTEXT_H
13 #define GLVIEWER_CONTEXT_H
14
15 #ifdef WNT
16 #include "windows.h"
17 #endif
18
19 //#include "QAD.h"
20 #include "GLViewer_Object.h"
21
22 #include <qmap.h>
23 #include <qvaluelist.h>
24 #include <qrect.h>
25 #include <qobject.h>
26 #include <qregion.h>
27
28 #include <Quantity_NameOfColor.hxx>
29 #include <Quantity_Color.hxx>
30
31 #include <GL/gl.h>
32
33 typedef QMap<GLViewer_Object*,int> ObjectMap;
34 typedef QValueList<GLViewer_Object*> ObjList;
35
36 class GLViewer_Viewer2d;
37
38 #ifdef WNT
39 #pragma warning( disable:4251 )
40 #endif
41
42 enum SelectionStatus
43 {
44     SS_Invalid,
45     SS_LocalChanged,
46     SS_GlobalChanged,
47     SS_NoChanged
48 };
49
50 class GLVIEWER_EXPORT GLViewer_Context : public QObject
51 {
52   Q_OBJECT
53
54 public:
55   GLViewer_Context( GLViewer_Viewer2d* );
56   ~GLViewer_Context();
57
58   int                   MoveTo( int x, int y, bool byCircle = FALSE );
59   int                   Select( bool Append = FALSE, bool byCircle = FALSE );
60   int                   SelectByRect( const QRect&, bool Append = FALSE );
61
62   void                  SetHighlightColor( Quantity_NameOfColor aCol );
63   void                  SetSelectionColor( Quantity_NameOfColor aCol );
64   Quantity_NameOfColor  HighlightColor() { return myHighlightColor; }
65   Quantity_NameOfColor  SelectionColor() { return mySelectionColor; } 
66   int                   NbSelected();
67   void                  InitSelected();
68   bool                  MoreSelected();
69   bool                  NextSelected();
70   GLViewer_Object*      SelectedObject();
71
72   bool                  isSelected( GLViewer_Object* );
73
74   int                   insertObject( GLViewer_Object*, bool display = FALSE );
75   bool                  replaceObject( GLViewer_Object*, GLViewer_Object* );
76   void                  updateScales( GLfloat, GLfloat );
77   void                  setTolerance( int tol ) { myTolerance = tol; }
78   const ObjectMap&      getObjects() { return myObjects; }
79   const ObjList&        getObjList() { return myObjList; }
80   GLViewer_Object*      getFirstObject() { return myObjects.begin().key(); }
81
82   void                  clearSelected( bool updateViewer );
83   void                  setSelected( GLViewer_Object*, bool updateViewer );
84   void                  remSelected( GLViewer_Object*, bool updateViewer );
85
86   GLViewer_Object*      getCurrentObject() { return myLastPicked; }
87   bool                  currentObjectIsChanged() { return isLastPickedChanged; }
88
89   void                  eraseObject( GLViewer_Object*, bool updateViewer = true );
90   void                  deleteObject( GLViewer_Object*, bool updateViewer = true );
91
92 protected:
93   GLViewer_Viewer2d*    myGLViewer2d;
94   GLViewer_Object*      myLastPicked;
95   bool                  isLastPickedChanged;
96   ObjectMap             myObjects;
97   ObjList               myObjList;
98   int                   myNumber;
99   QValueList<int>       mySelNumbers;
100   int                   mySelCurIndex;
101   int                   myHNumber;
102   GLfloat               myXhigh;
103   GLfloat               myYhigh;
104   Quantity_NameOfColor  myHighlightColor;
105   Quantity_NameOfColor  mySelectionColor;
106   GLboolean             myHFlag;
107   GLboolean             mySFlag;
108   int                   myTolerance;
109 };
110
111 #ifdef WNT
112 #pragma warning ( default:4251 )
113 #endif
114
115 #endif