/* ==== open_xwindow.c =======================================================
 *
 *	Created : 89/07/12 CAP
 *	Editted : 91/10/12 CAP
 *
 *	91/10/12 CAP
 *	After a year hiatus we look at this code.
 */
#include "pxwidgets.h"

xwindow *open_xwindow(xwindow *parentwindow)
{
    int i;
    xparam *newparam;
    xwindow *newwindow;
    char *c,currentline[255],color_name[255];
    unsigned long valuemask;
    XSetWindowAttributes attributes;
    XSizeHints size_hints;
    int depth;
    XColor lr,*mr;

    newwindow = (xwindow *)malloc(sizeof(xwindow));
    newwindow->display	= parentwindow->display;
    newwindow->screen	= parentwindow->screen;
    newwindow->cmap	= parentwindow->cmap;

	newwindow->colors = NULL;

/* defaults */
    newparam = (xparam *)malloc(sizeof(xparam));
    newparam->x			= 0;
    newparam->y			= 0;
    newparam->width		= 640;
    newparam->height		= 400;
    newparam->border		= 2;
    newparam->border_color	= (XColor *)malloc(sizeof(XColor));
    newparam->border_color->pixel=
		BlackPixel(newwindow->display,newwindow->screen);
    newparam->background_color	= (XColor *)malloc(sizeof(XColor));
    newparam->background_color->pixel=
		WhitePixel(newwindow->display,newwindow->screen);

  valuemask=CWBackingStore|CWBitGravity;
  attributes.bit_gravity=CenterGravity;
  attributes.backing_store=Always;
  size_hints.flags= PSize | PMinSize;
  size_hints.width=newparam->width;
  size_hints.height=newparam->height;
  size_hints.min_width=newparam->width;
  size_hints.min_height=newparam->height;


  newwindow->window=XCreateSimpleWindow(newwindow->display,parentwindow->window,
			newparam->x,newparam->y,newparam->width,newparam->height,newparam->border,
			newparam->border_color->pixel,newparam->background_color->pixel);
  newwindow->gc=XCreateGC(newwindow->display,newwindow->window,NULL,NULL);

  XSetStandardProperties(newwindow->display,newwindow->window,
                         "calce","calce",None,0,0,&size_hints);
  XMapWindow(newwindow->display,newwindow->window);
  XFlush(newwindow->display);

  XChangeWindowAttributes(newwindow->display,newwindow->window,valuemask,&attributes);
  XFlush(newwindow->display);
  return (newwindow);
  }

