void GuiChat::initGui() { CEGUI::WindowManager& winMgr(CEGUI::WindowManager::getSingleton()); parent = CEGUI::System::getSingleton().getDefaultGUIContext().getRootWindow(); chatWindow = winMgr.loadLayoutFromFile("console.layout"); parent->subscribeEvent(CEGUI::Window::EventMouseButtonDown, CEGUI::Event::Subscriber(&GuiChat::handleMouse, this)); parent->addChild(chatWindow); hideChat(); }
//----------------------------------------------------------------------------// int main(int argc, char* argv[]) { // Create X11 window. Display* dpy = XOpenDisplay(0); int scn = DefaultScreen(dpy); Window wnd = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 50, 50, 480, 320, 1, BlackPixel(dpy, scn), WhitePixel(dpy, scn)); XSelectInput(dpy, wnd, StructureNotifyMask | PointerMotionMask | ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask); XMapWindow(dpy, wnd); XEvent evt; while (true) { XNextEvent(dpy, &evt); if (evt.type == MapNotify) break; } // EGL setup EGLDisplay egldpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); EGLint majVer, minVer; eglInitialize(egldpy, &majVer, &minVer); EGLint attrs[] = { EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_NONE }; EGLConfig config; EGLint numconfigs; eglChooseConfig(egldpy, attrs, &config, 1, &numconfigs); EGLSurface surface = eglCreateWindowSurface(egldpy, config, (NativeWindowType)wnd, 0); EGLContext ctx = eglCreateContext(egldpy, config, 0, 0); eglMakeCurrent(egldpy, surface, surface, ctx); eglBindAPI(EGL_OPENGL_ES_API); // basic gl state setup; glViewport(0, 0, 480, 320); glClearColor(0.2, 0.2, 0.2, 1); // CEGUI setup CEGUI::OpenGLESRenderer::bootstrapSystem(); initialiseResourceGroupDirectories(); initialiseDefaultResourceGroups(); CEGUI::SchemeManager::getSingleton().createFromFile("TaharezLook.scheme"); CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage("TaharezLook/MouseArrow"); CEGUI::WindowManager& winMgr(CEGUI::WindowManager::getSingleton()); CEGUI::Window* root = winMgr.createWindow("DefaultWindow", "root"); CEGUI::Window* fw = root->createChild("TaharezLook/FrameWindow"); fw->setPosition(CEGUI::UVector2(CEGUI::UDim(0.25, 0), CEGUI::UDim(0.25, 0))); fw->setSize(CEGUI::USize(CEGUI::UDim(0.5, 0), CEGUI::UDim(0.5, 0))); fw->setText("OpenGL ES 1 Test"); CEGUI::System::getSingleton().getDefaultGUIContext().setRootWindow(root); // Main looop bool running = true; while (running) { while (XPending(dpy)) { XNextEvent(dpy, &evt); switch (evt.type) { case KeyPress: { int kspkcr; KeySym* ks = XGetKeyboardMapping(dpy, evt.xkey.keycode, 1, &kspkcr); if (ks[0] == XK_Escape) running = false; break; } case MotionNotify: CEGUI::System::getSingleton().getDefaultGUIContext().injectMousePosition(evt.xmotion.x, evt.xmotion.y); break; case ButtonPress: { CEGUI::MouseButton btn; if (evt.xbutton.button == Button1) btn = CEGUI::LeftButton; else if (evt.xbutton.button == Button2) btn = CEGUI::RightButton; else break; CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(btn); break; } case ButtonRelease: { CEGUI::MouseButton btn; if (evt.xbutton.button == Button1) btn = CEGUI::LeftButton; else if (evt.xbutton.button == Button2) btn = CEGUI::RightButton; else break; CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp(btn); break; } } } glClear(GL_COLOR_BUFFER_BIT); CEGUI::System::getSingleton().renderAllGUIContexts(); eglSwapBuffers(egldpy, surface); } // cleanup CEGUI::OpenGLESRenderer::destroySystem(); eglMakeCurrent(egldpy, 0, 0, 0); eglDestroyContext(egldpy, ctx); eglDestroySurface(egldpy, surface); eglTerminate(dpy); eglReleaseThread(); XCloseDisplay(dpy); return 0; }