OCC22377 Patch for visualization component
[occt.git] / src / OpenGl / OpenGl_togl_vieworientation.cxx
1 /***********************************************************************
2
3 FONCTION :
4 ----------
5 file OpenGl_togl_vieworientation.c :
6
7
8 REMARQUES:
9 ---------- 
10
11
12 HISTORIQUE DES MODIFICATIONS   :
13 --------------------------------
14 xx-xx-xx : CAL ; Creation.
15 10-07-96 : FMN ; Suppression #define sur calcul matrice
16
17 ************************************************************************/
18
19 /*----------------------------------------------------------------------*/
20 /*
21 * Includes
22 */
23
24 #include <OpenGl_tgl_all.hxx>
25 #include <InterfaceGraphic_Graphic3d.hxx>
26 #include <InterfaceGraphic_Visual3d.hxx>
27 #include <OpenGl_tgl_vis.hxx>
28 #include <OpenGl_tgl_funcs.hxx>
29
30 /*----------------------------------------------------------------------*/
31
32 int EXPORT
33 call_togl_vieworientation
34 (
35  CALL_DEF_VIEW * aview,
36  int wait
37  )
38 {
39   int i, j;
40   Tint waitwait;
41   Tint err_ind;           /* OUT error indicator */
42
43   Tfloat Vrp[3];
44   Tfloat Vpn[3];
45   Tfloat Vup[3];
46   Tfloat ScaleFactors[3];
47
48   err_ind = 0;
49
50   Vrp[0] = aview->Orientation.ViewReferencePoint.x;
51   Vrp[1] = aview->Orientation.ViewReferencePoint.y;
52   Vrp[2] = aview->Orientation.ViewReferencePoint.z;
53
54   Vpn[0] = aview->Orientation.ViewReferencePlane.x;
55   Vpn[1] = aview->Orientation.ViewReferencePlane.y;
56   Vpn[2] = aview->Orientation.ViewReferencePlane.z;
57
58   Vup[0] = aview->Orientation.ViewReferenceUp.x;
59   Vup[1] = aview->Orientation.ViewReferenceUp.y;
60   Vup[2] = aview->Orientation.ViewReferenceUp.z;
61
62   ScaleFactors[0] = aview->Orientation.ViewScaleX;
63   ScaleFactors[1] = aview->Orientation.ViewScaleY;
64   ScaleFactors[2] = aview->Orientation.ViewScaleZ;
65
66   /* use user-defined matrix */
67   if ( aview->Orientation.IsCustomMatrix ) {
68     for( i = 0; i < 4; i++ )
69       for( j = 0; j < 4; j++ )
70         call_viewrep.orientation_matrix[i][j] = aview->Orientation.ModelViewMatrix[i][j];
71   }
72   else
73     TelEvalViewOrientationMatrix( Vrp, Vpn, Vup, ScaleFactors, &err_ind, call_viewrep.orientation_matrix);
74
75   if( !err_ind && aview->WsId != -1 )
76   {
77     call_viewrep.extra.vrp[0] = Vrp[0],
78       call_viewrep.extra.vrp[1] = Vrp[1],
79       call_viewrep.extra.vrp[2] = Vrp[2];
80
81     call_viewrep.extra.vpn[0] = Vpn[0],
82       call_viewrep.extra.vpn[1] = Vpn[1],
83       call_viewrep.extra.vpn[2] = Vpn[2];
84
85     call_viewrep.extra.vup[0] = Vup[0],
86       call_viewrep.extra.vup[1] = Vup[1],
87       call_viewrep.extra.vup[2] = Vup[2];
88
89     call_viewrep.extra.scaleFactors[0] = ScaleFactors[0],
90       call_viewrep.extra.scaleFactors[1] = ScaleFactors[1],
91       call_viewrep.extra.scaleFactors[2] = ScaleFactors[2];
92
93     if( !wait )
94     {
95       waitwait = 1;
96       call_togl_viewmapping( aview, waitwait );
97       call_togl_cliplimit( aview, waitwait );
98       TelSetViewRepresentation( aview->WsId, aview->ViewId, &call_viewrep );
99     }
100   }
101   return err_ind;
102 }
103 /*----------------------------------------------------------------------*/