Index: trunk/VUT/work/ogre_changes/RenderSystems/GL/include/OgreGLTexture.h
===================================================================
--- trunk/VUT/work/ogre_changes/RenderSystems/GL/include/OgreGLTexture.h	(revision 153)
+++ trunk/VUT/work/ogre_changes/RenderSystems/GL/include/OgreGLTexture.h	(revision 153)
@@ -0,0 +1,169 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+http://www.gnu.org/copyleft/lesser.txt.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef __GLTEXTURE_H__
+#define __GLTEXTURE_H__
+
+#include "OgreGLPrerequisites.h"
+#include "OgrePlatform.h"
+#include "OgreRenderTexture.h"
+#include "OgreTexture.h"
+#include "OgreGLSupport.h"
+#include "OgreHardwarePixelBuffer.h"
+
+namespace Ogre {
+
+    class GLTexture : public Texture
+    {
+    public:
+        // Constructor
+        GLTexture(ResourceManager* creator, const String& name, ResourceHandle handle,
+            const String& group, bool isManual, ManualResourceLoader* loader, 
+            GLSupport& support);
+
+        virtual ~GLTexture();      
+
+        /// @copydoc Texture::createInternalResources
+        void createInternalResources(void);
+		void loadImage( const Image& img );
+        void createRenderTexture();
+			
+		/// @copydoc Texture::getBuffer
+		HardwarePixelBufferSharedPtr getBuffer(size_t face, size_t mipmap);
+
+        // Takes the OGRE texture type (1d/2d/3d/cube) and returns the appropriate GL one
+        GLenum getGLTextureTarget(void) const;
+
+        GLuint getGLID() const
+        { return mTextureID; }
+
+    protected:
+        /// @copydoc Resource::loadImpl
+        void loadImpl(void);
+        /// @copydoc Resource::unloadImpl
+        void unloadImpl(void);
+
+		/** internal method, create GLHardwarePixelBuffers for every face and
+			 mipmap level. This method must be called after the GL texture object was created,
+			the number of mipmaps was set (GL_TEXTURE_MAX_LEVEL) and glTexImageXD was called to
+			actually allocate the buffer
+		*/
+		void _createSurfaceList();
+    private:
+        GLuint mTextureID;
+        GLSupport& mGLSupport;
+		
+		/// Vector of pointers to subsurfaces
+		typedef std::vector<HardwarePixelBufferSharedPtr> SurfaceList;
+		SurfaceList	mSurfaceList;
+    };
+
+    /** Specialisation of SharedPtr to allow SharedPtr to be assigned to GLTexturePtr 
+    @note Has to be a subclass since we need operator=.
+    We could templatise this instead of repeating per Resource subclass, 
+    except to do so requires a form VC6 does not support i.e.
+    ResourceSubclassPtr<T> : public SharedPtr<T>
+    */
+    class GLTexturePtr : public SharedPtr<GLTexture> 
+    {
+    public:
+        GLTexturePtr() : SharedPtr<GLTexture>() {}
+        explicit GLTexturePtr(GLTexture* rep) : SharedPtr<GLTexture>(rep) {}
+        GLTexturePtr(const GLTexturePtr& r) : SharedPtr<GLTexture>(r) {} 
+        GLTexturePtr(const ResourcePtr& r) : SharedPtr<GLTexture>()
+        {
+			// lock & copy other mutex pointer
+			OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
+			OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
+            pRep = static_cast<GLTexture*>(r.getPointer());
+            pUseCount = r.useCountPointer();
+            if (pUseCount)
+            {
+                ++(*pUseCount);
+            }
+        }
+
+        /// Operator used to convert a ResourcePtr to a GLTexturePtr
+        GLTexturePtr& operator=(const ResourcePtr& r)
+        {
+            if (pRep == static_cast<GLTexture*>(r.getPointer()))
+                return *this;
+            release();
+			// lock & copy other mutex pointer
+			OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
+			OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
+            pRep = static_cast<GLTexture*>(r.getPointer());
+            pUseCount = r.useCountPointer();
+            if (pUseCount)
+            {
+                ++(*pUseCount);
+            }
+            return *this;
+        }
+        /// Operator used to convert a TexturePtr to a GLTexturePtr
+        GLTexturePtr& operator=(const TexturePtr& r)
+        {
+            if (pRep == static_cast<GLTexture*>(r.getPointer()))
+                return *this;
+            release();
+			// lock & copy other mutex pointer
+			OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
+			OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
+            pRep = static_cast<GLTexture*>(r.getPointer());
+            pUseCount = r.useCountPointer();
+            if (pUseCount)
+            {
+                ++(*pUseCount);
+            }
+            return *this;
+        }
+    };
+
+    /// GL implementation of RenderTexture
+    class GLRenderTexture : public RenderTexture
+    {
+    public:
+        GLRenderTexture(const String& name, uint width, uint height, TextureType texType, PixelFormat format,
+			const NameValuePairList *miscParams) 
+            : RenderTexture(name, width, height, texType, format) 
+        {
+            mGLTexture = mTexture;
+        }
+
+        void _copyToTexture(void);
+
+        bool requiresTextureFlipping() const { return true; }
+        virtual void writeContentsToFile( const String & filename );
+
+#ifdef GTP_VISIBILITY_MODIFIED_OGRE
+		uchar *getBufferContents(int &dimx, int &dimy);
+#endif // GTP_VISIBILITY_MODIFIED_OGRE
+
+    protected:
+        GLTexturePtr mGLTexture;
+    };
+}
+
+#endif // __GLTEXTURE_H__
Index: trunk/VUT/work/ogre_changes/RenderSystems/GL/include/OgreWin32Window.h
===================================================================
--- trunk/VUT/work/ogre_changes/RenderSystems/GL/include/OgreWin32Window.h	(revision 153)
+++ trunk/VUT/work/ogre_changes/RenderSystems/GL/include/OgreWin32Window.h	(revision 153)
@@ -0,0 +1,84 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+http://www.gnu.org/copyleft/lesser.txt.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef __Win32Window_H__
+#define __Win32Window_H__
+
+#include "OgreWin32Prerequisites.h"
+#include "OgreRenderWindow.h"
+
+namespace Ogre {
+    class Win32Window : public RenderWindow
+    {
+    public:
+        Win32Window(Win32GLSupport &glsupport);
+        ~Win32Window();
+
+       void create(const String& name, unsigned int width, unsigned int height,
+	            bool fullScreen, const NameValuePairList *miscParams);
+        void destroy(void);
+        bool isActive(void) const;
+        bool isClosed(void) const;
+        void reposition(int left, int top);
+        void resize(unsigned int width, unsigned int height);
+        void swapBuffers(bool waitForVSync);
+
+        /** Overridden - see RenderTarget.
+        */
+        void writeContentsToFile(const String& filename);
+
+#ifdef GTP_VISIBILITY_MODIFIED_OGRE
+		uchar *getBufferContents(int &dimx, int &dimy);
+#endif // GTP_VISIBILITY_MODIFIED_OGRE
+
+		bool requiresTextureFlipping() const { return false; }
+
+		HWND getWindowHandle() const { return mHWnd; }
+		HDC getHDC() const { return mHDC; }
+		
+		// Method for dealing with resize / move & 3d library
+		virtual void windowMovedOrResized(void);
+		bool isReady() const { return mReady; }
+		void setReady(bool set) { mReady = set; }
+		void setActive(bool set) { mActive = set; }
+		
+		void getCustomAttribute( const String& name, void* pData );
+
+	protected:
+		Win32GLSupport &mGLSupport;
+		HWND	mHWnd;					// Win32 Window handle
+		HDC		mHDC;
+		HGLRC	mGlrc;
+		int		mOldSwapIntervall;
+		bool	mActive;				// Is active i.e. visible
+		bool	mReady;					// Is ready i.e. available for update
+		bool	mClosed;
+        Win32Context *mContext;
+
+		static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+    };
+}
+
+#endif
