diff --git a/c/xlib/Makefile b/c/xlib/Makefile index 3946b5d..ace9be0 100644 --- a/c/xlib/Makefile +++ b/c/xlib/Makefile @@ -1,4 +1,4 @@ -OBJECTS = main.o display.o window.o type.o color.o colormap.o pixel.o gcontext.o event.o pixmap.o graphics.o font.o cursor.o text.o property.o wm.o client.o key.o error.o extension.o init.o util.o grab.o visual.o +OBJECTS = main.o display.o window.o type.o color.o colormap.o pixel.o gcontext.o event.o pixmap.o graphics.o font.o cursor.o text.o property.o wm.o client.o key.o error.o extension.o init.o util.o grab.o visual.o region.o $(OBJECTS): xlib.h .c.o: diff --git a/c/xlib/main.c b/c/xlib/main.c index 46c6ef2..b969637 100644 --- a/c/xlib/main.c +++ b/c/xlib/main.c @@ -23,6 +23,7 @@ extern void scx_init_init(); extern void scx_init_util(); extern void scx_init_grab(); extern void scx_init_visual(); +extern void scx_init_region(); int main(){ @@ -50,6 +51,7 @@ int main(){ s48_add_external_init(scx_init_util); s48_add_external_init(scx_init_grab); s48_add_external_init(scx_init_visual); + s48_add_external_init(scx_init_region); s48_main(8000000, 64000, "/afs/wsi/home/dfreese/i386_fbsd43/scsh-0.6/lib/scheme48/scsh.image", diff --git a/c/xlib/xlib.h b/c/xlib/xlib.h index de5418a..2e154c3 100644 --- a/c/xlib/xlib.h +++ b/c/xlib/xlib.h @@ -52,6 +52,8 @@ extern char* s48_extract_symbol(s48_value); #define SCX_EXTRACT_FONTSTRUCT(x) (XFontStruct*)s48_extract_integer(x) #define SCX_ENTER_VISUAL(x) s48_enter_integer((long)x) #define SCX_EXTRACT_VISUAL(x) (Visual*)s48_extract_integer(x) +#define SCX_ENTER_REGION(x) s48_enter_integer((long)x) +#define SCX_EXTRACT_REGION(x) (Region)s48_extract_integer(x) extern unsigned long AList_To_XWindowChanges(s48_value alist, XWindowChanges* WC); diff --git a/scheme/xlib/xlib-interfaces.scm b/scheme/xlib/xlib-interfaces.scm index 553454e..f127118 100644 --- a/scheme/xlib/xlib-interfaces.scm +++ b/scheme/xlib/xlib-interfaces.scm @@ -144,7 +144,9 @@ parse-color alloc-color-cells set-color-cell + set-color-cells create-colormap + copy-colormap-and-free )) (define-interface xlib-pixel-interface @@ -440,7 +442,30 @@ visual-id match-visual-info )) - + +(define-interface xlib-region-interface + (export region? + destroy-region + create-region + clip-box + region-empty? + region-equal? + point-in-region? + rectangle-in-region? + intersect-region + union-region + union-rectangle-with-region + subtract-region + xor-region + offset-region! + shrink-region! + polygon-region + set-region + copy-region! + duplicate-region + offset-region + shrink-region)) + ;; all together (define-interface xlib-interface @@ -466,4 +491,5 @@ xlib-utility-interface xlib-grab-interface xlib-visual-interface + xlib-region-interface )) \ No newline at end of file diff --git a/scheme/xlib/xlib-packages.scm b/scheme/xlib/xlib-packages.scm index 8d0ec2e..c1e1034 100644 --- a/scheme/xlib/xlib-packages.scm +++ b/scheme/xlib/xlib-packages.scm @@ -156,6 +156,12 @@ xlib-types) (files visual)) +(define-structure xlib-region xlib-region-interface + (open scheme + external-calls + xlib-types) + (files region)) + ;; all together (define-structure xlib xlib-interface @@ -181,5 +187,6 @@ xlib-utility xlib-grab xlib-visual + xlib-region ) (optimize auto-integrate)) diff --git a/scheme/xlib/xlib-type-interfaces.scm b/scheme/xlib/xlib-type-interfaces.scm index 8c1f405..b8f3d39 100644 --- a/scheme/xlib/xlib-type-interfaces.scm +++ b/scheme/xlib/xlib-type-interfaces.scm @@ -96,6 +96,17 @@ cursor-Xcursor free-cursor)) +(define-interface xlib-visual-type-interface + (export visual? + make-visual + visual-Xvisual)) + +(define-interface xlib-region-type-interface + (export region? + make-region + destroy-region + region-Xregion)) + ;; all in one (define-interface xlib-types-interface @@ -113,4 +124,6 @@ xlib-font-type-interface xlib-atom-type-interface xlib-cursor-type-interface + xlib-visual-type-interface + xlib-region-type-interface )) \ No newline at end of file diff --git a/scheme/xlib/xlib-type-package.scm b/scheme/xlib/xlib-type-package.scm index 3216626..997da76 100644 --- a/scheme/xlib/xlib-type-package.scm +++ b/scheme/xlib/xlib-type-package.scm @@ -29,4 +29,5 @@ font-type atom-type cursor-type - visual-type)) \ No newline at end of file + visual-type + region-type)) \ No newline at end of file