*************************************************************************** Some selected X extensions based on /usr/include/X11/extensions/multibuf.h ***************************************************************************
UNSAFE INTERFACEXmbuf ; IMPORT Ctypes, X; FROM Ctypes IMPORT char, int, int_star, long_int, short, unsigned_int, unsigned_long; CONST X_MbufGetBufferVersion = 0; X_MbufCreateImageBuffers = 1; X_MbufDestroyImageBuffers = 2; X_MbufDisplayImageBuffers = 3; X_MbufSetMultiBufferAttributes = 4; X_MbufGetMultiBufferAttributes = 5; X_MbufSetBufferAttributes = 6; X_MbufGetBufferAttributes = 7; X_MbufGetBufferInfo = 8; X_MbufCreateStereoWindow = 9; X_MbufClearImageBufferArea = 10;
* update_action field
CONST MultibufferActionUndefined = 0; MultibufferActionBackground = 1; MultibufferActionUntouched = 2; MultibufferActionCopied = 3;
* update_hint field
MultibufferHintFrequent = 0; MultibufferHintIntermittent = 1; MultibufferHintStatic = 2;
* valuemask fields
MultibufferWindowUpdateHint : long_int = 1; MultibufferBufferEventMask : long_int = 1;
* mono vs. stereo and left vs. right
MultibufferModeMono = 0; MultibufferModeStereo = 1; MultibufferSideMono = 0; MultibufferSideLeft = 1; MultibufferSideRight = 2;
* clobber state
MultibufferUnclobbered = 0; MultibufferPartiallyClobbered = 1; MultibufferFullyClobbered = 2;
* event stuff
MultibufferClobberNotifyMask = 16_02000000; MultibufferUpdateNotifyMask = 16_04000000; MultibufferClobberNotify = 0; MultibufferUpdateNotify = 1; MultibufferNumberOfEvents = MultibufferUpdateNotify + 1; MultibufferBadBuffer = 0; MultibufferNumberOfErrors = MultibufferBadBuffer + 1;
* per-screen buffer info (there will be lists of them)
TYPE XmbufBufferInfo = RECORD visualid : X.VisualID; (* visual usuable at this depth *) max_buffers : short; (* most buffers for this visual *) depth : char; (* depth of buffers to be created *) pad : char; END; XmbufBufferInfoStar = UNTRACED REF XmbufBufferInfo; XmbufBufferInfoStarStar = UNTRACED REF XmbufBufferInfoStar;
* Extra definitions that will only be needed in the client
Multibuffer = X.XID; MultibufferStar = UNTRACED REF Multibuffer; XmbufClobberNotifyEvent = RECORD type : int; (* of event *) serial : unsigned_long; (* # of last request processed by server *) send_event : int; (* true if this came frome a SendEvent request *) display : X.DisplayStar; (* Display the event was read from *) buffer : Multibuffer; (* buffer of event *) state : int; (* see Clobbered constants above *) END; XmbufUpdateNotifyEvent = RECORD type : int; (* of event *) serial : unsigned_long; (* # of last request processed by server *) send_event : int; (* true if this came frome a SendEvent request *) display : X.DisplayStar; (* Display the event was read from *) buffer : Multibuffer; (* buffer of event *) END;
* per-window attributes that can be got
XmbufWindowAttributes = RECORD displayed_index : int; (* which buffer is being displayed *) update_action : int; (* Undefined, Background, Untouched, Copied *) update_hint : int; (* Frequent, Intermittent, Static *) window_mode : int; (* Mono, Stereo *) END; XmbufWindowAttributesStar = UNTRACED REF XmbufWindowAttributes;
* per-window attributes that can be set
XmbufSetWindowAttributes = RECORD update_hint : int; (* Frequent, Intermittent, Static *) END; XmbufSetWindowAttributesStar = UNTRACED REF XmbufSetWindowAttributes;
* per-buffer attributes that can be got
XmbufBufferAttributes = RECORD window : X.Window; (* which window this belongs to *) event_mask : unsigned_long; (* events that have been selected *) buffer_index : int; (* which buffer is this *) side : int; (* Mono, Left, Right *) END; XmbufBufferAttributesStar = UNTRACED REF XmbufBufferAttributes;
* per-buffer attributes that can be set
XmbufSetBufferAttributes = RECORD event_mask : unsigned_long; (* events that have been selected *) END; XmbufSetBufferAttributesStar = UNTRACED REF XmbufSetBufferAttributes;** is extension on server? **
<* EXTERNAL *> PROCEDURE XmbufQueryExtension ( display : X.DisplayStar; event_base_return : int_star; error_base_return : int_star) : X.Bool;** what is extension rev **
<* EXTERNAL *> PROCEDURE XmbufGetVersion ( display : X.DisplayStar; major_version_return : int_star; minor_version_return : int_star) : X.Status;** create buffers for window **
<* EXTERNAL *> PROCEDURE XmbufCreateBuffers ( display : X.DisplayStar; window : X.Window; count : Ctypes.int; updateAction : Ctypes.int; updateHint : Ctypes.int; xmbBuffers : MultibufferStar) : Ctypes.int;** destroy buffers for window **
<* EXTERNAL *> PROCEDURE XmbufDestroyBuffers ( display : X.DisplayStar; window : X.Window);** make buffers current **
<* EXTERNAL *> PROCEDURE XmbufDisplayBuffers ( display : X.DisplayStar; count : Ctypes.int; xmbBuffer : MultibufferStar; min_delay : Ctypes.int; max_delay : Ctypes.int);** get extension window attrs **
<* EXTERNAL *> PROCEDURE XmbufGetWindowAttributes ( display : X.DisplayStar; window : X.Window; attributes : XmbufWindowAttributesStar) : X.Status;** set extension window attrs **
<* EXTERNAL *> PROCEDURE XmbufChangeWindowAttributes ( display : X.DisplayStar; window : X.Window; valuemask : unsigned_long; attributes : XmbufSetWindowAttributesStar);** get buffer attrs **
<* EXTERNAL *> PROCEDURE XmbufGetBufferAttributes( display : X.DisplayStar; buffer : Multibuffer; attributes : XmbufBufferAttributesStar) : X.Status;** set buffer attrs **
<* EXTERNAL *> PROCEDURE XmbufChangeBufferAttributes ( display : X.DisplayStar; buffer : Multibuffer; valuemask : unsigned_long; attributes : XmbufSetBufferAttributesStar);** get mono and stereo parameters **
<* EXTERNAL *> PROCEDURE XmbufGetScreenInfo ( display : X.DisplayStar; drawable : X.Drawable; nmono_return : int_star; mono_info_return : XmbufBufferInfoStarStar; nstereo_return : int_star; stereo_info_return : XmbufBufferInfoStarStar) : X.Status;** stereo version of XCreateWindow **
<* EXTERNAL *> PROCEDURE XmbufCreateStereoWindow( display : X.DisplayStar; parent : X.Window; x : int; y : int; width : unsigned_int; height : unsigned_int; border_width : unsigned_int; depth : int; class : unsigned_int; (* InputOutput, InputOnly *) visual : X.VisualStar; valuemask : unsigned_long; attributes : X.XSetWindowAttributes; left_return : MultibufferStar; right_return : MultibufferStar) : X.Window; END Xmbuf.