]> SALOME platform Git repositories - modules/gui.git/blob - src/SOCC/SOCC_ViewWindow.cxx
Salome HOME
4fdb39108531ae9aa26313d2d29dca17041c7353
[modules/gui.git] / src / SOCC / SOCC_ViewWindow.cxx
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, 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.
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 #include "SOCC_ViewWindow.h"
23
24 #include "OCCViewer_ViewPort3d.h"
25
26 #include "SUIT_Accel.h"
27
28 /*!
29   Constructor
30 */
31 SOCC_ViewWindow
32 ::SOCC_ViewWindow( SUIT_Desktop* theDesktop, 
33                    OCCViewer_Viewer* theModel)
34   : OCCViewer_ViewWindow( theDesktop, theModel )
35 {
36 }
37
38 /*!
39   Destructor
40 */
41 SOCC_ViewWindow
42 ::~SOCC_ViewWindow()
43 {
44 }
45
46 /*!
47   Performs action
48   \param theAction - type of action
49 */
50 bool 
51 SOCC_ViewWindow
52 ::action( const int theAction  )
53 {
54   const int inc = 10;
55   int cx, cy;
56   if ( theAction == SUIT_Accel::ZoomIn || theAction == SUIT_Accel::ZoomOut ||
57        theAction == SUIT_Accel::RotateLeft || theAction == SUIT_Accel::RotateRight ||
58        theAction == SUIT_Accel::RotateUp || theAction == SUIT_Accel::RotateDown ) {
59     cx = myViewPort->width() / 2;
60     cy = myViewPort->height() / 2;
61   }
62   switch ( theAction ) {
63   case SUIT_Accel::PanLeft     : 
64     myViewPort->pan( -inc, 0 );   
65     break;
66   case SUIT_Accel::PanRight    : 
67     myViewPort->pan(  inc, 0 );   
68     break;
69   case SUIT_Accel::PanUp       : 
70     myViewPort->pan( 0, inc );   
71     break;
72   case SUIT_Accel::PanDown     : 
73     myViewPort->pan( 0, -inc );   
74     break;
75   case SUIT_Accel::ZoomIn      : 
76     myViewPort->zoom( cx, cy, cx + inc, cy + inc );
77     break;
78   case SUIT_Accel::ZoomOut     : 
79     myViewPort->zoom( cx, cy, cx - inc, cy - inc );
80     break;
81   case SUIT_Accel::ZoomFit     :
82     myViewPort->fitAll();
83     break;
84   case SUIT_Accel::RotateLeft  : 
85     myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
86     myViewPort->rotate( cx - inc, cy, myCurrPointType, mySelectedPoint );
87     myViewPort->endRotation();
88     break;
89   case SUIT_Accel::RotateRight :  
90     myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
91     myViewPort->rotate( cx + inc, cy, myCurrPointType, mySelectedPoint );
92     myViewPort->endRotation();
93     break;
94   case SUIT_Accel::RotateUp    :  
95     myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
96     myViewPort->rotate( cx, cy - inc, myCurrPointType, mySelectedPoint );
97     myViewPort->endRotation();
98     break;
99   case SUIT_Accel::RotateDown  :  
100     myViewPort->startRotation( cx, cy, myCurrPointType, mySelectedPoint );
101     myViewPort->rotate( cx, cy + inc, myCurrPointType, mySelectedPoint );
102     myViewPort->endRotation();
103     break;
104   }
105   return true;
106 }