7fd59977 |
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 */ |