2001-05-08 10:21:00 -04:00
|
|
|
#include "xlib.h"
|
2001-06-11 11:25:39 -04:00
|
|
|
#include "scheme48.h"
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
s48_value Free_Colormap (s48_value Xcolormap, s48_value Xdisplay) {
|
|
|
|
Display* dpy = EXTRACT_DISPLAY(Xdisplay);
|
|
|
|
Colormap cm = EXTRACT_COLORMAP(Xcolormap);
|
|
|
|
XFreeColormap(dpy, cm);
|
|
|
|
return S48_UNSPECIFIC;
|
|
|
|
}
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
s48_value Alloc_Color(s48_value Xcolormap, s48_value Xcolor,
|
|
|
|
s48_value Xdisplay) {
|
|
|
|
XColor* cp = EXTRACT_COLOR(Xcolor);
|
|
|
|
Colormap cm = EXTRACT_COLORMAP(Xcolormap);
|
|
|
|
Display* dpy = EXTRACT_DISPLAY(Xdisplay);
|
|
|
|
int r;
|
|
|
|
|
|
|
|
r = XAllocColor (dpy, cm, cp);
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
if (!r) return S48_FALSE;
|
|
|
|
else return ENTER_PIXEL(cp->pixel);
|
|
|
|
}
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
s48_value Alloc_Named_Color(s48_value Xcolormap, s48_value color_name,
|
|
|
|
s48_value Xdisplay) {
|
|
|
|
Colormap cm = EXTRACT_COLORMAP(Xcolormap);
|
|
|
|
Display* dpy = EXTRACT_DISPLAY(Xdisplay);
|
|
|
|
XColor screen, exact;
|
|
|
|
int r;
|
|
|
|
s48_value ret;
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
S48_DECLARE_GC_PROTECT(1);
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
r = XAllocNamedColor (dpy, cm, s48_extract_string(color_name),
|
|
|
|
&screen, &exact);
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
if (!r) return S48_FALSE;
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
S48_GC_PROTECT_1(ret);
|
|
|
|
ret = s48_cons(Int_Extract_RGB_Values(exact), S48_NULL);
|
|
|
|
ret = s48_cons(Int_Extract_RGB_Values(screen), ret);
|
|
|
|
ret = s48_cons(ENTER_PIXEL(screen.pixel), ret);
|
2001-05-08 10:21:00 -04:00
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
S48_GC_UNPROTECT();
|
|
|
|
return ret;
|
2001-05-08 10:21:00 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-06-11 11:25:39 -04:00
|
|
|
void s48_init_colormap(void) {
|
|
|
|
S48_EXPORT_FUNCTION(Free_Colormap);
|
|
|
|
S48_EXPORT_FUNCTION(Alloc_Color);
|
|
|
|
S48_EXPORT_FUNCTION(Alloc_Named_Color);
|
2001-05-08 10:21:00 -04:00
|
|
|
}
|