The DirectBuffer API

int ggiDBGetBuffer(ggi_visual *vis, ggi_directbuffer_t *buf);
If *buf is NULL, buf will point to the first buffer.
If *buf is a valid buffer, buf will point to the next buffer.

Return Code: 0 for O.K. or error code else.
Example: see FIXME.


ggi_buffer_layout ggiDBGetLayout(ggi_directbuffer_t buf);
Get the layout of a buffer.
typedef enum {
	blPixelLinearBuffer,

	blLastBufferLayout
} ggi_buffer_layout;
Return Code: Returns the layout type of the buffer.
Example: see FIXME.


ggi_pixellinearbuffer *ggiDBGetPLB(ggi_directbuffer_t buf);
Get the ggi_pixellinearbuffer of a buffer.
typedef struct {
	void		*read;		/* buffer address for reads	*/
	void		*write;		/* buffer address for writes	*/
	ggi_uint	page_size;	/* zero for true linear buffers	*/

	ggi_uint	access;		/* supported access widths	*/
	ggi_uint	align;		/* alignment requirements	*/
	ggi_uint	swap;		/* swapping requirements	*/

	uintl		write_mask;

	/*		buffer layout	*/
	ggi_uint	bpp;		/* bits per pixel		*/
	ggi_sint	stride;		/* pixels per row		*/
	ggi_coord	origin; 	/* application area origin	*/
	ggi_coord	size;		/* size of application area	*/

	char 		colorstring[17];/* Define the meaning of the paColor? attributes. */

	/* Enumerator for often used modes for fast checks. */
	ggi_common_plb_setup	setup;	

	ggi_uint	numpad;		/* number of PADs */

	ggi_pixelattributedesc	pad[1];	/* allocate struct longer if necessary */

} ggi_pixellinearbuffer;

/* Annotation : known colorstrings are :
 *              - RGB
 *              - CMY
 *              - CMYK
 *              - K (greyscale)
 *		- I (indexed)
 *              - YUV
 *              - YCC
 */

Return Code: Returns a pointer to the ggi_pixellinearbuffer structure of a buffer or NULL on error.
Example: see FIXME.