16 #include <X11/extensions/Xxf86dga.h>
17 #include <X11/extensions/xf86vmode.h>
18 #include "wmgeneral/wmgeneral.h"
19 #include "wmxres-master.xpm"
20 #include "wmxres-mask.xbm"
32 char res_list
[100][20];
33 XF86VidModeModeInfo
**res_modelines
;
42 void DrawResMode(int);
44 void ActiveXNewMode(void);
45 void GetXActiveMode(void);
50 int main(int argc
,char *argv
[])
52 if (argc
== 2 && strcmp(argv
[1], "-v") == 0) {
53 printf("wmxres "VERSION
"\n");
57 openXwindow(argc
, argv
, wmxres_master_xpm
, wmxres_mask_bits
,
58 wmxres_mask_width
, wmxres_mask_height
);
60 AddMouseRegion(0,43,44,55,55); /* Bouton d'activation */
61 AddMouseRegion(1,19,44,31,55); /* Bouton scan gauche */
62 AddMouseRegion(2,31,44,43,55); /* Bouton scan droit */
66 res_selected
=res_i_active
;
67 DrawResMode(res_selected
);
72 while (XPending(display
))
74 XNextEvent(display
, &Event
);
83 XCloseDisplay(display
);
88 isw
= CheckMouseRegion(Event
.xbutton
.x
, Event
.xbutton
.y
);
91 case 0: /* Activation */
96 case 1: /* Je scan a gauche */
98 DrawResMode(res_selected
);
101 case 2: /* Je scan a droite */
103 DrawResMode(res_selected
);
107 if (res_selected
==res_i_active
) { DrawLight(1); }
111 /* Bouton relache donc pas enfonce */
112 switch (button_state
)
132 * Recuperation des resolutions X possible
138 if (!(res_count
> 0)) {
139 XF86VidModeGetAllModeLines( display
, XDefaultScreen(display
), &res_count
, &res_modelines
);
142 printf("Error : X must be configured with more than one mode.\n");
147 /* fix bounds on res_count -- Todd Troxell <ttroxell@debian.org */
148 if(res_count
> 100) {
152 for(c
=0; c
< res_count
; c
++) {
153 sprintf(res_list
[c
], "%dx%d", res_modelines
[c
]->hdisplay
, res_modelines
[c
]->vdisplay
);
158 * Recuperation de la resolution X active
160 void GetXActiveMode(void)
162 XF86VidModeModeLine vm_modelines
;
165 XF86VidModeGetModeLine( display
, XDefaultScreen(display
), &a
, &vm_modelines
);
166 sprintf(res_active
, "%dx%d", vm_modelines
.hdisplay
, vm_modelines
.vdisplay
);
168 for(i
=0; i
< res_count
; i
++) {
169 if (!strcmp(res_active
, res_list
[i
])) {
176 * Activation d'une nouvelle resolution X
178 void ActiveXNewMode()
180 XF86VidModeSwitchToMode( display
, XDefaultScreen(display
), res_modelines
[res_selected
]);
182 res_i_active
=res_selected
;
186 * Affichage d'une resolution
188 void DrawResMode(int show_mode
)
191 char *res_width
, *res_height
;
195 strtmp
=strdup(res_list
[show_mode
]);
197 res_width
=strtok(strtmp
, "x");
198 res_height
=strtok((char *) NULL
, "x");
201 sprintf(buf
, "%04i", k
);
203 for (i
=0; buf
[i
]; i
++) {
206 copyXPMArea(c
* 6, 61, 6, 7, k
-1, 9);
211 sprintf(buf
, "%04i", k
);
213 for (i
=0; buf
[i
]; i
++) {
216 copyXPMArea(c
* 6, 61, 6, 7, k
-1, 18);
224 * Allumage de la loupiote
226 void DrawLight(int light_state
)
228 copyXPMArea (102, light_state
? 35: 47, 14, 11, 1, 44);
229 RedrawWindowXYWH(1, 44, 14, 11);
236 * Un on enfonce le bouton
238 void ButtonDown(int button
)
243 copyXPMArea(79, 96, 12, 11, 43, 44);
244 RedrawWindowXYWH(43, 44, 12, 11);
247 copyXPMArea(55, 96, 12, 11, 19, 44);
248 RedrawWindowXYWH(19, 44, 12, 11);
250 if (res_selected
< 0) { res_selected
=res_count
-1; }
253 copyXPMArea(67, 96, 12, 11, 31, 44);
254 RedrawWindowXYWH(31, 44, 12, 11);
256 if (res_selected
> res_count
-1) { res_selected
=0; }
262 * Et deux on relache le bouton
264 void ButtonUp(int button
)
269 copyXPMArea(79, 84, 12, 11, 43, 44);
270 RedrawWindowXYWH(43, 44, 12, 11);
273 copyXPMArea(55, 84, 12, 11, 19, 44);
274 RedrawWindowXYWH(19, 44, 12, 11);
277 copyXPMArea(67, 84, 12, 11, 31, 44);
278 RedrawWindowXYWH(31, 44, 12, 11);