1
2
3 /*
4 * Author: Arvin Schnell
5 */
6
7
8 #include <stdio.h>
9 #include <ctype.h>
10 #include <math.h>
11
12 #include <X11/Xlib.h>
13 #include <Xm/Xm.h>
14 #include <Xm/Scale.h>
15
16
17 void
myXGetDrawableSize(Display * display,Drawable drawable,unsigned int * width,unsigned int * height)18 myXGetDrawableSize (Display* display, Drawable drawable,
19 unsigned int* width, unsigned int* height)
20 {
21 Window root;
22 int x, y;
23 unsigned int border, depth;
24
25 XGetGeometry (display, drawable, &root, &x, &y, width, height,
26 &border, &depth);
27 }
28
29
30 double
myXmScaleGetValue(Widget widget)31 myXmScaleGetValue (Widget widget)
32 {
33 int value;
34 short int point;
35 Arg args[] = {
36 { XmNvalue, (XtArgVal) & value },
37 { XmNdecimalPoints, (XtArgVal) & point }
38 };
39 XtGetValues (widget, args, XtNumber (args));
40
41 double base = pow (10.0, point);
42 return value / base;
43 }
44
45
46 void
myXmScaleSetValue(Widget widget,double value)47 myXmScaleSetValue (Widget widget, double value)
48 {
49 short int point;
50 Arg args[] = {
51 { XmNdecimalPoints, (XtArgVal) & point }
52 };
53 XtGetValues (widget, args, XtNumber (args));
54
55 double base = pow (10.0, point);
56 XmScaleSetValue (widget, (int) (value * base));
57 }
58
59
60 #ifndef _BSD_SOURCE
61 int
strcasecmp(const char * s1,const char * s2)62 strcasecmp (const char* s1, const char* s2)
63 {
64 const char* a1 = s1;
65 const char* a2 = s2;
66 while (true) {
67 char c1 = tolower (*a1++);
68 char c2 = tolower (*a2++);
69 if (c1 == '\0' && c2 == '\0')
70 return 0;
71 if (c1 != c2)
72 return c1 > c2 ? +1 : -1;
73 }
74 }
75 #endif
76
77
78 bool
one_bit_set(unsigned int x)79 one_bit_set (unsigned int x)
80 {
81 unsigned int m = x - 1;
82 return (x ^ m) >> 1 == m;
83 }
84