/* note: unused Drawable d */ GC XCreateGC(Display *dpy, Drawable d, unsigned long valuemask, XGCValues *values) { GC gc; XGCValues *vp; if ((gc = (GC) Xmalloc(sizeof(struct _XGC))) == NULL) return NULL; if ((vp = (XGCValues *)Xmalloc(sizeof(XGCValues))) == NULL) { Xfree(gc); return NULL; } gc->ext_data = (XExtData *)vp; memcpy(vp, &initial_GC, sizeof(initial_GC)); gc->gid = GrNewGC(); /* X11 doesn't draw background, must set on all GrNewGC's*/ GrSetGCUseBackground(gc->gid, GR_FALSE); /* X11 defaults to fg=black, bg=white, NX is opposite...*/ if (!(valuemask & GCForeground)) XSetForeground(dpy, gc, 0L); /* black*/ if (!(valuemask & GCBackground)) XSetBackground(dpy, gc, ~0L); /* white*/ setupGC(dpy, gc, valuemask, values); return gc; }
/** * Initialize the window system */ void CGWindow::Initialize(int argc, char *argv[]) { Arg al[10]; int ac; /* create the toplevel shell */ ac=0; XtSetArg(al[ac],XtNtitle,"CGWindow Phase1"); ac++; m_Toplevel = XtAppInitialize(&m_Context,"",NULL,0,&argc,argv, NULL,al,ac); /* set window size. */ ac=0; XtSetArg(al[ac],XmNheight,300); ac++; XtSetArg(al[ac],XmNwidth,300); ac++; XtSetValues(m_Toplevel,al,ac); /* create a drawing area widget. */ ac=0; m_DrawingArea=XmCreateDrawingArea(m_Toplevel,"drawing_area",al,ac); XtManageChild(m_DrawingArea); setupGC(); XtAddCallback(m_DrawingArea,XmNexposeCallback,ExposeCB,(XtPointer)this); }
int XChangeGC(Display *display, GC gc, unsigned long valuemask, XGCValues *values) { setupGC(display, gc, valuemask, values); return 1; }