0012121: Optimization of existing selection classes
[occt.git] / src / OpenGl / OpenGl_tox.cxx
1
2 #ifndef WNT
3 /***********************************************************************
4
5 FONCTION :
6 ----------
7 File OpenGl_tox :
8
9
10 REMARQUES:
11 ---------- 
12
13
14 HISTORIQUE DES MODIFICATIONS   :
15 --------------------------------
16 xx-xx-xx : xxx ; Creation.
17 20-02-96 : FMN ; Suppression code inutile:
18 on ne garde que  :
19 - call_tox_open_display()
20 - call_tox_getscreen(Tint *d_wdth, Tint *d_hght)
21 01-04-96 : CAL ; Integration MINSK portage WNT
22 20-11-97 : CAL ; RererereMerge avec le source de portage.
23 12-02-01 : GG  ; BUC60821 Add getpitchsize() function
24 27-03-02 : GG  ; RIC120202 Add new function call_tox_set_display
25
26 ************************************************************************/
27
28 /*----------------------------------------------------------------------*/
29 /*
30 * Includes
31 */
32
33 #include <stdio.h>
34
35 #include <X11/Xlib.h>
36 #include <X11/Xutil.h>
37
38 #include <InterfaceGraphic_Aspect.hxx>
39
40 #include <OpenGl_tgl_all.hxx>
41 #include <OpenGl_txgl.hxx>
42 #include <OpenGl_tgl_tox.hxx>
43 #include <OpenGl_tgl_util.hxx>
44
45 /*----------------------------------------------------------------------*/
46 /*
47 * Variables globales
48 */
49
50 Display * call_thedisplay; /* display pointer; defined in tgl/tox */
51
52 /*----------------------------------------------------------------------*/
53 /*
54 *Fonctions externes
55 */
56
57 /*----------------------------------------------------------------------*/
58
59 Tint
60 call_tox_open_display (void)
61 {
62   char synchro[132];
63
64   if (call_thedisplay == NULL)
65     /*
66     * display_name
67     * Specifies the hardware display name, which determines the
68     * display and communications domain to be used.
69     * On a POSIX system, if the display_name is NULL, it defaults
70     * to the value of the DISPLAY environment variable.
71     */
72     call_thedisplay = XOpenDisplay ((char*) NULL);
73
74   if (call_thedisplay != NULL)
75     if (call_util_osd_getenv ("CALL_SYNCHRO_X", synchro, 132))
76       XSynchronize (call_thedisplay, 1);
77     else
78       XSynchronize (call_thedisplay, 0);
79   else
80     fprintf (stderr, "Cannot connect to X server %s\n",
81     XDisplayName ((char*) NULL));
82
83   return (call_thedisplay == NULL);
84 }
85
86 /*RIC120302*/
87 Tint
88 call_tox_set_display (void *vdisplay)
89 {
90   Display *pdisplay = (Display*) vdisplay;
91   char synchro[132];
92
93   if ( pdisplay ) {
94     call_thedisplay = pdisplay;
95
96     if (call_util_osd_getenv ("CALL_SYNCHRO_X", synchro, 132))
97       XSynchronize (call_thedisplay, 1);
98     else
99       XSynchronize (call_thedisplay, 0);
100   } else {
101     fprintf (stderr, "Cannot connect to X server %s\n",
102       XDisplayName ((char*) NULL));
103   }
104   return (call_thedisplay != NULL);
105 }
106 /*RIC120302*/
107
108 /*----------------------------------------------------------------------*/
109
110 void
111 call_tox_getscreen( Tint *d_wdth, Tint *d_hght )
112 {
113   *d_wdth = DisplayWidth( call_thedisplay, DefaultScreen(call_thedisplay) );
114   *d_hght = DisplayHeight( call_thedisplay, DefaultScreen(call_thedisplay) );
115   return;
116 }
117
118 /*----------------------------------------------------------------------*/
119
120 Tfloat
121 call_tox_getpitchsize( )
122 {
123   static float pitch_size = 0.;
124
125   if( pitch_size == 0. ) {
126     int width = DisplayWidth( call_thedisplay, DefaultScreen(call_thedisplay) );
127     int height = DisplayHeight( call_thedisplay, DefaultScreen(call_thedisplay) );
128     int mmwidth = DisplayWidthMM( call_thedisplay, DefaultScreen(call_thedisplay) );
129     int mmheight = DisplayHeightMM( call_thedisplay, DefaultScreen(call_thedisplay) );
130     pitch_size = ((float)mmwidth/width + (float)mmheight/height)/2.;
131   }
132
133   return pitch_size;
134 }
135
136 /*----------------------------------------------------------------------*/
137 #else
138 # include <windows.h>
139 # include <OpenGl_tgl_all.hxx>
140 # include <OpenGl_txgl.hxx>
141
142 DISPLAY* call_thedisplay = "DISPLAY";  /* Dummy for Windows NT */
143
144 Tint
145 call_tox_open_display ( void )
146 {
147   return 1;
148 }
149
150 /*RIC120302*/
151 Tint
152 call_tox_set_display ( void* vdisplay)
153 {
154   return 1;
155 }
156 /*RIC120302*/
157
158 void
159 call_tox_getscreen ( Tint *d_wdth, Tint *d_hght )
160 {
161   *d_wdth = GetSystemMetrics(SM_CXSCREEN);
162   *d_hght = GetSystemMetrics(SM_CYSCREEN);
163   return;
164 }
165
166 #endif  /* WNT */