diff options
author | Eugene Sandulenko | 2010-07-29 19:53:02 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2010-10-12 21:38:20 +0000 |
commit | a683a420a9e43705c972b5e74d55e319729e1a81 (patch) | |
tree | bde6e4abd417bdfaec120aa951da9a19be36b654 /engines/sword25/gfx/opengl/openglgfx.h | |
parent | 7723d91c957d07205c51be32498d45cd0a78568f (diff) | |
download | scummvm-rg350-a683a420a9e43705c972b5e74d55e319729e1a81.tar.gz scummvm-rg350-a683a420a9e43705c972b5e74d55e319729e1a81.tar.bz2 scummvm-rg350-a683a420a9e43705c972b5e74d55e319729e1a81.zip |
SWORD25: Importing original sources
svn-id: r53171
Diffstat (limited to 'engines/sword25/gfx/opengl/openglgfx.h')
-rwxr-xr-x | engines/sword25/gfx/opengl/openglgfx.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/engines/sword25/gfx/opengl/openglgfx.h b/engines/sword25/gfx/opengl/openglgfx.h new file mode 100755 index 0000000000..ec305bee8f --- /dev/null +++ b/engines/sword25/gfx/opengl/openglgfx.h @@ -0,0 +1,114 @@ +// ----------------------------------------------------------------------------- +// This file is part of Broken Sword 2.5 +// Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdörfer +// +// Broken Sword 2.5 is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// Broken Sword 2.5 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 General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Broken Sword 2.5; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// ----------------------------------------------------------------------------- + +#ifndef BS_OPENGLGFX_H +#define BS_OPENGLGFX_H + +// ----------------------------------------------------------------------------- +// INCLUDES +// ----------------------------------------------------------------------------- + +#include "kernel/memlog_off.h" +#include <memory> +#include <vector> +#include "kernel/memlog_on.h" + +#include "kernel/common.h" +#include "../graphicengine.h" +#include "../renderobjectptr.h" +#include "util/glsprites/glsprites.h" + +// ----------------------------------------------------------------------------- +// FORWARD DECLARATIONS +// ----------------------------------------------------------------------------- + +class BS_Kernel; +class BS_Service; +class BS_Resource; +class BS_Panel; +class BS_Image; +class BS_RenderObjectManager; + + +// ----------------------------------------------------------------------------- +// CLASS DECLARATION +// ----------------------------------------------------------------------------- + +class BS_OpenGLGfx : public BS_GraphicEngine +{ +public: + BS_OpenGLGfx(BS_Kernel* pKernel); + virtual ~BS_OpenGLGfx(); + + // Interface + // --------- + virtual bool Init(int Width, int Height, int BitDepth, int BackbufferCount, bool Windowed); + virtual bool StartFrame(bool UpdateAll); + virtual bool EndFrame(); + + virtual BS_RenderObjectPtr<BS_Panel> GetMainPanel(); + + virtual void SetVsync(bool Vsync); + virtual bool GetVsync() const; + + virtual bool Fill(const BS_Rect* FillRectPtr = 0, unsigned int Color = BS_RGB(0, 0, 0)); + virtual bool GetScreenshot(unsigned int & Width, unsigned int & Height, std::vector<unsigned int> & Data); + + // Resource-Managing Methoden + // -------------------------- + virtual BS_Resource* LoadResource(const std::string& FileName); + virtual bool CanLoadResource(const std::string& FileName); + + // Debugging Methoden + // ------------------ + virtual void DrawDebugLine(const BS_Vertex & Start, const BS_Vertex & End, unsigned int Color); + static const char * GetGLSResultString(GLS_Result Result); + + // Persistenz Methoden + // ------------------- + virtual bool Persist(BS_OutputPersistenceBlock & Writer); + virtual bool Unpersist(BS_InputPersistenceBlock & Reader); + +private: + bool m_GLspritesInitialized; + + BS_RenderObjectPtr<BS_Panel> m_MainPanelPtr; + + std::auto_ptr<BS_RenderObjectManager> m_RenderObjectManagerPtr; + + struct DebugLine + { + DebugLine(const BS_Vertex & _Start, const BS_Vertex & _End, unsigned int _Color) : + Start(_Start), + End(_End), + Color(_Color) {}; + + BS_Vertex Start; + BS_Vertex End; + unsigned int Color; + }; + + std::vector<DebugLine> m_DebugLines; + + static bool ReadFramebufferContents(unsigned int Width, unsigned int Height, std::vector<unsigned int> & Data); + static void ReverseRGBAComponentOrder(std::vector<unsigned int> & Data); + static void FlipImagedataVertical(unsigned int Width, unsigned int Height, std::vector<unsigned int> & Data); +}; + +#endif |