
#ifndef __WFX_SDL_SDLRENDERER_H__
#define __WFX_SDL_SDLRENDERER_H__

#include <WFX/WFXIncludes.h>

#include <WFX/renderer/Renderer.h>
#include <WFX/scene/Color.h>

namespace WFX {

    namespace SDL {

        /**
         * SDL implementation of the Renderer interface
         * uses SDL (doh), OpenGL and GLUT
         */
        class SDLRenderer : public WFX::renderer::Renderer {
            public:
                SDLRenderer();
                
                /** implement Renderer interface */
                void setCamera(WFX::renderer::Camera* c);
                void setViewport(WFX::renderer::Viewport* v);
                void beginRenderOp();
                void endRenderOp();
                void drawTriMesh(WFX::scene::TriMesh& m);
                void drawSphere(WFX::math::Sphere& s);
                void drawWireCube(WFX::math::Cube& c);
                void setRenderContext(const WFX::renderer::RenderContext& r);
                void setColor(const WFX::scene::Color& c);
                void orthoMode();
                void perspectiveMode();
                void getProjectionMatrix(WFX::math::Matrix4& dest);
                void getModelViewMatrix(WFX::math::Matrix4& dest);
                void setMaterial(WFX::scene::Material& m);

            protected:
            
            private:

        };

    }

}


#endif //include guard


