## 5 Drawing Functions ¶

`(window-clear w)` clears the window to the background color.

`(window-force-output &optional w)`

Communication between the running program and X windows is done through a stream; actual drawing on the display is done asynchronously. `window-force-output` causes the current drawing commands, if any, to be sent to X. Without this, commands may be left in the stream buffer and may appear not to have been executed. The argument `w` is not used.

In all of the drawing functions, the `linewidth` argument is optional and defaults to `1`.

`(window-draw-line w from:vector to:vector linewidth)`
`(window-draw-line-xy w x1 y1 x2 y2 &optional linewidth op)`
`op` may be `xor` or `erase`.

`(window-draw-arrow-xy w x1 y1 x2 y2 &optional linewidth size)`
`(window-draw-arrow2-xy w x1 y1 x2 y2 &optional linewidth size)`
`(window-draw-arrowhead-xy w x1 y1 x2 y2 &optional linewidth size)`

These draw a line with an arrowhead at the second point, a line with an arrowhead at both points, or an arrowhead alone at the second point, respectively. `size` is the arrowhead size; the default is `(+ 20 (* linewidth 5))`.

`(window-draw-box-xy w x y width height linewidth)`
`(window-xor-box-xy w x y width height linewidth)`
`(window-draw-box w offset:vector size:vector linewidth)`
`(window-draw-box-corners w x1 y1 x2 y2 linewidth)`
where `(x1 y1)` and `(x2 y2)` are opposite corners.
`(window-draw-rcbox-xy w x y width height radius linewidth)`
draws a box with rounded corners.

`(window-draw-arc-xy w x y radiusx radiusy anglea angleb linewidth)`

`anglea` is the angle, in degrees, at which the arc is started. `angleb` is the angle, in degrees, that specifies the amount of arc to be drawn, counterclockwise from the starting position.

`(window-draw-circle-xy w x y radius linewidth)`
`(window-draw-circle w center:vector radius linewidth)`
`(window-draw-ellipse-xy w x y radiusx radiusy linewidth)`
`(window-draw-dot-xy w x y)`

`(window-erase-area-xy w left bottom width height)`
`(window-erase-area w offset:vector size:vector)`
`(window-copy-area-xy w fromx fromy tox toy width height)`
`(window-invert-area w offset:vector size:vector)`
`(window-invert-area-xy w left bottom width height)`

`(window-printat-xy w s x y)`
`(window-printat w s at:vector)`
`(window-prettyprintat-xy w s x y)`
`(window-prettyprintat w s at:vector)`
The argument `s` is printed at the specified position. `s` is stringified if necessary. Currently, the pretty-print versions are the same as the plain versions.

`(window-draw-border w)` draws a border just inside a window.