Copyright (C) 1994, Digital Equipment Corp.
Created on Thu Feb 17 19:21:28 PST 1994 by najork
*************************************************************************** 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.