annotate pkg-src/tree-x/dbl.h @ 163:0132846995bd r20-3b8

Import from CVS: tag r20-3b8
author cvs
date Mon, 13 Aug 2007 09:43:35 +0200
parents
children 85ec50267440
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
163
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
1 /* ----------------------------------------------------------------------------
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
2 * Double buffering code
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
3 * ----------------------------------------------------------------------------
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
4 */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
5
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
6 #include <stdio.h>
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
7 #include <X11/Xlib.h>
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
8
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
9 #define DBL_MAX_SURFACES 2
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
10 #define DBL_MIN_PLANES 2
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
11 #define DBL_MAX_PLANES 6
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
12 #define DBL_MAX_COLORS (1 << (DBL_MAX_PLANES >> 1))
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
13
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
14 typedef struct _surface {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
15 int mask; /* mask to use this surface */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
16 int offset; /* offset within colormap */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
17 int num_colors; /* number of colors in color array */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
18 XColor color[1]; /* the actual color array */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
19 } Surface;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
20
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
21 typedef struct _doublebuffer {
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
22 Display *display; /* X display for windows and pixmaps */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
23 Screen *screen; /* X screen */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
24 Window window; /* X window for this double buffer */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
25
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
26 int width; /* width of window */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
27 int height; /* height of window */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
28
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
29 Pixmap frame; /* pixmap for frame buffer */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
30 Pixmap backing; /* pixmap for backing store */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
31 Drawable drawable; /* copy of window/pixmap we draw in */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
32
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
33 GC gc; /* GC used to draw the drawable */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
34 Visual *visual; /* X visual */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
35 Colormap colormap; /* X colormap identifier */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
36 int depth; /* depth of screen in planes */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
37 int num_planes; /* number of planes used */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
38
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
39 /* surface information is used to do double buffering */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
40
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
41 int num_surfaces;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
42 int current_surface;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
43 Surface *surface[DBL_MAX_SURFACES];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
44
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
45 /* we need to remember which pixels and planes we allocated */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
46
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
47 int mask;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
48 long pixels[DBL_MAX_COLORS];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
49 long planes[DBL_MAX_PLANES];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
50
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
51 /* the pixel values one should use when drawing to the viewports */
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
52
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
53 int num_colors;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
54 int colors[DBL_MAX_COLORS];
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
55 } DoubleBuffer;
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
56
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
57
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
58 extern DoubleBuffer *DBLcreate_double_buffer();
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
59 extern void DBLdelete_double_buffer();
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
60 extern unsigned long DBLinq_background();
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
61 extern char *getenv();
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
62
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
63
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
64
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
65
0132846995bd Import from CVS: tag r20-3b8
cvs
parents:
diff changeset
66