(define-interface xlib-display-interface
  (export display?
	  open-display
	  close-display
	  display-after-function 
	  after-function ;; compatibility with Elk, same as above
	  display-set-after-function! 
	  set-after-function! ;; compatibility with Elk, same as above

	  display-default-root-window
	  display-root-window ;; same as above
	  display-default-colormap
	  display-colormap ;; same as above
	  display-default-gcontext
	  display-default-depth
	  display-default-screen-number
	  display-cells
	  display-planes
	  display-string
	  display-vendor
	  display-protocol-version
	  display-screen-count
	  display-image-byte-order
	  display-bitmap-unit
	  display-bitmap-bit-order
	  display-bitmap-pad
	  display-width
	  display-height
	  display-width-mm
	  display-height-mm
	  display-motion-buffer-size
	  display-flush-output
	  display-wait-output
	  display-no-op
	  no-op ;; compatibility with Elk, same as above
	  display-list-depths
	  list-depths ;; compatibility with Elk, same as above
	  display-list-pixmap-formats
	  list-pixmap-formats ;; compatibility with Elk, same as above
	  synchronize
	  ))


(define-interface xlib-window-interface
  (export window?
	  drawable?
	  window-display
	  create-window	  
	  destroy-window
	  change-window-attributes
	  get-window-attributes
	  map-window
	  unmap-window

	  set-window-background-pixmap!
	  set-window-background-pixel!
	  set-window-border-pixmap!
	  set-window-border-pixel!
	  set-window-bit-gravity!
	  set-window-gravity!
	  set-window-backing-store!
	  set-window-backing-planes!
	  set-window-backing-pixel!
	  set-window-save-under!
	  set-window-event-mask!
	  set-window-do-not-propagate-mask!
	  set-window-override-redirect!
	  set-window-colormap!
	  set-window-cursor!

	  set-window-x!
	  set-window-y!
	  set-window-width!
	  set-window-height!
	  set-window-border-width!
	  set-window-sibling!
	  set-window-stack-mode!

	  window-x
	  window-y
	  window-width
	  window-height
	  window-border-width
	  window-depth
	  window-visual
	  window-root
	  window-class
	  window-bit-gravity
	  window-backing-store
	  window-backing-planes
	  window-backing-pixel
	  window-save-under
	  window-colormap
	  window-map-installed
	  window-map-state
	  window-all-event-masks
	  window-your-event-mask
	  window-do-not-propagate-mask 
	  window-override-redirect

	  destroy-subwindows
	  map-subwindows
	  unmap-subwindows
	  circulate-subwindows
	  
	  clear-window
	  raise-window
	  lower-window
	  restack-windows

	  query-tree
	  translate-coordinates
	  query-pointer
	  ))

(define-interface xlib-drawable-interface
  (export drawable?
	  drawable-root
	  drawable-x
	  drawable-y
	  drawable-width
	  drawable-height
	  drawable-border-width
	  drawable-depth))

(define-interface xlib-color-interface
  (export make-color
	  color?
	  color-rgb-values
	  query-color
	  query-colors
	  lookup-color))

(define-interface xlib-colormap-interface
  (export make-colormap
	  colormap?
	  free-colormap
	  colormap-display
	  alloc-color
	  alloc-named-color
	  ))

(define-interface xlib-pixel-interface
  (export pixel?
	  pixel-value
	  black-pixel
	  white-pixel
	  ))

(define-interface xlib-gcontext-interface
  (export gcontext?
	  gcontext-display
	  create-gcontext
	  copy-gcontext
	  free-gcontext

	  query-best-size
	  query-best-cursor
	  query-best-tile
	  query-best-stipple

	  gcontext-function
	  gcontext-plane-mask
	  gcontext-foreground
	  gcontext-background
	  gcontext-line-width
	  gcontext-line-style
	  gcontext-cap-style
	  gcontext-join-style
	  gcontext-fill-style
	  gcontext-fill-rule
	  gcontext-arc-mode
	  gcontext-tile
	  gcontext-stipple
	  gcontext-ts-x
	  gcontext-ts-y
	  gcontext-font
	  gcontext-subwindow-mode
	  gcontext-exposures
	  gcontext-clip-x
	  gcontext-clip-y
	  gcontext-clip-mask
	  gcontext-dash-offset
	  gcontext-dashes

	  set-gcontext-function!
	  set-gcontext-plane-mask!
	  set-gcontext-foreground!
	  set-gcontext-background!
	  set-gcontext-line-width!
	  set-gcontext-line-style!
	  set-gcontext-cap-style!
	  set-gcontext-join-style!
	  set-gcontext-fill-style!
	  set-gcontext-fill-rule!
	  set-gcontext-arc-mode!
	  set-gcontext-tile!
	  set-gcontext-stipple!
	  set-gcontext-ts-x!
	  set-gcontext-ts-y!
	  set-gcontext-font!
	  set-gcontext-subwindow-mode!
	  set-gcontext-exposures!
	  set-gcontext-clip-x!
	  set-gcontext-clip-y!
	  set-gcontext-clip-mask!
	  set-gcontext-dash-offset!

	  set-gcontext-clip-rectangles!
	  set-gcontext-dashlist!
	  ))


(define-interface xlib-graphics-interface
  (export clear-area
	  copy-area
	  copy-plane
	  draw-point
	  draw-points
	  draw-line
	  draw-lines
	  draw-segments
	  draw-rectangle
	  draw-rectangles
	  fill-rectangle
	  fill-rectangles
	  draw-arc
	  fill-arc
	  draw-arcs
	  fill-arcs
	  fill-polygon))


;; pixmap - not done!

(define-interface xlib-pixmap-interface 
  (export pixmap?
	  free-pixmap
	  pixmap-display))

(define-interface xlib-event-interface
  (export event-ready?
	  events-pending
	  next-event
	  peek-event))

;; all together

(define-interface xlib-interface
  (compound-interface xlib-display-interface
		      xlib-pixmap-interface
		      xlib-window-interface
		      xlib-drawable-interface
		      xlib-color-interface
		      xlib-colormap-interface
		      xlib-pixel-interface
		      xlib-gcontext-interface
		      xlib-graphics-interface
		      xlib-event-interface
		      ))