typedef struct {
int type; /* GraphicsExpose */
unsigned long serial; /* 最後にサーバに処理されたリクエストの番号 */
Bool send_event; /* SendEvent リクエストから送られてきた場合に真 */
Display *display; /* イベントが読み出されたディスプレイ */
Drawable drawable;
int x, y;
int width, height;
int count; /* 0 でない場合、少なくともこの数以上の GraphicsExpose イベントが続く */
int major_code; /* コア X プロトコルでは CopyArea あるいは CopyPlane */
int minor_code; /* コア X プロトコルでは定義されない */
} XGraphicsExposeEvent;
typedef struct {
int type; /* NoExpose */
unsigned long serial; /* 最後にサーバに処理されたリクエストの番号 */
Bool send_event; /* SendEvent リクエストから送られてきた場合に真 */
Display *display; /* イベントが読み出されたディスプレイ */
Drawable drawable;
int major_code; /* コア X プロトコルでは CopyArea あるいは CopyPlane */
int minor_code; /* コア X プロトコルでは定義されない */
} XNoExposeEvent;
これらのイベントを受け取ったとき、構造体の内容は以下のように設定され ている。
type メンバには、イベントの型を一意に識別する定数名が設定される。 例えば、X サーバがクライアントアプリケーションに GraphicsExpose イベントを通知するとき、X サーバは type メンバに GraphicsExpose を設定した XGraphicsExposeEvent 構造体を送る。 display メンバには、イベントが読み出されたディスプレイへのポインタが 設定される。 send_event メンバは、このイベント自身が SendEvent プロトコルリクエストから送られてきた場合に True が設定される。 serial メンバはプロトコルで通知されたシリアル番号を基に設定される。 ただし、最少桁の16ビットから完全32ビットの値に拡張される。 window メンバには、ツールキットのディスパッチャが最も便利に使えるウィ ンドウが設定される。
2つの構造体は共通のメンバを持つ(drawable, major_code, and minor_code)。 drawable メンバには、グラフィックスリクエストが実行された描画対象領域 のドロウアブルが設定される。 major_code メンバには、クライアントが実行したグラフィックスリクエスト が設定される。この値は X_CopyArea か X_CopyPlane のいずれかである。 X_CopyArea の場合は、 XCopyArea がこのリクエストを行った。 X_CopyPlane の場合には、 XCopyPlane がこのリクエストを行った。 これらの定数は <X11/Xproto.h> 内で定義されている。 minor_code member は major_code member と同様に、クライアントによって どのグラフィックスリクエストが行われたのかを示す。 しかし、minor_code メンバはコア X プロトコルでは定義されていない。この ような場合には 0 となるが、このメンバは拡張によって使うことができる。
XGraphicsExposeEvent 構造体は上記以外のメンバをもつ(x, y, width, height, count)。 x, y メンバは、ドロウアブルの原点に対する相対座標であり、長方形の左上 隅を示す。 width, height メンバには長方形の大きさ(広さ)が設定される。 cound メンバには、後に続く GraphicsExpose イベントの数が設定される。 count が 0 の場合には、このウィンドウに対してはそれ以上の GraphicsExpose イベントは続いて起こらない。 しかし、count が 0 でない場合は、このウィンドウに対して少なくともその 数(それ以上のこともある)の GraphicsExpose イベントが続いて起こる。