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 イベントが続いて起こる。