Region(X11)
重ならない矩形の集合として任意の領域を表すXlibのデータ型。クリップや、Exposeイベントの集約と再描画範囲の算出に使われる。
リージョンはXCreateRegionで空の状態から、あるいは多角形から作り、XUnionRectWithRegionや、他のリージョンとの積・差・排他的論理和で組み立てていく。内部では水平方向のバンドに並べた矩形のリストなので、重なり合う千個の矩形の和集合も、二重に数えられない一つのコンパクトな形に収まる。典型的な用途はExposeの処理である。ウィンドウの覆いが外れると、サーバーは見えるようになった部分ごとにイベントを送る。クライアントは残り件数が0になるまで各矩形をリージョンに足し込み、XSetRegionでグラフィックスコンテキストのクリップマスクに設定して、ちょうど1回だけ再描画する。マスクの外はサーバーが捨てる。
サーバー側にも同じ構造miRegionがあり、Shape、Damage、XFIXESの各拡張はこれを共通言語にしている。ウィンドウの形も損傷領域もリージョンであり、XFIXESは矩形のリストの代わりにリージョンそのものをネットワーク越しに送れるようにした。このコードは頑丈で、Cairoの下にあるラスタライザpixmanは、1987年のDECの著作権表示をファイルの先頭に残したまま、サーバーのリージョンコードを受け継いでいる。