1
0
Fork 0
spectre/include/Spectre/Window/Window.h

83 lines
1.4 KiB
C++

#ifndef SPECTRE_WINDOW_WINDOW_H
#define SPECTRE_WINDOW_WINDOW_H
#include "DisplayMode.h"
#include "WindowDescription.h"
#include <Spectre/Math/Vector2.h>
#include <cstdint>
#include <string>
namespace sp {
class PlatformWindow;
class GLContext;
class Window
{
friend class PlatformWindow;
public :
enum Mode {
WINDOWED = 0,
FULLSCREEN = 1,
WINDOWEDFULLSCREEN = 2,
};
public :
Window();
virtual ~Window();
virtual bool create(WindowDescription decription);
virtual void destroy();
void setSize(unsigned int width, unsigned int height);
sp::Vector2u getSize() const;
void setCaption(const std::string& title);
const std::string& getCaption() const;
void setIcon(const std::string& filename);
void setIcon(unsigned int width, unsigned int height, const uint8_t *pixels);
void setDisplayMode(const DisplayMode& mode);
const DisplayMode& getDisplayMode() const;
void setVideoMode(Mode mode);
enum Mode getVideoMode() const;
void setVisible(bool visible);
void showCursor(bool value);
void grabCursor(bool value);
protected :
void init();
virtual void onReshape(int width, int height);
protected :
enum Mode m_fmode;
// Cache window position when entering fullscreen
// So it can be restored when returning to window mode.
Vector2u m_cachePos;
WindowDescription m_description;
WindowDescription m_cacheDesc;
std::string m_caption;
PlatformWindow* m_impl;
};
} // namepsace sp
#endif /* SPECTRE_WINDOW_WINDOW_H */