- window = XCreateSimpleWindow(display, RootWindow(display, screen),
- win_xpos, win_ypos, width, height, border_width,
- pen_fg, pen_bg);
-
-#ifndef MSDOS
- proto_atom = XInternAtom(display, "WM_PROTOCOLS", FALSE);
- delete_atom = XInternAtom(display, "WM_DELETE_WINDOW", FALSE);
- if ((proto_atom != None) && (delete_atom != None))
- XChangeProperty(display, window, proto_atom, XA_ATOM, 32,
- PropModePrepend, (unsigned char *) &delete_atom, 1);
-
- sprintf(icon_filename,"%s/%s",GFX_PATH,icon_pic.picture_filename);
- XReadBitmapFile(display,window,icon_filename,
- &icon_width,&icon_height,
- &icon_pixmap,&icon_hot_x,&icon_hot_y);
- if (!icon_pixmap)
- {
- fprintf(stderr, "%s: cannot read icon bitmap file '%s'.\n",
- progname,icon_filename);
- exit(-1);
- }
-
- sprintf(icon_filename,"%s/%s",GFX_PATH,icon_pic.picturemask_filename);
- XReadBitmapFile(display,window,icon_filename,
- &icon_width,&icon_height,
- &iconmask_pixmap,&icon_hot_x,&icon_hot_y);
- if (!iconmask_pixmap)
- {
- fprintf(stderr, "%s: cannot read icon bitmap file '%s'.\n",
- progname,icon_filename);
- exit(-1);
- }
-
- size_hints.width = size_hints.min_width = size_hints.max_width = width;
- size_hints.height = size_hints.min_height = size_hints.max_height = height;
- size_hints.flags = PSize | PMinSize | PMaxSize;
-
- if (win_xpos || win_ypos)
- {
- size_hints.x = win_xpos;
- size_hints.y = win_ypos;
- size_hints.flags |= PPosition;
- }
-
- if (!XStringListToTextProperty(&window_name, 1, &windowName))
- {
- fprintf(stderr, "%s: structure allocation for windowName failed.\n",
- progname);
- exit(-1);
- }
-
- if (!XStringListToTextProperty(&icon_name, 1, &iconName))
- {
- fprintf(stderr, "%s: structure allocation for iconName failed.\n",
- progname);
- exit(-1);
- }
-
- wm_hints.initial_state = NormalState;
- wm_hints.input = True;
- wm_hints.icon_pixmap = icon_pixmap;
- wm_hints.icon_mask = iconmask_pixmap;
- wm_hints.flags = StateHint | IconPixmapHint | IconMaskHint | InputHint;
-
- class_hints.res_name = progname;
- class_hints.res_class = "Rocks'n'Diamonds";
-
- XSetWMProperties(display, window, &windowName, &iconName,
- argv, argc, &size_hints, &wm_hints,
- &class_hints);
-
- XFree(windowName.value);
- XFree(iconName.value);
-
- /* Select event types wanted */
- window_event_mask = ExposureMask | StructureNotifyMask | FocusChangeMask |
- ButtonPressMask | ButtonReleaseMask | ButtonMotionMask |
- KeyPressMask | KeyReleaseMask;
- XSelectInput(display, window, window_event_mask);
-#endif
-
- /* create GC for drawing with window depth */
- gc_values.graphics_exposures = False;
- gc_values.foreground = pen_bg;
- gc_values.background = pen_bg;
- gc_valuemask = GCGraphicsExposures | GCForeground | GCBackground;
- gc = XCreateGC(display, window, gc_valuemask, &gc_values);