
#ifndef __WFX_RENDERER_RENDERWINDOW_H__
#define __WFX_RENDERER_RENDERWINDOW_H__

#include <WFX/WFXIncludes.h>

#include <WFX/renderer/RenderTarget.h>

namespace WFX {

    namespace renderer {

        /**
         * a RenderWindow
         */
        class RenderWindow : public RenderTarget {
            public:
                /**
                 * Ctor
                 * @see RenderTarget
                 * @param: title - Window Title
                 * @param: fs - Fullscreen
                 */
                RenderWindow(Int w, Int h, Int d, std::string title, bool fs);
                virtual ~RenderWindow() {}

                /**
                 * resizes this window
                 * @param: w - new width
                 * @param: h - new height
                 */
                virtual void resize(Int w, Int h);

                /**
                 * sets the window title
                 * @param: title - guess
                 */
                virtual void setTitle(std::string title) {
                    Title = title;
                }

                /**
                 * toggle fullscreen mode
                 */
                virtual void toggleFullscreen() = 0;

                /** hides the mouse cursor  */
                virtual void hideCursor() = 0;
                /** shows the mouse cursor */
                virtual void showCursor() = 0;
                /** sets the mousecursor position */
                virtual void warpCursor(UInt x, UInt y) = 0;
                /** 
                 * centers the mouse cursor
                 * just a small helper method to cut down code size
                 */
                virtual void centerCursor() = 0;

            protected:
                /** window title */
                std::string Title;
            

            private:

        };

    }

}


#endif //include guard


