# OgreGLXWindow.h

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright (c) 2000-2006 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023 -----------------------------------------------------------------------------
    00024 */
    00025
    00026 #ifndef __GLXWindow_H__
    00027 #define __GLXWindow_H__
    00028
    00029 #include "OgreRenderWindow.h"
    00030 #include "OgreGLXContext.h"
    00031
    00032 #include <X11/Xlib.h>
    00033 #include <X11/keysym.h>
    00034 #include <GL/glx.h>
    00035 #include <GL/glxext.h>
    00036
    00037 namespace Ogre
    00038 {
    00039     class GLXWindow : public RenderWindow
    00040     {
    00041     private:
    00042         ::Display *mDisplay;        //Pointer to X connection
    00043         ::Window mWindow;       //X Window
    00044         ::Atom mAtomDeleteWindow;   //Used for handling X window closing
    00045         ::GLXContext mGlxContext;
    00046
    00047         bool mClosed;           //Window has been closed
    00048         bool mVisible;          //Window is visible
    00049         bool mFullScreen;       //We are full screen
    00050             bool mTopLevel;         // This is false if the Ogre window is embedded
    00051         int mOldMode;           // Mode before switching to fullscreen
    00052
    00053         GLXContext   *mContext;
    00054     public:
    00055         // Pass X display to create this window on
    00056         GLXWindow(Display *display);
    00057         ~GLXWindow();
    00058
    00059         void create(const String& name, unsigned int width, unsigned int height,
    00060                 bool fullScreen, const NameValuePairList *miscParams);
    00061
    00063         void destroy(void);
    00064
    00066         bool isActive(void) const;
    00067
    00069         bool isClosed(void) const;
    00070
    00072         bool isVisible(void) const;
    00073
    00075         void reposition(int left, int top);
    00076
    00078         void resize(unsigned int width, unsigned int height);
    00079
    00081         void swapBuffers(bool waitForVSync);
    00082
    00084         void writeContentsToFile(const String& filename);
    00085
    00092         void getCustomAttribute(const String& name, void* pData);
    00093
    00101         virtual void injectXEvent(const XEvent &event);
    00102
    00103         bool requiresTextureFlipping() const { return false; }
    00104
    00111         void exposed(bool active) { mActive = active; }
    00112
    00119         void resized(size_t width, size_t height);
    00120
    00126         ::Display* getXDisplay() { return mDisplay; }
    00127     };
    00128 }
    00129
    00130 #endif

Copyright © 2000-2005 by The OGRE Team
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 17 15:39:08 2006