Update of /cvsroot/scsh/scx/c/xlib
In directory usw-pr-cvs1:/tmp/cvs-serv6025
Modified Files:
client.c color.c colormap.c cursor.c display.c error.c event.c
extension.c font.c gcontext.c grab.c graphics.c init.c key.c
objects.c pixel.c pixmap.c property.c text.c type.c util.c
window.c wm.c xlib.h
Log Message:
First automatic conversion to scheme48 names.
Index: client.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/client.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** client.c 2001/05/08 14:21:00 1.1
--- client.c 2001/05/14 13:48:37 1.2
***************
*** 1,7 ****
#include "xlib.h"
! static Object Sym_Wm_Hints, Sym_Size_Hints;
! static Object P_Iconify_Window (w, scr) Object w, scr; {
Check_Type (w, T_Window);
if (!XIconifyWindow (WINDOW(w)->dpy, WINDOW(w)->win,
--- 1,7 ----
#include "xlib.h"
! static s48_value Sym_Wm_Hints, Sym_Size_Hints;
! static s48_value P_Iconify_Window (w, scr) s48_value w, scr; {
Check_Type (w, T_Window);
if (!XIconifyWindow (WINDOW(w)->dpy, WINDOW(w)->win,
***************
*** 11,15 ****
}
! static Object P_Withdraw_Window (w, scr) Object w, scr; {
Check_Type (w, T_Window);
if (!XWithdrawWindow (WINDOW(w)->dpy, WINDOW(w)->win,
--- 11,15 ----
}
! static s48_value P_Withdraw_Window (w, scr) s48_value w, scr; {
Check_Type (w, T_Window);
if (!XWithdrawWindow (WINDOW(w)->dpy, WINDOW(w)->win,
***************
*** 19,23 ****
}
! static Object P_Reconfigure_Wm_Window (w, scr, conf) Object w, scr, conf; {
unsigned long mask;
--- 19,23 ----
}
! static s48_value P_Reconfigure_Wm_Window (w, scr, conf) s48_value w, scr,
conf; {
unsigned long mask;
***************
*** 30,38 ****
}
! static Object P_Wm_Command (w) Object w; {
int i, ac;
char **av;
! Object s, ret, t;
! GC_Node2;
Check_Type (w, T_Window);
--- 30,38 ----
}
! static s48_value P_Wm_Command (w) s48_value w; {
int i, ac;
char **av;
! s48_value s, ret, t;
! S48_DECLARE_GC_PROTECT(2);
Check_Type (w, T_Window);
***************
*** 41,59 ****
ac = 0;
Enable_Interrupts;
! ret = t = P_Make_List (Make_Integer (ac), Null);
! GC_Link2 (ret, t);
! for (i = 0; i < ac; i++, t = Cdr (t)) {
s = Make_String (av[i], strlen (av[i]));
! Car (t) = s;
}
! GC_Unlink;
if (ac) XFreeStringList (av);
return ret;
}
! static String_List_To_Text_Property (x, ret) Object x; XTextProperty *ret; {
register i, n;
register char **s;
! Object t;
Alloca_Begin;
--- 41,59 ----
ac = 0;
Enable_Interrupts;
! ret = t = P_Make_List (s48_enter_integer (ac), S48_NULL);
! S48_GC_PROTECT_2 (ret, t);
! for (i = 0; i < ac; i++, t = S48_CDR (t)) {
s = Make_String (av[i], strlen (av[i]));
! S48_CAR (t) = s;
}
! S48_GC_UNPROTECT;
if (ac) XFreeStringList (av);
return ret;
}
! static String_List_To_Text_Property (x, ret) s48_value x; XTextProperty *ret;
{
register i, n;
register char **s;
! s48_value t;
Alloca_Begin;
***************
*** 61,66 ****
n = Fast_Length (x);
Alloca (s, char**, n * sizeof (char *));
! for (i = 0; i < n; i++, x = Cdr (x)) {
! t = Car (x);
Get_Strsym_Stack (t, s[i]);
}
--- 61,66 ----
n = Fast_Length (x);
Alloca (s, char**, n * sizeof (char *));
! for (i = 0; i < n; i++, x = S48_CDR (x)) {
! t = S48_CAR (x);
Get_Strsym_Stack (t, s[i]);
}
***************
*** 70,94 ****
}
! static Object Text_Property_To_String_List (p) XTextProperty *p; {
int n;
register i;
char **s;
! Object x, ret, t;
! GC_Node2;
if (!XTextPropertyToStringList (p, &s, &n))
Primitive_Error ("cannot convert from text property");
! ret = t = P_Make_List (Make_Integer (n), Null);
! GC_Link2 (ret, t);
! for (i = 0; i < n; i++, t = Cdr (t)) {
x = Make_String (s[i], strlen (s[i]));
! Car (t) = x;
}
! GC_Unlink;
XFreeStringList (s);
return ret;
}
! static Object P_Get_Text_Property (w, a) Object w, a; {
XTextProperty ret;
--- 70,94 ----
}
! static s48_value Text_Property_To_String_List (p) XTextProperty *p; {
int n;
register i;
char **s;
! s48_value x, ret, t;
! S48_DECLARE_GC_PROTECT(2);
if (!XTextPropertyToStringList (p, &s, &n))
Primitive_Error ("cannot convert from text property");
! ret = t = P_Make_List (s48_enter_integer (n), S48_NULL);
! S48_GC_PROTECT_2 (ret, t);
! for (i = 0; i < n; i++, t = S48_CDR (t)) {
x = Make_String (s[i], strlen (s[i]));
! S48_CAR (t) = x;
}
! S48_GC_UNPROTECT;
XFreeStringList (s);
return ret;
}
! static s48_value P_Get_Text_Property (w, a) s48_value w, a; {
XTextProperty ret;
***************
*** 99,103 ****
ATOM(a)->atom)) {
Enable_Interrupts;
! return False;
}
Enable_Interrupts;
--- 99,103 ----
ATOM(a)->atom)) {
Enable_Interrupts;
! return S48_FALSE;
}
Enable_Interrupts;
***************
*** 105,109 ****
}
! static Object P_Set_Text_Property (w, prop, a) Object w, prop, a; {
XTextProperty p;
--- 105,109 ----
}
! static s48_value P_Set_Text_Property (w, prop, a) s48_value w, prop, a; {
XTextProperty p;
***************
*** 116,124 ****
}
! static Object P_Wm_Protocols (w) Object w; {
Atom *p;
int i, n;
! Object ret;
! GC_Node;
Check_Type (w, T_Window);
--- 116,124 ----
}
! static s48_value P_Wm_Protocols (w) s48_value w; {
Atom *p;
int i, n;
! s48_value ret;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (w, T_Window);
***************
*** 127,144 ****
Primitive_Error ("cannot get WM protocols");
Enable_Interrupts;
! ret = Make_Vector (n, Null);
! GC_Link (ret);
for (i = 0; i < n; i++) {
! Object a;
a = Make_Atom (p[i]);
! VECTOR(ret)->data[i] = a;
}
XFree ((char *)p);
! GC_Unlink;
return ret;
}
! static Object P_Set_Wm_Protocols (w, v) Object w, v; {
Atom *p;
int i, n;
--- 127,144 ----
Primitive_Error ("cannot get WM protocols");
Enable_Interrupts;
! ret = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (ret);
for (i = 0; i < n; i++) {
! s48_value a;
a = Make_Atom (p[i]);
! S48_VECTOR_SET(ret, i, a;)
}
XFree ((char *)p);
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_Set_Wm_Protocols (w, v) s48_value w, v; {
Atom *p;
int i, n;
***************
*** 147,155 ****
Check_Type (w, T_Window);
Check_Type (v, T_Vector);
! n = VECTOR(v)->size;
Alloca (p, Atom*, n * sizeof (Atom));
for (i = 0; i < n; i++) {
! Object a;
! a = VECTOR(v)->data[i];
Check_Type (a, T_Atom);
p[i] = ATOM(a)->atom;
--- 147,155 ----
Check_Type (w, T_Window);
Check_Type (v, T_Vector);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, Atom*, n * sizeof (Atom));
for (i = 0; i < n; i++) {
! s48_value a;
! a = S48_VECTOR_REF(v, i);
Check_Type (a, T_Atom);
p[i] = ATOM(a)->atom;
***************
*** 161,168 ****
}
! static Object P_Wm_Class (w) Object w; {
! Object ret, x;
XClassHint c;
! GC_Node;
Check_Type (w, T_Window);
--- 161,168 ----
}
! static s48_value P_Wm_Class (w) s48_value w; {
! s48_value ret, x;
XClassHint c;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (w, T_Window);
***************
*** 176,196 ****
(void)XGetClassHint (WINDOW(w)->dpy, WINDOW(w)->win, &c);
Enable_Interrupts;
! ret = Cons (False, False);
! GC_Link (ret);
if (c.res_name) {
x = Make_String (c.res_name, strlen (c.res_name));
! Car (ret) = x;
XFree (c.res_name);
}
if (c.res_class) {
x = Make_String (c.res_class, strlen (c.res_class));
! Cdr (ret) = x;
XFree (c.res_class);
}
! GC_Unlink;
return ret;
}
! static Object P_Set_Wm_Class (w, name, class) Object w, name, class; {
XClassHint c;
--- 176,196 ----
(void)XGetClassHint (WINDOW(w)->dpy, WINDOW(w)->win, &c);
Enable_Interrupts;
! ret = s48_cons (S48_FALSE, S48_FALSE);
! S48_GC_PROTECT_1 (ret);
if (c.res_name) {
x = Make_String (c.res_name, strlen (c.res_name));
! S48_CAR (ret) = x;
XFree (c.res_name);
}
if (c.res_class) {
x = Make_String (c.res_class, strlen (c.res_class));
! S48_CDR (ret) = x;
XFree (c.res_class);
}
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_Set_Wm_Class (w, name, class) s48_value w, name, class; {
XClassHint c;
***************
*** 202,209 ****
}
! static Object P_Set_Wm_Command (w, cmd) Object w, cmd; {
register i, n;
register char **argv;
! Object c;
Alloca_Begin;
--- 202,209 ----
}
! static s48_value P_Set_Wm_Command (w, cmd) s48_value w, cmd; {
register i, n;
register char **argv;
! s48_value c;
Alloca_Begin;
***************
*** 212,217 ****
n = Fast_Length (cmd);
Alloca (argv, char**, n * sizeof (char *));
! for (i = 0; i < n; i++, cmd = Cdr (cmd)) {
! c = Car (cmd);
Get_Strsym_Stack (c, argv[i]);
}
--- 212,217 ----
n = Fast_Length (cmd);
Alloca (argv, char**, n * sizeof (char *));
! for (i = 0; i < n; i++, cmd = S48_CDR (cmd)) {
! c = S48_CAR (cmd);
Get_Strsym_Stack (c, argv[i]);
}
***************
*** 221,225 ****
}
! static Object P_Wm_Hints (w) Object w; {
XWMHints *p;
--- 221,225 ----
}
! static s48_value P_Wm_Hints (w) s48_value w; {
XWMHints *p;
***************
*** 238,242 ****
}
! static Object P_Set_Wm_Hints (w, h) Object w, h; {
unsigned long mask;
--- 238,242 ----
}
! static s48_value P_Set_Wm_Hints (w, h) s48_value w, h; {
unsigned long mask;
***************
*** 248,252 ****
}
! static Object P_Size_Hints (w, a) Object w, a; {
long supplied;
--- 248,252 ----
}
! static s48_value P_Size_Hints (w, a) s48_value w, a; {
long supplied;
***************
*** 270,274 ****
}
! static Object P_Set_Size_Hints (w, a, h) Object w, a, h; {
unsigned long mask;
--- 270,274 ----
}
! static s48_value P_Set_Size_Hints (w, a, h) s48_value w, a, h; {
unsigned long mask;
***************
*** 287,295 ****
}
! static Object P_Icon_Sizes (w) Object w; {
XIconSize *p;
int i, n;
! Object v;
! GC_Node;
Check_Type (w, T_Window);
--- 287,295 ----
}
! static s48_value P_Icon_Sizes (w) s48_value w; {
XIconSize *p;
int i, n;
! s48_value v;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (w, T_Window);
***************
*** 298,317 ****
n = 0;
Enable_Interrupts;
! v = Make_Vector (n, Null);
! GC_Link (v);
for (i = 0; i < n; i++) {
register XIconSize *q = &p[i];
! Object t;
! t = P_Make_List (Make_Integer (6), Null);
! VECTOR(v)->data[i] = t;
! Car (t) = Make_Integer (q->min_width); t = Cdr (t);
! Car (t) = Make_Integer (q->min_height); t = Cdr (t);
! Car (t) = Make_Integer (q->max_width); t = Cdr (t);
! Car (t) = Make_Integer (q->max_height); t = Cdr (t);
! Car (t) = Make_Integer (q->width_inc); t = Cdr (t);
! Car (t) = Make_Integer (q->height_inc);
}
! GC_Unlink;
if (n > 0)
XFree ((char *)p);
--- 298,317 ----
n = 0;
Enable_Interrupts;
! v = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (v);
for (i = 0; i < n; i++) {
register XIconSize *q = &p[i];
! s48_value t;
! t = P_Make_List (s48_enter_integer (6), S48_NULL);
! S48_VECTOR_SET(v, i, t;)
! S48_CAR (t) = s48_enter_integer (q->min_width); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (q->min_height); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (q->max_width); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (q->max_height); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (q->width_inc); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (q->height_inc);
}
! S48_GC_UNPROTECT;
if (n > 0)
XFree ((char *)p);
***************
*** 319,323 ****
}
! static Object P_Set_Icon_Sizes (w, v) Object w, v; {
register i, n;
XIconSize *p;
--- 319,323 ----
}
! static s48_value P_Set_Icon_Sizes (w, v) s48_value w, v; {
register i, n;
XIconSize *p;
***************
*** 326,345 ****
Check_Type (w, T_Window);
Check_Type (v, T_Vector);
! n = VECTOR(v)->size;
Alloca (p, XIconSize*, n * sizeof (XIconSize));
for (i = 0; i < n; i++) {
register XIconSize *q = &p[i];
! Object t;
! t = VECTOR(v)->data[i];
Check_List (t);
if (Fast_Length (t) != 6)
Primitive_Error ("invalid argument: ~s", t);
! q->min_width = Get_Integer (Car (t)); t = Cdr (t);
! q->min_height = Get_Integer (Car (t)); t = Cdr (t);
! q->max_width = Get_Integer (Car (t)); t = Cdr (t);
! q->max_height = Get_Integer (Car (t)); t = Cdr (t);
! q->width_inc = Get_Integer (Car (t)); t = Cdr (t);
! q->height_inc = Get_Integer (Car (t));
}
XSetIconSizes (WINDOW(w)->dpy, WINDOW(w)->win, p, n);
--- 326,345 ----
Check_Type (w, T_Window);
Check_Type (v, T_Vector);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XIconSize*, n * sizeof (XIconSize));
for (i = 0; i < n; i++) {
register XIconSize *q = &p[i];
! s48_value t;
! t = S48_VECTOR_REF(v, i);
Check_List (t);
if (Fast_Length (t) != 6)
Primitive_Error ("invalid argument: ~s", t);
! q->min_width = (int)s48_extract_integer (S48_CAR (t)); t = S48_CDR (t);
! q->min_height = (int)s48_extract_integer (S48_CAR (t)); t = S48_CDR (t);
! q->max_width = (int)s48_extract_integer (S48_CAR (t)); t = S48_CDR (t);
! q->max_height = (int)s48_extract_integer (S48_CAR (t)); t = S48_CDR (t);
! q->width_inc = (int)s48_extract_integer (S48_CAR (t)); t = S48_CDR (t);
! q->height_inc = (int)s48_extract_integer (S48_CAR (t));
}
XSetIconSizes (WINDOW(w)->dpy, WINDOW(w)->win, p, n);
***************
*** 348,352 ****
}
! static Object P_Transient_For (w) Object w; {
Window win;
--- 348,352 ----
}
! static s48_value P_Transient_For (w) s48_value w; {
Window win;
***************
*** 358,362 ****
}
! static Object P_Set_Transient_For (w, pw) Object w, pw; {
Check_Type (w, T_Window);
XSetTransientForHint (WINDOW(w)->dpy, WINDOW(w)->win, Get_Window (pw));
--- 358,362 ----
}
! static s48_value P_Set_Transient_For (w, pw) s48_value w, pw; {
Check_Type (w, T_Window);
XSetTransientForHint (WINDOW(w)->dpy, WINDOW(w)->win, Get_Window (pw));
Index: color.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/color.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** color.c 2001/05/08 14:21:00 1.1
--- color.c 2001/05/14 13:48:37 1.2
***************
*** 3,7 ****
Generic_Predicate (Color)
! static Color_Equal (x, y) Object x, y; {
register XColor *p = &COLOR(x)->c, *q = &COLOR(y)->c;
return p->red == q->red && p->green == q->green && p->blue == q->blue;
--- 3,7 ----
Generic_Predicate (Color)
! static Color_Equal (x, y) s48_value x, y; {
register XColor *p = &COLOR(x)->c, *q = &COLOR(y)->c;
return p->red == q->red && p->green == q->green && p->blue == q->blue;
***************
*** 10,20 ****
Generic_Print (Color, "#[color %lu]", POINTER(x))
! Object Make_Color (r, g, b) unsigned int r, g, b; {
! Object c;
c = Find_Object (T_Color, (GENERIC)0, Match_X_Obj, r, g, b);
! if (Nullp (c)) {
c = Alloc_Object (sizeof (struct S_Color), T_Color, 0);
! COLOR(c)->tag = Null;
COLOR(c)->c.red = r;
COLOR(c)->c.green = g;
--- 10,20 ----
Generic_Print (Color, "#[color %lu]", POINTER(x))
! s48_value Make_Color (r, g, b) unsigned int r, g, b; {
! s48_value c;
c = Find_Object (T_Color, (GENERIC)0, Match_X_Obj, r, g, b);
! if (S48_NULL_P (c)) {
c = Alloc_Object (sizeof (struct S_Color), T_Color, 0);
! COLOR(c)->tag = S48_NULL;
COLOR(c)->c.red = r;
COLOR(c)->c.green = g;
***************
*** 25,37 ****
}
! XColor *Get_Color (c) Object c; {
Check_Type (c, T_Color);
return &COLOR(c)->c;
}
! static unsigned short Get_RGB_Value (x) Object x; {
double d;
! d = Get_Double (x);
if (d < 0.0 || d > 1.0)
Primitive_Error ("bad RGB value: ~s", x);
--- 25,37 ----
}
! XColor *Get_Color (c) s48_value c; {
Check_Type (c, T_Color);
return &COLOR(c)->c;
}
! static unsigned short Get_RGB_Value (x) s48_value x; {
double d;
! d = s48_extract_double (x);
if (d < 0.0 || d > 1.0)
Primitive_Error ("bad RGB value: ~s", x);
***************
*** 39,65 ****
}
! static Object P_Make_Color (r, g, b) Object r, g, b; {
return Make_Color (Get_RGB_Value (r), Get_RGB_Value (g), Get_RGB_Value
(b));
}
! static Object P_Color_Rgb_Values (c) Object c; {
! Object ret, t, x;
! GC_Node3;
Check_Type (c, T_Color);
! ret = t = Null;
! GC_Link3 (c, ret, t);
! t = ret = P_Make_List (Make_Integer (3), Null);
! GC_Unlink;
x = Make_Reduced_Flonum ((double)COLOR(c)->c.red / 65535.0);
! Car (t) = x; t = Cdr (t);
x = Make_Reduced_Flonum ((double)COLOR(c)->c.green / 65535.0);
! Car (t) = x; t = Cdr (t);
x = Make_Reduced_Flonum ((double)COLOR(c)->c.blue / 65535.0);
! Car (t) = x;
return ret;
}
! static Object P_Query_Color (cmap, p) Object cmap, p; {
XColor c;
Colormap cm = Get_Colormap (cmap);
--- 39,65 ----
}
! static s48_value P_Make_Color (r, g, b) s48_value r, g, b; {
return Make_Color (Get_RGB_Value (r), Get_RGB_Value (g), Get_RGB_Value
(b));
}
! static s48_value P_Color_Rgb_Values (c) s48_value c; {
! s48_value ret, t, x;
! S48_DECLARE_GC_PROTECT(3);
Check_Type (c, T_Color);
! ret = t = S48_NULL;
! S48_GC_PROTECT_3 (c, ret, t);
! t = ret = P_Make_List (s48_enter_integer (3), S48_NULL);
! S48_GC_UNPROTECT;
x = Make_Reduced_Flonum ((double)COLOR(c)->c.red / 65535.0);
! S48_CAR (t) = x; t = S48_CDR (t);
x = Make_Reduced_Flonum ((double)COLOR(c)->c.green / 65535.0);
! S48_CAR (t) = x; t = S48_CDR (t);
x = Make_Reduced_Flonum ((double)COLOR(c)->c.blue / 65535.0);
! S48_CAR (t) = x;
return ret;
}
! static s48_value P_Query_Color (cmap, p) s48_value cmap, p; {
XColor c;
Colormap cm = Get_Colormap (cmap);
***************
*** 72,85 ****
}
! static Object P_Query_Colors (cmap, v) Object cmap, v; {
Colormap cm = Get_Colormap (cmap);
register i, n;
! Object ret;
register XColor *p;
! GC_Node;
Alloca_Begin;
Check_Type (v, T_Vector);
! n = VECTOR(v)->size;
Alloca (p, XColor*, n * sizeof (XColor));
for (i = 0; i < n; i++)
--- 72,85 ----
}
! static s48_value P_Query_Colors (cmap, v) s48_value cmap, v; {
Colormap cm = Get_Colormap (cmap);
register i, n;
! s48_value ret;
register XColor *p;
! S48_DECLARE_GC_PROTECT(1);
Alloca_Begin;
Check_Type (v, T_Vector);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XColor*, n * sizeof (XColor));
for (i = 0; i < n; i++)
***************
*** 88,120 ****
XQueryColors (COLORMAP(cmap)->dpy, cm, p, n);
Enable_Interrupts;
! ret = Make_Vector (n, Null);
! GC_Link (ret);
for (i = 0; i < n; i++, p++) {
! Object x;
x = Make_Color (p->red, p->green, p->blue);
! VECTOR(ret)->data[i] = x;
}
! GC_Unlink;
Alloca_End;
return ret;
}
! static Object P_Lookup_Color (cmap, name) Object cmap, name; {
XColor visual, exact;
Colormap cm = Get_Colormap (cmap);
! Object ret, x;
! GC_Node;
if (!XLookupColor (COLORMAP(cmap)->dpy, cm, Get_Strsym (name),
&visual, &exact))
Primitive_Error ("no such color: ~s", name);
! ret = Cons (Null, Null);
! GC_Link (ret);
x = Make_Color (visual.red, visual.green, visual.blue);
! Car (ret) = x;
x = Make_Color (exact.red, exact.green, exact.blue);
! Cdr (ret) = x;
! GC_Unlink;
return ret;
}
--- 88,120 ----
XQueryColors (COLORMAP(cmap)->dpy, cm, p, n);
Enable_Interrupts;
! ret = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (ret);
for (i = 0; i < n; i++, p++) {
! s48_value x;
x = Make_Color (p->red, p->green, p->blue);
! S48_VECTOR_SET(ret, i, x;)
}
! S48_GC_UNPROTECT;
Alloca_End;
return ret;
}
! static s48_value P_Lookup_Color (cmap, name) s48_value cmap, name; {
XColor visual, exact;
Colormap cm = Get_Colormap (cmap);
! s48_value ret, x;
! S48_DECLARE_GC_PROTECT(1);
if (!XLookupColor (COLORMAP(cmap)->dpy, cm, Get_Strsym (name),
&visual, &exact))
Primitive_Error ("no such color: ~s", name);
! ret = s48_cons (S48_NULL, S48_NULL);
! S48_GC_PROTECT_1 (ret);
x = Make_Color (visual.red, visual.green, visual.blue);
! S48_CAR (ret) = x;
x = Make_Color (exact.red, exact.green, exact.blue);
! S48_CDR (ret) = x;
! S48_GC_UNPROTECT;
return ret;
}
Index: colormap.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/colormap.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** colormap.c 2001/05/08 14:21:00 1.1
--- colormap.c 2001/05/14 13:48:37 1.2
***************
*** 9,21 ****
Generic_Get_Display (Colormap, COLORMAP)
! Object Make_Colormap (finalize, dpy, cmap) Display *dpy; Colormap cmap; {
! Object cm;
if (cmap == None)
return Sym_None;
cm = Find_Object (T_Colormap, (GENERIC)dpy, Match_X_Obj, cmap);
! if (Nullp (cm)) {
cm = Alloc_Object (sizeof (struct S_Colormap), T_Colormap, 0);
! COLORMAP(cm)->tag = Null;
COLORMAP(cm)->cm = cmap;
COLORMAP(cm)->dpy = dpy;
--- 9,21 ----
Generic_Get_Display (Colormap, COLORMAP)
! s48_value Make_Colormap (finalize, dpy, cmap) Display *dpy; Colormap cmap; {
! s48_value cm;
if (cmap == None)
return Sym_None;
cm = Find_Object (T_Colormap, (GENERIC)dpy, Match_X_Obj, cmap);
! if (S48_NULL_P (cm)) {
cm = Alloc_Object (sizeof (struct S_Colormap), T_Colormap, 0);
! COLORMAP(cm)->tag = S48_NULL;
COLORMAP(cm)->cm = cmap;
COLORMAP(cm)->dpy = dpy;
***************
*** 27,36 ****
}
! Colormap Get_Colormap (c) Object c; {
Check_Type (c, T_Colormap);
return COLORMAP(c)->cm;
}
! Object P_Free_Colormap (c) Object c; {
Check_Type (c, T_Colormap);
if (!COLORMAP(c)->free)
--- 27,36 ----
}
! Colormap Get_Colormap (c) s48_value c; {
Check_Type (c, T_Colormap);
return COLORMAP(c)->cm;
}
! s48_value P_Free_Colormap (c) s48_value c; {
Check_Type (c, T_Colormap);
if (!COLORMAP(c)->free)
***************
*** 41,45 ****
}
! static Object P_Alloc_Color (cmap, color) Object cmap, color; {
XColor c;
Colormap cm = Get_Colormap (cmap);
--- 41,45 ----
}
! static s48_value P_Alloc_Color (cmap, color) s48_value cmap, color; {
XColor c;
Colormap cm = Get_Colormap (cmap);
***************
*** 51,64 ****
Enable_Interrupts;
if (!r)
! return False;
return Make_Pixel (c.pixel);
}
! static Object P_Alloc_Named_Color (cmap, name) Object cmap, name; {
Colormap cm = Get_Colormap (cmap);
XColor screen, exact;
int r;
! Object ret, t, x;
! GC_Node2;
Disable_Interrupts;
--- 51,64 ----
Enable_Interrupts;
if (!r)
! return S48_FALSE;
return Make_Pixel (c.pixel);
}
! static s48_value P_Alloc_Named_Color (cmap, name) s48_value cmap, name; {
Colormap cm = Get_Colormap (cmap);
XColor screen, exact;
int r;
! s48_value ret, t, x;
! S48_DECLARE_GC_PROTECT(2);
Disable_Interrupts;
***************
*** 67,80 ****
Enable_Interrupts;
if (!r)
! return False;
! t = ret = P_Make_List (Make_Integer (3), Null);
! GC_Link2 (t, ret);
x = Make_Pixel (screen.pixel);
! Car (t) = x; t = Cdr (t);
x = Make_Color (screen.red, screen.green, screen.blue);
! Car (t) = x; t = Cdr (t);
x = Make_Color (exact.red, exact.green, exact.blue);
! Car (t) = x;
! GC_Unlink;
return ret;
}
--- 67,80 ----
Enable_Interrupts;
if (!r)
! return S48_FALSE;
! t = ret = P_Make_List (s48_enter_integer (3), S48_NULL);
! S48_GC_PROTECT_2 (t, ret);
x = Make_Pixel (screen.pixel);
! S48_CAR (t) = x; t = S48_CDR (t);
x = Make_Color (screen.red, screen.green, screen.blue);
! S48_CAR (t) = x; t = S48_CDR (t);
x = Make_Color (exact.red, exact.green, exact.blue);
! S48_CAR (t) = x;
! S48_GC_UNPROTECT;
return ret;
}
Index: cursor.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/cursor.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** cursor.c 2001/05/08 14:21:00 1.1
--- cursor.c 2001/05/14 13:48:37 1.2
***************
*** 9,22 ****
Generic_Get_Display (Cursor, CURSOR)
! static Object Internal_Make_Cursor (finalize, dpy, cursor)
Display *dpy; Cursor cursor; {
! Object c;
if (cursor == None)
return Sym_None;
c = Find_Object (T_Cursor, (GENERIC)dpy, Match_X_Obj, cursor);
! if (Nullp (c)) {
c = Alloc_Object (sizeof (struct S_Cursor), T_Cursor, 0);
! CURSOR(c)->tag = Null;
CURSOR(c)->cursor = cursor;
CURSOR(c)->dpy = dpy;
--- 9,22 ----
Generic_Get_Display (Cursor, CURSOR)
! static s48_value Internal_Make_Cursor (finalize, dpy, cursor)
Display *dpy; Cursor cursor; {
! s48_value c;
if (cursor == None)
return Sym_None;
c = Find_Object (T_Cursor, (GENERIC)dpy, Match_X_Obj, cursor);
! if (S48_NULL_P (c)) {
c = Alloc_Object (sizeof (struct S_Cursor), T_Cursor, 0);
! CURSOR(c)->tag = S48_NULL;
CURSOR(c)->cursor = cursor;
CURSOR(c)->dpy = dpy;
***************
*** 29,42 ****
/* Backwards compatibility: */
! Object Make_Cursor (dpy, cursor) Display *dpy; Cursor cursor; {
return Internal_Make_Cursor (1, dpy, cursor);
}
! Object Make_Cursor_Foreign (dpy, cursor) Display *dpy; Cursor cursor; {
return Internal_Make_Cursor (0, dpy, cursor);
}
! Cursor Get_Cursor (c) Object c; {
! if (EQ(c, Sym_None))
return None;
Check_Type (c, T_Cursor);
--- 29,42 ----
/* Backwards compatibility: */
! s48_value Make_Cursor (dpy, cursor) Display *dpy; Cursor cursor; {
return Internal_Make_Cursor (1, dpy, cursor);
}
! s48_value Make_Cursor_Foreign (dpy, cursor) Display *dpy; Cursor cursor; {
return Internal_Make_Cursor (0, dpy, cursor);
}
! Cursor Get_Cursor (c) s48_value c; {
! if (S48_EQ_P(c, Sym_None))
return None;
Check_Type (c, T_Cursor);
***************
*** 44,48 ****
}
! Object P_Free_Cursor (c) Object c; {
Check_Type (c, T_Cursor);
if (!CURSOR(c)->free)
--- 44,48 ----
}
! s48_value P_Free_Cursor (c) s48_value c; {
Check_Type (c, T_Cursor);
if (!CURSOR(c)->free)
***************
*** 53,78 ****
}
! static Object P_Create_Cursor (srcp, maskp, x, y, f, b)
! Object srcp, maskp, x, y, f, b; {
Pixmap sp = Get_Pixmap (srcp), mp;
Display *d = PIXMAP(srcp)->dpy;
! mp = EQ(maskp, Sym_None) ? None : Get_Pixmap (maskp);
return Make_Cursor (d, XCreatePixmapCursor (d, sp, mp,
! Get_Color (f), Get_Color (b), Get_Integer (x), Get_Integer (y)));
}
! static Object P_Create_Glyph_Cursor (srcf, srcc, maskf, maskc, f, b)
! Object srcf, srcc, maskf, maskc, f, b; {
Font sf = Get_Font (srcf), mf;
Display *d = FONT(srcf)->dpy;
! mf = EQ(maskf, Sym_None) ? None : Get_Font (maskf);
return Make_Cursor (d, XCreateGlyphCursor (d, sf, mf,
! Get_Integer (srcc), mf == None ? 0 : Get_Integer (maskc),
Get_Color (f), Get_Color (b)));
}
! static Object P_Recolor_Cursor (c, f, b) Object c, f, b; {
Check_Type (c, T_Cursor);
XRecolorCursor (CURSOR(c)->dpy, CURSOR(c)->cursor, Get_Color (f),
--- 53,78 ----
}
! static s48_value P_Create_Cursor (srcp, maskp, x, y, f, b)
! s48_value srcp, maskp, x, y, f, b; {
Pixmap sp = Get_Pixmap (srcp), mp;
Display *d = PIXMAP(srcp)->dpy;
! mp = S48_EQ_P(maskp, Sym_None) ? None : Get_Pixmap (maskp);
return Make_Cursor (d, XCreatePixmapCursor (d, sp, mp,
! Get_Color (f), Get_Color (b), (int)s48_extract_integer (x),
(int)s48_extract_integer (y)));
}
! static s48_value P_Create_Glyph_Cursor (srcf, srcc, maskf, maskc, f, b)
! s48_value srcf, srcc, maskf, maskc, f, b; {
Font sf = Get_Font (srcf), mf;
Display *d = FONT(srcf)->dpy;
! mf = S48_EQ_P(maskf, Sym_None) ? None : Get_Font (maskf);
return Make_Cursor (d, XCreateGlyphCursor (d, sf, mf,
! (int)s48_extract_integer (srcc), mf == None ? 0 :
(int)s48_extract_integer (maskc),
Get_Color (f), Get_Color (b)));
}
! static s48_value P_Recolor_Cursor (c, f, b) s48_value c, f, b; {
Check_Type (c, T_Cursor);
XRecolorCursor (CURSOR(c)->dpy, CURSOR(c)->cursor, Get_Color (f),
Index: display.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/display.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** display.c 2001/05/08 14:21:00 1.1
--- display.c 2001/05/14 13:48:37 1.2
***************
*** 1,5 ****
#include "xlib.h"
! static Display_Visit (dp, f) Object *dp; int (*f)(); {
(*f)(&DISPLAY(*dp)->after);
}
--- 1,5 ----
#include "xlib.h"
! static Display_Visit (dp, f) s48_value *dp; int (*f)(); {
(*f)(&DISPLAY(*dp)->after);
}
***************
*** 9,26 ****
Generic_Equal (Display, DISPLAY, dpy)
! static Display_Print (d, port, raw, depth, length) Object d, port; {
Printf (port, "#[display %lu %s]", (unsigned)DISPLAY(d)->dpy,
DisplayString (DISPLAY(d)->dpy));
}
! Object Make_Display (finalize, dpy) Display *dpy; {
! Object d;
d = Find_Object (T_Display, (GENERIC)dpy, Match_X_Obj);
! if (Nullp (d)) {
d = Alloc_Object (sizeof (struct S_Display), T_Display, 0);
DISPLAY(d)->dpy = dpy;
DISPLAY(d)->free = 0;
! DISPLAY(d)->after = False;
Register_Object (d, (GENERIC)dpy, finalize ? P_Close_Display :
(PFO)0, 1);
--- 9,26 ----
Generic_Equal (Display, DISPLAY, dpy)
! static Display_Print (d, port, raw, depth, length) s48_value d, port; {
Printf (port, "#[display %lu %s]", (unsigned)DISPLAY(d)->dpy,
DisplayString (DISPLAY(d)->dpy));
}
! s48_value Make_Display (finalize, dpy) Display *dpy; {
! s48_value d;
d = Find_Object (T_Display, (GENERIC)dpy, Match_X_Obj);
! if (S48_NULL_P (d)) {
d = Alloc_Object (sizeof (struct S_Display), T_Display, 0);
DISPLAY(d)->dpy = dpy;
DISPLAY(d)->free = 0;
! DISPLAY(d)->after = S48_FALSE;
Register_Object (d, (GENERIC)dpy, finalize ? P_Close_Display :
(PFO)0, 1);
***************
*** 29,33 ****
}
! static Object P_Open_Display (argc, argv) Object *argv; {
register char *s;
Display *dpy;
--- 29,33 ----
}
! static s48_value P_Open_Display (argc, argv) s48_value *argv; {
register char *s;
Display *dpy;
***************
*** 44,48 ****
}
! Object P_Close_Display (d) Object d; {
register struct S_Display *p;
--- 44,48 ----
}
! s48_value P_Close_Display (d) s48_value d; {
register struct S_Display *p;
***************
*** 58,62 ****
}
! static Object P_Display_Default_Root_Window (d) Object d; {
Check_Type (d, T_Display);
return Make_Window (0, DISPLAY(d)->dpy,
--- 58,62 ----
}
! static s48_value P_Display_Default_Root_Window (d) s48_value d; {
Check_Type (d, T_Display);
return Make_Window (0, DISPLAY(d)->dpy,
***************
*** 64,68 ****
}
! static Object P_Display_Default_Colormap (d) Object d; {
register Display *dpy;
--- 64,68 ----
}
! static s48_value P_Display_Default_Colormap (d) s48_value d; {
register Display *dpy;
***************
*** 72,76 ****
}
! static Object P_Display_Default_Gcontext (d) Object d; {
register Display *dpy;
--- 72,76 ----
}
! static s48_value P_Display_Default_Gcontext (d) s48_value d; {
register Display *dpy;
***************
*** 80,117 ****
}
! static Object P_Display_Default_Depth (d) Object d; {
register Display *dpy;
Check_Type (d, T_Display);
dpy = DISPLAY(d)->dpy;
! return Make_Integer (DefaultDepth (dpy, DefaultScreen (dpy)));
}
! static Object P_Display_Default_Screen_Number (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DefaultScreen (DISPLAY(d)->dpy));
}
! int Get_Screen_Number (dpy, scr) Display *dpy; Object scr; {
register s;
! if ((s = Get_Integer (scr)) < 0 || s > ScreenCount (dpy)-1)
Primitive_Error ("invalid screen number");
return s;
}
! static Object P_Display_Cells (d, scr) Object d, scr; {
Check_Type (d, T_Display);
! return Make_Integer (DisplayCells (DISPLAY(d)->dpy,
Get_Screen_Number (DISPLAY(d)->dpy, scr)));
}
! static Object P_Display_Planes (d, scr) Object d, scr; {
Check_Type (d, T_Display);
! return Make_Integer (DisplayPlanes (DISPLAY(d)->dpy,
Get_Screen_Number (DISPLAY(d)->dpy, scr)));
}
! static Object P_Display_String (d) Object d; {
register char *s;
--- 80,117 ----
}
! static s48_value P_Display_Default_Depth (d) s48_value d; {
register Display *dpy;
Check_Type (d, T_Display);
dpy = DISPLAY(d)->dpy;
! return s48_enter_integer (DefaultDepth (dpy, DefaultScreen (dpy)));
}
! static s48_value P_Display_Default_Screen_Number (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DefaultScreen (DISPLAY(d)->dpy));
}
! int Get_Screen_Number (dpy, scr) Display *dpy; s48_value scr; {
register s;
! if ((s = (int)s48_extract_integer (scr)) < 0 || s > ScreenCount (dpy)-1)
Primitive_Error ("invalid screen number");
return s;
}
! static s48_value P_Display_Cells (d, scr) s48_value d, scr; {
Check_Type (d, T_Display);
! return s48_enter_integer (DisplayCells (DISPLAY(d)->dpy,
Get_Screen_Number (DISPLAY(d)->dpy, scr)));
}
! static s48_value P_Display_Planes (d, scr) s48_value d, scr; {
Check_Type (d, T_Display);
! return s48_enter_integer (DisplayPlanes (DISPLAY(d)->dpy,
Get_Screen_Number (DISPLAY(d)->dpy, scr)));
}
! static s48_value P_Display_String (d) s48_value d; {
register char *s;
***************
*** 121,151 ****
}
! static Object P_Display_Vendor (d) Object d; {
register char *s;
! Object ret, name;
! GC_Node;
Check_Type (d, T_Display);
s = ServerVendor (DISPLAY(d)->dpy);
name = Make_String (s, strlen (s));
! GC_Link (name);
! ret = Cons (Null, Make_Integer (VendorRelease (DISPLAY(d)->dpy)));
! Car (ret) = name;
! GC_Unlink;
return ret;
}
! static Object P_Display_Protocol_Version (d) Object d; {
Check_Type (d, T_Display);
! return Cons (Make_Integer (ProtocolVersion (DISPLAY(d)->dpy)),
! Make_Integer (ProtocolRevision (DISPLAY(d)->dpy)));
}
! static Object P_Display_Screen_Count (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (ScreenCount (DISPLAY(d)->dpy));
}
! static Object P_Display_Image_Byte_Order (d) Object d; {
Check_Type (d, T_Display);
return Bits_To_Symbols ((unsigned long)ImageByteOrder (DISPLAY(d)->dpy),
--- 121,151 ----
}
! static s48_value P_Display_Vendor (d) s48_value d; {
register char *s;
! s48_value ret, name;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (d, T_Display);
s = ServerVendor (DISPLAY(d)->dpy);
name = Make_String (s, strlen (s));
! S48_GC_PROTECT_1 (name);
! ret = s48_cons (S48_NULL, s48_enter_integer (VendorRelease
(DISPLAY(d)->dpy)));
! S48_CAR (ret) = name;
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_Display_Protocol_Version (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_cons (s48_enter_integer (ProtocolVersion (DISPLAY(d)->dpy)),
! s48_enter_integer (ProtocolRevision (DISPLAY(d)->dpy)));
}
! static s48_value P_Display_Screen_Count (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (ScreenCount (DISPLAY(d)->dpy));
}
! static s48_value P_Display_Image_Byte_Order (d) s48_value d; {
Check_Type (d, T_Display);
return Bits_To_Symbols ((unsigned long)ImageByteOrder (DISPLAY(d)->dpy),
***************
*** 153,162 ****
}
! static Object P_Display_Bitmap_Unit (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (BitmapUnit (DISPLAY(d)->dpy));
}
! static Object P_Display_Bitmap_Bit_Order (d) Object d; {
Check_Type (d, T_Display);
return Bits_To_Symbols ((unsigned long)BitmapBitOrder (DISPLAY(d)->dpy),
--- 153,162 ----
}
! static s48_value P_Display_Bitmap_Unit (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (BitmapUnit (DISPLAY(d)->dpy));
}
! static s48_value P_Display_Bitmap_Bit_Order (d) s48_value d; {
Check_Type (d, T_Display);
return Bits_To_Symbols ((unsigned long)BitmapBitOrder (DISPLAY(d)->dpy),
***************
*** 164,202 ****
}
! static Object P_Display_Bitmap_Pad (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (BitmapPad (DISPLAY(d)->dpy));
}
! static Object P_Display_Width (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DisplayWidth (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static Object P_Display_Height (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DisplayHeight (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static Object P_Display_Width_Mm (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DisplayWidthMM (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static Object P_Display_Height_Mm (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DisplayHeightMM (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static Object P_Display_Motion_Buffer_Size (d) Object d; {
Check_Type (d, T_Display);
! return Make_Unsigned_Long (XDisplayMotionBufferSize (DISPLAY(d)->dpy));
}
! static Object P_Display_Flush_Output (d) Object d; {
Check_Type (d, T_Display);
XFlush (DISPLAY(d)->dpy);
--- 164,202 ----
}
! static s48_value P_Display_Bitmap_Pad (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (BitmapPad (DISPLAY(d)->dpy));
}
! static s48_value P_Display_Width (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DisplayWidth (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static s48_value P_Display_Height (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DisplayHeight (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static s48_value P_Display_Width_Mm (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DisplayWidthMM (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static s48_value P_Display_Height_Mm (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DisplayHeightMM (DISPLAY(d)->dpy,
DefaultScreen (DISPLAY(d)->dpy)));
}
! static s48_value P_Display_Motion_Buffer_Size (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (XDisplayMotionBufferSize (DISPLAY(d)->dpy));
}
! static s48_value P_Display_Flush_Output (d) s48_value d; {
Check_Type (d, T_Display);
XFlush (DISPLAY(d)->dpy);
***************
*** 204,215 ****
}
! static Object P_Display_Wait_Output (d, discard) Object d, discard; {
Check_Type (d, T_Display);
Check_Type (discard, T_Boolean);
! XSync (DISPLAY(d)->dpy, EQ(discard, True));
return Void;
}
! static Object P_No_Op (d) Object d; {
Check_Type (d, T_Display);
XNoOp (DISPLAY(d)->dpy);
--- 204,215 ----
}
! static s48_value P_Display_Wait_Output (d, discard) s48_value d, discard; {
Check_Type (d, T_Display);
Check_Type (discard, T_Boolean);
! XSync (DISPLAY(d)->dpy, S48_EQ_P(discard, S48_TRUE));
return Void;
}
! static s48_value P_No_Op (d) s48_value d; {
Check_Type (d, T_Display);
XNoOp (DISPLAY(d)->dpy);
***************
*** 217,258 ****
}
! static Object P_List_Depths (d, scr) Object d, scr; {
int num;
register *p, i;
! Object ret;
Check_Type (d, T_Display);
if (!(p = XListDepths (DISPLAY(d)->dpy,
Get_Screen_Number (DISPLAY(d)->dpy, scr), &num)))
! return False;
! ret = Make_Vector (num, Null);
for (i = 0; i < num; i++)
! VECTOR(ret)->data[i] = Make_Integer (p[i]);
XFree ((char *)p);
return ret;
}
! static Object P_List_Pixmap_Formats (d) Object d; {
register XPixmapFormatValues *p;
int num;
register i;
! Object ret;
! GC_Node;
Check_Type (d, T_Display);
if (!(p = XListPixmapFormats (DISPLAY(d)->dpy, &num)))
! return False;
! ret = Make_Vector (num, Null);
! GC_Link (ret);
for (i = 0; i < num; i++) {
! Object t;
! t = P_Make_List (Make_Integer (3), Null);
! VECTOR(ret)->data[i] = t;
! Car (t) = Make_Integer (p[i].depth); t = Cdr (t);
! Car (t) = Make_Integer (p[i].bits_per_pixel); t = Cdr (t);
! Car (t) = Make_Integer (p[i].scanline_pad);
}
! GC_Unlink;
XFree ((char *)p);
return ret;
--- 217,258 ----
}
! static s48_value P_List_Depths (d, scr) s48_value d, scr; {
int num;
register *p, i;
! s48_value ret;
Check_Type (d, T_Display);
if (!(p = XListDepths (DISPLAY(d)->dpy,
Get_Screen_Number (DISPLAY(d)->dpy, scr), &num)))
! return S48_FALSE;
! ret = s48_make_vector (num, S48_NULL);
for (i = 0; i < num; i++)
! S48_VECTOR_SET(ret, i, s48_enter_integer (p[i]);)
XFree ((char *)p);
return ret;
}
! static s48_value P_List_Pixmap_Formats (d) s48_value d; {
register XPixmapFormatValues *p;
int num;
register i;
! s48_value ret;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (d, T_Display);
if (!(p = XListPixmapFormats (DISPLAY(d)->dpy, &num)))
! return S48_FALSE;
! ret = s48_make_vector (num, S48_NULL);
! S48_GC_PROTECT_1 (ret);
for (i = 0; i < num; i++) {
! s48_value t;
! t = P_Make_List (s48_enter_integer (3), S48_NULL);
! S48_VECTOR_SET(ret, i, t;)
! S48_CAR (t) = s48_enter_integer (p[i].depth); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (p[i].bits_per_pixel); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (p[i].scanline_pad);
}
! S48_GC_UNPROTECT;
XFree ((char *)p);
return ret;
Index: error.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/error.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** error.c 2001/05/08 14:21:00 1.1
--- error.c 2001/05/14 13:48:37 1.2
***************
*** 1,5 ****
#include "xlib.h"
! static Object V_X_Error_Handler, V_X_Fatal_Error_Handler;
/* Default error handlers of the Xlib */
--- 1,5 ----
#include "xlib.h"
! static s48_value V_X_Error_Handler, V_X_Fatal_Error_Handler;
/* Default error handlers of the Xlib */
***************
*** 8,19 ****
static X_Fatal_Error (d) Display *d; {
! Object args, fun;
! GC_Node;
Reset_IO (0);
args = Make_Display (0, d);
! GC_Link (args);
! args = Cons (args, Null);
! GC_Unlink;
fun = Var_Get (V_X_Fatal_Error_Handler);
if (TYPE(fun) == T_Compound)
--- 8,19 ----
static X_Fatal_Error (d) Display *d; {
! s48_value args, fun;
! S48_DECLARE_GC_PROTECT(1);
Reset_IO (0);
args = Make_Display (0, d);
! S48_GC_PROTECT_1 (args);
! args = s48_cons (args, S48_NULL);
! S48_GC_UNPROTECT;
fun = Var_Get (V_X_Fatal_Error_Handler);
if (TYPE(fun) == T_Compound)
***************
*** 25,48 ****
static X_Error (d, ep) Display *d; XErrorEvent *ep; {
! Object args, a, fun;
! GC_Node;
Reset_IO (0);
! args = Make_Unsigned_Long ((unsigned long)ep->resourceid);
! GC_Link (args);
! args = Cons (args, Null);
! a = Make_Unsigned (ep->minor_code);
! args = Cons (a, args);
! a = Make_Unsigned (ep->request_code);
! args = Cons (a, args);
a = Bits_To_Symbols ((unsigned long)ep->error_code, 0, Error_Syms);
! if (Nullp (a))
! a = Make_Unsigned (ep->error_code);
! args = Cons (a, args);
! a = Make_Unsigned_Long (ep->serial);
! args = Cons (a, args);
a = Make_Display (0, ep->display);
! args = Cons (a, args);
! GC_Unlink;
fun = Var_Get (V_X_Error_Handler);
if (TYPE(fun) == T_Compound)
--- 25,48 ----
static X_Error (d, ep) Display *d; XErrorEvent *ep; {
! s48_value args, a, fun;
! S48_DECLARE_GC_PROTECT(1);
Reset_IO (0);
! args = s48_enter_integer ((unsigned long)ep->resourceid);
! S48_GC_PROTECT_1 (args);
! args = s48_cons (args, S48_NULL);
! a = s48_enter_integer (ep->minor_code);
! args = s48_cons (a, args);
! a = s48_enter_integer (ep->request_code);
! args = s48_cons (a, args);
a = Bits_To_Symbols ((unsigned long)ep->error_code, 0, Error_Syms);
! if (S48_NULL_P (a))
! a = s48_enter_integer (ep->error_code);
! args = s48_cons (a, args);
! a = s48_enter_integer (ep->serial);
! args = s48_cons (a, args);
a = Make_Display (0, ep->display);
! args = s48_cons (a, args);
! S48_GC_UNPROTECT;
fun = Var_Get (V_X_Error_Handler);
if (TYPE(fun) == T_Compound)
***************
*** 53,71 ****
static X_After_Function (d) Display *d; {
! Object args;
! GC_Node;
args = Make_Display (0, d);
! GC_Link (args);
! args = Cons (args, Null);
! GC_Unlink;
! (void)Funcall (DISPLAY(Car (args))->after, args, 0);
}
! static Object P_Set_After_Function (d, f) Object d, f; {
! Object old;
Check_Type (d, T_Display);
! if (EQ(f, False)) {
(void)XSetAfterFunction (DISPLAY(d)->dpy, (int (*)())0);
} else {
--- 53,71 ----
static X_After_Function (d) Display *d; {
! s48_value args;
! S48_DECLARE_GC_PROTECT(1);
args = Make_Display (0, d);
! S48_GC_PROTECT_1 (args);
! args = s48_cons (args, S48_NULL);
! S48_GC_UNPROTECT;
! (void)Funcall (DISPLAY(S48_CAR (args))->after, args, 0);
}
! static s48_value P_Set_After_Function (d, f) s48_value d, f; {
! s48_value old;
Check_Type (d, T_Display);
! if (S48_EQ_P(f, S48_FALSE)) {
(void)XSetAfterFunction (DISPLAY(d)->dpy, (int (*)())0);
} else {
***************
*** 78,82 ****
}
! static Object P_After_Function (d) Object d; {
Check_Type (d, T_Display);
return DISPLAY(d)->after;
--- 78,82 ----
}
! static s48_value P_After_Function (d) s48_value d; {
Check_Type (d, T_Display);
return DISPLAY(d)->after;
***************
*** 84,89 ****
elk_init_xlib_error () {
! Define_Variable (&V_X_Fatal_Error_Handler, "x-fatal-error-handler", Null);
! Define_Variable (&V_X_Error_Handler, "x-error-handler", Null);
(void)XSetIOErrorHandler (X_Fatal_Error);
(void)XSetErrorHandler (X_Error);
--- 84,89 ----
elk_init_xlib_error () {
! Define_Variable (&V_X_Fatal_Error_Handler, "x-fatal-error-handler",
S48_NULL);
! Define_Variable (&V_X_Error_Handler, "x-error-handler", S48_NULL);
(void)XSetIOErrorHandler (X_Fatal_Error);
(void)XSetErrorHandler (X_Error);
Index: event.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/event.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** event.c 2001/05/08 14:21:00 1.1
--- event.c 2001/05/14 13:48:37 1.2
***************
*** 3,7 ****
#define MAX_ARGS 14
! static Object Argl, Argv;
static struct event_desc {
--- 3,7 ----
#define MAX_ARGS 14
! static s48_value Argl, Argv;
static struct event_desc {
***************
*** 48,53 ****
struct predicate_arg {
! Object *funcs;
! Object *ret;
};
--- 48,53 ----
struct predicate_arg {
! s48_value *funcs;
! s48_value *ret;
};
***************
*** 61,75 ****
struct predicate_arg *ap = (struct predicate_arg *)ptr;
register i;
! Object args;
! GC_Node;
! if ((i = ep->type) < LASTEvent && !Nullp (ap->funcs[i])) {
args = Get_Event_Args (ep);
! GC_Link (args);
*ap->ret = Funcall (ap->funcs[i], args, 0);
Destroy_Event_Args (args);
! GC_Unlink;
}
! return Truep (*ap->ret);
}
--- 61,75 ----
struct predicate_arg *ap = (struct predicate_arg *)ptr;
register i;
! s48_value args;
! S48_DECLARE_GC_PROTECT(1);
! if ((i = ep->type) < LASTEvent && !S48_NULL_P (ap->funcs[i])) {
args = Get_Event_Args (ep);
! S48_GC_PROTECT_1 (args);
*ap->ret = Funcall (ap->funcs[i], args, 0);
Destroy_Event_Args (args);
! S48_GC_UNPROTECT;
}
! return S48_TRUE_P (*ap->ret);
}
***************
*** 81,125 ****
*/
! static Object P_Handle_Events (argl) Object argl; {
! Object next, clause, func, ret, funcs[LASTEvent], args;
register i, discard, peek;
Display *dpy;
char *errmsg = "event occurs more than once";
! GC_Node3; struct gcnode gcv;
TC_Prolog;
TC_Disable;
! clause = args = Null;
! GC_Link3 (argl, clause, args);
! next = Eval (Car (argl));
Check_Type (next, T_Display);
dpy = DISPLAY(next)->dpy;
! argl = Cdr (argl);
! next = Eval (Car (argl));
Check_Type (next, T_Boolean);
! discard = Truep (next);
! argl = Cdr (argl);
! next = Eval (Car (argl));
Check_Type (next, T_Boolean);
! peek = Truep (next);
for (i = 0; i < LASTEvent; i++)
! funcs[i] = Null;
gcv.gclen = 1+LASTEvent; gcv.gcobj = funcs; gcv.next = &gc3; GC_List =
&gcv;
! for (argl = Cdr (argl); !Nullp (argl); argl = Cdr (argl)) {
! clause = Car (argl);
Check_List (clause);
if (Fast_Length (clause) != 2)
Primitive_Error ("badly formed event clause");
! func = Eval (Car (Cdr (clause)));
Check_Procedure (func);
! clause = Car (clause);
! if (EQ(clause, Sym_Else)) {
for (i = 0; i < LASTEvent; i++)
! if (Nullp (funcs[i])) funcs[i] = func;
} else {
! if (TYPE(clause) == T_Pair) {
! for (; !Nullp (clause); clause = Cdr (clause)) {
! i = Encode_Event (Car (clause));
! if (!Nullp (funcs[i]))
Primitive_Error (errmsg);
funcs[i] = func;
--- 81,125 ----
*/
! static s48_value P_Handle_Events (argl) s48_value argl; {
! s48_value next, clause, func, ret, funcs[LASTEvent], args;
register i, discard, peek;
Display *dpy;
char *errmsg = "event occurs more than once";
! S48_DECLARE_GC_PROTECT(3); struct gcnode gcv;
TC_Prolog;
TC_Disable;
! clause = args = S48_NULL;
! S48_GC_PROTECT_3 (argl, clause, args);
! next = Eval (S48_CAR (argl));
Check_Type (next, T_Display);
dpy = DISPLAY(next)->dpy;
! argl = S48_CDR (argl);
! next = Eval (S48_CAR (argl));
Check_Type (next, T_Boolean);
! discard = S48_TRUE_P (next);
! argl = S48_CDR (argl);
! next = Eval (S48_CAR (argl));
Check_Type (next, T_Boolean);
! peek = S48_TRUE_P (next);
for (i = 0; i < LASTEvent; i++)
! funcs[i] = S48_NULL;
gcv.gclen = 1+LASTEvent; gcv.gcobj = funcs; gcv.next = &gc3; GC_List =
&gcv;
! for (argl = S48_CDR (argl); !S48_NULL_P (argl); argl = S48_CDR (argl)) {
! clause = S48_CAR (argl);
Check_List (clause);
if (Fast_Length (clause) != 2)
Primitive_Error ("badly formed event clause");
! func = Eval (S48_CAR (S48_CDR (clause)));
Check_Procedure (func);
! clause = S48_CAR (clause);
! if (S48_EQ_P(clause, Sym_Else)) {
for (i = 0; i < LASTEvent; i++)
! if (S48_NULL_P (funcs[i])) funcs[i] = func;
} else {
! if (S48_PAIR_P(clause)) {
! for (; !S48_NULL_P (clause); clause = S48_CDR (clause)) {
! i = Encode_Event (S48_CAR (clause));
! if (!S48_NULL_P (funcs[i]))
Primitive_Error (errmsg);
funcs[i] = func;
***************
*** 127,131 ****
} else {
i = Encode_Event (clause);
! if (!Nullp (funcs[i]))
Primitive_Error (errmsg);
funcs[i] = func;
--- 127,131 ----
} else {
i = Encode_Event (clause);
! if (!S48_NULL_P (funcs[i]))
Primitive_Error (errmsg);
funcs[i] = func;
***************
*** 133,142 ****
}
}
! ret = False;
! while (!Truep (ret)) {
XEvent e;
if (discard) {
(peek ? XPeekEvent : XNextEvent) (dpy, &e);
! if ((i = e.type) < LASTEvent && !Nullp (funcs[i])) {
args = Get_Event_Args (&e);
ret = Funcall (funcs[i], args, 0);
--- 133,142 ----
}
}
! ret = S48_FALSE;
! while (!S48_TRUE_P (ret)) {
XEvent e;
if (discard) {
(peek ? XPeekEvent : XNextEvent) (dpy, &e);
! if ((i = e.type) < LASTEvent && !S48_NULL_P (funcs[i])) {
args = Get_Event_Args (&e);
ret = Funcall (funcs[i], args, 0);
***************
*** 158,184 ****
}
}
! GC_Unlink;
TC_Enable;
return ret;
}
! static Object Get_Time_Arg (t) Time t; {
! return t == CurrentTime ? Sym_Now : Make_Unsigned_Long ((unsigned long)t);
}
! Object Get_Event_Args (ep) XEvent *ep; {
! Object tmpargs[MAX_ARGS];
register e, i;
! register Object *a, *vp;
struct gcnode gcv;
! Object dummy;
! GC_Node;
e = ep->type;
! dummy = Null;
a = tmpargs;
for (i = 0; i < MAX_ARGS; i++)
! a[i] = Null;
! GC_Link (dummy);
gcv.gclen = 1 + MAX_ARGS; gcv.gcobj = a; gcv.next = &gc1; GC_List = &gcv;
switch (e) {
--- 158,184 ----
}
}
! S48_GC_UNPROTECT;
TC_Enable;
return ret;
}
! static s48_value Get_Time_Arg (t) Time t; {
! return t == CurrentTime ? Sym_Now : s48_enter_integer ((unsigned long)t);
}
! s48_value Get_Event_Args (ep) XEvent *ep; {
! s48_value tmpargs[MAX_ARGS];
register e, i;
! register s48_value *a, *vp;
struct gcnode gcv;
! s48_value dummy;
! S48_DECLARE_GC_PROTECT(1);
e = ep->type;
! dummy = S48_NULL;
a = tmpargs;
for (i = 0; i < MAX_ARGS; i++)
! a[i] = S48_NULL;
! S48_GC_PROTECT_1 (dummy);
gcv.gclen = 1 + MAX_ARGS; gcv.gcobj = a; gcv.next = &gc1; GC_List = &gcv;
switch (e) {
***************
*** 192,213 ****
a[3] = Make_Window (0, p->display, p->subwindow);
a[4] = Get_Time_Arg (p->time);
! a[5] = Make_Integer (p->x);
! a[6] = Make_Integer (p->y);
! a[7] = Make_Integer (p->x_root);
! a[8] = Make_Integer (p->y_root);
if (e == KeyPress || e == KeyRelease) {
a[9] = Bits_To_Symbols ((unsigned long)p->state, 1, State_Syms);
! a[10] = Make_Integer (p->keycode);
! a[11] = p->same_screen ? True : False;
} else if (e == ButtonPress || e == ButtonRelease) {
register XButtonEvent *q = (XButtonEvent *)ep;
a[9] = Bits_To_Symbols ((unsigned long)q->state, 1, State_Syms);
a[10] = Bits_To_Symbols ((unsigned long)q->button, 0, Button_Syms);
! a[11] = q->same_screen ? True : False;
} else if (e == MotionNotify) {
register XMotionEvent *q = (XMotionEvent *)ep;
a[9] = Bits_To_Symbols ((unsigned long)q->state, 1, State_Syms);
! a[10] = q->is_hint ? True : False;
! a[11] = q->same_screen ? True : False;
} else {
register XCrossingEvent *q = (XCrossingEvent *)ep;
--- 192,213 ----
a[3] = Make_Window (0, p->display, p->subwindow);
a[4] = Get_Time_Arg (p->time);
! a[5] = s48_enter_integer (p->x);
! a[6] = s48_enter_integer (p->y);
! a[7] = s48_enter_integer (p->x_root);
! a[8] = s48_enter_integer (p->y_root);
if (e == KeyPress || e == KeyRelease) {
a[9] = Bits_To_Symbols ((unsigned long)p->state, 1, State_Syms);
! a[10] = s48_enter_integer (p->keycode);
! a[11] = p->same_screen ? S48_TRUE : S48_FALSE;
} else if (e == ButtonPress || e == ButtonRelease) {
register XButtonEvent *q = (XButtonEvent *)ep;
a[9] = Bits_To_Symbols ((unsigned long)q->state, 1, State_Syms);
a[10] = Bits_To_Symbols ((unsigned long)q->button, 0, Button_Syms);
! a[11] = q->same_screen ? S48_TRUE : S48_FALSE;
} else if (e == MotionNotify) {
register XMotionEvent *q = (XMotionEvent *)ep;
a[9] = Bits_To_Symbols ((unsigned long)q->state, 1, State_Syms);
! a[10] = q->is_hint ? S48_TRUE : S48_FALSE;
! a[11] = q->same_screen ? S48_TRUE : S48_FALSE;
} else {
register XCrossingEvent *q = (XCrossingEvent *)ep;
***************
*** 215,220 ****
a[10] = Bits_To_Symbols ((unsigned long)q->detail, 0,
Cross_Detail_Syms);
! a[11] = q->same_screen ? True : False;
! a[12] = q->focus ? True : False;
a[13] = Bits_To_Symbols ((unsigned long)q->state, 1, Button_Syms);
}
--- 215,220 ----
a[10] = Bits_To_Symbols ((unsigned long)q->detail, 0,
Cross_Detail_Syms);
! a[11] = q->same_screen ? S48_TRUE : S48_FALSE;
! a[12] = q->focus ? S48_TRUE : S48_FALSE;
a[13] = Bits_To_Symbols ((unsigned long)q->state, 1, Button_Syms);
}
***************
*** 234,259 ****
register XExposeEvent *p = (XExposeEvent *)ep;
a[1] = Make_Window (0, p->display, p->window);
! a[2] = Make_Integer (p->x);
! a[3] = Make_Integer (p->y);
! a[4] = Make_Integer (p->width);
! a[5] = Make_Integer (p->height);
! a[6] = Make_Integer (p->count);
} break;
case GraphicsExpose: {
register XGraphicsExposeEvent *p = (XGraphicsExposeEvent *)ep;
a[1] = Make_Window (0, p->display, p->drawable);
! a[2] = Make_Integer (p->x);
! a[3] = Make_Integer (p->y);
! a[4] = Make_Integer (p->width);
! a[5] = Make_Integer (p->height);
! a[6] = Make_Integer (p->count);
! a[7] = Make_Integer (p->major_code);
! a[8] = Make_Integer (p->minor_code);
} break;
case NoExpose: {
register XNoExposeEvent *p = (XNoExposeEvent *)ep;
a[1] = Make_Window (0, p->display, p->drawable);
! a[2] = Make_Integer (p->major_code);
! a[3] = Make_Integer (p->minor_code);
} break;
case VisibilityNotify: {
--- 234,259 ----
register XExposeEvent *p = (XExposeEvent *)ep;
a[1] = Make_Window (0, p->display, p->window);
! a[2] = s48_enter_integer (p->x);
! a[3] = s48_enter_integer (p->y);
! a[4] = s48_enter_integer (p->width);
! a[5] = s48_enter_integer (p->height);
! a[6] = s48_enter_integer (p->count);
} break;
case GraphicsExpose: {
register XGraphicsExposeEvent *p = (XGraphicsExposeEvent *)ep;
a[1] = Make_Window (0, p->display, p->drawable);
! a[2] = s48_enter_integer (p->x);
! a[3] = s48_enter_integer (p->y);
! a[4] = s48_enter_integer (p->width);
! a[5] = s48_enter_integer (p->height);
! a[6] = s48_enter_integer (p->count);
! a[7] = s48_enter_integer (p->major_code);
! a[8] = s48_enter_integer (p->minor_code);
} break;
case NoExpose: {
register XNoExposeEvent *p = (XNoExposeEvent *)ep;
a[1] = Make_Window (0, p->display, p->drawable);
! a[2] = s48_enter_integer (p->major_code);
! a[3] = s48_enter_integer (p->minor_code);
} break;
case VisibilityNotify: {
***************
*** 266,275 ****
a[1] = Make_Window (0, p->display, p->parent);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = Make_Integer (p->x);
! a[4] = Make_Integer (p->y);
! a[5] = Make_Integer (p->width);
! a[6] = Make_Integer (p->height);
! a[7] = Make_Integer (p->border_width);
! a[8] = p->override_redirect ? True : False;
} break;
case DestroyNotify: {
--- 266,275 ----
a[1] = Make_Window (0, p->display, p->parent);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = s48_enter_integer (p->x);
! a[4] = s48_enter_integer (p->y);
! a[5] = s48_enter_integer (p->width);
! a[6] = s48_enter_integer (p->height);
! a[7] = s48_enter_integer (p->border_width);
! a[8] = p->override_redirect ? S48_TRUE : S48_FALSE;
} break;
case DestroyNotify: {
***************
*** 282,286 ****
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = p->from_configure ? True : False;
} break;
case MapNotify: {
--- 282,286 ----
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = p->from_configure ? S48_TRUE : S48_FALSE;
} break;
case MapNotify: {
***************
*** 288,292 ****
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = p->override_redirect ? True : False;
} break;
case MapRequest: {
--- 288,292 ----
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = p->override_redirect ? S48_TRUE : S48_FALSE;
} break;
case MapRequest: {
***************
*** 300,306 ****
a[2] = Make_Window (0, p->display, p->window);
a[3] = Make_Window (0, p->display, p->parent);
! a[4] = Make_Integer (p->x);
! a[5] = Make_Integer (p->y);
! a[6] = p->override_redirect ? True : False;
} break;
case ConfigureNotify: {
--- 300,306 ----
a[2] = Make_Window (0, p->display, p->window);
a[3] = Make_Window (0, p->display, p->parent);
! a[4] = s48_enter_integer (p->x);
! a[5] = s48_enter_integer (p->y);
! a[6] = p->override_redirect ? S48_TRUE : S48_FALSE;
} break;
case ConfigureNotify: {
***************
*** 308,318 ****
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = Make_Integer (p->x);
! a[4] = Make_Integer (p->y);
! a[5] = Make_Integer (p->width);
! a[6] = Make_Integer (p->height);
! a[7] = Make_Integer (p->border_width);
a[8] = Make_Window (0, p->display, p->above);
! a[9] = p->override_redirect ? True : False;
} break;
case ConfigureRequest: {
--- 308,318 ----
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = s48_enter_integer (p->x);
! a[4] = s48_enter_integer (p->y);
! a[5] = s48_enter_integer (p->width);
! a[6] = s48_enter_integer (p->height);
! a[7] = s48_enter_integer (p->border_width);
a[8] = Make_Window (0, p->display, p->above);
! a[9] = p->override_redirect ? S48_TRUE : S48_FALSE;
} break;
case ConfigureRequest: {
***************
*** 320,331 ****
a[1] = Make_Window (0, p->display, p->parent);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = Make_Integer (p->x);
! a[4] = Make_Integer (p->y);
! a[5] = Make_Integer (p->width);
! a[6] = Make_Integer (p->height);
! a[7] = Make_Integer (p->border_width);
a[8] = Make_Window (0, p->display, p->above);
a[9] = Bits_To_Symbols ((unsigned long)p->detail, 0, Stack_Mode_Syms);
! a[10] = Make_Unsigned_Long (p->value_mask);
} break;
case GravityNotify: {
--- 320,331 ----
a[1] = Make_Window (0, p->display, p->parent);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = s48_enter_integer (p->x);
! a[4] = s48_enter_integer (p->y);
! a[5] = s48_enter_integer (p->width);
! a[6] = s48_enter_integer (p->height);
! a[7] = s48_enter_integer (p->border_width);
a[8] = Make_Window (0, p->display, p->above);
a[9] = Bits_To_Symbols ((unsigned long)p->detail, 0, Stack_Mode_Syms);
! a[10] = s48_enter_integer (p->value_mask);
} break;
case GravityNotify: {
***************
*** 333,344 ****
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = Make_Integer (p->x);
! a[4] = Make_Integer (p->y);
} break;
case ResizeRequest: {
register XResizeRequestEvent *p = (XResizeRequestEvent *)ep;
a[1] = Make_Window (0, p->display, p->window);
! a[2] = Make_Integer (p->width);
! a[3] = Make_Integer (p->height);
} break;
case CirculateNotify: {
--- 333,344 ----
a[1] = Make_Window (0, p->display, p->event);
a[2] = Make_Window (0, p->display, p->window);
! a[3] = s48_enter_integer (p->x);
! a[4] = s48_enter_integer (p->y);
} break;
case ResizeRequest: {
register XResizeRequestEvent *p = (XResizeRequestEvent *)ep;
a[1] = Make_Window (0, p->display, p->window);
! a[2] = s48_enter_integer (p->width);
! a[3] = s48_enter_integer (p->height);
} break;
case CirculateNotify: {
***************
*** 388,393 ****
a[1] = Make_Window (0, p->display, p->window);
a[2] = Make_Colormap (0, p->display, p->colormap);
! a[3] = p->new ? True : False;
! a[4] = p->state == ColormapInstalled ? True : False;
} break;
case ClientMessage: {
--- 388,393 ----
a[1] = Make_Window (0, p->display, p->window);
a[2] = Make_Colormap (0, p->display, p->colormap);
! a[3] = p->new ? S48_TRUE : S48_FALSE;
! a[4] = p->state == ColormapInstalled ? S48_TRUE : S48_FALSE;
} break;
case ClientMessage: {
***************
*** 402,416 ****
break;
case 16:
! a[3] = Make_Vector (10, Null);
for (i = 0; i < 10; i++)
! VECTOR(a[3])->data[i] = Make_Integer (p->data.s[i]);
break;
case 32:
! a[3] = Make_Vector (5, Null);
for (i = 0; i < 5; i++)
! VECTOR(a[3])->data[i] = Make_Long (p->data.l[i]);
break;
default:
! a[3] = Make_Integer (p->format); /* ??? */
}
} break;
--- 402,416 ----
break;
case 16:
! a[3] = s48_make_vector (10, S48_NULL);
for (i = 0; i < 10; i++)
! S48_VECTOR_SET(a[3], i, s48_enter_integer (p->data.s[i]);)
break;
case 32:
! a[3] = s48_make_vector (5, S48_NULL);
for (i = 0; i < 5; i++)
! S48_VECTOR_SET(a[3], i, s48_enter_integer (p->data.l[i]);)
break;
default:
! a[3] = s48_enter_integer (p->format); /* ??? */
}
} break;
***************
*** 419,424 ****
a[1] = Make_Window (0, p->display, p->window);
a[2] = Bits_To_Symbols ((unsigned long)p->request, 0, Mapping_Syms);
! a[3] = Make_Integer (p->first_keycode);
! a[4] = Make_Integer (p->count);
} break;
}
--- 419,424 ----
a[1] = Make_Window (0, p->display, p->window);
a[2] = Bits_To_Symbols ((unsigned long)p->request, 0, Mapping_Syms);
! a[3] = s48_enter_integer (p->first_keycode);
! a[4] = s48_enter_integer (p->count);
} break;
}
***************
*** 426,446 ****
for (vp = VECTOR(Argv)->data, i = 0; i < Event_Table[e].argc; i++) {
if (i) vp++;
! Car (*vp) = a[i];
! Cdr (*vp) = vp[1];
}
! Cdr (*vp) = Null;
! GC_Unlink;
return Argl;
}
! void Destroy_Event_Args (args) Object args; {
! Object t;
! for (t = args; !Nullp (t); t = Cdr (t))
! Car (t) = Null;
}
! Encode_Event (e) Object e; {
! Object s;
register char *p;
register struct event_desc *ep;
--- 426,446 ----
for (vp = VECTOR(Argv)->data, i = 0; i < Event_Table[e].argc; i++) {
if (i) vp++;
! S48_CAR (*vp) = a[i];
! S48_CDR (*vp) = vp[1];
}
! S48_CDR (*vp) = S48_NULL;
! S48_GC_UNPROTECT;
return Argl;
}
! void Destroy_Event_Args (args) s48_value args; {
! s48_value t;
! for (t = args; !S48_NULL_P (t); t = S48_CDR (t))
! S48_CAR (t) = S48_NULL;
}
! Encode_Event (e) s48_value e; {
! s48_value s;
register char *p;
register struct event_desc *ep;
***************
*** 448,452 ****
Check_Type (e, T_Symbol);
! s = SYMBOL(e)->name;
p = STRING(s)->data;
n = STRING(s)->size;
--- 448,452 ----
Check_Type (e, T_Symbol);
! s = s48_extract_string(S48_SYMBOL_TO_STRING(e));
p = STRING(s)->data;
n = STRING(s)->size;
***************
*** 458,486 ****
}
! static Object P_Get_Motion_Events (w, from, to) Object w, from, to; {
XTimeCoord *p;
int n;
register i;
! Object e, ret;
! GC_Node2;
Check_Type (w, T_Window);
p = XGetMotionEvents (WINDOW(w)->dpy, WINDOW(w)->win, Get_Time (from),
Get_Time (to), &n);
! e = ret = Make_Vector (n, Null);
! GC_Link2 (ret, e);
for (i = 0; i < n; i++) {
! e = P_Make_List (Make_Integer (3), Null);
! VECTOR(ret)->data[i] = e;
! Car (e) = Get_Time_Arg (p[i].time); e = Cdr (e);
! Car (e) = Make_Integer (p[i].x); e = Cdr (e);
! Car (e) = Make_Integer (p[i].y);
}
! GC_Unlink;
XFree ((char *)p);
return ret;
}
! static Object P_Event_Listen (d, wait_flag) Object d, wait_flag; {
Display *dpy;
register n;
--- 458,486 ----
}
! static s48_value P_Get_Motion_Events (w, from, to) s48_value w, from, to; {
XTimeCoord *p;
int n;
register i;
! s48_value e, ret;
! S48_DECLARE_GC_PROTECT(2);
Check_Type (w, T_Window);
p = XGetMotionEvents (WINDOW(w)->dpy, WINDOW(w)->win, Get_Time (from),
Get_Time (to), &n);
! e = ret = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_2 (ret, e);
for (i = 0; i < n; i++) {
! e = P_Make_List (s48_enter_integer (3), S48_NULL);
! S48_VECTOR_SET(ret, i, e;)
! S48_CAR (e) = Get_Time_Arg (p[i].time); e = S48_CDR (e);
! S48_CAR (e) = s48_enter_integer (p[i].x); e = S48_CDR (e);
! S48_CAR (e) = s48_enter_integer (p[i].y);
}
! S48_GC_UNPROTECT;
XFree ((char *)p);
return ret;
}
! static s48_value P_Event_Listen (d, wait_flag) s48_value d, wait_flag; {
Display *dpy;
register n;
***************
*** 491,511 ****
dpy = DISPLAY(d)->dpy;
n = XPending (dpy);
! if (n == 0 && EQ(wait_flag, True)) {
XPeekEvent (dpy, &e);
n = XPending (dpy);
}
! return Make_Integer (n);
}
elk_init_xlib_event () {
! Object t;
register i;
! Argl = P_Make_List (Make_Integer (MAX_ARGS), Null);
! Global_GC_Link (Argl);
! Argv = Make_Vector (MAX_ARGS, Null);
! Global_GC_Link (Argv);
! for (i = 0, t = Argl; i < MAX_ARGS; i++, t = Cdr (t))
! VECTOR(Argv)->data[i] = t;
Define_Primitive (P_Handle_Events, "handle-events", 3, MANY,
NOEVAL);
Define_Primitive (P_Get_Motion_Events,
--- 491,511 ----
dpy = DISPLAY(d)->dpy;
n = XPending (dpy);
! if (n == 0 && S48_EQ_P(wait_flag, S48_TRUE)) {
XPeekEvent (dpy, &e);
n = XPending (dpy);
}
! return s48_enter_integer (n);
}
elk_init_xlib_event () {
! s48_value t;
register i;
! Argl = P_Make_List (s48_enter_integer (MAX_ARGS), S48_NULL);
! Global_S48_GC_PROTECT_1 (Argl);
! Argv = s48_make_vector (MAX_ARGS, S48_NULL);
! Global_S48_GC_PROTECT_1 (Argv);
! for (i = 0, t = Argl; i < MAX_ARGS; i++, t = S48_CDR (t))
! S48_VECTOR_SET(Argv, i, t;)
Define_Primitive (P_Handle_Events, "handle-events", 3, MANY,
NOEVAL);
Define_Primitive (P_Get_Motion_Events,
Index: extension.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/extension.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** extension.c 2001/05/08 14:21:00 1.1
--- extension.c 2001/05/14 13:48:37 1.2
***************
*** 1,10 ****
#include "xlib.h"
! static Object P_List_Extensions (d) Object d; {
! Object ret;
int n;
register i;
register char **p;
! GC_Node;
Check_Type (d, T_Display);
--- 1,10 ----
#include "xlib.h"
! static s48_value P_List_Extensions (d) s48_value d; {
! s48_value ret;
int n;
register i;
register char **p;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (d, T_Display);
***************
*** 12,43 ****
p = XListExtensions (DISPLAY(d)->dpy, &n);
Enable_Interrupts;
! ret = Make_Vector (n, Null);
! GC_Link (ret);
for (i = 0; i < n; i++) {
! Object e;
e = Make_String (p[i], strlen (p[i]));
! VECTOR(ret)->data[i] = e;
}
! GC_Unlink;
XFreeExtensionList (p);
return ret;
}
! static Object P_Query_Extension (d, name) Object d, name; {
int opcode, event, error;
! Object ret, t;
! GC_Node2;
Check_Type (d, T_Display);
if (!XQueryExtension (DISPLAY(d)->dpy, Get_Strsym (name), &opcode,
&event, &error))
! return False;
! t = ret = P_Make_List (Make_Integer (3), Null);
! GC_Link2 (ret, t);
! Car (t) = (opcode ? Make_Integer (opcode) : False); t = Cdr (t);
! Car (t) = (event ? Make_Integer (event) : False); t = Cdr (t);
! Car (t) = (error ? Make_Integer (error) : False);
! GC_Unlink;
return ret;
}
--- 12,43 ----
p = XListExtensions (DISPLAY(d)->dpy, &n);
Enable_Interrupts;
! ret = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (ret);
for (i = 0; i < n; i++) {
! s48_value e;
e = Make_String (p[i], strlen (p[i]));
! S48_VECTOR_SET(ret, i, e;)
}
! S48_GC_UNPROTECT;
XFreeExtensionList (p);
return ret;
}
! static s48_value P_Query_Extension (d, name) s48_value d, name; {
int opcode, event, error;
! s48_value ret, t;
! S48_DECLARE_GC_PROTECT(2);
Check_Type (d, T_Display);
if (!XQueryExtension (DISPLAY(d)->dpy, Get_Strsym (name), &opcode,
&event, &error))
! return S48_FALSE;
! t = ret = P_Make_List (s48_enter_integer (3), S48_NULL);
! S48_GC_PROTECT_2 (ret, t);
! S48_CAR (t) = (opcode ? s48_enter_integer (opcode) : S48_FALSE); t =
S48_CDR (t);
! S48_CAR (t) = (event ? s48_enter_integer (event) : S48_FALSE); t =
S48_CDR (t);
! S48_CAR (t) = (error ? s48_enter_integer (error) : S48_FALSE);
! S48_GC_UNPROTECT;
return ret;
}
Index: font.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/font.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** font.c 2001/05/08 14:21:00 1.1
--- font.c 2001/05/14 13:48:37 1.2
***************
*** 1,10 ****
#include "xlib.h"
! Object Sym_Char_Info;
! static Object Sym_Font_Info, Sym_Min, Sym_Max;
Generic_Predicate (Font)
! static Font_Equal (x, y) Object x, y; {
Font id1 = FONT(x)->id, id2 = FONT(y)->id;
if (id1 && id2)
--- 1,10 ----
#include "xlib.h"
! s48_value Sym_Char_Info;
! static s48_value Sym_Font_Info, Sym_Min, Sym_Max;
Generic_Predicate (Font)
! static Font_Equal (x, y) s48_value x, y; {
Font id1 = FONT(x)->id, id2 = FONT(y)->id;
if (id1 && id2)
***************
*** 16,20 ****
Generic_Print (Font, "#[font %lu]", FONT(x)->id ? FONT(x)->id : POINTER(x))
! static Font_Visit (fp, f) Object *fp; int (*f)(); {
(*f)(&FONT(*fp)->name);
}
--- 16,20 ----
Generic_Print (Font, "#[font %lu]", FONT(x)->id ? FONT(x)->id : POINTER(x))
! static Font_Visit (fp, f) s48_value *fp; int (*f)(); {
(*f)(&FONT(*fp)->name);
}
***************
*** 22,35 ****
Generic_Get_Display (Font, FONT)
! static Object Internal_Make_Font (finalize, dpy, name, id, info)
! Display *dpy; Object name; Font id; XFontStruct *info; {
! Object f;
! GC_Node;
! GC_Link (name);
f = Alloc_Object (sizeof (struct S_Font), T_Font, 0);
FONT(f)->dpy = dpy;
if (TYPE(name) == T_Symbol)
! name = SYMBOL(name)->name;
FONT(f)->name = name;
FONT(f)->id = id;
--- 22,35 ----
Generic_Get_Display (Font, FONT)
! static s48_value Internal_Make_Font (finalize, dpy, name, id, info)
! Display *dpy; s48_value name; Font id; XFontStruct *info; {
! s48_value f;
! S48_DECLARE_GC_PROTECT(1);
! S48_GC_PROTECT_1 (name);
f = Alloc_Object (sizeof (struct S_Font), T_Font, 0);
FONT(f)->dpy = dpy;
if (TYPE(name) == T_Symbol)
! name = s48_extract_string(S48_SYMBOL_TO_STRING(name));
FONT(f)->name = name;
FONT(f)->id = id;
***************
*** 37,56 ****
if (id)
Register_Object (f, (GENERIC)dpy, finalize ? P_Close_Font : (PFO)0, 0);
! GC_Unlink;
return f;
}
/* Backwards compatibility: */
! Object Make_Font (dpy, name, id, info)
! Display *dpy; Object name; Font id; XFontStruct *info; {
return Internal_Make_Font (1, dpy, name, id, info);
}
! Object Make_Font_Foreign (dpy, name, id, info)
! Display *dpy; Object name; Font id; XFontStruct *info; {
return Internal_Make_Font (0, dpy, name, id, info);
}
! Font Get_Font (f) Object f; {
Check_Type (f, T_Font);
Open_Font_Maybe (f);
--- 37,56 ----
if (id)
Register_Object (f, (GENERIC)dpy, finalize ? P_Close_Font : (PFO)0, 0);
! S48_GC_UNPROTECT;
return f;
}
/* Backwards compatibility: */
! s48_value Make_Font (dpy, name, id, info)
! Display *dpy; s48_value name; Font id; XFontStruct *info; {
return Internal_Make_Font (1, dpy, name, id, info);
}
! s48_value Make_Font_Foreign (dpy, name, id, info)
! Display *dpy; s48_value name; Font id; XFontStruct *info; {
return Internal_Make_Font (0, dpy, name, id, info);
}
! Font Get_Font (f) s48_value f; {
Check_Type (f, T_Font);
Open_Font_Maybe (f);
***************
*** 58,62 ****
}
! static XFontStruct *Internal_Open_Font (d, name) Display *d; Object name; {
register char *s;
XFontStruct *p;
--- 58,62 ----
}
! static XFontStruct *Internal_Open_Font (d, name) Display *d; s48_value name; {
register char *s;
XFontStruct *p;
***************
*** 72,76 ****
}
! static Object P_Open_Font (d, name) Object d, name; {
XFontStruct *p;
--- 72,76 ----
}
! static s48_value P_Open_Font (d, name) s48_value d, name; {
XFontStruct *p;
***************
*** 80,89 ****
}
! void Open_Font_Maybe (f) Object f; {
! Object name;
XFontStruct *p;
name = FONT(f)->name;
! if (!Truep (name))
Primitive_Error ("invalid font");
if (FONT(f)->id == 0) {
--- 80,89 ----
}
! void Open_Font_Maybe (f) s48_value f; {
! s48_value name;
XFontStruct *p;
name = FONT(f)->name;
! if (!S48_TRUE_P (name))
Primitive_Error ("invalid font");
if (FONT(f)->id == 0) {
***************
*** 95,99 ****
}
! Object P_Close_Font (f) Object f; {
Check_Type (f, T_Font);
if (FONT(f)->id)
--- 95,99 ----
}
! s48_value P_Close_Font (f) s48_value f; {
Check_Type (f, T_Font);
if (FONT(f)->id)
***************
*** 104,113 ****
}
! static Object P_Font_Name (f) Object f; {
Check_Type (f, T_Font);
return FONT(f)->name;
}
! static Object P_Gcontext_Font (g) Object g; {
register struct S_Gc *p;
register XFontStruct *info;
--- 104,113 ----
}
! static s48_value P_Font_Name (f) s48_value f; {
Check_Type (f, T_Font);
return FONT(f)->name;
}
! static s48_value P_Gcontext_Font (g) s48_value g; {
register struct S_Gc *p;
register XFontStruct *info;
***************
*** 118,132 ****
info = XQueryFont (p->dpy, XGContextFromGC (p->gc));
Enable_Interrupts;
! return Make_Font_Foreign (p->dpy, False, (Font)0, info);
}
! static Object Internal_List_Fonts (d, pat, with_info) Object d, pat; {
char **ret;
int n;
XFontStruct *iret;
register i;
! Object f, v;
Display *dpy;
! GC_Node2;
Check_Type (d, T_Display);
--- 118,132 ----
info = XQueryFont (p->dpy, XGContextFromGC (p->gc));
Enable_Interrupts;
! return Make_Font_Foreign (p->dpy, S48_FALSE, (Font)0, info);
}
! static s48_value Internal_List_Fonts (d, pat, with_info) s48_value d, pat; {
char **ret;
int n;
XFontStruct *iret;
register i;
! s48_value f, v;
Display *dpy;
! S48_DECLARE_GC_PROTECT(2);
Check_Type (d, T_Display);
***************
*** 138,151 ****
ret = XListFonts (dpy, Get_Strsym (pat), 65535, &n);
Enable_Interrupts;
! v = Make_Vector (n, Null);
! f = Null;
! GC_Link2 (f, v);
for (i = 0; i < n; i++) {
f = Make_String (ret[i], strlen (ret[i]));
if (with_info)
f = Make_Font (dpy, f, (Font)0, &iret[i]);
! VECTOR(v)->data[i] = f;
}
! GC_Unlink;
if (with_info)
XFreeFontInfo (ret, (XFontStruct *)0, 0);
--- 138,151 ----
ret = XListFonts (dpy, Get_Strsym (pat), 65535, &n);
Enable_Interrupts;
! v = s48_make_vector (n, S48_NULL);
! f = S48_NULL;
! S48_GC_PROTECT_2 (f, v);
for (i = 0; i < n; i++) {
f = Make_String (ret[i], strlen (ret[i]));
if (with_info)
f = Make_Font (dpy, f, (Font)0, &iret[i]);
! S48_VECTOR_SET(v, i, f;)
}
! S48_GC_UNPROTECT;
if (with_info)
XFreeFontInfo (ret, (XFontStruct *)0, 0);
***************
*** 155,167 ****
}
! static Object P_List_Font_Names (d, pat) Object d, pat; {
return Internal_List_Fonts (d, pat, 0);
}
! static Object P_List_Fonts (d, pat) Object d, pat; {
return Internal_List_Fonts (d, pat, 1);
}
! static Object P_Font_Info (f) Object f; {
Check_Type (f, T_Font);
FI = *FONT(f)->info;
--- 155,167 ----
}
! static s48_value P_List_Font_Names (d, pat) s48_value d, pat; {
return Internal_List_Fonts (d, pat, 0);
}
! static s48_value P_List_Fonts (d, pat) s48_value d, pat; {
return Internal_List_Fonts (d, pat, 1);
}
! static s48_value P_Font_Info (f) s48_value f; {
Check_Type (f, T_Font);
FI = *FONT(f)->info;
***************
*** 170,174 ****
}
! static Object P_Char_Info (f, index) Object f, index; {
register t = TYPE(index);
register unsigned i;
--- 170,174 ----
}
! static s48_value P_Char_Info (f, index) s48_value f, index; {
register t = TYPE(index);
register unsigned i;
***************
*** 182,194 ****
cp = &p->max_bounds;
if (t == T_Symbol) {
! if (EQ(index, Sym_Min))
cp = &p->min_bounds;
! else if (!EQ(index, Sym_Max))
Primitive_Error (msg);
} else {
if (t == T_Character)
! i = CHAR(index);
else if (t == T_Fixnum || t == T_Bignum)
! i = (unsigned)Get_Integer (index);
else
Primitive_Error (msg);
--- 182,194 ----
cp = &p->max_bounds;
if (t == T_Symbol) {
! if (S48_EQ_P(index, Sym_Min))
cp = &p->min_bounds;
! else if (!S48_EQ_P(index, Sym_Max))
Primitive_Error (msg);
} else {
if (t == T_Character)
! i = s48_extract_char(index);
else if (t == T_Fixnum || t == T_Bignum)
! i = (unsigned)(int)s48_extract_integer (index);
else
Primitive_Error (msg);
***************
*** 214,243 ****
}
! static Object P_Font_Properties (f) Object f; {
register i, n;
! Object v, a, val, x;
! GC_Node4;
Check_Type (f, T_Font);
n = FONT(f)->info->n_properties;
! v = Make_Vector (n, Null);
! a = val = Null;
! GC_Link4 (v, a, val, f);
for (i = 0; i < n; i++) {
register XFontProp *p = FONT(f)->info->properties+i;
a = Make_Atom (p->name);
! val = Make_Unsigned_Long ((unsigned long)p->card32);
! x = Cons (a, val);
! VECTOR(v)->data[i] = x;
}
! GC_Unlink;
return v;
}
! static Object P_Font_Path (d) Object d; {
! Object v;
int i, n;
char **ret;
! GC_Node;
Check_Type (d, T_Display);
--- 214,243 ----
}
! static s48_value P_Font_Properties (f) s48_value f; {
register i, n;
! s48_value v, a, val, x;
! S48_DECLARE_GC_PROTECT(4);
Check_Type (f, T_Font);
n = FONT(f)->info->n_properties;
! v = s48_make_vector (n, S48_NULL);
! a = val = S48_NULL;
! S48_GC_PROTECT_4 (v, a, val, f);
for (i = 0; i < n; i++) {
register XFontProp *p = FONT(f)->info->properties+i;
a = Make_Atom (p->name);
! val = s48_enter_integer ((unsigned long)p->card32);
! x = s48_cons (a, val);
! S48_VECTOR_SET(v, i, x;)
}
! S48_GC_UNPROTECT;
return v;
}
! static s48_value P_Font_Path (d) s48_value d; {
! s48_value v;
int i, n;
char **ret;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (d, T_Display);
***************
*** 245,265 ****
ret = XGetFontPath (DISPLAY(d)->dpy, &n);
Enable_Interrupts;
! v = Make_Vector (n, Null);
! GC_Link (v);
for (i = 0; i < n; i++) {
! Object x;
x = Make_String (ret[i], strlen (ret[i]));
! VECTOR(v)->data[i] = x;
}
! GC_Unlink;
XFreeFontPath (ret);
return P_Vector_To_List (v);
}
! static Object P_Set_Font_Path (d, p) Object d, p; {
register char **path;
register i, n;
! Object c;
Alloca_Begin;
--- 245,265 ----
ret = XGetFontPath (DISPLAY(d)->dpy, &n);
Enable_Interrupts;
! v = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (v);
for (i = 0; i < n; i++) {
! s48_value x;
x = Make_String (ret[i], strlen (ret[i]));
! S48_VECTOR_SET(v, i, x;)
}
! S48_GC_UNPROTECT;
XFreeFontPath (ret);
return P_Vector_To_List (v);
}
! static s48_value P_Set_Font_Path (d, p) s48_value d, p; {
register char **path;
register i, n;
! s48_value c;
Alloca_Begin;
***************
*** 268,273 ****
n = Fast_Length (p);
Alloca (path, char**, n * sizeof (char *));
! for (i = 0; i < n; i++, p = Cdr (p)) {
! c = Car (p);
Get_Strsym_Stack (c, path[i]);
}
--- 268,273 ----
n = Fast_Length (p);
Alloca (path, char**, n * sizeof (char *));
! for (i = 0; i < n; i++, p = S48_CDR (p)) {
! c = S48_CAR (p);
Get_Strsym_Stack (c, path[i]);
}
Index: gcontext.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/gcontext.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** gcontext.c 2001/05/08 14:21:00 1.1
--- gcontext.c 2001/05/14 13:48:37 1.2
***************
*** 1,5 ****
#include "xlib.h"
! static Object Sym_Gc;
Generic_Predicate (Gc)
--- 1,5 ----
#include "xlib.h"
! static s48_value Sym_Gc;
Generic_Predicate (Gc)
***************
*** 11,23 ****
Generic_Get_Display (Gc, GCONTEXT)
! Object Make_Gc (finalize, dpy, g) Display *dpy; GC g; {
! Object gc;
if (g == None)
return Sym_None;
gc = Find_Object (T_Gc, (GENERIC)dpy, Match_X_Obj, g);
! if (Nullp (gc)) {
gc = Alloc_Object (sizeof (struct S_Gc), T_Gc, 0);
! GCONTEXT(gc)->tag = Null;
GCONTEXT(gc)->gc = g;
GCONTEXT(gc)->dpy = dpy;
--- 11,23 ----
Generic_Get_Display (Gc, GCONTEXT)
! s48_value Make_Gc (finalize, dpy, g) Display *dpy; GC g; {
! s48_value gc;
if (g == None)
return Sym_None;
gc = Find_Object (T_Gc, (GENERIC)dpy, Match_X_Obj, g);
! if (S48_NULL_P (gc)) {
gc = Alloc_Object (sizeof (struct S_Gc), T_Gc, 0);
! GCONTEXT(gc)->tag = S48_NULL;
GCONTEXT(gc)->gc = g;
GCONTEXT(gc)->dpy = dpy;
***************
*** 29,33 ****
}
! static Object P_Create_Gc (w, g) Object w, g; {
unsigned long mask;
Display *dpy;
--- 29,33 ----
}
! static s48_value P_Create_Gc (w, g) s48_value w, g; {
unsigned long mask;
Display *dpy;
***************
*** 39,43 ****
}
! static Object P_Copy_Gc (gc, w) Object gc, w; {
GC dst;
Display *dpy;
--- 39,43 ----
}
! static s48_value P_Copy_Gc (gc, w) s48_value gc, w; {
GC dst;
Display *dpy;
***************
*** 51,55 ****
}
! static Object P_Change_Gc (gc, g) Object gc, g; {
unsigned long mask;
--- 51,55 ----
}
! static s48_value P_Change_Gc (gc, g) s48_value gc, g; {
unsigned long mask;
***************
*** 60,64 ****
}
! Object P_Free_Gc (g) Object g; {
Check_Type (g, T_Gc);
if (!GCONTEXT(g)->free)
--- 60,64 ----
}
! s48_value P_Free_Gc (g) s48_value g; {
Check_Type (g, T_Gc);
if (!GCONTEXT(g)->free)
***************
*** 69,73 ****
}
! static Object P_Query_Best_Size (d, w, h, shape) Object d, w, h, shape; {
unsigned int rw, rh;
--- 69,73 ----
}
! static s48_value P_Query_Best_Size (d, w, h, shape) s48_value d, w, h, shape;
{
unsigned int rw, rh;
***************
*** 75,85 ****
if (!XQueryBestSize (DISPLAY(d)->dpy, Symbols_To_Bits (shape, 0,
Shape_Syms), DefaultRootWindow (DISPLAY(d)->dpy),
! Get_Integer (w), Get_Integer (h), &rw, &rh))
Primitive_Error ("cannot query best shape");
! return Cons (Make_Integer (rw), Make_Integer (rh));
}
! static Object P_Set_Gcontext_Clip_Rectangles (gc, x, y, v, ord)
! Object gc, x, y, v, ord; {
register XRectangle *p;
register i, n;
--- 75,85 ----
if (!XQueryBestSize (DISPLAY(d)->dpy, Symbols_To_Bits (shape, 0,
Shape_Syms), DefaultRootWindow (DISPLAY(d)->dpy),
! (int)s48_extract_integer (w), (int)s48_extract_integer (h), &rw,
&rh))
Primitive_Error ("cannot query best shape");
! return s48_cons (s48_enter_integer (rw), s48_enter_integer (rh));
}
! static s48_value P_Set_Gcontext_Clip_Rectangles (gc, x, y, v, ord)
! s48_value gc, x, y, v, ord; {
register XRectangle *p;
register i, n;
***************
*** 88,112 ****
Check_Type (gc, T_Gc);
Check_Type (v, T_Vector);
! n = VECTOR(v)->size;
Alloca (p, XRectangle*, n * sizeof (XRectangle));
for (i = 0; i < n; i++) {
! Object rect;
! rect = VECTOR(v)->data[i];
Check_Type (rect, T_Pair);
if (Fast_Length (rect) != 4)
Primitive_Error ("invalid rectangle: ~s", rect);
! p[i].x = Get_Integer (Car (rect)); rect = Cdr (rect);
! p[i].y = Get_Integer (Car (rect)); rect = Cdr (rect);
! p[i].width = Get_Integer (Car (rect)); rect = Cdr (rect);
! p[i].height = Get_Integer (Car (rect));
}
! XSetClipRectangles (GCONTEXT(gc)->dpy, GCONTEXT(gc)->gc, Get_Integer (x),
! Get_Integer (y), p, n, Symbols_To_Bits (ord, 0, Ordering_Syms));
Alloca_End;
return Void;
}
! static Object P_Set_Gcontext_Dashlist (gc, off, v) Object gc, off, v; {
register char *p;
register i, n, d;
--- 88,112 ----
Check_Type (gc, T_Gc);
Check_Type (v, T_Vector);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XRectangle*, n * sizeof (XRectangle));
for (i = 0; i < n; i++) {
! s48_value rect;
! rect = S48_VECTOR_REF(v, i);
Check_Type (rect, T_Pair);
if (Fast_Length (rect) != 4)
Primitive_Error ("invalid rectangle: ~s", rect);
! p[i].x = (int)s48_extract_integer (S48_CAR (rect)); rect = S48_CDR
(rect);
! p[i].y = (int)s48_extract_integer (S48_CAR (rect)); rect = S48_CDR
(rect);
! p[i].width = (int)s48_extract_integer (S48_CAR (rect)); rect = S48_CDR
(rect);
! p[i].height = (int)s48_extract_integer (S48_CAR (rect));
}
! XSetClipRectangles (GCONTEXT(gc)->dpy, GCONTEXT(gc)->gc,
(int)s48_extract_integer (x),
! (int)s48_extract_integer (y), p, n, Symbols_To_Bits (ord, 0,
Ordering_Syms));
Alloca_End;
return Void;
}
! static s48_value P_Set_Gcontext_Dashlist (gc, off, v) s48_value gc, off, v; {
register char *p;
register i, n, d;
***************
*** 115,127 ****
Check_Type (gc, T_Gc);
Check_Type (v, T_Vector);
! n = VECTOR(v)->size;
Alloca (p, char*, n);
for (i = 0; i < n; i++) {
! d = Get_Integer (VECTOR(v)->data[i]);
if (d < 0 || d > 255)
Range_Error (VECTOR(v)->data[i]);
p[i] = d;
}
! XSetDashes (GCONTEXT(gc)->dpy, GCONTEXT(gc)->gc, Get_Integer (off), p, n);
Alloca_End;
return Void;
--- 115,127 ----
Check_Type (gc, T_Gc);
Check_Type (v, T_Vector);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, char*, n);
for (i = 0; i < n; i++) {
! d = (int)s48_extract_integer (VECTOR(v)->data[i]);
if (d < 0 || d > 255)
Range_Error (VECTOR(v)->data[i]);
p[i] = d;
}
! XSetDashes (GCONTEXT(gc)->dpy, GCONTEXT(gc)->gc, (int)s48_extract_integer
(off), p, n);
Alloca_End;
return Void;
***************
*** 135,139 ****
GCDashOffset | GCArcMode)
! static Object P_Get_Gc_Values (gc) Object gc; {
unsigned long mask = ValidGCValuesBits;
--- 135,139 ----
GCDashOffset | GCArcMode)
! static s48_value P_Get_Gc_Values (gc) s48_value gc; {
unsigned long mask = ValidGCValuesBits;
Index: grab.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/grab.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** grab.c 2001/05/08 14:21:00 1.1
--- grab.c 2001/05/14 13:48:37 1.2
***************
*** 1,19 ****
#include "xlib.h"
! static Object Sym_Any;
! Time Get_Time (time) Object time; {
! if (EQ(time, Sym_Now))
return CurrentTime;
! return (Time)Get_Long (time);
}
! static Get_Mode (m) Object m; {
Check_Type (m, T_Boolean);
! return EQ(m, True) ? GrabModeSync : GrabModeAsync;
}
! static Object P_Grab_Pointer (win, ownerp, events, psyncp, ksyncp, confine_to,
! cursor, time) Object win, ownerp, events, psyncp, ksyncp, confine_to,
cursor, time; {
Check_Type (win, T_Window);
--- 1,19 ----
#include "xlib.h"
! static s48_value Sym_Any;
! Time Get_Time (time) s48_value time; {
! if (S48_EQ_P(time, Sym_Now))
return CurrentTime;
! return (Time)s48_extract_integer (time);
}
! static Get_Mode (m) s48_value m; {
Check_Type (m, T_Boolean);
! return S48_EQ_P(m, S48_TRUE) ? GrabModeSync : GrabModeAsync;
}
! static s48_value P_Grab_Pointer (win, ownerp, events, psyncp, ksyncp,
confine_to,
! cursor, time) s48_value win, ownerp, events, psyncp, ksyncp, confine_to,
cursor, time; {
Check_Type (win, T_Window);
***************
*** 21,25 ****
return Bits_To_Symbols ((unsigned long)XGrabPointer (WINDOW(win)->dpy,
WINDOW(win)->win,
! EQ(ownerp, True), Symbols_To_Bits (events, 1, Event_Syms),
Get_Mode (psyncp), Get_Mode (ksyncp),
Get_Window (confine_to), Get_Cursor (cursor), Get_Time (time)),
--- 21,25 ----
return Bits_To_Symbols ((unsigned long)XGrabPointer (WINDOW(win)->dpy,
WINDOW(win)->win,
! S48_EQ_P(ownerp, S48_TRUE), Symbols_To_Bits (events, 1, Event_Syms),
Get_Mode (psyncp), Get_Mode (ksyncp),
Get_Window (confine_to), Get_Cursor (cursor), Get_Time (time)),
***************
*** 27,31 ****
}
! static Object P_Ungrab_Pointer (d, time) Object d, time; {
Check_Type (d, T_Display);
XUngrabPointer (DISPLAY(d)->dpy, Get_Time (time));
--- 27,31 ----
}
! static s48_value P_Ungrab_Pointer (d, time) s48_value d, time; {
Check_Type (d, T_Display);
XUngrabPointer (DISPLAY(d)->dpy, Get_Time (time));
***************
*** 33,38 ****
}
! static Object P_Grab_Button (win, button, mods, ownerp, events, psyncp,
ksyncp,
! confine_to, cursor) Object win, button, mods, ownerp, events,
psyncp, ksyncp, confine_to, cursor; {
Check_Type (win, T_Window);
--- 33,38 ----
}
! static s48_value P_Grab_Button (win, button, mods, ownerp, events, psyncp,
ksyncp,
! confine_to, cursor) s48_value win, button, mods, ownerp, events,
psyncp, ksyncp, confine_to, cursor; {
Check_Type (win, T_Window);
***************
*** 40,44 ****
XGrabButton (WINDOW(win)->dpy, Symbols_To_Bits (button, 0, Button_Syms),
Symbols_To_Bits (mods, 1, State_Syms), WINDOW(win)->win,
! EQ(ownerp, True), Symbols_To_Bits (events, 1, Event_Syms),
Get_Mode (psyncp), Get_Mode (ksyncp),
Get_Window (confine_to), Get_Cursor (cursor));
--- 40,44 ----
XGrabButton (WINDOW(win)->dpy, Symbols_To_Bits (button, 0, Button_Syms),
Symbols_To_Bits (mods, 1, State_Syms), WINDOW(win)->win,
! S48_EQ_P(ownerp, S48_TRUE), Symbols_To_Bits (events, 1, Event_Syms),
Get_Mode (psyncp), Get_Mode (ksyncp),
Get_Window (confine_to), Get_Cursor (cursor));
***************
*** 46,50 ****
}
! static Object P_Ungrab_Button (win, button, mods) Object win, button, mods; {
Check_Type (win, T_Window);
XUngrabButton (WINDOW(win)->dpy, Symbols_To_Bits (button, 0, Button_Syms),
--- 46,50 ----
}
! static s48_value P_Ungrab_Button (win, button, mods) s48_value win, button,
mods; {
Check_Type (win, T_Window);
XUngrabButton (WINDOW(win)->dpy, Symbols_To_Bits (button, 0, Button_Syms),
***************
*** 53,58 ****
}
! static Object P_Change_Active_Pointer_Grab (d, events, cursor, time)
! Object d, events, cursor, time; {
Check_Type (d, T_Display);
XChangeActivePointerGrab (DISPLAY(d)->dpy, Symbols_To_Bits (events, 1,
--- 53,58 ----
}
! static s48_value P_Change_Active_Pointer_Grab (d, events, cursor, time)
! s48_value d, events, cursor, time; {
Check_Type (d, T_Display);
XChangeActivePointerGrab (DISPLAY(d)->dpy, Symbols_To_Bits (events, 1,
***************
*** 61,75 ****
}
! static Object P_Grab_Keyboard (win, ownerp, psyncp, ksyncp, time) Object win,
ownerp, psyncp, ksyncp, time; {
Check_Type (win, T_Window);
Check_Type (ownerp, T_Boolean);
return Bits_To_Symbols ((unsigned long)XGrabKeyboard (WINDOW(win)->dpy,
! WINDOW(win)->win, EQ(ownerp, True), Get_Mode (psyncp),
Get_Mode (ksyncp), Get_Time (time)),
0, Grabstatus_Syms);
}
! static Object P_Ungrab_Keyboard (d, time) Object d, time; {
Check_Type (d, T_Display);
XUngrabKeyboard (DISPLAY(d)->dpy, Get_Time (time));
--- 61,75 ----
}
! static s48_value P_Grab_Keyboard (win, ownerp, psyncp, ksyncp, time)
s48_value win,
ownerp, psyncp, ksyncp, time; {
Check_Type (win, T_Window);
Check_Type (ownerp, T_Boolean);
return Bits_To_Symbols ((unsigned long)XGrabKeyboard (WINDOW(win)->dpy,
! WINDOW(win)->win, S48_EQ_P(ownerp, S48_TRUE), Get_Mode (psyncp),
Get_Mode (ksyncp), Get_Time (time)),
0, Grabstatus_Syms);
}
! static s48_value P_Ungrab_Keyboard (d, time) s48_value d, time; {
Check_Type (d, T_Display);
XUngrabKeyboard (DISPLAY(d)->dpy, Get_Time (time));
***************
*** 77,100 ****
}
! static Object P_Grab_Key (win, key, mods, ownerp, psyncp, ksyncp) Object win,
key, mods, ownerp, psyncp, ksyncp; {
int keycode = AnyKey;
Check_Type (win, T_Window);
! if (!EQ(key, Sym_Any))
! keycode = Get_Integer (key);
Check_Type (ownerp, T_Boolean);
XGrabKey (WINDOW(win)->dpy, keycode, Symbols_To_Bits (mods, 1,
State_Syms),
! WINDOW(win)->win, EQ(ownerp, True), Get_Mode (psyncp),
Get_Mode (ksyncp));
return Void;
}
! static Object P_Ungrab_Key (win, key, mods) Object win, key, mods; {
int keycode = AnyKey;
Check_Type (win, T_Window);
! if (!EQ(key, Sym_Any))
! keycode = Get_Integer (key);
XUngrabKey (WINDOW(win)->dpy, keycode,
Symbols_To_Bits (mods, 1, State_Syms), WINDOW(win)->win);
--- 77,100 ----
}
! static s48_value P_Grab_Key (win, key, mods, ownerp, psyncp, ksyncp)
s48_value win,
key, mods, ownerp, psyncp, ksyncp; {
int keycode = AnyKey;
Check_Type (win, T_Window);
! if (!S48_EQ_P(key, Sym_Any))
! keycode = (int)s48_extract_integer (key);
Check_Type (ownerp, T_Boolean);
XGrabKey (WINDOW(win)->dpy, keycode, Symbols_To_Bits (mods, 1,
State_Syms),
! WINDOW(win)->win, S48_EQ_P(ownerp, S48_TRUE), Get_Mode (psyncp),
Get_Mode (ksyncp));
return Void;
}
! static s48_value P_Ungrab_Key (win, key, mods) s48_value win, key, mods; {
int keycode = AnyKey;
Check_Type (win, T_Window);
! if (!S48_EQ_P(key, Sym_Any))
! keycode = (int)s48_extract_integer (key);
XUngrabKey (WINDOW(win)->dpy, keycode,
Symbols_To_Bits (mods, 1, State_Syms), WINDOW(win)->win);
***************
*** 102,106 ****
}
! static Object P_Allow_Events (d, mode, time) Object d, mode, time; {
Check_Type (d, T_Display);
XAllowEvents (DISPLAY(d)->dpy, Symbols_To_Bits (mode, 0,
--- 102,106 ----
}
! static s48_value P_Allow_Events (d, mode, time) s48_value d, mode, time; {
Check_Type (d, T_Display);
XAllowEvents (DISPLAY(d)->dpy, Symbols_To_Bits (mode, 0,
***************
*** 109,113 ****
}
! static Object P_Grab_Server (d) Object d; {
Check_Type (d, T_Display);
XGrabServer (DISPLAY(d)->dpy);
--- 109,113 ----
}
! static s48_value P_Grab_Server (d) s48_value d; {
Check_Type (d, T_Display);
XGrabServer (DISPLAY(d)->dpy);
***************
*** 115,119 ****
}
! static Object P_Ungrab_Server (d) Object d; {
Check_Type (d, T_Display);
XUngrabServer (DISPLAY(d)->dpy);
--- 115,119 ----
}
! static s48_value P_Ungrab_Server (d) s48_value d; {
Check_Type (d, T_Display);
XUngrabServer (DISPLAY(d)->dpy);
Index: graphics.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/graphics.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** graphics.c 2001/05/08 14:21:00 1.1
--- graphics.c 2001/05/14 13:48:37 1.2
***************
*** 5,17 ****
extern XDrawArcs(), XFillArcs(), XFillPolygon();
! static Object P_Clear_Area (win, x, y, w, h, e) Object win, x, y, w, h, e; {
Check_Type (win, T_Window);
Check_Type (e, T_Boolean);
! XClearArea (WINDOW(win)->dpy, WINDOW(win)->win, Get_Integer (x),
! Get_Integer (y), Get_Integer (w), Get_Integer (h), EQ(e, True));
return Void;
}
! static Object P_Copy_Area (src, gc, sx, sy, w, h, dst, dx, dy) Object src, gc,
sx, sy, w, h, dst, dx, dy; {
Display *dpy;
--- 5,17 ----
extern XDrawArcs(), XFillArcs(), XFillPolygon();
! static s48_value P_Clear_Area (win, x, y, w, h, e) s48_value win, x, y, w, h,
e; {
Check_Type (win, T_Window);
Check_Type (e, T_Boolean);
! XClearArea (WINDOW(win)->dpy, WINDOW(win)->win, (int)s48_extract_integer
(x),
! (int)s48_extract_integer (y), (int)s48_extract_integer (w),
(int)s48_extract_integer (h), S48_EQ_P(e, S48_TRUE));
return Void;
}
! static s48_value P_Copy_Area (src, gc, sx, sy, w, h, dst, dx, dy) s48_value
src, gc,
sx, sy, w, h, dst, dx, dy; {
Display *dpy;
***************
*** 19,30 ****
Check_Type (gc, T_Gc);
! XCopyArea (dpy, dsrc, ddst, GCONTEXT(gc)->gc, Get_Integer (sx),
! Get_Integer (sy), Get_Integer (w), Get_Integer (h),
! Get_Integer (dx), Get_Integer (dy));
return Void;
}
! static Object P_Copy_Plane (src, gc, plane, sx, sy, w, h, dst, dx, dy)
! Object src, gc, plane, sx, sy, w, h, dst, dx, dy; {
Display *dpy;
Drawable ddst = Get_Drawable (dst, &dpy), dsrc = Get_Drawable (src, &dpy);
--- 19,30 ----
Check_Type (gc, T_Gc);
! XCopyArea (dpy, dsrc, ddst, GCONTEXT(gc)->gc, (int)s48_extract_integer
(sx),
! (int)s48_extract_integer (sy), (int)s48_extract_integer (w),
(int)s48_extract_integer (h),
! (int)s48_extract_integer (dx), (int)s48_extract_integer (dy));
return Void;
}
! static s48_value P_Copy_Plane (src, gc, plane, sx, sy, w, h, dst, dx, dy)
! s48_value src, gc, plane, sx, sy, w, h, dst, dx, dy; {
Display *dpy;
Drawable ddst = Get_Drawable (dst, &dpy), dsrc = Get_Drawable (src, &dpy);
***************
*** 32,55 ****
Check_Type (gc, T_Gc);
! p = (unsigned long)Get_Long (plane);
if (p & (p-1))
Primitive_Error ("invalid plane: ~s", plane);
! XCopyPlane (dpy, dsrc, ddst, GCONTEXT(gc)->gc, Get_Integer (sx),
! Get_Integer (sy), Get_Integer (w), Get_Integer (h),
! Get_Integer (dx), Get_Integer (dy), p);
return Void;
}
! static Object P_Draw_Point (d, gc, x, y) Object d, gc, x, y; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! XDrawPoint (dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x), Get_Integer (y));
return Void;
}
! static Object Internal_Draw_Points (d, gc, v, relative, func, shape)
! Object d, gc, v, relative, shape; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
--- 32,55 ----
Check_Type (gc, T_Gc);
! p = (unsigned long)s48_extract_integer (plane);
if (p & (p-1))
Primitive_Error ("invalid plane: ~s", plane);
! XCopyPlane (dpy, dsrc, ddst, GCONTEXT(gc)->gc, (int)s48_extract_integer
(sx),
! (int)s48_extract_integer (sy), (int)s48_extract_integer (w),
(int)s48_extract_integer (h),
! (int)s48_extract_integer (dx), (int)s48_extract_integer (dy), p);
return Void;
}
! static s48_value P_Draw_Point (d, gc, x, y) s48_value d, gc, x, y; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! XDrawPoint (dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer (x),
(int)s48_extract_integer (y));
return Void;
}
! static s48_value Internal_Draw_Points (d, gc, v, relative, func, shape)
! s48_value d, gc, v, relative, shape; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
***************
*** 61,76 ****
Check_Type (gc, T_Gc);
Check_Type (relative, T_Boolean);
! rel = EQ(relative, True) ? CoordModePrevious : CoordModeOrigin;
if (func == XFillPolygon)
sh = Symbols_To_Bits (shape, 0, Polyshape_Syms);
! n = VECTOR(v)->size;
Alloca (p, XPoint*, n * sizeof (XPoint));
for (i = 0; i < n; i++) {
! Object point;
! point = VECTOR(v)->data[i];
Check_Type (point, T_Pair);
! p[i].x = Get_Integer (Car (point));
! p[i].y = Get_Integer (Cdr (point));
}
if (func == XFillPolygon)
--- 61,76 ----
Check_Type (gc, T_Gc);
Check_Type (relative, T_Boolean);
! rel = S48_EQ_P(relative, S48_TRUE) ? CoordModePrevious : CoordModeOrigin;
if (func == XFillPolygon)
sh = Symbols_To_Bits (shape, 0, Polyshape_Syms);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XPoint*, n * sizeof (XPoint));
for (i = 0; i < n; i++) {
! s48_value point;
! point = S48_VECTOR_REF(v, i);
Check_Type (point, T_Pair);
! p[i].x = (int)s48_extract_integer (S48_CAR (point));
! p[i].y = (int)s48_extract_integer (S48_CDR (point));
}
if (func == XFillPolygon)
***************
*** 82,105 ****
}
! static Object P_Draw_Points (d, gc, v, relative) Object d, gc, v, relative; {
! return Internal_Draw_Points (d, gc, v, relative, XDrawPoints, Null);
}
! static Object P_Draw_Line (d, gc, x1, y1, x2, y2)
! Object d, gc, x1, y1, x2, y2; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! XDrawLine (dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x1), Get_Integer (y1),
! Get_Integer (x2), Get_Integer (y2));
return Void;
}
! static Object P_Draw_Lines (d, gc, v, relative) Object d, gc, v, relative; {
! return Internal_Draw_Points (d, gc, v, relative, XDrawLines, Null);
}
! static Object P_Draw_Segments (d, gc, v) Object d, gc, v; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
--- 82,105 ----
}
! static s48_value P_Draw_Points (d, gc, v, relative) s48_value d, gc, v,
relative; {
! return Internal_Draw_Points (d, gc, v, relative, XDrawPoints, S48_NULL);
}
! static s48_value P_Draw_Line (d, gc, x1, y1, x2, y2)
! s48_value d, gc, x1, y1, x2, y2; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! XDrawLine (dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer (x1),
(int)s48_extract_integer (y1),
! (int)s48_extract_integer (x2), (int)s48_extract_integer (y2));
return Void;
}
! static s48_value P_Draw_Lines (d, gc, v, relative) s48_value d, gc, v,
relative; {
! return Internal_Draw_Points (d, gc, v, relative, XDrawLines, S48_NULL);
}
! static s48_value P_Draw_Segments (d, gc, v) s48_value d, gc, v; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
***************
*** 109,125 ****
Check_Type (gc, T_Gc);
! n = VECTOR(v)->size;
Alloca (p, XSegment*, n * sizeof (XSegment));
for (i = 0; i < n; i++) {
! Object seg;
! seg = VECTOR(v)->data[i];
Check_Type (seg, T_Pair);
if (Fast_Length (seg) != 4)
Primitive_Error ("invalid segment: ~s", seg);
! p[i].x1 = Get_Integer (Car (seg)); seg = Cdr (seg);
! p[i].y1 = Get_Integer (Car (seg)); seg = Cdr (seg);
! p[i].x2 = Get_Integer (Car (seg)); seg = Cdr (seg);
! p[i].y2 = Get_Integer (Car (seg));
}
XDrawSegments (dpy, dr, GCONTEXT(gc)->gc, p, n);
--- 109,125 ----
Check_Type (gc, T_Gc);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XSegment*, n * sizeof (XSegment));
for (i = 0; i < n; i++) {
! s48_value seg;
! seg = S48_VECTOR_REF(v, i);
Check_Type (seg, T_Pair);
if (Fast_Length (seg) != 4)
Primitive_Error ("invalid segment: ~s", seg);
! p[i].x1 = (int)s48_extract_integer (S48_CAR (seg)); seg = S48_CDR (seg);
! p[i].y1 = (int)s48_extract_integer (S48_CAR (seg)); seg = S48_CDR (seg);
! p[i].x2 = (int)s48_extract_integer (S48_CAR (seg)); seg = S48_CDR (seg);
! p[i].y2 = (int)s48_extract_integer (S48_CAR (seg));
}
XDrawSegments (dpy, dr, GCONTEXT(gc)->gc, p, n);
***************
*** 128,152 ****
}
! static Object Internal_Draw_Rectangle (d, gc, x, y, w, h, func)
! Object d, gc, x, y, w, h; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! (*func)(dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x),
! Get_Integer (y), Get_Integer (w), Get_Integer (h));
return Void;
}
! static Object P_Draw_Rectangle (d, gc, x, y, w, h) Object d, gc, x, y, w, h; {
return Internal_Draw_Rectangle (d, gc, x, y, w, h, XDrawRectangle);
}
! static Object P_Fill_Rectangle (d, gc, x, y, w, h) Object d, gc, x, y, w, h; {
return Internal_Draw_Rectangle (d, gc, x, y, w, h, XFillRectangle);
}
! static Object Internal_Draw_Rectangles (d, gc, v, func)
! Object d, gc, v; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
--- 128,152 ----
}
! static s48_value Internal_Draw_Rectangle (d, gc, x, y, w, h, func)
! s48_value d, gc, x, y, w, h; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! (*func)(dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer (x),
! (int)s48_extract_integer (y), (int)s48_extract_integer (w),
(int)s48_extract_integer (h));
return Void;
}
! static s48_value P_Draw_Rectangle (d, gc, x, y, w, h) s48_value d, gc, x, y,
w, h; {
return Internal_Draw_Rectangle (d, gc, x, y, w, h, XDrawRectangle);
}
! static s48_value P_Fill_Rectangle (d, gc, x, y, w, h) s48_value d, gc, x, y,
w, h; {
return Internal_Draw_Rectangle (d, gc, x, y, w, h, XFillRectangle);
}
! static s48_value Internal_Draw_Rectangles (d, gc, v, func)
! s48_value d, gc, v; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
***************
*** 156,172 ****
Check_Type (gc, T_Gc);
! n = VECTOR(v)->size;
Alloca (p, XRectangle*, n * sizeof (XRectangle));
for (i = 0; i < n; i++) {
! Object rect;
! rect = VECTOR(v)->data[i];
Check_Type (rect, T_Pair);
if (Fast_Length (rect) != 4)
Primitive_Error ("invalid rectangle: ~s", rect);
! p[i].x = Get_Integer (Car (rect)); rect = Cdr (rect);
! p[i].y = Get_Integer (Car (rect)); rect = Cdr (rect);
! p[i].width = Get_Integer (Car (rect)); rect = Cdr (rect);
! p[i].height = Get_Integer (Car (rect));
}
(*func)(dpy, dr, GCONTEXT(gc)->gc, p, n);
--- 156,172 ----
Check_Type (gc, T_Gc);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XRectangle*, n * sizeof (XRectangle));
for (i = 0; i < n; i++) {
! s48_value rect;
! rect = S48_VECTOR_REF(v, i);
Check_Type (rect, T_Pair);
if (Fast_Length (rect) != 4)
Primitive_Error ("invalid rectangle: ~s", rect);
! p[i].x = (int)s48_extract_integer (S48_CAR (rect)); rect = S48_CDR
(rect);
! p[i].y = (int)s48_extract_integer (S48_CAR (rect)); rect = S48_CDR
(rect);
! p[i].width = (int)s48_extract_integer (S48_CAR (rect)); rect = S48_CDR
(rect);
! p[i].height = (int)s48_extract_integer (S48_CAR (rect));
}
(*func)(dpy, dr, GCONTEXT(gc)->gc, p, n);
***************
*** 175,208 ****
}
! static Object P_Draw_Rectangles (d, gc, v) Object d, gc, v; {
return Internal_Draw_Rectangles (d, gc, v, XDrawRectangles);
}
! static Object P_Fill_Rectangles (d, gc, v) Object d, gc, v; {
return Internal_Draw_Rectangles (d, gc, v, XFillRectangles);
}
! static Object Internal_Draw_Arc (d, gc, x, y, w, h, a1, a2, func)
! Object d, gc, x, y, w, h, a1, a2; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! (*func)(dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x), Get_Integer (y),
! Get_Integer (w), Get_Integer (h), Get_Integer (a1), Get_Integer (a2));
return Void;
}
! static Object P_Draw_Arc (d, gc, x, y, w, h, a1, a2)
! Object d, gc, x, y, w, h, a1, a2; {
return Internal_Draw_Arc (d, gc, x, y, w, h, a1, a2, XDrawArc);
}
! static Object P_Fill_Arc (d, gc, x, y, w, h, a1, a2)
! Object d, gc, x, y, w, h, a1, a2; {
return Internal_Draw_Arc (d, gc, x, y, w, h, a1, a2, XFillArc);
}
! static Object Internal_Draw_Arcs (d, gc, v, func) Object d, gc, v;
int (*func)(); {
Display *dpy;
--- 175,208 ----
}
! static s48_value P_Draw_Rectangles (d, gc, v) s48_value d, gc, v; {
return Internal_Draw_Rectangles (d, gc, v, XDrawRectangles);
}
! static s48_value P_Fill_Rectangles (d, gc, v) s48_value d, gc, v; {
return Internal_Draw_Rectangles (d, gc, v, XFillRectangles);
}
! static s48_value Internal_Draw_Arc (d, gc, x, y, w, h, a1, a2, func)
! s48_value d, gc, x, y, w, h, a1, a2; int (*func)(); {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
Check_Type (gc, T_Gc);
! (*func)(dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer (x),
(int)s48_extract_integer (y),
! (int)s48_extract_integer (w), (int)s48_extract_integer (h),
(int)s48_extract_integer (a1), (int)s48_extract_integer (a2));
return Void;
}
! static s48_value P_Draw_Arc (d, gc, x, y, w, h, a1, a2)
! s48_value d, gc, x, y, w, h, a1, a2; {
return Internal_Draw_Arc (d, gc, x, y, w, h, a1, a2, XDrawArc);
}
! static s48_value P_Fill_Arc (d, gc, x, y, w, h, a1, a2)
! s48_value d, gc, x, y, w, h, a1, a2; {
return Internal_Draw_Arc (d, gc, x, y, w, h, a1, a2, XFillArc);
}
! static s48_value Internal_Draw_Arcs (d, gc, v, func) s48_value d, gc, v;
int (*func)(); {
Display *dpy;
***************
*** 213,231 ****
Check_Type (gc, T_Gc);
! n = VECTOR(v)->size;
Alloca (p, XArc*, n * sizeof (XArc));
for (i = 0; i < n; i++) {
! Object arc;
! arc = VECTOR(v)->data[i];
Check_Type (arc, T_Pair);
if (Fast_Length (arc) != 6)
Primitive_Error ("invalid arc: ~s", arc);
! p[i].x = Get_Integer (Car (arc)); arc = Cdr (arc);
! p[i].y = Get_Integer (Car (arc)); arc = Cdr (arc);
! p[i].width = Get_Integer (Car (arc)); arc = Cdr (arc);
! p[i].height = Get_Integer (Car (arc)); arc = Cdr (arc);
! p[i].angle1 = Get_Integer (Car (arc)); arc = Cdr (arc);
! p[i].angle2 = Get_Integer (Car (arc));
}
(*func)(dpy, dr, GCONTEXT(gc)->gc, p, n);
--- 213,231 ----
Check_Type (gc, T_Gc);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, XArc*, n * sizeof (XArc));
for (i = 0; i < n; i++) {
! s48_value arc;
! arc = S48_VECTOR_REF(v, i);
Check_Type (arc, T_Pair);
if (Fast_Length (arc) != 6)
Primitive_Error ("invalid arc: ~s", arc);
! p[i].x = (int)s48_extract_integer (S48_CAR (arc)); arc = S48_CDR (arc);
! p[i].y = (int)s48_extract_integer (S48_CAR (arc)); arc = S48_CDR (arc);
! p[i].width = (int)s48_extract_integer (S48_CAR (arc)); arc = S48_CDR
(arc);
! p[i].height = (int)s48_extract_integer (S48_CAR (arc)); arc = S48_CDR
(arc);
! p[i].angle1 = (int)s48_extract_integer (S48_CAR (arc)); arc = S48_CDR
(arc);
! p[i].angle2 = (int)s48_extract_integer (S48_CAR (arc));
}
(*func)(dpy, dr, GCONTEXT(gc)->gc, p, n);
***************
*** 234,247 ****
}
! static Object P_Draw_Arcs (d, gc, v) Object d, gc, v; {
return Internal_Draw_Arcs (d, gc, v, XDrawArcs);
}
! static Object P_Fill_Arcs (d, gc, v) Object d, gc, v; {
return Internal_Draw_Arcs (d, gc, v, XFillArcs);
}
! static Object P_Fill_Polygon (d, gc, v, relative, shape)
! Object d, gc, v, relative, shape; {
return Internal_Draw_Points (d, gc, v, relative, XFillPolygon, shape);
}
--- 234,247 ----
}
! static s48_value P_Draw_Arcs (d, gc, v) s48_value d, gc, v; {
return Internal_Draw_Arcs (d, gc, v, XDrawArcs);
}
! static s48_value P_Fill_Arcs (d, gc, v) s48_value d, gc, v; {
return Internal_Draw_Arcs (d, gc, v, XFillArcs);
}
! static s48_value P_Fill_Polygon (d, gc, v, relative, shape)
! s48_value d, gc, v, relative, shape; {
return Internal_Draw_Points (d, gc, v, relative, XFillPolygon, shape);
}
Index: init.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/init.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** init.c 2001/05/08 14:21:00 1.1
--- init.c 2001/05/14 13:48:37 1.2
***************
*** 1,21 ****
#include "xlib.h"
! static Object P_Xlib_Release_4_Or_Laterp () {
! return True;
}
! static Object P_Xlib_Release_5_Or_Laterp () {
#ifdef XLIB_RELEASE_5_OR_LATER
! return True;
#else
! return False;
#endif
}
! static Object P_Xlib_Release_6_Or_Laterp () {
#ifdef XLIB_RELEASE_6_OR_LATER
! return True;
#else
! return False;
#endif
}
--- 1,21 ----
#include "xlib.h"
! static s48_value P_Xlib_Release_4_Or_Laterp () {
! return S48_TRUE;
}
! static s48_value P_Xlib_Release_5_Or_Laterp () {
#ifdef XLIB_RELEASE_5_OR_LATER
! return S48_TRUE;
#else
! return S48_FALSE;
#endif
}
! static s48_value P_Xlib_Release_6_Or_Laterp () {
#ifdef XLIB_RELEASE_6_OR_LATER
! return S48_TRUE;
#else
! return S48_FALSE;
#endif
}
Index: key.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/key.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** key.c 2001/05/08 14:21:00 1.1
--- key.c 2001/05/14 13:48:37 1.2
***************
*** 5,33 ****
/* I don't know if XDisplayKeycodes() was already there in X11R4.
*/
! static Object P_Display_Min_Keycode (d) Object d; {
int mink, maxk;
Check_Type (d, T_Display);
XDisplayKeycodes(DISPLAY(d)->dpy, &mink, &maxk);
! return Make_Integer (mink);
}
! static Object P_Display_Max_Keycode (d) Object d; {
int mink, maxk;
Check_Type (d, T_Display);
XDisplayKeycodes(DISPLAY(d)->dpy, &mink, &maxk);
! return Make_Integer (maxk);
}
#else
! static Object P_Display_Min_Keycode (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DISPLAY(d)->dpy->min_keycode);
}
! static Object P_Display_Max_Keycode (d) Object d; {
Check_Type (d, T_Display);
! return Make_Integer (DISPLAY(d)->dpy->max_keycode);
}
#endif
--- 5,33 ----
/* I don't know if XDisplayKeycodes() was already there in X11R4.
*/
! static s48_value P_Display_Min_Keycode (d) s48_value d; {
int mink, maxk;
Check_Type (d, T_Display);
XDisplayKeycodes(DISPLAY(d)->dpy, &mink, &maxk);
! return s48_enter_integer (mink);
}
! static s48_value P_Display_Max_Keycode (d) s48_value d; {
int mink, maxk;
Check_Type (d, T_Display);
XDisplayKeycodes(DISPLAY(d)->dpy, &mink, &maxk);
! return s48_enter_integer (maxk);
}
#else
! static s48_value P_Display_Min_Keycode (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DISPLAY(d)->dpy->min_keycode);
}
! static s48_value P_Display_Max_Keycode (d) s48_value d; {
Check_Type (d, T_Display);
! return s48_enter_integer (DISPLAY(d)->dpy->max_keycode);
}
#endif
***************
*** 37,41 ****
/* I'm not sure if this works correctly in X11R4:
*/
! static Object P_Display_Keysyms_Per_Keycode (d) Object d; {
KeySym *ksyms;
int mink, maxk, ksyms_per_kode;
--- 37,41 ----
/* I'm not sure if this works correctly in X11R4:
*/
! static s48_value P_Display_Keysyms_Per_Keycode (d) s48_value d; {
KeySym *ksyms;
int mink, maxk, ksyms_per_kode;
***************
*** 45,53 ****
ksyms = XGetKeyboardMapping(DISPLAY(d)->dpy, (KeyCode)mink,
maxk - mink + 1, &ksyms_per_kode);
! return Make_Integer (ksyms_per_kode);
}
#else
! static Object P_Display_Keysyms_Per_Keycode (d) Object d; {
Check_Type (d, T_Display);
/* Force initialization: */
--- 45,53 ----
ksyms = XGetKeyboardMapping(DISPLAY(d)->dpy, (KeyCode)mink,
maxk - mink + 1, &ksyms_per_kode);
! return s48_enter_integer (ksyms_per_kode);
}
#else
! static s48_value P_Display_Keysyms_Per_Keycode (d) s48_value d; {
Check_Type (d, T_Display);
/* Force initialization: */
***************
*** 55,99 ****
(void)XKeycodeToKeysym (DISPLAY(d)->dpy, DISPLAY(d)->dpy->min_keycode, 0);
Enable_Interrupts;
! return Make_Integer (DISPLAY(d)->dpy->keysyms_per_keycode);
}
#endif
! static Object P_String_To_Keysym (s) Object s; {
KeySym k;
k = XStringToKeysym (Get_Strsym (s));
! return k == NoSymbol ? False : Make_Unsigned_Long ((unsigned long)k);
}
! static Object P_Keysym_To_String (k) Object k; {
register char *s;
! s = XKeysymToString ((KeySym)Get_Long (k));
! return s ? Make_String (s, strlen (s)) : False;
}
! static Object P_Keycode_To_Keysym (d, k, index) Object d, k, index; {
! Object ret;
Check_Type (d, T_Display);
Disable_Interrupts;
! ret = Make_Unsigned_Long ((unsigned long)XKeycodeToKeysym
(DISPLAY(d)->dpy,
! Get_Integer (k), Get_Integer (index)));
Enable_Interrupts;
return ret;
}
! static Object P_Keysym_To_Keycode (d, k) Object d, k; {
! Object ret;
Check_Type (d, T_Display);
Disable_Interrupts;
! ret = Make_Unsigned (XKeysymToKeycode (DISPLAY(d)->dpy,
! (KeySym)Get_Long (k)));
Enable_Interrupts;
return ret;
}
! static Object P_Lookup_String (d, k, mask) Object d, k, mask; {
XKeyEvent e;
char buf[1024];
--- 55,99 ----
(void)XKeycodeToKeysym (DISPLAY(d)->dpy, DISPLAY(d)->dpy->min_keycode, 0);
Enable_Interrupts;
! return s48_enter_integer (DISPLAY(d)->dpy->keysyms_per_keycode);
}
#endif
! static s48_value P_String_To_Keysym (s) s48_value s; {
KeySym k;
k = XStringToKeysym (Get_Strsym (s));
! return k == NoSymbol ? S48_FALSE : s48_enter_integer ((unsigned long)k);
}
! static s48_value P_Keysym_To_String (k) s48_value k; {
register char *s;
! s = XKeysymToString ((KeySym)s48_extract_integer (k));
! return s ? Make_String (s, strlen (s)) : S48_FALSE;
}
! static s48_value P_Keycode_To_Keysym (d, k, index) s48_value d, k, index; {
! s48_value ret;
Check_Type (d, T_Display);
Disable_Interrupts;
! ret = s48_enter_integer ((unsigned long)XKeycodeToKeysym (DISPLAY(d)->dpy,
! (int)s48_extract_integer (k), (int)s48_extract_integer (index)));
Enable_Interrupts;
return ret;
}
! static s48_value P_Keysym_To_Keycode (d, k) s48_value d, k; {
! s48_value ret;
Check_Type (d, T_Display);
Disable_Interrupts;
! ret = s48_enter_integer (XKeysymToKeycode (DISPLAY(d)->dpy,
! (KeySym)s48_extract_integer (k)));
Enable_Interrupts;
return ret;
}
! static s48_value P_Lookup_String (d, k, mask) s48_value d, k, mask; {
XKeyEvent e;
char buf[1024];
***************
*** 104,108 ****
Check_Type (d, T_Display);
e.display = DISPLAY(d)->dpy;
! e.keycode = Get_Integer (k);
e.state = Symbols_To_Bits (mask, 1, State_Syms);
Disable_Interrupts;
--- 104,108 ----
Check_Type (d, T_Display);
e.display = DISPLAY(d)->dpy;
! e.keycode = (int)s48_extract_integer (k);
e.state = Symbols_To_Bits (mask, 1, State_Syms);
Disable_Interrupts;
***************
*** 112,116 ****
}
! static Object P_Rebind_Keysym (d, k, mods, str) Object d, k, mods, str; {
KeySym *p;
register i, n;
--- 112,116 ----
}
! static s48_value P_Rebind_Keysym (d, k, mods, str) s48_value d, k, mods, str;
{
KeySym *p;
register i, n;
***************
*** 120,128 ****
Check_Type (str, T_String);
Check_Type (mods, T_Vector);
! n = VECTOR(mods)->size;
Alloca (p, KeySym*, n * sizeof (KeySym));
for (i = 0; i < n; i++)
! p[i] = (KeySym)Get_Long (VECTOR(mods)->data[i]);
! XRebindKeysym (DISPLAY(d)->dpy, (KeySym)Get_Long (k), p, n,
(unsigned char *)STRING(str)->data, STRING(str)->size);
Alloca_End;
--- 120,128 ----
Check_Type (str, T_String);
Check_Type (mods, T_Vector);
! n = S48_VECTOR_LENGTH(mods);
Alloca (p, KeySym*, n * sizeof (KeySym));
for (i = 0; i < n; i++)
! p[i] = (KeySym)s48_extract_integer (VECTOR(mods)->data[i]);
! XRebindKeysym (DISPLAY(d)->dpy, (KeySym)s48_extract_integer (k), p, n,
(unsigned char *)STRING(str)->data, STRING(str)->size);
Alloca_End;
***************
*** 130,134 ****
}
! static Object P_Refresh_Keyboard_Mapping (w, event) Object w, event; {
static XMappingEvent fake;
--- 130,134 ----
}
! static s48_value P_Refresh_Keyboard_Mapping (w, event) s48_value w, event; {
static XMappingEvent fake;
Index: objects.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/objects.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** objects.c 2001/05/08 14:21:00 1.1
--- objects.c 2001/05/14 13:48:37 1.2
***************
*** 3,9 ****
#include "xlib.h"
! Object Sym_None;
! int Match_X_Obj (x, v) Object x; va_list v; {
register type = TYPE(x);
--- 3,9 ----
#include "xlib.h"
! s48_value Sym_None;
! int Match_X_Obj (x, v) s48_value x; va_list v; {
register type = TYPE(x);
Index: pixel.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/pixel.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** pixel.c 2001/05/08 14:21:00 1.1
--- pixel.c 2001/05/14 13:48:37 1.2
***************
*** 7,17 ****
Generic_Print (Pixel, "#[pixel 0x%lx]", PIXEL(x)->pix)
! Object Make_Pixel (val) unsigned long val; {
! Object pix;
pix = Find_Object (T_Pixel, (GENERIC)0, Match_X_Obj, val);
! if (Nullp (pix)) {
pix = Alloc_Object (sizeof (struct S_Pixel), T_Pixel, 0);
! PIXEL(pix)->tag = Null;
PIXEL(pix)->pix = val;
Register_Object (pix, (GENERIC)0, (PFO)0, 0);
--- 7,17 ----
Generic_Print (Pixel, "#[pixel 0x%lx]", PIXEL(x)->pix)
! s48_value Make_Pixel (val) unsigned long val; {
! s48_value pix;
pix = Find_Object (T_Pixel, (GENERIC)0, Match_X_Obj, val);
! if (S48_NULL_P (pix)) {
pix = Alloc_Object (sizeof (struct S_Pixel), T_Pixel, 0);
! PIXEL(pix)->tag = S48_NULL;
PIXEL(pix)->pix = val;
Register_Object (pix, (GENERIC)0, (PFO)0, 0);
***************
*** 20,33 ****
}
! unsigned long Get_Pixel (p) Object p; {
Check_Type (p, T_Pixel);
return PIXEL(p)->pix;
}
! static Object P_Pixel_Value (p) Object p; {
! return Make_Unsigned_Long (Get_Pixel (p));
}
! static Object P_Black_Pixel (d) Object d; {
Check_Type (d, T_Display);
return Make_Pixel (BlackPixel (DISPLAY(d)->dpy,
--- 20,33 ----
}
! unsigned long Get_Pixel (p) s48_value p; {
Check_Type (p, T_Pixel);
return PIXEL(p)->pix;
}
! static s48_value P_Pixel_Value (p) s48_value p; {
! return s48_enter_integer (Get_Pixel (p));
}
! static s48_value P_Black_Pixel (d) s48_value d; {
Check_Type (d, T_Display);
return Make_Pixel (BlackPixel (DISPLAY(d)->dpy,
***************
*** 35,39 ****
}
! static Object P_White_Pixel (d) Object d; {
Check_Type (d, T_Display);
return Make_Pixel (WhitePixel (DISPLAY(d)->dpy,
--- 35,39 ----
}
! static s48_value P_White_Pixel (d) s48_value d; {
Check_Type (d, T_Display);
return Make_Pixel (WhitePixel (DISPLAY(d)->dpy,
Index: pixmap.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/pixmap.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** pixmap.c 2001/05/08 14:21:00 1.1
--- pixmap.c 2001/05/14 13:48:37 1.2
***************
*** 9,22 ****
Generic_Get_Display (Pixmap, PIXMAP)
! static Object Internal_Make_Pixmap (finalize, dpy, pix)
Display *dpy; Pixmap pix; {
! Object pm;
if (pix == None)
return Sym_None;
pm = Find_Object (T_Pixmap, (GENERIC)dpy, Match_X_Obj, pix);
! if (Nullp (pm)) {
pm = Alloc_Object (sizeof (struct S_Pixmap), T_Pixmap, 0);
! PIXMAP(pm)->tag = Null;
PIXMAP(pm)->pm = pix;
PIXMAP(pm)->dpy = dpy;
--- 9,22 ----
Generic_Get_Display (Pixmap, PIXMAP)
! static s48_value Internal_Make_Pixmap (finalize, dpy, pix)
Display *dpy; Pixmap pix; {
! s48_value pm;
if (pix == None)
return Sym_None;
pm = Find_Object (T_Pixmap, (GENERIC)dpy, Match_X_Obj, pix);
! if (S48_NULL_P (pm)) {
pm = Alloc_Object (sizeof (struct S_Pixmap), T_Pixmap, 0);
! PIXMAP(pm)->tag = S48_NULL;
PIXMAP(pm)->pm = pix;
PIXMAP(pm)->dpy = dpy;
***************
*** 29,46 ****
/* Backwards compatibility: */
! Object Make_Pixmap (dpy, pix) Display *dpy; Pixmap pix; {
return Internal_Make_Pixmap (1, dpy, pix);
}
! Object Make_Pixmap_Foreign (dpy, pix) Display *dpy; Pixmap pix; {
return Internal_Make_Pixmap (0, dpy, pix);
}
! Pixmap Get_Pixmap (p) Object p; {
Check_Type (p, T_Pixmap);
return PIXMAP(p)->pm;
}
! Object P_Free_Pixmap (p) Object p; {
Check_Type (p, T_Pixmap);
if (!PIXMAP(p)->free)
--- 29,46 ----
/* Backwards compatibility: */
! s48_value Make_Pixmap (dpy, pix) Display *dpy; Pixmap pix; {
return Internal_Make_Pixmap (1, dpy, pix);
}
! s48_value Make_Pixmap_Foreign (dpy, pix) Display *dpy; Pixmap pix; {
return Internal_Make_Pixmap (0, dpy, pix);
}
! Pixmap Get_Pixmap (p) s48_value p; {
Check_Type (p, T_Pixmap);
return PIXMAP(p)->pm;
}
! s48_value P_Free_Pixmap (p) s48_value p; {
Check_Type (p, T_Pixmap);
if (!PIXMAP(p)->free)
***************
*** 51,70 ****
}
! static Object P_Create_Pixmap (d, w, h, depth) Object d, w, h, depth; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
! return Make_Pixmap (dpy, XCreatePixmap (dpy, dr, Get_Integer (w),
! Get_Integer (h), Get_Integer (depth)));
}
! static Object P_Create_Bitmap_From_Data (win, data, pw, ph)
! Object win, data, pw, ph; {
register w, h;
Check_Type (win, T_Window);
Check_Type (data, T_String);
! w = Get_Integer (pw);
! h = Get_Integer (ph);
if (w * h > 8 * STRING(data)->size)
Primitive_Error ("bitmap too small");
--- 51,70 ----
}
! static s48_value P_Create_Pixmap (d, w, h, depth) s48_value d, w, h, depth; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
! return Make_Pixmap (dpy, XCreatePixmap (dpy, dr, (int)s48_extract_integer
(w),
! (int)s48_extract_integer (h), (int)s48_extract_integer (depth)));
}
! static s48_value P_Create_Bitmap_From_Data (win, data, pw, ph)
! s48_value win, data, pw, ph; {
register w, h;
Check_Type (win, T_Window);
Check_Type (data, T_String);
! w = (int)s48_extract_integer (pw);
! h = (int)s48_extract_integer (ph);
if (w * h > 8 * STRING(data)->size)
Primitive_Error ("bitmap too small");
***************
*** 74,85 ****
}
! static Object P_Create_Pixmap_From_Bitmap_Data (win, data, pw, ph, fg, bg,
! depth) Object win, data, pw, ph, fg, bg, depth; {
register w, h;
Check_Type (win, T_Window);
Check_Type (data, T_String);
! w = Get_Integer (pw);
! h = Get_Integer (ph);
if (w * h > 8 * STRING(data)->size)
Primitive_Error ("bitmap too small");
--- 74,85 ----
}
! static s48_value P_Create_Pixmap_From_Bitmap_Data (win, data, pw, ph, fg, bg,
! depth) s48_value win, data, pw, ph, fg, bg, depth; {
register w, h;
Check_Type (win, T_Window);
Check_Type (data, T_String);
! w = (int)s48_extract_integer (pw);
! h = (int)s48_extract_integer (ph);
if (w * h > 8 * STRING(data)->size)
Primitive_Error ("bitmap too small");
***************
*** 87,94 ****
XCreatePixmapFromBitmapData (WINDOW(win)->dpy, WINDOW(win)->win,
STRING(data)->data, w, h, Get_Pixel (fg), Get_Pixel (bg),
! Get_Integer (depth)));
}
! static Object P_Read_Bitmap_File (d, fn) Object d, fn; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
--- 87,94 ----
XCreatePixmapFromBitmapData (WINDOW(win)->dpy, WINDOW(win)->win,
STRING(data)->data, w, h, Get_Pixel (fg), Get_Pixel (bg),
! (int)s48_extract_integer (depth)));
}
! static s48_value P_Read_Bitmap_File (d, fn) s48_value d, fn; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
***************
*** 96,101 ****
int r, xhot, yhot;
Pixmap bitmap;
! Object t, ret, x;
! GC_Node2;
Disable_Interrupts;
--- 96,101 ----
int r, xhot, yhot;
Pixmap bitmap;
! s48_value t, ret, x;
! S48_DECLARE_GC_PROTECT(2);
Disable_Interrupts;
***************
*** 105,121 ****
if (r != BitmapSuccess)
return Bits_To_Symbols ((unsigned long)r, 0, Bitmapstatus_Syms);
! t = ret = P_Make_List (Make_Integer (5), Null);
! GC_Link2 (ret, t);
x = Make_Pixmap (dpy, bitmap);
! Car (t) = x; t = Cdr (t);
! Car (t) = Make_Integer (width); t = Cdr (t);
! Car (t) = Make_Integer (height); t = Cdr (t);
! Car (t) = Make_Integer (xhot); t = Cdr (t);
! Car (t) = Make_Integer (yhot);
! GC_Unlink;
return ret;
}
! static Object P_Write_Bitmap_File (argc, argv) Object *argv; {
Pixmap pm;
int ret, xhot = -1, yhot = -1;
--- 105,121 ----
if (r != BitmapSuccess)
return Bits_To_Symbols ((unsigned long)r, 0, Bitmapstatus_Syms);
! t = ret = P_Make_List (s48_enter_integer (5), S48_NULL);
! S48_GC_PROTECT_2 (ret, t);
x = Make_Pixmap (dpy, bitmap);
! S48_CAR (t) = x; t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (width); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (height); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (xhot); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (yhot);
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_Write_Bitmap_File (argc, argv) s48_value *argv; {
Pixmap pm;
int ret, xhot = -1, yhot = -1;
***************
*** 125,134 ****
Primitive_Error ("both x-hot and y-hot must be specified");
if (argc == 6) {
! xhot = Get_Integer (argv[4]);
! yhot = Get_Integer (argv[5]);
}
Disable_Interrupts;
ret = XWriteBitmapFile (PIXMAP(argv[1])->dpy, Get_Strsym (argv[0]), pm,
! Get_Integer (argv[2]), Get_Integer (argv[3]), xhot, yhot);
Enable_Interrupts;
return Bits_To_Symbols ((unsigned long)ret, 0, Bitmapstatus_Syms);
--- 125,134 ----
Primitive_Error ("both x-hot and y-hot must be specified");
if (argc == 6) {
! xhot = (int)s48_extract_integer (argv[4]);
! yhot = (int)s48_extract_integer (argv[5]);
}
Disable_Interrupts;
ret = XWriteBitmapFile (PIXMAP(argv[1])->dpy, Get_Strsym (argv[0]), pm,
! (int)s48_extract_integer (argv[2]), (int)s48_extract_integer (argv[3]),
xhot, yhot);
Enable_Interrupts;
return Bits_To_Symbols ((unsigned long)ret, 0, Bitmapstatus_Syms);
Index: property.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/property.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** property.c 2001/05/08 14:21:00 1.1
--- property.c 2001/05/14 13:48:37 1.2
***************
*** 1,5 ****
#include "xlib.h"
! Object Sym_Now;
Generic_Predicate (Atom)
--- 1,5 ----
#include "xlib.h"
! s48_value Sym_Now;
Generic_Predicate (Atom)
***************
*** 9,21 ****
Generic_Print (Atom, "#[atom %lu]", ATOM(x)->atom)
! Object Make_Atom (a) Atom a; {
! Object atom;
if (a == None)
return Sym_None;
atom = Find_Object (T_Atom, (GENERIC)0, Match_X_Obj, a);
! if (Nullp (atom)) {
atom = Alloc_Object (sizeof (struct S_Atom), T_Atom, 0);
! ATOM(atom)->tag = Null;
ATOM(atom)->atom = a;
Register_Object (atom, (GENERIC)0, (PFO)0, 0);
--- 9,21 ----
Generic_Print (Atom, "#[atom %lu]", ATOM(x)->atom)
! s48_value Make_Atom (a) Atom a; {
! s48_value atom;
if (a == None)
return Sym_None;
atom = Find_Object (T_Atom, (GENERIC)0, Match_X_Obj, a);
! if (S48_NULL_P (atom)) {
atom = Alloc_Object (sizeof (struct S_Atom), T_Atom, 0);
! ATOM(atom)->tag = S48_NULL;
ATOM(atom)->atom = a;
Register_Object (atom, (GENERIC)0, (PFO)0, 0);
***************
*** 25,43 ****
/* Should be used with care */
! static Object P_Make_Atom (n) Object n; {
! return Make_Atom ((Atom)Get_Long (n));
}
! static Object P_Intern_Atom (d, name) Object d, name; {
Check_Type (d, T_Display);
return Make_Atom (XInternAtom (DISPLAY(d)->dpy, Get_Strsym (name), 0));
}
! static Object P_Find_Atom (d, name) Object d, name; {
Check_Type (d, T_Display);
return Make_Atom (XInternAtom (DISPLAY(d)->dpy, Get_Strsym (name), 1));
}
! static Object P_Atom_Name (d, a) Object d, a; {
register char *s;
--- 25,43 ----
/* Should be used with care */
! static s48_value P_Make_Atom (n) s48_value n; {
! return Make_Atom ((Atom)s48_extract_integer (n));
}
! static s48_value P_Intern_Atom (d, name) s48_value d, name; {
Check_Type (d, T_Display);
return Make_Atom (XInternAtom (DISPLAY(d)->dpy, Get_Strsym (name), 0));
}
! static s48_value P_Find_Atom (d, name) s48_value d, name; {
Check_Type (d, T_Display);
return Make_Atom (XInternAtom (DISPLAY(d)->dpy, Get_Strsym (name), 1));
}
! static s48_value P_Atom_Name (d, a) s48_value d, a; {
register char *s;
***************
*** 50,59 ****
}
! static Object P_List_Properties (w) Object w; {
register i;
int n;
register Atom *ap;
! Object v;
! GC_Node;
Check_Type (w, T_Window);
--- 50,59 ----
}
! static s48_value P_List_Properties (w) s48_value w; {
register i;
int n;
register Atom *ap;
! s48_value v;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (w, T_Window);
***************
*** 61,90 ****
ap = XListProperties (WINDOW(w)->dpy, WINDOW(w)->win, &n);
Enable_Interrupts;
! v = Make_Vector (n, Null);
! GC_Link (v);
for (i = 0; i < n; i++) {
! Object x;
x = Make_Atom (ap[i]);
! VECTOR(v)->data[i] = x;
}
! GC_Unlink;
XFree ((char *)ap);
return v;
}
! static Object P_Get_Property (w, prop, type, start, len, deletep)
! Object w, prop, type, start, len, deletep; {
Atom req_type = AnyPropertyType, actual_type;
int format;
unsigned long nitems, bytes_left;
unsigned char *data;
! Object ret, t, x;
register i;
! GC_Node2;
Check_Type (w, T_Window);
Check_Type (prop, T_Atom);
! if (!EQ(type, False)) {
Check_Type (type, T_Atom);
req_type = ATOM(type)->atom;
--- 61,90 ----
ap = XListProperties (WINDOW(w)->dpy, WINDOW(w)->win, &n);
Enable_Interrupts;
! v = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (v);
for (i = 0; i < n; i++) {
! s48_value x;
x = Make_Atom (ap[i]);
! S48_VECTOR_SET(v, i, x;)
}
! S48_GC_UNPROTECT;
XFree ((char *)ap);
return v;
}
! static s48_value P_Get_Property (w, prop, type, start, len, deletep)
! s48_value w, prop, type, start, len, deletep; {
Atom req_type = AnyPropertyType, actual_type;
int format;
unsigned long nitems, bytes_left;
unsigned char *data;
! s48_value ret, t, x;
register i;
! S48_DECLARE_GC_PROTECT(2);
Check_Type (w, T_Window);
Check_Type (prop, T_Atom);
! if (!S48_EQ_P(type, S48_FALSE)) {
Check_Type (type, T_Atom);
req_type = ATOM(type)->atom;
***************
*** 93,138 ****
Disable_Interrupts;
if (XGetWindowProperty (WINDOW(w)->dpy, WINDOW(w)->win, ATOM(prop)->atom,
! Get_Long (start), Get_Long (len),
! EQ(deletep, True), req_type, &actual_type, &format,
&nitems, &bytes_left, &data) != Success)
Primitive_Error ("cannot get property");
Enable_Interrupts;
! ret = t = P_Make_List (Make_Integer (4), Null);
! GC_Link2 (ret, t);
x = Make_Atom (actual_type);
! Car (t) = x; t = Cdr (t);
! x = Make_Integer (format);
! Car (t) = x; t = Cdr (t);
if (nitems) {
if (format == 8) {
! Object s;
x = Make_String ((char *)0, (int)nitems);
! s = Car (t) = x;
bcopy ((char *)data, STRING(s)->data, (int)nitems);
} else {
! Object v;
! GC_Node;
/* Assumes short is 16 bits and int is 32 bits.
*/
! v = Make_Vector ((int)nitems, Null);
! GC_Link (v);
for (i = 0; i < nitems; i++) {
! x = Make_Unsigned (format == 16 ?
*((short *)data + i) : *((int *)data + i));
! VECTOR(v)->data[i] = x;
}
! Car (t) = v;
! GC_Unlink;
}
}
! t = Cdr (t);
! x = Make_Unsigned_Long (bytes_left);
! Car (t) = x;
! GC_Unlink;
return ret;
}
! static Object P_Change_Property (w, prop, type, format, mode, data)
! Object w, prop, type, format, mode, data; {
register i, m, x, nitems, f;
char *buf;
--- 93,138 ----
Disable_Interrupts;
if (XGetWindowProperty (WINDOW(w)->dpy, WINDOW(w)->win, ATOM(prop)->atom,
! s48_extract_integer (start), s48_extract_integer (len),
! S48_EQ_P(deletep, S48_TRUE), req_type, &actual_type, &format,
&nitems, &bytes_left, &data) != Success)
Primitive_Error ("cannot get property");
Enable_Interrupts;
! ret = t = P_Make_List (s48_enter_integer (4), S48_NULL);
! S48_GC_PROTECT_2 (ret, t);
x = Make_Atom (actual_type);
! S48_CAR (t) = x; t = S48_CDR (t);
! x = s48_enter_integer (format);
! S48_CAR (t) = x; t = S48_CDR (t);
if (nitems) {
if (format == 8) {
! s48_value s;
x = Make_String ((char *)0, (int)nitems);
! s = S48_CAR (t) = x;
bcopy ((char *)data, STRING(s)->data, (int)nitems);
} else {
! s48_value v;
! S48_DECLARE_GC_PROTECT(1);
/* Assumes short is 16 bits and int is 32 bits.
*/
! v = s48_make_vector ((int)nitems, S48_NULL);
! S48_GC_PROTECT_1 (v);
for (i = 0; i < nitems; i++) {
! x = s48_enter_integer (format == 16 ?
*((short *)data + i) : *((int *)data + i));
! S48_VECTOR_SET(v, i, x;)
}
! S48_CAR (t) = v;
! S48_GC_UNPROTECT;
}
}
! t = S48_CDR (t);
! x = s48_enter_integer (bytes_left);
! S48_CAR (t) = x;
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_Change_Property (w, prop, type, format, mode, data)
! s48_value w, prop, type, format, mode, data; {
register i, m, x, nitems, f;
char *buf;
***************
*** 143,147 ****
Check_Type (type, T_Atom);
m = Symbols_To_Bits (mode, 0, Propmode_Syms);
! switch (f = Get_Integer (format)) {
case 8:
Check_Type (data, T_String);
--- 143,147 ----
Check_Type (type, T_Atom);
m = Symbols_To_Bits (mode, 0, Propmode_Syms);
! switch (f = (int)s48_extract_integer (format)) {
case 8:
Check_Type (data, T_String);
***************
*** 151,158 ****
case 16: case 32:
Check_Type (data, T_Vector);
! nitems = VECTOR(data)->size;
Alloca (buf, char*, nitems * (f / sizeof (char)));
for (i = 0; i < nitems; i++) {
! x = Get_Integer (VECTOR(data)->data[i]);
if (f == 16) {
if (x > 65535)
--- 151,158 ----
case 16: case 32:
Check_Type (data, T_Vector);
! nitems = S48_VECTOR_LENGTH(data);
Alloca (buf, char*, nitems * (f / sizeof (char)));
for (i = 0; i < nitems; i++) {
! x = (int)s48_extract_integer (VECTOR(data)->data[i]);
if (f == 16) {
if (x > 65535)
***************
*** 171,175 ****
}
! static Object P_Delete_Property (w, prop) Object w, prop; {
Check_Type (w, T_Window);
Check_Type (prop, T_Atom);
--- 171,175 ----
}
! static s48_value P_Delete_Property (w, prop) s48_value w, prop; {
Check_Type (w, T_Window);
Check_Type (prop, T_Atom);
***************
*** 178,182 ****
}
! static Object P_Rotate_Properties (w, v, delta) Object w, v, delta; {
Atom *p;
register i, n;
--- 178,182 ----
}
! static s48_value P_Rotate_Properties (w, v, delta) s48_value w, v, delta; {
Atom *p;
register i, n;
***************
*** 185,204 ****
Check_Type (w, T_Window);
Check_Type (v, T_Vector);
! n = VECTOR(v)->size;
Alloca (p, Atom*, n * sizeof (Atom));
for (i = 0; i < n; i++) {
! Object a;
! a = VECTOR(v)->data[i];
Check_Type (a, T_Atom);
p[i] = ATOM(a)->atom;
}
XRotateWindowProperties (WINDOW(w)->dpy, WINDOW(w)->win, p, n,
! Get_Integer (delta));
Alloca_End;
return Void;
}
! static Object P_Set_Selection_Owner (d, s, owner, time) Object d, s, owner,
time; {
Check_Type (d, T_Display);
--- 185,204 ----
Check_Type (w, T_Window);
Check_Type (v, T_Vector);
! n = S48_VECTOR_LENGTH(v);
Alloca (p, Atom*, n * sizeof (Atom));
for (i = 0; i < n; i++) {
! s48_value a;
! a = S48_VECTOR_REF(v, i);
Check_Type (a, T_Atom);
p[i] = ATOM(a)->atom;
}
XRotateWindowProperties (WINDOW(w)->dpy, WINDOW(w)->win, p, n,
! (int)s48_extract_integer (delta));
Alloca_End;
return Void;
}
! static s48_value P_Set_Selection_Owner (d, s, owner, time) s48_value d, s,
owner,
time; {
Check_Type (d, T_Display);
***************
*** 209,213 ****
}
! static Object P_Selection_Owner (d, s) Object d, s; {
Check_Type (d, T_Display);
Check_Type (s, T_Atom);
--- 209,213 ----
}
! static s48_value P_Selection_Owner (d, s) s48_value d, s; {
Check_Type (d, T_Display);
Check_Type (s, T_Atom);
***************
*** 216,226 ****
}
! static Object P_Convert_Selection (s, target, prop, w, time)
! Object s, target, prop, w, time; {
Atom p = None;
Check_Type (s, T_Atom);
Check_Type (target, T_Atom);
! if (!EQ(prop, Sym_None)) {
Check_Type (prop, T_Atom);
p = ATOM(prop)->atom;
--- 216,226 ----
}
! static s48_value P_Convert_Selection (s, target, prop, w, time)
! s48_value s, target, prop, w, time; {
Atom p = None;
Check_Type (s, T_Atom);
Check_Type (target, T_Atom);
! if (!S48_EQ_P(prop, Sym_None)) {
Check_Type (prop, T_Atom);
p = ATOM(prop)->atom;
Index: text.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/text.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** text.c 2001/05/08 14:21:00 1.1
--- text.c 2001/05/14 13:48:37 1.2
***************
*** 2,12 ****
extern XDrawText(), XDrawText16();
! static Object Sym_1byte, Sym_2byte;
! static Two_Byte (format) Object format; {
Check_Type (format, T_Symbol);
! if (EQ(format, Sym_1byte))
return 0;
! else if (EQ(format, Sym_2byte))
return 1;
Primitive_Error ("index format must be '1-byte or '2-byte");
--- 2,12 ----
extern XDrawText(), XDrawText16();
! static s48_value Sym_1byte, Sym_2byte;
! static Two_Byte (format) s48_value format; {
Check_Type (format, T_Symbol);
! if (S48_EQ_P(format, Sym_1byte))
return 0;
! else if (S48_EQ_P(format, Sym_2byte))
return 1;
Primitive_Error ("index format must be '1-byte or '2-byte");
***************
*** 14,19 ****
}
! static Get_1_Byte_Char (x) Object x; {
! register c = Get_Integer (x);
if (c < 0 || c > 255)
Range_Error (x);
--- 14,19 ----
}
! static Get_1_Byte_Char (x) s48_value x; {
! register c = (int)s48_extract_integer (x);
if (c < 0 || c > 255)
Range_Error (x);
***************
*** 21,26 ****
}
! static Get_2_Byte_Char (x) Object x; {
! register c = Get_Integer (x);
if (c < 0 || c > 65535)
Range_Error (x);
--- 21,26 ----
}
! static Get_2_Byte_Char (x) s48_value x; {
! register c = (int)s48_extract_integer (x);
if (c < 0 || c > 65535)
Range_Error (x);
***************
*** 34,42 ****
*/
! static Object Internal_Text_Metrics (font, t, f, width) Object font, t, f; {
char *s;
XChar2b *s2;
XFontStruct *info;
! Object *data;
register i, n;
int dir, fasc, fdesc;
--- 34,42 ----
*/
! static s48_value Internal_Text_Metrics (font, t, f, width) s48_value font, t,
f; {
char *s;
XChar2b *s2;
XFontStruct *info;
! s48_value *data;
register i, n;
int dir, fasc, fdesc;
***************
*** 46,50 ****
info = FONT(font)->info;
Check_Type (t, T_Vector);
! n = VECTOR(t)->size;
data = VECTOR(t)->data;
if (Two_Byte (f)) {
--- 46,50 ----
info = FONT(font)->info;
Check_Type (t, T_Vector);
! n = S48_VECTOR_LENGTH(t);
data = VECTOR(t)->data;
if (Two_Byte (f)) {
***************
*** 69,88 ****
}
Alloca_End;
! return width ? Make_Integer (i) : Record_To_Vector (Char_Info_Rec,
Char_Info_Size, Sym_Char_Info, FONT(font)->dpy, ~0L);
}
! static Object P_Text_Width (font, t, f) Object font, t, f; {
return Internal_Text_Metrics (font, t, f, 1);
}
! static Object P_Text_Extents (font, t, f) Object font, t, f; {
return Internal_Text_Metrics (font, t, f, 0);
}
! static Object P_Draw_Image_Text (d, gc, x, y, t, f) Object d, gc, x, y, t, f;
{
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
! Object *data;
register i, n;
char *s;
--- 69,88 ----
}
Alloca_End;
! return width ? s48_enter_integer (i) : Record_To_Vector (Char_Info_Rec,
Char_Info_Size, Sym_Char_Info, FONT(font)->dpy, ~0L);
}
! static s48_value P_Text_Width (font, t, f) s48_value font, t, f; {
return Internal_Text_Metrics (font, t, f, 1);
}
! static s48_value P_Text_Extents (font, t, f) s48_value font, t, f; {
return Internal_Text_Metrics (font, t, f, 0);
}
! static s48_value P_Draw_Image_Text (d, gc, x, y, t, f) s48_value d, gc, x, y,
t, f; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
! s48_value *data;
register i, n;
char *s;
***************
*** 92,96 ****
Check_Type (gc, T_Gc);
Check_Type (t, T_Vector);
! n = VECTOR(t)->size;
data = VECTOR(t)->data;
if (Two_Byte (f)) {
--- 92,96 ----
Check_Type (gc, T_Gc);
Check_Type (t, T_Vector);
! n = S48_VECTOR_LENGTH(t);
data = VECTOR(t)->data;
if (Two_Byte (f)) {
***************
*** 101,112 ****
s2[i].byte2 = c & 0xff;
}
! XDrawImageString16 (dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x),
! Get_Integer (y), s2, n);
} else {
Alloca (s, char*, n);
for (i = 0; i < n; i++)
s[i] = Get_1_Byte_Char (data[i]);
! XDrawImageString (dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x),
! Get_Integer (y), s, n);
}
Alloca_End;
--- 101,112 ----
s2[i].byte2 = c & 0xff;
}
! XDrawImageString16 (dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer
(x),
! (int)s48_extract_integer (y), s2, n);
} else {
Alloca (s, char*, n);
for (i = 0; i < n; i++)
s[i] = Get_1_Byte_Char (data[i]);
! XDrawImageString (dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer
(x),
! (int)s48_extract_integer (y), s, n);
}
Alloca_End;
***************
*** 114,121 ****
}
! static Object P_Draw_Poly_Text (d, gc, x, y, t, f) Object d, gc, x, y, t, f; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
! Object *data;
register i, n, j, k;
int twobyte, nitems;
--- 114,121 ----
}
! static s48_value P_Draw_Poly_Text (d, gc, x, y, t, f) s48_value d, gc, x, y,
t, f; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
! s48_value *data;
register i, n, j, k;
int twobyte, nitems;
***************
*** 128,132 ****
func = twobyte ? (int(*)())XDrawText16 : (int(*)())XDrawText;
Check_Type (t, T_Vector);
! if ((n = VECTOR(t)->size) == 0)
return Void;
for (data = VECTOR(t)->data, i = 0, nitems = 1; i < n; i++)
--- 128,132 ----
func = twobyte ? (int(*)())XDrawText16 : (int(*)())XDrawText;
Check_Type (t, T_Vector);
! if ((n = S48_VECTOR_LENGTH(t)) == 0)
return Void;
for (data = VECTOR(t)->data, i = 0, nitems = 1; i < n; i++)
***************
*** 165,169 ****
}
}
! (*func)(dpy, dr, GCONTEXT(gc)->gc, Get_Integer (x), Get_Integer (y),
items, nitems);
Alloca_End;
--- 165,169 ----
}
}
! (*func)(dpy, dr, GCONTEXT(gc)->gc, (int)s48_extract_integer (x),
(int)s48_extract_integer (y),
items, nitems);
Alloca_End;
Index: type.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/type.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** type.c 2001/05/08 14:21:00 1.1
--- type.c 2001/05/14 13:48:37 1.2
***************
*** 1,15 ****
#include "xlib.h"
! static Object Set_Attr_Slots;
! static Object Conf_Slots;
! static Object GC_Slots;
! static Object Geometry_Slots;
! static Object Win_Attr_Slots;
! static Object Font_Info_Slots;
! static Object Char_Info_Slots;
! static Object Wm_Hints_Slots;
! static Object Size_Hints_Slots;
! static Object Sym_Parent_Relative, Sym_Copy_From_Parent;
XSetWindowAttributes SWA;
--- 1,15 ----
#include "xlib.h"
! static s48_value Set_Attr_Slots;
! static s48_value Conf_Slots;
! static s48_value GC_Slots;
! static s48_value Geometry_Slots;
! static s48_value Win_Attr_Slots;
! static s48_value Font_Info_Slots;
! static s48_value Char_Info_Slots;
! static s48_value Wm_Hints_Slots;
! static s48_value Size_Hints_Slots;
! static s48_value Sym_Parent_Relative, Sym_Copy_From_Parent;
XSetWindowAttributes SWA;
***************
*** 109,113 ****
{ (char *)&GCV.dash_offset, "dash-offset", T_INT,
0, GCDashOffset },
! { (char *)&GCV.dashes, "dashes", T_CHAR,
0, GCDashList },
{0, 0, T_NONE, 0, 0 }
--- 109,113 ----
{ (char *)&GCV.dash_offset, "dash-offset", T_INT,
0, GCDashOffset },
! { (char *)&GCV.dashes, "dashes", T_s48_extract_char,
0, GCDashList },
{0, 0, T_NONE, 0, 0 }
***************
*** 270,299 ****
int Size_Hints_Size = sizeof Size_Hints_Rec / sizeof (RECORD);
! unsigned long Vector_To_Record (v, len, sym, rp) Object v, sym;
register RECORD *rp; {
! register Object *p;
unsigned long mask = 0;
Check_Type (v, T_Vector);
p = VECTOR(v)->data;
! if (VECTOR(v)->size != len && !EQ(p[0], sym))
Primitive_Error ("invalid argument");
for ( ; rp->slot; rp++) {
++p;
! if (rp->type == T_NONE || Nullp (*p))
continue;
switch (rp->type) {
case T_INT:
! *(int *)rp->slot = Get_Integer (*p); break;
case T_SHORT:
! *(short *)rp->slot = Get_Integer (*p); break;
! case T_CHAR:
! *(char *)rp->slot = Get_Integer (*p); break;
case T_PIXEL:
*(unsigned long *)rp->slot = Get_Pixel (*p); break;
case T_BACKGROUND:
! if (EQ(*p, Sym_None))
*(Pixmap *)rp->slot = None;
! else if (EQ(*p, Sym_Parent_Relative))
*(Pixmap *)rp->slot = ParentRelative;
else
--- 270,299 ----
int Size_Hints_Size = sizeof Size_Hints_Rec / sizeof (RECORD);
! unsigned long Vector_To_Record (v, len, sym, rp) s48_value v, sym;
register RECORD *rp; {
! register s48_value *p;
unsigned long mask = 0;
Check_Type (v, T_Vector);
p = VECTOR(v)->data;
! if (S48_VECTOR_LENGTH(v) != len && !S48_EQ_P(p[0], sym))
Primitive_Error ("invalid argument");
for ( ; rp->slot; rp++) {
++p;
! if (rp->type == T_NONE || S48_NULL_P (*p))
continue;
switch (rp->type) {
case T_INT:
! *(int *)rp->slot = (int)s48_extract_integer (*p); break;
case T_SHORT:
! *(short *)rp->slot = (int)s48_extract_integer (*p); break;
! case T_s48_extract_char:
! *(char *)rp->slot = (int)s48_extract_integer (*p); break;
case T_PIXEL:
*(unsigned long *)rp->slot = Get_Pixel (*p); break;
case T_BACKGROUND:
! if (S48_EQ_P(*p, Sym_None))
*(Pixmap *)rp->slot = None;
! else if (S48_EQ_P(*p, Sym_Parent_Relative))
*(Pixmap *)rp->slot = ParentRelative;
else
***************
*** 301,305 ****
break;
case T_BORDER:
! if (EQ(*p, Sym_Copy_From_Parent)) {
*(Pixmap *)rp->slot = CopyFromParent;
break;
--- 301,305 ----
break;
case T_BORDER:
! if (S48_EQ_P(*p, Sym_Copy_From_Parent)) {
*(Pixmap *)rp->slot = CopyFromParent;
break;
***************
*** 310,314 ****
case T_BOOL:
Check_Type (*p, T_Boolean);
! *(Bool *)rp->slot = (Bool)(FIXNUM(*p));
break;
case T_FONT:
--- 310,314 ----
case T_BOOL:
Check_Type (*p, T_Boolean);
! *(Bool *)rp->slot = (Bool)(s48_extract_integer(*p));
break;
case T_FONT:
***************
*** 336,349 ****
}
! Object Record_To_Vector (rp, len, sym, dpy, flags) Object sym;
register RECORD *rp; Display *dpy; unsigned long flags; {
register i;
! Object v, x;
! GC_Node2;
! v = Null;
! GC_Link2 (sym, v);
! v = Make_Vector (len, Null);
! VECTOR(v)->data[0] = sym;
for (i = 1; rp->slot; i++, rp++) {
if (rp->type == T_NONE)
--- 336,349 ----
}
! s48_value Record_To_Vector (rp, len, sym, dpy, flags) s48_value sym;
register RECORD *rp; Display *dpy; unsigned long flags; {
register i;
! s48_value v, x;
! S48_DECLARE_GC_PROTECT(2);
! v = S48_NULL;
! S48_GC_PROTECT_2 (sym, v);
! v = s48_make_vector (len, S48_NULL);
! S48_VECTOR_SET(v, 0, sym;)
for (i = 1; rp->slot; i++, rp++) {
if (rp->type == T_NONE)
***************
*** 351,362 ****
if (rp->mask && !(flags & rp->mask))
continue;
! x = Null;
switch (rp->type) {
case T_INT:
! x = Make_Integer (*(int *)rp->slot); break;
case T_SHORT:
! x = Make_Integer (*(short *)rp->slot); break;
! case T_CHAR:
! x = Make_Integer (*(char *)rp->slot); break;
case T_PIXEL:
x = Make_Pixel (*(unsigned long *)rp->slot); break;
--- 351,362 ----
if (rp->mask && !(flags & rp->mask))
continue;
! x = S48_NULL;
switch (rp->type) {
case T_INT:
! x = s48_enter_integer (*(int *)rp->slot); break;
case T_SHORT:
! x = s48_enter_integer (*(short *)rp->slot); break;
! case T_s48_extract_char:
! x = s48_enter_integer (*(char *)rp->slot); break;
case T_PIXEL:
x = Make_Pixel (*(unsigned long *)rp->slot); break;
***************
*** 375,383 ****
info = XQueryFont (dpy, *(Font *)rp->slot);
Enable_Interrupts;
! x = Make_Font_Foreign (dpy, False, *(Font *)rp->slot, info);
}
break;
case T_BOOL:
! x = *(Bool *)rp->slot ? True : False; break;
case T_COLORMAP:
x = Make_Colormap (0, dpy, *(Colormap *)rp->slot); break;
--- 375,383 ----
info = XQueryFont (dpy, *(Font *)rp->slot);
Enable_Interrupts;
! x = Make_Font_Foreign (dpy, S48_FALSE, *(Font *)rp->slot, info);
}
break;
case T_BOOL:
! x = *(Bool *)rp->slot ? S48_TRUE : S48_FALSE; break;
case T_COLORMAP:
x = Make_Colormap (0, dpy, *(Colormap *)rp->slot); break;
***************
*** 393,399 ****
Panic ("record->vector");
}
! VECTOR(v)->data[i] = x;
}
! GC_Unlink;
return v;
}
--- 393,399 ----
Panic ("record->vector");
}
! S48_VECTOR_SET(v, i, x;)
}
! S48_GC_UNPROTECT;
return v;
}
***************
*** 678,682 ****
SYMDESCR Initial_State_Syms[] = {
! { "dont-care", DontCareState },
{ "normal", NormalState },
{ "zoom", ZoomState },
--- 678,682 ----
SYMDESCR Initial_State_Syms[] = {
! { "dont-care", DontS48_CAReState },
{ "normal", NormalState },
{ "zoom", ZoomState },
***************
*** 765,787 ****
static Init_Record (rec, size, name, var) RECORD *rec; char *name;
! Object *var; {
! Object list, tail, cell;
register i;
char buf[128];
! GC_Node2;
! GC_Link2 (list, tail);
! for (list = tail = Null, i = 1; i < size; tail = cell, i++, rec++) {
cell = Intern (rec->name);
! cell = Cons (cell, Make_Integer (i));
! cell = Cons (cell, Null);
! if (Nullp (list))
list = cell;
else
! P_Set_Cdr (tail, cell);
}
sprintf (buf, "%s-slots", name);
Define_Variable (var, buf, list);
! GC_Unlink;
}
--- 765,787 ----
static Init_Record (rec, size, name, var) RECORD *rec; char *name;
! s48_value *var; {
! s48_value list, tail, cell;
register i;
char buf[128];
! S48_DECLARE_GC_PROTECT(2);
! S48_GC_PROTECT_2 (list, tail);
! for (list = tail = S48_NULL, i = 1; i < size; tail = cell, i++, rec++) {
cell = Intern (rec->name);
! cell = s48_cons (cell, s48_enter_integer (i));
! cell = s48_cons (cell, S48_NULL);
! if (S48_NULL_P (list))
list = cell;
else
! P_Set_S48_CDR (tail, cell);
}
sprintf (buf, "%s-slots", name);
Define_Variable (var, buf, list);
! S48_GC_UNPROTECT;
}
Index: util.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/util.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** util.c 2001/05/08 14:21:00 1.1
--- util.c 2001/05/14 13:48:37 1.2
***************
*** 1,5 ****
#include "xlib.h"
! static Object P_Get_Default (d, program, option) Object d, program, option; {
register char *ret;
--- 1,5 ----
#include "xlib.h"
! static s48_value P_Get_Default (d, program, option) s48_value d, program,
option; {
register char *ret;
***************
*** 8,24 ****
Get_Strsym (option)))
return Make_String (ret, strlen (ret));
! return False;
}
! static Object P_Resource_Manager_String (d) Object d; {
register char *ret;
Check_Type (d, T_Display);
ret = XResourceManagerString (DISPLAY(d)->dpy);
! return ret ? Make_String (ret, strlen (ret)) : False;
}
! static Object P_Parse_Geometry (string) Object string; {
! Object ret, t;
register mask;
int x, y;
--- 8,24 ----
Get_Strsym (option)))
return Make_String (ret, strlen (ret));
! return S48_FALSE;
}
! static s48_value P_Resource_Manager_String (d) s48_value d; {
register char *ret;
Check_Type (d, T_Display);
ret = XResourceManagerString (DISPLAY(d)->dpy);
! return ret ? Make_String (ret, strlen (ret)) : S48_FALSE;
}
! static s48_value P_Parse_Geometry (string) s48_value string; {
! s48_value ret, t;
register mask;
int x, y;
***************
*** 26,40 ****
mask = XParseGeometry (Get_Strsym (string), &x, &y, &w, &h);
! t = ret = P_Make_List (Make_Integer (6), False);
! if (mask & XNegative) Car (t) = True; t = Cdr (t);
! if (mask & YNegative) Car (t) = True; t = Cdr (t);
! if (mask & XValue) Car (t) = Make_Integer (x); t = Cdr (t);
! if (mask & YValue) Car (t) = Make_Integer (y); t = Cdr (t);
! if (mask & WidthValue) Car (t) = Make_Unsigned (w); t = Cdr (t);
! if (mask & HeightValue) Car (t) = Make_Unsigned (h);
return ret;
}
! static Object P_Parse_Color (d, cmap, spec) Object d, cmap, spec; {
XColor ret;
--- 26,40 ----
mask = XParseGeometry (Get_Strsym (string), &x, &y, &w, &h);
! t = ret = P_Make_List (s48_enter_integer (6), S48_FALSE);
! if (mask & XNegative) S48_CAR (t) = S48_TRUE; t = S48_CDR (t);
! if (mask & YNegative) S48_CAR (t) = S48_TRUE; t = S48_CDR (t);
! if (mask & XValue) S48_CAR (t) = s48_enter_integer (x); t = S48_CDR (t);
! if (mask & YValue) S48_CAR (t) = s48_enter_integer (y); t = S48_CDR (t);
! if (mask & WidthValue) S48_CAR (t) = s48_enter_integer (w); t = S48_CDR
(t);
! if (mask & HeightValue) S48_CAR (t) = s48_enter_integer (h);
return ret;
}
! static s48_value P_Parse_Color (d, cmap, spec) s48_value d, cmap, spec; {
XColor ret;
***************
*** 43,47 ****
&ret))
return Make_Color (ret.red, ret.green, ret.blue);
! return False;
}
--- 43,47 ----
&ret))
return Make_Color (ret.red, ret.green, ret.blue);
! return S48_FALSE;
}
Index: window.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/window.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** window.c 2001/05/08 14:21:00 1.1
--- window.c 2001/05/14 13:48:37 1.2
***************
*** 1,6 ****
#include "xlib.h"
! static Object Sym_Set_Attr, Sym_Get_Attr, Sym_Geo;
! Object Sym_Conf;
Generic_Predicate (Window)
--- 1,6 ----
#include "xlib.h"
! static s48_value Sym_Set_Attr, Sym_Get_Attr, Sym_Geo;
! s48_value Sym_Conf;
Generic_Predicate (Window)
***************
*** 12,17 ****
Generic_Get_Display (Window, WINDOW)
! Object Make_Window (finalize, dpy, win) Display *dpy; Window win; {
! Object w;
if (win == None)
--- 12,17 ----
Generic_Get_Display (Window, WINDOW)
! s48_value Make_Window (finalize, dpy, win) Display *dpy; Window win; {
! s48_value w;
if (win == None)
***************
*** 20,26 ****
return Intern ("pointer-root");
w = Find_Object (T_Window, (GENERIC)dpy, Match_X_Obj, win);
! if (Nullp (w)) {
w = Alloc_Object (sizeof (struct S_Window), T_Window, 0);
! WINDOW(w)->tag = Null;
WINDOW(w)->win = win;
WINDOW(w)->dpy = dpy;
--- 20,26 ----
return Intern ("pointer-root");
w = Find_Object (T_Window, (GENERIC)dpy, Match_X_Obj, win);
! if (S48_NULL_P (w)) {
w = Alloc_Object (sizeof (struct S_Window), T_Window, 0);
! WINDOW(w)->tag = S48_NULL;
WINDOW(w)->win = win;
WINDOW(w)->dpy = dpy;
***************
*** 33,38 ****
}
! Window Get_Window (w) Object w; {
! if (EQ(w, Sym_None))
return None;
Check_Type (w, T_Window);
--- 33,38 ----
}
! Window Get_Window (w) s48_value w; {
! if (S48_EQ_P(w, Sym_None))
return None;
Check_Type (w, T_Window);
***************
*** 40,44 ****
}
! Drawable Get_Drawable (d, dpyp) Object d; Display **dpyp; {
if (TYPE(d) == T_Window) {
*dpyp = WINDOW(d)->dpy;
--- 40,44 ----
}
! Drawable Get_Drawable (d, dpyp) s48_value d; Display **dpyp; {
if (TYPE(d) == T_Window) {
*dpyp = WINDOW(d)->dpy;
***************
*** 52,57 ****
}
! static Object P_Create_Window (parent, x, y, width, height, border_width,
attr)
! Object parent, x, y, width, height, border_width, attr; {
unsigned long mask;
Window win;
--- 52,57 ----
}
! static s48_value P_Create_Window (parent, x, y, width, height, border_width,
attr)
! s48_value parent, x, y, width, height, border_width, attr; {
unsigned long mask;
Window win;
***************
*** 60,65 ****
mask = Vector_To_Record (attr, Set_Attr_Size, Sym_Set_Attr, Set_Attr_Rec);
if ((win = XCreateWindow (WINDOW(parent)->dpy, WINDOW(parent)->win,
! Get_Integer (x), Get_Integer (y), Get_Integer (width),
! Get_Integer (height), Get_Integer (border_width),
CopyFromParent, CopyFromParent, CopyFromParent, mask, &SWA)) == 0)
Primitive_Error ("cannot create window");
--- 60,65 ----
mask = Vector_To_Record (attr, Set_Attr_Size, Sym_Set_Attr, Set_Attr_Rec);
if ((win = XCreateWindow (WINDOW(parent)->dpy, WINDOW(parent)->win,
! (int)s48_extract_integer (x), (int)s48_extract_integer (y),
(int)s48_extract_integer (width),
! (int)s48_extract_integer (height), (int)s48_extract_integer
(border_width),
CopyFromParent, CopyFromParent, CopyFromParent, mask, &SWA)) == 0)
Primitive_Error ("cannot create window");
***************
*** 67,71 ****
}
! static Object P_Configure_Window (w, conf) Object w, conf; {
unsigned long mask;
--- 67,71 ----
}
! static s48_value P_Configure_Window (w, conf) s48_value w, conf; {
unsigned long mask;
***************
*** 76,80 ****
}
! static Object P_Change_Window_Attributes (w, attr) Object w, attr; {
unsigned long mask;
--- 76,80 ----
}
! static s48_value P_Change_Window_Attributes (w, attr) s48_value w, attr; {
unsigned long mask;
***************
*** 85,89 ****
}
! static Object P_Get_Window_Attributes (w) Object w; {
Check_Type (w, T_Window);
XGetWindowAttributes (WINDOW(w)->dpy, WINDOW(w)->win, &WA);
--- 85,89 ----
}
! static s48_value P_Get_Window_Attributes (w) s48_value w; {
Check_Type (w, T_Window);
XGetWindowAttributes (WINDOW(w)->dpy, WINDOW(w)->win, &WA);
***************
*** 92,96 ****
}
! static Object P_Get_Geometry (d) Object d; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
--- 92,96 ----
}
! static s48_value P_Get_Geometry (d) s48_value d; {
Display *dpy;
Drawable dr = Get_Drawable (d, &dpy);
***************
*** 104,108 ****
}
! static Object P_Map_Window (w) Object w; {
Check_Type (w, T_Window);
XMapWindow (WINDOW(w)->dpy, WINDOW(w)->win);
--- 104,108 ----
}
! static s48_value P_Map_Window (w) s48_value w; {
Check_Type (w, T_Window);
XMapWindow (WINDOW(w)->dpy, WINDOW(w)->win);
***************
*** 110,114 ****
}
! static Object P_Unmap_Window (w) Object w; {
Check_Type (w, T_Window);
XUnmapWindow (WINDOW(w)->dpy, WINDOW(w)->win);
--- 110,114 ----
}
! static s48_value P_Unmap_Window (w) s48_value w; {
Check_Type (w, T_Window);
XUnmapWindow (WINDOW(w)->dpy, WINDOW(w)->win);
***************
*** 116,120 ****
}
! Object P_Destroy_Window (w) Object w; {
Check_Type (w, T_Window);
if (!WINDOW(w)->free)
--- 116,120 ----
}
! s48_value P_Destroy_Window (w) s48_value w; {
Check_Type (w, T_Window);
if (!WINDOW(w)->free)
***************
*** 125,129 ****
}
! static Object P_Destroy_Subwindows (w) Object w; {
Check_Type (w, T_Window);
XDestroySubwindows (WINDOW(w)->dpy, WINDOW(w)->win);
--- 125,129 ----
}
! static s48_value P_Destroy_Subwindows (w) s48_value w; {
Check_Type (w, T_Window);
XDestroySubwindows (WINDOW(w)->dpy, WINDOW(w)->win);
***************
*** 131,135 ****
}
! static Object P_Map_Subwindows (w) Object w; {
Check_Type (w, T_Window);
XMapSubwindows (WINDOW(w)->dpy, WINDOW(w)->win);
--- 131,135 ----
}
! static s48_value P_Map_Subwindows (w) s48_value w; {
Check_Type (w, T_Window);
XMapSubwindows (WINDOW(w)->dpy, WINDOW(w)->win);
***************
*** 137,141 ****
}
! static Object P_Unmap_Subwindows (w) Object w; {
Check_Type (w, T_Window);
XUnmapSubwindows (WINDOW(w)->dpy, WINDOW(w)->win);
--- 137,141 ----
}
! static s48_value P_Unmap_Subwindows (w) s48_value w; {
Check_Type (w, T_Window);
XUnmapSubwindows (WINDOW(w)->dpy, WINDOW(w)->win);
***************
*** 143,147 ****
}
! static Object P_Circulate_Subwindows (w, dir) Object w, dir; {
Check_Type (w, T_Window);
XCirculateSubwindows (WINDOW(w)->dpy, WINDOW(w)->win,
--- 143,147 ----
}
! static s48_value P_Circulate_Subwindows (w, dir) s48_value w, dir; {
Check_Type (w, T_Window);
XCirculateSubwindows (WINDOW(w)->dpy, WINDOW(w)->win,
***************
*** 150,160 ****
}
! static Object P_Query_Tree (w) Object w; {
Window root, parent, *children;
Display *dpy;
int i;
unsigned n;
! Object v, ret;
! GC_Node2;
Check_Type (w, T_Window);
--- 150,160 ----
}
! static s48_value P_Query_Tree (w) s48_value w; {
Window root, parent, *children;
Display *dpy;
int i;
unsigned n;
! s48_value v, ret;
! S48_DECLARE_GC_PROTECT(2);
Check_Type (w, T_Window);
***************
*** 163,231 ****
XQueryTree (dpy, WINDOW(w)->win, &root, &parent, &children, &n);
Enable_Interrupts;
! v = ret = Null;
! GC_Link2 (v, ret);
v = Make_Window (0, dpy, root);
! ret = Cons (v, Null);
v = Make_Window (0, dpy, parent);
! ret = Cons (v, ret);
! v = Make_Vector (n, Null);
for (i = 0; i < n; i++) {
! Object x;
x = Make_Window (0, dpy, children[i]);
! VECTOR(v)->data[i] = x;
}
! ret = Cons (v, ret);
! GC_Unlink;
return ret;
}
! static Object P_Translate_Coordinates (src, x, y, dst) Object src, x, y, dst;
{
int rx, ry;
Window child;
! Object l, t, z;
! GC_Node3;
Check_Type (src, T_Window);
Check_Type (dst, T_Window);
if (!XTranslateCoordinates (WINDOW(src)->dpy, WINDOW(src)->win,
! WINDOW(dst)->win, Get_Integer (x), Get_Integer (y), &rx, &ry,
&child))
! return False;
! l = t = P_Make_List (Make_Integer (3), Null);
! GC_Link3 (l, t, dst);
! Car (t) = Make_Integer (rx); t = Cdr (t);
! Car (t) = Make_Integer (ry), t = Cdr (t);
z = Make_Window (0, WINDOW(dst)->dpy, child);
! Car (t) = z;
! GC_Unlink;
return l;
}
! static Object P_Query_Pointer (win) Object win; {
! Object l, t, z;
Bool ret;
Window root, child;
int r_x, r_y, x, y;
unsigned int mask;
! GC_Node3;
Check_Type (win, T_Window);
ret = XQueryPointer (WINDOW(win)->dpy, WINDOW(win)->win, &root, &child,
&r_x, &r_y, &x, &y, &mask);
! t = l = P_Make_List (Make_Integer (8), Null);
! GC_Link3 (l, t, win);
! Car (t) = Make_Integer (x); t = Cdr (t);
! Car (t) = Make_Integer (y); t = Cdr (t);
! Car (t) = ret ? True : False; t = Cdr (t);
z = Make_Window (0, WINDOW(win)->dpy, root);
! Car (t) = z; t = Cdr (t);
! Car (t) = Make_Integer (r_x); t = Cdr (t);
! Car (t) = Make_Integer (r_y); t = Cdr (t);
z = Make_Window (0, WINDOW(win)->dpy, child);
! Car (t) = z; t = Cdr (t);
z = Bits_To_Symbols ((unsigned long)mask, 1, State_Syms);
! Car (t) = z;
! GC_Unlink;
return l;
}
--- 163,231 ----
XQueryTree (dpy, WINDOW(w)->win, &root, &parent, &children, &n);
Enable_Interrupts;
! v = ret = S48_NULL;
! S48_GC_PROTECT_2 (v, ret);
v = Make_Window (0, dpy, root);
! ret = s48_cons (v, S48_NULL);
v = Make_Window (0, dpy, parent);
! ret = s48_cons (v, ret);
! v = s48_make_vector (n, S48_NULL);
for (i = 0; i < n; i++) {
! s48_value x;
x = Make_Window (0, dpy, children[i]);
! S48_VECTOR_SET(v, i, x;)
}
! ret = s48_cons (v, ret);
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_Translate_Coordinates (src, x, y, dst) s48_value src, x,
y, dst; {
int rx, ry;
Window child;
! s48_value l, t, z;
! S48_DECLARE_GC_PROTECT(3);
Check_Type (src, T_Window);
Check_Type (dst, T_Window);
if (!XTranslateCoordinates (WINDOW(src)->dpy, WINDOW(src)->win,
! WINDOW(dst)->win, (int)s48_extract_integer (x),
(int)s48_extract_integer (y), &rx, &ry,
&child))
! return S48_FALSE;
! l = t = P_Make_List (s48_enter_integer (3), S48_NULL);
! S48_GC_PROTECT_3 (l, t, dst);
! S48_CAR (t) = s48_enter_integer (rx); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (ry), t = S48_CDR (t);
z = Make_Window (0, WINDOW(dst)->dpy, child);
! S48_CAR (t) = z;
! S48_GC_UNPROTECT;
return l;
}
! static s48_value P_Query_Pointer (win) s48_value win; {
! s48_value l, t, z;
Bool ret;
Window root, child;
int r_x, r_y, x, y;
unsigned int mask;
! S48_DECLARE_GC_PROTECT(3);
Check_Type (win, T_Window);
ret = XQueryPointer (WINDOW(win)->dpy, WINDOW(win)->win, &root, &child,
&r_x, &r_y, &x, &y, &mask);
! t = l = P_Make_List (s48_enter_integer (8), S48_NULL);
! S48_GC_PROTECT_3 (l, t, win);
! S48_CAR (t) = s48_enter_integer (x); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (y); t = S48_CDR (t);
! S48_CAR (t) = ret ? S48_TRUE : S48_FALSE; t = S48_CDR (t);
z = Make_Window (0, WINDOW(win)->dpy, root);
! S48_CAR (t) = z; t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (r_x); t = S48_CDR (t);
! S48_CAR (t) = s48_enter_integer (r_y); t = S48_CDR (t);
z = Make_Window (0, WINDOW(win)->dpy, child);
! S48_CAR (t) = z; t = S48_CDR (t);
z = Bits_To_Symbols ((unsigned long)mask, 1, State_Syms);
! S48_CAR (t) = z;
! S48_GC_UNPROTECT;
return l;
}
Index: wm.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/wm.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** wm.c 2001/05/08 14:21:00 1.1
--- wm.c 2001/05/14 13:48:37 1.2
***************
*** 1,15 ****
#include "xlib.h"
! static Object Sym_Pointer_Root;
! static Object P_Reparent_Window (w, parent, x, y) Object w, parent, x, y; {
Check_Type (w, T_Window);
Check_Type (parent, T_Window);
XReparentWindow (WINDOW(w)->dpy, WINDOW(w)->win, WINDOW(parent)->win,
! Get_Integer (x), Get_Integer (y));
return Void;
}
! static Object P_Install_Colormap (c) Object c; {
Check_Type (c, T_Colormap);
XInstallColormap (COLORMAP(c)->dpy, COLORMAP(c)->cm);
--- 1,15 ----
#include "xlib.h"
! static s48_value Sym_Pointer_Root;
! static s48_value P_Reparent_Window (w, parent, x, y) s48_value w, parent, x,
y; {
Check_Type (w, T_Window);
Check_Type (parent, T_Window);
XReparentWindow (WINDOW(w)->dpy, WINDOW(w)->win, WINDOW(parent)->win,
! (int)s48_extract_integer (x), (int)s48_extract_integer (y));
return Void;
}
! static s48_value P_Install_Colormap (c) s48_value c; {
Check_Type (c, T_Colormap);
XInstallColormap (COLORMAP(c)->dpy, COLORMAP(c)->cm);
***************
*** 17,21 ****
}
! static Object P_Uninstall_Colormap (c) Object c; {
Check_Type (c, T_Colormap);
XUninstallColormap (COLORMAP(c)->dpy, COLORMAP(c)->cm);
--- 17,21 ----
}
! static s48_value P_Uninstall_Colormap (c) s48_value c; {
Check_Type (c, T_Colormap);
XUninstallColormap (COLORMAP(c)->dpy, COLORMAP(c)->cm);
***************
*** 23,53 ****
}
! static Object P_List_Installed_Colormaps (w) Object w; {
int i, n;
Colormap *ret;
! Object v;
! GC_Node;
Check_Type (w, T_Window);
ret = XListInstalledColormaps (WINDOW(w)->dpy, WINDOW(w)->win, &n);
! v = Make_Vector (n, Null);
! GC_Link (v);
for (i = 0; i < n; i++) {
! Object c;
c = Make_Colormap (0, WINDOW(w)->dpy, ret[i]);
! VECTOR(v)->data[i] = c;
}
XFree ((char *)ret);
! GC_Unlink;
return v;
}
! static Object P_Set_Input_Focus (d, win, revert_to, time) Object d, win,
revert_to, time; {
Window focus = PointerRoot;
Check_Type (d, T_Display);
! if (!EQ(win, Sym_Pointer_Root))
focus = Get_Window (win);
XSetInputFocus (DISPLAY(d)->dpy, focus, Symbols_To_Bits (revert_to, 0,
--- 23,53 ----
}
! static s48_value P_List_Installed_Colormaps (w) s48_value w; {
int i, n;
Colormap *ret;
! s48_value v;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (w, T_Window);
ret = XListInstalledColormaps (WINDOW(w)->dpy, WINDOW(w)->win, &n);
! v = s48_make_vector (n, S48_NULL);
! S48_GC_PROTECT_1 (v);
for (i = 0; i < n; i++) {
! s48_value c;
c = Make_Colormap (0, WINDOW(w)->dpy, ret[i]);
! S48_VECTOR_SET(v, i, c;)
}
XFree ((char *)ret);
! S48_GC_UNPROTECT;
return v;
}
! static s48_value P_Set_Input_Focus (d, win, revert_to, time) s48_value d, win,
revert_to, time; {
Window focus = PointerRoot;
Check_Type (d, T_Display);
! if (!S48_EQ_P(win, Sym_Pointer_Root))
focus = Get_Window (win);
XSetInputFocus (DISPLAY(d)->dpy, focus, Symbols_To_Bits (revert_to, 0,
***************
*** 56,92 ****
}
! static Object P_Input_Focus (d) Object d; {
Window win;
int revert_to;
! Object ret, x;
! GC_Node;
Check_Type (d, T_Display);
XGetInputFocus (DISPLAY(d)->dpy, &win, &revert_to);
! ret = Cons (Null, Null);
! GC_Link (ret);
x = Make_Window (0, DISPLAY(d)->dpy, win);
! Car (ret) = x;
x = Bits_To_Symbols ((unsigned long)revert_to, 0, Revert_Syms);
! Cdr (ret) = x;
! GC_Unlink;
return ret;
}
! static Object P_General_Warp_Pointer (dpy, dst, dstx, dsty, src, srcx, srcy,
! srcw, srch) Object dpy, dst, dstx, dsty, src, srcx, srcy, srcw, srch; {
Check_Type (dpy, T_Display);
XWarpPointer (DISPLAY(dpy)->dpy, Get_Window (src), Get_Window (dst),
! Get_Integer (srcx), Get_Integer (srcy), Get_Integer (srcw),
! Get_Integer (srch), Get_Integer (dstx), Get_Integer (dsty));
return Void;
}
! static Object P_Bell (argc, argv) Object *argv; {
register percent = 0;
Check_Type (argv[0], T_Display);
if (argc == 2) {
! percent = Get_Integer (argv[1]);
if (percent < -100 || percent > 100)
Range_Error (argv[1]);
--- 56,92 ----
}
! static s48_value P_Input_Focus (d) s48_value d; {
Window win;
int revert_to;
! s48_value ret, x;
! S48_DECLARE_GC_PROTECT(1);
Check_Type (d, T_Display);
XGetInputFocus (DISPLAY(d)->dpy, &win, &revert_to);
! ret = s48_cons (S48_NULL, S48_NULL);
! S48_GC_PROTECT_1 (ret);
x = Make_Window (0, DISPLAY(d)->dpy, win);
! S48_CAR (ret) = x;
x = Bits_To_Symbols ((unsigned long)revert_to, 0, Revert_Syms);
! S48_CDR (ret) = x;
! S48_GC_UNPROTECT;
return ret;
}
! static s48_value P_General_Warp_Pointer (dpy, dst, dstx, dsty, src, srcx,
srcy,
! srcw, srch) s48_value dpy, dst, dstx, dsty, src, srcx, srcy, srcw,
srch; {
Check_Type (dpy, T_Display);
XWarpPointer (DISPLAY(dpy)->dpy, Get_Window (src), Get_Window (dst),
! (int)s48_extract_integer (srcx), (int)s48_extract_integer (srcy),
(int)s48_extract_integer (srcw),
! (int)s48_extract_integer (srch), (int)s48_extract_integer (dstx),
(int)s48_extract_integer (dsty));
return Void;
}
! static s48_value P_Bell (argc, argv) s48_value *argv; {
register percent = 0;
Check_Type (argv[0], T_Display);
if (argc == 2) {
! percent = (int)s48_extract_integer (argv[1]);
if (percent < -100 || percent > 100)
Range_Error (argv[1]);
***************
*** 96,107 ****
}
! static Object P_Set_Access_Control (dpy, on) Object dpy, on; {
Check_Type (dpy, T_Display);
Check_Type (on, T_Boolean);
! XSetAccessControl (DISPLAY(dpy)->dpy, EQ(on, True));
return Void;
}
! static Object P_Change_Save_Set (win, mode) Object win, mode; {
Check_Type (win, T_Window);
XChangeSaveSet (WINDOW(win)->dpy, WINDOW(win)->win,
--- 96,107 ----
}
! static s48_value P_Set_Access_Control (dpy, on) s48_value dpy, on; {
Check_Type (dpy, T_Display);
Check_Type (on, T_Boolean);
! XSetAccessControl (DISPLAY(dpy)->dpy, S48_EQ_P(on, S48_TRUE));
return Void;
}
! static s48_value P_Change_Save_Set (win, mode) s48_value win, mode; {
Check_Type (win, T_Window);
XChangeSaveSet (WINDOW(win)->dpy, WINDOW(win)->win,
***************
*** 110,114 ****
}
! static Object P_Set_Close_Down_Mode (dpy, mode) Object dpy, mode; {
Check_Type (dpy, T_Display);
XSetCloseDownMode (DISPLAY(dpy)->dpy,
--- 110,114 ----
}
! static s48_value P_Set_Close_Down_Mode (dpy, mode) s48_value dpy, mode; {
Check_Type (dpy, T_Display);
XSetCloseDownMode (DISPLAY(dpy)->dpy,
***************
*** 117,147 ****
}
! static Object P_Get_Pointer_Mapping (dpy) Object dpy; {
unsigned char map[256];
register i, n;
! Object ret;
Check_Type (dpy, T_Display);
n = XGetPointerMapping (DISPLAY(dpy)->dpy, map, 256);
! ret = Make_Vector (n, Null);
for (i = 0; i < n; i++)
! VECTOR(ret)->data[i] = Make_Integer (map[i]);
return ret;
}
! static Object P_Set_Pointer_Mapping (dpy, map) Object dpy, map; {
register i, n;
register unsigned char *p;
! Object ret;
Alloca_Begin;
Check_Type (dpy, T_Display);
Check_Type (map, T_Vector);
! n = VECTOR(map)->size;
Alloca (p, unsigned char*, n);
for (i = 0; i < n; i++)
! p[i] = Get_Integer (VECTOR(map)->data[i]);
ret = XSetPointerMapping (DISPLAY(dpy)->dpy, p, n) == MappingSuccess ?
! True : False;
Alloca_End;
return ret;
--- 117,147 ----
}
! static s48_value P_Get_Pointer_Mapping (dpy) s48_value dpy; {
unsigned char map[256];
register i, n;
! s48_value ret;
Check_Type (dpy, T_Display);
n = XGetPointerMapping (DISPLAY(dpy)->dpy, map, 256);
! ret = s48_make_vector (n, S48_NULL);
for (i = 0; i < n; i++)
! S48_VECTOR_SET(ret, i, s48_enter_integer (map[i]);)
return ret;
}
! static s48_value P_Set_Pointer_Mapping (dpy, map) s48_value dpy, map; {
register i, n;
register unsigned char *p;
! s48_value ret;
Alloca_Begin;
Check_Type (dpy, T_Display);
Check_Type (map, T_Vector);
! n = S48_VECTOR_LENGTH(map);
Alloca (p, unsigned char*, n);
for (i = 0; i < n; i++)
! p[i] = (int)s48_extract_integer (VECTOR(map)->data[i]);
ret = XSetPointerMapping (DISPLAY(dpy)->dpy, p, n) == MappingSuccess ?
! S48_TRUE : S48_FALSE;
Alloca_End;
return ret;
Index: xlib.h
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/xlib.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** xlib.h 2001/05/08 14:21:00 1.1
--- xlib.h 2001/05/14 13:48:37 1.2
***************
*** 3,8 ****
#include <X11/Xutil.h>
! #undef True
! #undef False
#ifndef NeedFunctionPrototypes /* Kludge */
--- 3,8 ----
#include <X11/Xutil.h>
! #undef S48_TRUE
! #undef S48_FALSE
#ifndef NeedFunctionPrototypes /* Kludge */
***************
*** 43,47 ****
struct S_Display {
! Object after;
Display *dpy;
char free;
--- 43,47 ----
struct S_Display {
! s48_value after;
Display *dpy;
char free;
***************
*** 49,53 ****
struct S_Gc {
! Object tag;
GC gc;
Display *dpy;
--- 49,53 ----
struct S_Gc {
! s48_value tag;
GC gc;
Display *dpy;
***************
*** 56,65 ****
struct S_Pixel {
! Object tag;
unsigned long pix;
};
struct S_Pixmap {
! Object tag;
Pixmap pm;
Display *dpy;
--- 56,65 ----
struct S_Pixel {
! s48_value tag;
unsigned long pix;
};
struct S_Pixmap {
! s48_value tag;
Pixmap pm;
Display *dpy;
***************
*** 68,72 ****
struct S_Window {
! Object tag;
Window win;
Display *dpy;
--- 68,72 ----
struct S_Window {
! s48_value tag;
Window win;
Display *dpy;
***************
*** 76,80 ****
struct S_Font {
! Object name;
Font id;
XFontStruct *info;
--- 76,80 ----
struct S_Font {
! s48_value name;
Font id;
XFontStruct *info;
***************
*** 83,87 ****
struct S_Colormap {
! Object tag;
Colormap cm;
Display *dpy;
--- 83,87 ----
struct S_Colormap {
! s48_value tag;
Colormap cm;
Display *dpy;
***************
*** 90,99 ****
struct S_Color {
! Object tag;
XColor c;
};
struct S_Cursor {
! Object tag;
Cursor cursor;
Display *dpy;
--- 90,99 ----
struct S_Color {
! s48_value tag;
XColor c;
};
struct S_Cursor {
! s48_value tag;
Cursor cursor;
Display *dpy;
***************
*** 102,106 ****
struct S_Atom {
! Object tag;
Atom atom;
};
--- 102,106 ----
struct S_Atom {
! s48_value tag;
Atom atom;
};
***************
*** 108,112 ****
enum Type {
T_NONE,
! T_INT, T_CHAR, T_PIXEL, T_PIXMAP, T_BOOL, T_FONT, T_COLORMAP, T_CURSOR,
T_WINDOW, T_MASK, T_SYM, T_SHORT, T_BACKGROUND, T_BORDER
};
--- 108,112 ----
enum Type {
T_NONE,
! T_INT, T_s48_extract_char, T_PIXEL, T_PIXMAP, T_BOOL, T_FONT, T_COLORMAP,
T_CURSOR,
T_WINDOW, T_MASK, T_SYM, T_SHORT, T_BACKGROUND, T_BORDER
};
***************
*** 132,136 ****
extern Font Get_Font P_((Object));
extern int Get_Screen_Number P_((Display*, Object));
! extern Object Get_Event_Args P_((XEvent*));
extern Pixmap Get_Pixmap P_((Object));
extern Time Get_Time P_((Object));
--- 132,136 ----
extern Font Get_Font P_((Object));
extern int Get_Screen_Number P_((Display*, Object));
! extern s48_value Get_Event_Args P_((XEvent*));
extern Pixmap Get_Pixmap P_((Object));
extern Time Get_Time P_((Object));
***************
*** 142,167 ****
extern int Match_X_Obj P_((ELLIPSIS));
extern void Open_Font_Maybe P_((Object));
! extern Object Make_Atom P_((Atom));
! extern Object Make_Color P_((unsigned int, unsigned int, unsigned int));
! extern Object Make_Colormap P_((int, Display*, Colormap));
! extern Object Make_Cursor P_((Display*, Cursor));
! extern Object Make_Cursor_Foreign P_((Display*, Cursor));
! extern Object Make_Display P_((int, Display*));
! extern Object Make_Font P_((Display*, Object, Font, XFontStruct*));
! extern Object Make_Font_Foreign P_((Display*, Object, Font, XFontStruct*));
! extern Object Make_Gc P_((int, Display*, GC));
! extern Object Make_Pixel P_((unsigned long));
! extern Object Make_Pixmap P_((Display*, Pixmap));
! extern Object Make_Pixmap_Foreign P_((Display*, Pixmap));
! extern Object Make_Window P_((int, Display*, Window));
! extern Object P_Close_Display P_((Object));
! extern Object P_Close_Font P_((Object));
! extern Object P_Destroy_Window P_((Object));
! extern Object P_Free_Colormap P_((Object));
! extern Object P_Free_Cursor P_((Object));
! extern Object P_Free_Gc P_((Object));
! extern Object P_Free_Pixmap P_((Object));
! extern Object P_Window_Unique_Id P_((Object));
! extern Object Record_To_Vector
P_((RECORD*, int, Object, Display*, unsigned long));
extern unsigned long Vector_To_Record P_((Object, int, Object, RECORD*));
--- 142,167 ----
extern int Match_X_Obj P_((ELLIPSIS));
extern void Open_Font_Maybe P_((Object));
! extern s48_value Make_Atom P_((Atom));
! extern s48_value Make_Color P_((unsigned int, unsigned int, unsigned int));
! extern s48_value Make_Colormap P_((int, Display*, Colormap));
! extern s48_value Make_Cursor P_((Display*, Cursor));
! extern s48_value Make_Cursor_Foreign P_((Display*, Cursor));
! extern s48_value Make_Display P_((int, Display*));
! extern s48_value Make_Font P_((Display*, Object, Font, XFontStruct*));
! extern s48_value Make_Font_Foreign P_((Display*, Object, Font, XFontStruct*));
! extern s48_value Make_Gc P_((int, Display*, GC));
! extern s48_value Make_Pixel P_((unsigned long));
! extern s48_value Make_Pixmap P_((Display*, Pixmap));
! extern s48_value Make_Pixmap_Foreign P_((Display*, Pixmap));
! extern s48_value Make_Window P_((int, Display*, Window));
! extern s48_value P_Close_Display P_((Object));
! extern s48_value P_Close_Font P_((Object));
! extern s48_value P_Destroy_Window P_((Object));
! extern s48_value P_Free_Colormap P_((Object));
! extern s48_value P_Free_Cursor P_((Object));
! extern s48_value P_Free_Gc P_((Object));
! extern s48_value P_Free_Pixmap P_((Object));
! extern s48_value P_Window_Unique_Id P_((Object));
! extern s48_value Record_To_Vector
P_((RECORD*, int, Object, Display*, unsigned long));
extern unsigned long Vector_To_Record P_((Object, int, Object, RECORD*));
***************
*** 196,200 ****
Ordering_Syms[], Byte_Order_Syms[], Saveset_Syms[], Closemode_Syms[];
! extern Object Sym_None, Sym_Now, Sym_Char_Info, Sym_Conf;
--- 196,200 ----
Ordering_Syms[], Byte_Order_Syms[], Saveset_Syms[], Closemode_Syms[];
! extern s48_value Sym_None, Sym_Now, Sym_Char_Info, Sym_Conf;
***************
*** 213,229 ****
* int T_Pixmap;
*
! * static Object P_Pixmapp (x) Object x; {
! * return TYPE(x) == T_Pixmap ? True : False;
* }
*/
#define Generic_Predicate(type) int conc(T_,type);\
\
! static Object conc3(P_,type,p) (x) Object x; {\
! return TYPE(x) == conc(T_,type) ? True : False;\
}
/* Generic_Equal (Pixmap, PIXMAP, pm) generates:
*
! * static Pixmap_Equal (x, y) Object x, y; {
* return PIXMAP(x)->pm == PIXMAP(y)->field
* && !PIXMAP(x)->free && !PIXMAP(y)->free;
--- 213,229 ----
* int T_Pixmap;
*
! * static s48_value P_Pixmapp (x) s48_value x; {
! * return TYPE(x) == T_Pixmap ? S48_TRUE : S48_FALSE;
* }
*/
#define Generic_Predicate(type) int conc(T_,type);\
\
! static s48_value conc3(P_,type,p) (x) s48_value x; {\
! return TYPE(x) == conc(T_,type) ? S48_TRUE : S48_FALSE;\
}
/* Generic_Equal (Pixmap, PIXMAP, pm) generates:
*
! * static Pixmap_Equal (x, y) s48_value x, y; {
* return PIXMAP(x)->pm == PIXMAP(y)->field
* && !PIXMAP(x)->free && !PIXMAP(y)->free;
***************
*** 231,235 ****
*/
#define Generic_Equal(type,cast,field) static conc(type,_Equal) (x, y)\
! Object x, y; {\
return cast(x)->field == cast(y)->field\
&& !cast(x)->free && !cast(y)->free;\
--- 231,235 ----
*/
#define Generic_Equal(type,cast,field) static conc(type,_Equal) (x, y)\
! s48_value x, y; {\
return cast(x)->field == cast(y)->field\
&& !cast(x)->free && !cast(y)->free;\
***************
*** 239,243 ****
*/
#define Generic_Simple_Equal(type,cast,field) static conc(type,_Equal) (x, y)\
! Object x, y; {\
return cast(x)->field == cast(y)->field;\
}
--- 239,243 ----
*/
#define Generic_Simple_Equal(type,cast,field) static conc(type,_Equal) (x, y)\
! s48_value x, y; {\
return cast(x)->field == cast(y)->field;\
}
***************
*** 247,251 ****
#define Generic_Equal_Dpy(type,cast,field) static conc(type,_Equal)\
(x, y)\
! Object x, y; {\
return cast(x)->field == cast(y)->field && cast(x)->dpy == cast(y)->dpy\
&& !cast(x)->free && !cast(y)->free;\
--- 247,251 ----
#define Generic_Equal_Dpy(type,cast,field) static conc(type,_Equal)\
(x, y)\
! s48_value x, y; {\
return cast(x)->field == cast(y)->field && cast(x)->dpy == cast(y)->dpy\
&& !cast(x)->free && !cast(y)->free;\
***************
*** 254,263 ****
/* Generic_Print (Pixmap, "#[pixmap %u]", PIXMAP(x)->pm) generates:
*
! * static Pixmap_Print (x, port, raw, depth, len) Object x, port; {
* Printf (port, "#[pixmap %u]", PIXMAP(x)->pm);
* }
*/
#define Generic_Print(type,fmt,how) static conc(type,_Print)\
! (x, port, raw, depth, len) Object x, port; {\
Printf (port, fmt, (unsigned)how);\
}
--- 254,263 ----
/* Generic_Print (Pixmap, "#[pixmap %u]", PIXMAP(x)->pm) generates:
*
! * static Pixmap_Print (x, port, raw, depth, len) s48_value x, port; {
* Printf (port, "#[pixmap %u]", PIXMAP(x)->pm);
* }
*/
#define Generic_Print(type,fmt,how) static conc(type,_Print)\
! (x, port, raw, depth, len) s48_value x, port; {\
Printf (port, fmt, (unsigned)how);\
}
***************
*** 276,286 ****
/* Generic_Get_Display (Pixmap, PIXMAP) generates:
*
! * static Object P_Pixmap_Display (x) Object x; {
* Check_Type (x, T_Pixmap);
* return Make_Display (PIXMAP(x)->dpy);
* }
*/
! #define Generic_Get_Display(type,cast) static Object conc3(P_,type,_Display)\
! (x) Object x; {\
Check_Type (x, conc(T_,type));\
return Make_Display (0, cast(x)->dpy);\
--- 276,286 ----
/* Generic_Get_Display (Pixmap, PIXMAP) generates:
*
! * static s48_value P_Pixmap_Display (x) s48_value x; {
* Check_Type (x, T_Pixmap);
* return Make_Display (PIXMAP(x)->dpy);
* }
*/
! #define Generic_Get_Display(type,cast) static s48_value
conc3(P_,type,_Display)\
! (x) s48_value x; {\
Check_Type (x, conc(T_,type));\
return Make_Display (0, cast(x)->dpy);\
|