2 * webcam.c - fetch data from webcam
14 #include <X11/Xutil.h>
16 #include <X11/extensions/shape.h>
18 #include "ivac-logo.xpm"
22 #define XBM_REAL_WIDTH 512
23 #define XBM_HEIGHT 256
25 /* global variables */
27 Window ivac_win,icon_win;
32 void open_window(char *name,char *ivac_mask) {
35 int screen,width,height;
37 XSizeHints my_size_hints;
38 XClassHint my_class_hints;
45 screen=DefaultScreen(display);
46 root_win=DefaultRootWindow(display);
48 width=XBM_WIDTH; /* DisplayWidth(display,screen)/5; */
49 height=XBM_HEIGHT; /* DisplayHeight(diplay,screen)/5; */
50 my_size_hints.flags=USSize;
51 my_size_hints.width=width;
52 my_size_hints.height=height;
54 my_class_hints.res_name=name;
55 my_class_hints.res_class=name;
57 black=BlackPixel(display,screen);
58 white=WhitePixel(display,screen);
61 ivac_win=XCreateSimpleWindow(display,root_win,0,0,
65 icon_win=XCreateSimpleWindow(display,ivac_win,0,0,
70 /* set wm and class hints */
71 XSetWMNormalHints(display,ivac_win,&my_size_hints);
72 XSetClassHint(display,ivac_win,&my_class_hints);
74 /* select event input - what are we listening to? */
75 XSelectInput(display,ivac_win,
76 ExposureMask | ButtonPressMask | ButtonReleaseMask |
78 XSelectInput(display,icon_win,
79 ExposureMask | ButtonPressMask | ButtonReleaseMask |
82 /* set names for windows */
83 XStoreName(display,ivac_win,name);
84 XSetIconName(display,ivac_win,name);
86 /* graphics context values */
87 my_gc_val.foreground=black;
88 my_gc_val.background=white;
89 my_gc_val.graphics_exposures=False;
91 /* set graphics context */
92 my_gc=XCreateGC(display,ivac_win,
93 GCForeground | GCBackground | GCGraphicsExposures,
96 /* create pixmap mask and shape windows */
97 pixmap_mask=XCreateBitmapFromData(display,ivac_win,ivac_mask,
98 XBM_WIDTH,XBM_HEIGHT);
99 XShapeCombineMask(display,ivac_win,ShapeBounding,0,0,pixmap_mask,ShapeSet);
100 XShapeCombineMask(display,icon_win,ShapeBounding,0,0,pixmap_mask,ShapeSet);
102 /* define and set wmhints */
103 my_wm_hints.initial_state=WithdrawnState;
104 my_wm_hints.flags=StateHint;
105 my_wm_hints.icon_window=icon_win;
106 my_wm_hints.icon_x=my_size_hints.x;
107 my_wm_hints.icon_y=my_size_hints.y;
108 my_wm_hints.window_group=ivac_win;
110 StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
111 XSetWMHints(display,ivac_win,&my_wm_hints);
113 /* finaly ... map that stuff ;) */
114 XMapWindow(display,ivac_win);
120 int main(int argc,char **argv) {
122 /* local variables */
126 /* opening display */
127 display=XOpenDisplay(NULL); /* connect on local display :0 */
129 printf("cannot connect to xserver!\n");
133 /* minirgb initialization */
134 if (minirgb_init(display)) {
135 printf("minirgb initialization failed!\n");
139 open_window(argv[0],ivac_logo);
142 /* to be continued ... here is a test! */
145 printf("blaaaa, schmaeee\n");