X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=x11.cc;h=c8eb915cac381c706762b10167080273670c997c;hb=b79a06937e1c65161f8e71fb48f30e7b473da023;hp=b88a5e9da69279a3a59573afb18cdb81ba311972;hpb=5095d1eeeeff39305ec3b60d4134ff4929eaabca;p=moebius.git diff --git a/x11.cc b/x11.cc index b88a5e9..c8eb915 100644 --- a/x11.cc +++ b/x11.cc @@ -8,17 +8,33 @@ static Parameter x11size("x11size", "X11 window size", 500, 100, 10, 10000); -X11Output::X11Output() { +GC X11Output::gc(const char *colour_name) { XGCValues gcvalues; + XColor colour; + Status st; + + st= XAllocNamedColor(display,cmap,colour_name,&colour,&colour); + if (!st) { + cerr << "cannot allocate colour " << colour_name << ", quitting\n"; + exit(1); + } + + gcvalues.foreground= gcvalues.background= colour.pixel; + return XCreateGC(display,window,GCForeground|GCBackground,&gcvalues); +} + +X11Output::X11Output() { display= XOpenDisplay(0); window= XCreateSimpleWindow(display, DefaultRootWindow(display), 0,0, x11size,x11size, 0,0,0); - gcvalues.background= 0; - fabric= XCreateGC(display,window,GCBackground,&gcvalues); - gcvalues.foreground= 1; - gcvalues.background= 1; - mesh= XCreateGC(display,window,GCForeground|GCBackground,&gcvalues); + cmap= DefaultColormap(display,DefaultScreen(display)); + + black= gc("black"); + white= gc("white"); + blue= gc("blue"); + red= gc("red"); + XSelectInput(display,window,0); XMapWindow(display,window); XFlush(display); @@ -36,14 +52,24 @@ X11Output::~X11Output() { XCloseDisplay(display); } -void X11Output::drawcell(const Point* list, int n) { +void X11Output::drawcell(const Point* list, int n, Colour colour) { + GC fill, draw; + XPoint xp[n+1]; for (int i=0; i