1 #ifndef BLOBS_GFX_X_H_INCLUDED
2 #define BLOBS_GFX_X_H_INCLUDED
3 
4 #define MAX_RESOLUTION 4096
5 #define MIN_RESOLUTION 16
6 
7 #include <X11/Xlib.h>
8 #include <X11/Xutil.h>
9 
10 #define GFX_ADD_PIXEL(G,X,Y,P) G->cbuffer[X+Y*G->xres] = G->cbuffer[X+Y*G->xres]+P>255?255:G->cbuffer[X+Y*G->xres]+P
11 //((int)(P + G->cbuffer[X+Y*G->xres]))&0xff;
12 //#define GFX_ADD_PIXEL(G,X,Y,P) G->cbuffer[X+Y*G->xres]=P;
13 
14 #ifdef USE_XSHM_EXT
15 #include <sys/ipc.h>
16 #include <sys/shm.h>
17 #include <X11/extensions/XShm.h>
18 #endif
19 
20 /* required for fps details */
21 #include <sys/time.h>
22 
23 typedef struct {
24   Display *dpy;
25   int xres,yres; /* Display resolutions */
26   XVisualInfo xvs;
27   int rootwin;
28   Window win;
29   GC gc;
30   int renderer;  /* if set uses an alternative renderer */
31   XImage *xim;            /* screen / front buffer   */
32   unsigned char *cbuffer; /* char (8bit) back buffer */
33   unsigned long simple_map[256]; /* A simple colour map. */
34   unsigned long base_colour;
35   int default_xres, default_yres;
36   int xoff,yoff; /* where to put the image in the window */
37 #ifdef USE_XSHM_EXT
38   XShmSegmentInfo shminfo;
39 #endif
40 } Gfx;
41 
42 int  gfx_get_best_truecolor(Gfx *g);
43 int  gfx_SetupGfx(Gfx *g);
44 int  gfx_getkey(Gfx *g);
45 
46 void gfx_create_cmap(Gfx *gf);
47 void gfx_Print_Visual_Info(XVisualInfo *v);
48 void gfx_display_image(Gfx *g);
49 void gfx_cleanup(Gfx *g);
50 //void gfx_add_pixel(Gfx *g, int x, int y, unsigned char pixval);
51 #endif /* BLOBS_GFX_X_H_INCLUDED */
52 
53 void render_blurred_buffer(Gfx *g);
54