This is dbl.h in view mode; [Download] [Up]
/* ----------------------------------------------------------------------------
*
* Double buffering code, courtesy of Stephan Zachwieja
* Some modifications to suit particular needs by Mark Stern (Summer 1990)
*
* ----------------------------------------------------------------------------
*/
#include <stdio.h>
#include <X11/Xlib.h>
#define DBL_MAX_SURFACES 2
#define DBL_MIN_PLANES 2
#define DBL_MAX_PLANES 6
#define DBL_MAX_COLORS (1 << (DBL_MAX_PLANES >> 1))
typedef struct _surface {
int mask; /* mask to use this surface */
int offset; /* offset within colormap */
int num_colors; /* number of colors in color array */
XColor color[1]; /* the actual color array */
} Surface;
typedef struct _doublebuffer {
Display *display; /* X display for windows and pixmaps */
Screen *screen; /* X screen */
Window window; /* X window for this double buffer */
int width; /* width of window */
int height; /* height of window */
Pixmap frame; /* pixmap for frame buffer */
Pixmap backing; /* pixmap for backing store */
Drawable drawable; /* copy of window/pixmap we draw in */
GC gc; /* GC used to draw the drawable */
Visual *visual; /* X visual */
Colormap colormap; /* X colormap identifier */
int depth; /* depth of screen in planes */
int num_planes; /* number of planes used */
/* surface information is used to do double buffering */
int num_surfaces;
int current_surface;
Surface *surface[DBL_MAX_SURFACES];
/* we need to remember which pixels and planes we allocated */
int mask;
long pixels[DBL_MAX_COLORS];
long planes[DBL_MAX_PLANES];
/* the pixel values one should use when drawing to the viewports */
int num_colors;
int colors[DBL_MAX_COLORS];
} DoubleBuffer;
extern DoubleBuffer *DBLcreate_double_buffer();
extern void DBLdelete_double_buffer();
extern unsigned long DBLinq_background();
extern char *getenv();
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.