| #ifndef B3G_WINDOW_INTERFACE_H |
| #define B3G_WINDOW_INTERFACE_H |
| |
| |
| typedef void (*b3WheelCallback)(float deltax, float deltay); |
| typedef void (*b3ResizeCallback)( float width, float height); |
| typedef void (*b3MouseMoveCallback)( float x, float y); |
| typedef void (*b3MouseButtonCallback)(int button, int state, float x, float y); |
| typedef void (*b3KeyboardCallback)(int keycode, int state); |
| typedef void (*b3RenderCallback) (); |
| |
| enum { |
| B3G_ESCAPE = 27, |
| B3G_F1 = 0xff00, |
| B3G_F2, |
| B3G_F3, |
| B3G_F4, |
| B3G_F5, |
| B3G_F6, |
| B3G_F7, |
| B3G_F8, |
| B3G_F9, |
| B3G_F10, |
| B3G_F11, |
| B3G_F12, |
| B3G_F13, |
| B3G_F14, |
| B3G_F15, |
| B3G_LEFT_ARROW, |
| B3G_RIGHT_ARROW, |
| B3G_UP_ARROW, |
| B3G_DOWN_ARROW, |
| B3G_PAGE_UP, |
| B3G_PAGE_DOWN, |
| B3G_END, |
| B3G_HOME, |
| B3G_INSERT, |
| B3G_DELETE, |
| B3G_BACKSPACE, |
| B3G_SHIFT, |
| B3G_CONTROL, |
| B3G_ALT, |
| B3G_RETURN |
| }; |
| |
| struct b3gWindowConstructionInfo |
| { |
| int m_width; |
| int m_height; |
| bool m_fullscreen; |
| int m_colorBitsPerPixel; |
| void* m_windowHandle; |
| const char* m_title; |
| int m_openglVersion; |
| |
| |
| b3gWindowConstructionInfo(int width=1024, int height=768) |
| :m_width(width), |
| m_height(height), |
| m_fullscreen(false), |
| m_colorBitsPerPixel(32), |
| m_windowHandle(0), |
| m_title("title"), |
| m_openglVersion(3) |
| { |
| } |
| }; |
| |
| |
| class CommonWindowInterface |
| { |
| public: |
| |
| virtual ~CommonWindowInterface() |
| { |
| } |
| |
| virtual void createDefaultWindow(int width, int height, const char* title) |
| { |
| b3gWindowConstructionInfo ci(width,height); |
| ci.m_title = title; |
| createWindow(ci); |
| } |
| |
| virtual void createWindow(const b3gWindowConstructionInfo& ci)=0; |
| |
| virtual void closeWindow()=0; |
| |
| virtual void runMainLoop()=0; |
| virtual float getTimeInSeconds()=0; |
| |
| virtual bool requestedExit() const = 0; |
| virtual void setRequestExit() = 0; |
| |
| virtual void startRendering()=0; |
| |
| virtual void endRendering()=0; |
| |
| virtual bool isModifierKeyPressed(int key) = 0; |
| |
| virtual void setMouseMoveCallback(b3MouseMoveCallback mouseCallback)=0; |
| virtual b3MouseMoveCallback getMouseMoveCallback()=0; |
| |
| virtual void setMouseButtonCallback(b3MouseButtonCallback mouseCallback)=0; |
| virtual b3MouseButtonCallback getMouseButtonCallback()=0; |
| |
| virtual void setResizeCallback(b3ResizeCallback resizeCallback)=0; |
| virtual b3ResizeCallback getResizeCallback()=0; |
| |
| virtual void setWheelCallback(b3WheelCallback wheelCallback)=0; |
| virtual b3WheelCallback getWheelCallback()=0; |
| |
| virtual void setKeyboardCallback( b3KeyboardCallback keyboardCallback)=0; |
| virtual b3KeyboardCallback getKeyboardCallback()=0; |
| |
| virtual void setRenderCallback( b3RenderCallback renderCallback) = 0; |
| |
| virtual void setWindowTitle(const char* title)=0; |
| |
| virtual float getRetinaScale() const =0; |
| virtual void setAllowRetina(bool allow) =0; |
| |
| virtual int getWidth() const = 0; |
| virtual int getHeight() const = 0; |
| |
| virtual int fileOpenDialog(char* fileName, int maxFileNameLength) = 0; |
| |
| }; |
| |
| #endif //B3G_WINDOW_INTERFACE_H |