/* * * Copyright (c) 1994 * Hewlett-Packard Company * */ #ifndef PAP__WINDOW_H #define PAP__WINDOW_H #include #include class BasicWindow { protected: unsigned int width; unsigned int height; Display* display; Window window; GC gc; int isExposed() { XEvent xEvent; XNextEvent(display ,&xEvent); return xEvent.type == Expose; } public: BasicWindow(unsigned int n, unsigned int m, char* title); ~BasicWindow(); void displayPoint(unsigned int x, unsigned int y, char* colorName); void erasePoint(unsigned int x, unsigned int y); }; BasicWindow::BasicWindow(unsigned int n, unsigned int m, char* title) : width(n), height(m), display(XOpenDisplay("")) { int screen = DefaultScreen(display); window = XCreateSimpleWindow(display, DefaultRootWindow(display), 0, 0, width, height, 5, WhitePixel(display, screen), BlackPixel(display, screen)); XSetStandardProperties(display, window, title, title, None, 0, 0, 0); gc = XCreateGC(display, window, 0, 0); XSelectInput(display, window, ButtonPressMask |KeyPressMask |ExposureMask); XMapRaised(display, window); while (!isExposed()); } BasicWindow::~BasicWindow() { XFreeGC(display, gc); XDestroyWindow(display, window); XCloseDisplay(display); } void BasicWindow::displayPoint(unsigned int x, unsigned int y, char* colorName) { XMapRaised(display, window); int screen = DefaultScreen(display); XColor color, exact; XAllocNamedColor(display, DefaultColormap(display, screen), colorName, &exact, &color); XSetForeground(display, gc, color.pixel); XDrawPoint(display, window, gc, x, height - y); } void BasicWindow::erasePoint(unsigned int x, unsigned int y) { XMapRaised(display, window); int screen = DefaultScreen(display); XSetForeground(display, gc, BlackPixel(display, screen)); XDrawPoint(display, window, gc, x, height - y); } #endif