#ifndef MAC_OPENGL_WINDOW_H #define MAC_OPENGL_WINDOW_H #include "CommonWindowInterface.h" #define b3gDefaultOpenGLWindow MacOpenGLWindow class MacOpenGLWindow : public CommonWindowInterface { struct MacOpenGLWindowInternalData* m_internalData; float m_mouseX; float m_mouseY; int m_modifierFlags; b3MouseButtonCallback m_mouseButtonCallback; b3MouseMoveCallback m_mouseMoveCallback; b3WheelCallback m_wheelCallback; b3KeyboardCallback m_keyboardCallback; b3RenderCallback m_renderCallback; float m_retinaScaleFactor; bool m_allowRetina; public: MacOpenGLWindow(); virtual ~MacOpenGLWindow(); void init(int width, int height, const char* windowTitle); void closeWindow(); void startRendering(); void endRendering();//swap buffers virtual bool requestedExit() const; virtual void setRequestExit(); void getMouseCoordinates(int& x, int& y); void runMainLoop(); virtual bool isModifierKeyPressed(int key); void setMouseButtonCallback(b3MouseButtonCallback mouseCallback) { m_mouseButtonCallback = mouseCallback; } void setMouseMoveCallback(b3MouseMoveCallback mouseCallback) { m_mouseMoveCallback = mouseCallback; } void setResizeCallback(b3ResizeCallback resizeCallback); void setKeyboardCallback( b3KeyboardCallback keyboardCallback) { m_keyboardCallback = keyboardCallback; } virtual b3MouseMoveCallback getMouseMoveCallback() { return m_mouseMoveCallback; } virtual b3MouseButtonCallback getMouseButtonCallback() { return m_mouseButtonCallback; } virtual b3ResizeCallback getResizeCallback(); virtual b3WheelCallback getWheelCallback() { return m_wheelCallback; } b3KeyboardCallback getKeyboardCallback() { return m_keyboardCallback; } void setWheelCallback (b3WheelCallback wheelCallback) { m_wheelCallback = wheelCallback; } float getRetinaScale() const { return m_retinaScaleFactor; } virtual void setAllowRetina(bool allow) { m_allowRetina = allow; } virtual void createWindow(const b3gWindowConstructionInfo& ci); virtual float getTimeInSeconds(); virtual int getWidth() const; virtual int getHeight() const; virtual void setRenderCallback( b3RenderCallback renderCallback); virtual void setWindowTitle(const char* title); int fileOpenDialog(char* filename, int maxNameLength); }; #endif