7 #include "parameter.hh"
9 static Parameter<int> x11size("x11size", "X11 window size", 500, 100, 10, 10000);
11 GC X11Output::gc(const char *colour_name) {
16 st= XAllocNamedColor(display,cmap,colour_name,&colour,&colour);
18 cerr << "cannot allocate colour " << colour_name << ", quitting\n";
22 gcvalues.foreground= gcvalues.background= colour.pixel;
23 return XCreateGC(display,window,GCForeground|GCBackground,&gcvalues);
26 X11Output::X11Output() {
27 display= XOpenDisplay(0);
28 window= XCreateSimpleWindow(display,
29 DefaultRootWindow(display),
30 0,0, x11size,x11size, 0,0,0);
31 cmap= DefaultColormap(display,DefaultScreen(display));
38 XSelectInput(display,window,0);
39 XMapWindow(display,window);
43 void X11Output::startimage() {
44 XClearWindow(display,window);
47 void X11Output::endimage() {
51 X11Output::~X11Output() {
52 XCloseDisplay(display);
55 void X11Output::drawcell(const Point* list, int n, Colour colour) {
59 for (int i=0; i<n; i++) {
60 Onscreen here= Onscreen(list[i]);
61 xp[i].x= (int)((here.x+1.0)*(x11size*0.5));
62 xp[i].y= (int)((-here.y+1.0)*(x11size*0.5));
65 case grid: fill= black; draw= white; break;
66 case solidblack: fill= red; draw= 0; break;
67 case solidwhite: fill= blue; draw= 0; break;
70 XFillPolygon(display,window,fill,xp,n,Nonconvex,CoordModeOrigin);
73 XDrawLines(display,window,draw,xp,n+1,CoordModeOrigin);