Salome HOME
826e0e5a07888a32318dbce27c55aacdd06b1082
[modules/gui.git] / src / SOCC / SOCC_ViewWindow.cxx
1 #include "SOCC_ViewWindow.h"
2
3 #include "OCCViewer_ViewPort3d.h"
4
5 #include "SUIT_Accel.h"
6
7 //----------------------------------------------------------------------------
8 SOCC_ViewWindow
9 ::SOCC_ViewWindow( SUIT_Desktop* theDesktop, 
10                    OCCViewer_Viewer* theModel)
11   : OCCViewer_ViewWindow( theDesktop, theModel )
12 {
13 }
14
15 //----------------------------------------------------------------------------
16 SOCC_ViewWindow
17 ::~SOCC_ViewWindow()
18 {
19 }
20
21 //----------------------------------------------------------------------------
22 void 
23 SOCC_ViewWindow
24 ::action( const int theAction  )
25 {
26   const int inc = 10;
27   int cx, cy;
28   if ( theAction == SUIT_Accel::ZoomIn || theAction == SUIT_Accel::ZoomOut ||
29        theAction == SUIT_Accel::RotateLeft || theAction == SUIT_Accel::RotateRight ||
30        theAction == SUIT_Accel::RotateUp || theAction == SUIT_Accel::RotateDown ) {
31     cx = myViewPort->width() / 2;
32     cy = myViewPort->height() / 2;
33   }
34   switch ( theAction ) {
35   case SUIT_Accel::PanLeft     : 
36     myViewPort->pan( -inc, 0 );   
37     break;
38   case SUIT_Accel::PanRight    : 
39     myViewPort->pan(  inc, 0 );   
40     break;
41   case SUIT_Accel::PanUp       : 
42     myViewPort->pan( 0, inc );   
43     break;
44   case SUIT_Accel::PanDown     : 
45     myViewPort->pan( 0, -inc );   
46     break;
47   case SUIT_Accel::ZoomIn      : 
48     myViewPort->zoom( cx, cy, cx + inc, cy + inc );
49     break;
50   case SUIT_Accel::ZoomOut     : 
51     myViewPort->zoom( cx, cy, cx - inc, cy - inc );
52     break;
53   case SUIT_Accel::ZoomFit     :
54     myViewPort->fitAll();
55     break;
56   case SUIT_Accel::RotateLeft  : 
57     myViewPort->startRotation( cx, cy );
58     myViewPort->rotate( cx - inc, cy );
59     myViewPort->endRotation();
60     break;
61   case SUIT_Accel::RotateRight :  
62     myViewPort->startRotation( cx, cy );
63     myViewPort->rotate( cx + inc, cy );
64     myViewPort->endRotation();
65     break;
66   case SUIT_Accel::RotateUp    :  
67     myViewPort->startRotation( cx, cy );
68     myViewPort->rotate( cx, cy - inc );
69     myViewPort->endRotation();
70     break;
71   case SUIT_Accel::RotateDown  :  
72     myViewPort->startRotation( cx, cy );
73     myViewPort->rotate( cx, cy + inc );
74     myViewPort->endRotation();
75     break;
76   } 
77 }