mirror of
https://github.com/gwm17/glfw.git
synced 2024-11-23 02:38:52 -05:00
Begun adaptation of Win32 port to new API.
This commit is contained in:
parent
4cbe749932
commit
cf2df6e478
|
@ -43,7 +43,7 @@
|
||||||
// Include files
|
// Include files
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <mmsystem.h>
|
#include <mmsystem.h>
|
||||||
#include "../../include/GL/glfw.h"
|
#include "../../include/GL/glfw3.h"
|
||||||
|
|
||||||
|
|
||||||
//========================================================================
|
//========================================================================
|
||||||
|
@ -138,11 +138,11 @@ typedef struct tagKBDLLHOOKSTRUCT {
|
||||||
// wglSwapIntervalEXT typedef (Win32 buffer-swap interval control)
|
// wglSwapIntervalEXT typedef (Win32 buffer-swap interval control)
|
||||||
typedef int (APIENTRY * WGLSWAPINTERVALEXT_T) (int);
|
typedef int (APIENTRY * WGLSWAPINTERVALEXT_T) (int);
|
||||||
// wglGetPixelFormatAttribivARB typedef
|
// wglGetPixelFormatAttribivARB typedef
|
||||||
typedef BOOL (WINAPI * WGLGETPIXELFORMATATTRIBIVARB_T) (HDC, int, int, UINT, const int *, int *);
|
typedef BOOL (WINAPI * WGLGETPIXELFORMATATTRIBIVARB_T) (HDC, int, int, UINT, const int* , int* );
|
||||||
// wglGetExtensionStringEXT typedef
|
// wglGetExtensionStringEXT typedef
|
||||||
typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGEXT_T)( void );
|
typedef const char* (APIENTRY * WGLGETEXTENSIONSSTRINGEXT_T)(void);
|
||||||
// wglGetExtensionStringARB typedef
|
// wglGetExtensionStringARB typedef
|
||||||
typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGARB_T)( HDC );
|
typedef const char* (APIENTRY * WGLGETEXTENSIONSSTRINGARB_T)(HDC);
|
||||||
|
|
||||||
/* Constants for wglGetPixelFormatAttribivARB */
|
/* Constants for wglGetPixelFormatAttribivARB */
|
||||||
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
|
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
|
||||||
|
@ -183,7 +183,7 @@ typedef const char *(APIENTRY * WGLGETEXTENSIONSSTRINGARB_T)( HDC );
|
||||||
#ifndef WGL_ARB_create_context
|
#ifndef WGL_ARB_create_context
|
||||||
|
|
||||||
/* wglCreateContextAttribsARB */
|
/* wglCreateContextAttribsARB */
|
||||||
typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC, HGLRC, const int *);
|
typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC, HGLRC, const int* );
|
||||||
|
|
||||||
/* Tokens for wglCreateContextAttribsARB attributes */
|
/* Tokens for wglCreateContextAttribsARB attributes */
|
||||||
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
|
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
|
||||||
|
@ -205,7 +205,7 @@ typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC, HGLRC, const in
|
||||||
|
|
||||||
#ifndef GL_VERSION_3_0
|
#ifndef GL_VERSION_3_0
|
||||||
|
|
||||||
typedef const GLubyte * (APIENTRY *PFNGLGETSTRINGIPROC) (GLenum, GLuint);
|
typedef const GLubyte* (APIENTRY *PFNGLGETSTRINGIPROC) (GLenum, GLuint);
|
||||||
|
|
||||||
#endif /*GL_VERSION_3_0*/
|
#endif /*GL_VERSION_3_0*/
|
||||||
|
|
||||||
|
@ -261,6 +261,11 @@ typedef DWORD (WINAPI * TIMEGETTIME_T) (void);
|
||||||
#endif // _GLFW_NO_DLOAD_WINMM
|
#endif // _GLFW_NO_DLOAD_WINMM
|
||||||
|
|
||||||
|
|
||||||
|
#define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowWin32 Win32
|
||||||
|
#define _GLFW_PLATFORM_LIBRARY_STATE _GLFWlibraryWin32 Win32
|
||||||
|
#define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextWGL WGL
|
||||||
|
|
||||||
|
|
||||||
//========================================================================
|
//========================================================================
|
||||||
// GLFW platform specific types
|
// GLFW platform specific types
|
||||||
//========================================================================
|
//========================================================================
|
||||||
|
@ -272,71 +277,13 @@ typedef INT_PTR GLFWintptr;
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
// Window structure
|
// Platform-specific OpenGL context structure
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
typedef struct _GLFWwin_struct _GLFWwin;
|
typedef struct _GLFWcontextWGL
|
||||||
|
{
|
||||||
struct _GLFWwin_struct {
|
|
||||||
|
|
||||||
// ========= PLATFORM INDEPENDENT MANDATORY PART =========================
|
|
||||||
|
|
||||||
// User callback functions
|
|
||||||
GLFWwindowsizefun windowSizeCallback;
|
|
||||||
GLFWwindowclosefun windowCloseCallback;
|
|
||||||
GLFWwindowrefreshfun windowRefreshCallback;
|
|
||||||
GLFWmousebuttonfun mouseButtonCallback;
|
|
||||||
GLFWmouseposfun mousePosCallback;
|
|
||||||
GLFWmousewheelfun mouseWheelCallback;
|
|
||||||
GLFWkeyfun keyCallback;
|
|
||||||
GLFWcharfun charCallback;
|
|
||||||
|
|
||||||
// User selected window settings
|
|
||||||
int fullscreen; // Fullscreen flag
|
|
||||||
int mouseLock; // Mouse-lock flag
|
|
||||||
int sysKeysDisabled; // System keys disabled flag
|
|
||||||
int windowNoResize; // Resize- and maximize gadgets disabled flag
|
|
||||||
int refreshRate; // Vertical monitor refresh rate
|
|
||||||
|
|
||||||
// Window status & parameters
|
|
||||||
int opened; // Flag telling if window is opened or not
|
|
||||||
int active; // Application active flag
|
|
||||||
int iconified; // Window iconified flag
|
|
||||||
int width, height; // Window width and heigth
|
|
||||||
int accelerated; // GL_TRUE if window is HW accelerated
|
|
||||||
|
|
||||||
// Framebuffer attributes
|
|
||||||
int redBits;
|
|
||||||
int greenBits;
|
|
||||||
int blueBits;
|
|
||||||
int alphaBits;
|
|
||||||
int depthBits;
|
|
||||||
int stencilBits;
|
|
||||||
int accumRedBits;
|
|
||||||
int accumGreenBits;
|
|
||||||
int accumBlueBits;
|
|
||||||
int accumAlphaBits;
|
|
||||||
int auxBuffers;
|
|
||||||
int stereo;
|
|
||||||
int samples;
|
|
||||||
|
|
||||||
// OpenGL extensions and context attributes
|
|
||||||
int glMajor, glMinor, glRevision;
|
|
||||||
int glForward, glDebug, glProfile;
|
|
||||||
|
|
||||||
PFNGLGETSTRINGIPROC GetStringi;
|
|
||||||
|
|
||||||
|
|
||||||
// ========= PLATFORM SPECIFIC PART ======================================
|
|
||||||
|
|
||||||
// Platform specific window resources
|
// Platform specific window resources
|
||||||
HDC DC; // Private GDI device context
|
HDC DC; // Private GDI device context
|
||||||
HGLRC context; // Permanent rendering context
|
HGLRC context; // Permanent rendering context
|
||||||
HWND window; // Window handle
|
|
||||||
ATOM classAtom; // Window class atom
|
|
||||||
int modeID; // Mode ID for fullscreen mode
|
|
||||||
HHOOK keyboardHook; // Keyboard hook handle
|
|
||||||
DWORD dwStyle; // Window styles used for window creation
|
|
||||||
DWORD dwExStyle; // --"--
|
|
||||||
|
|
||||||
// Platform specific extensions (context specific)
|
// Platform specific extensions (context specific)
|
||||||
WGLSWAPINTERVALEXT_T SwapIntervalEXT;
|
WGLSWAPINTERVALEXT_T SwapIntervalEXT;
|
||||||
|
@ -348,100 +295,80 @@ struct _GLFWwin_struct {
|
||||||
GLboolean has_WGL_ARB_multisample;
|
GLboolean has_WGL_ARB_multisample;
|
||||||
GLboolean has_WGL_ARB_pixel_format;
|
GLboolean has_WGL_ARB_pixel_format;
|
||||||
GLboolean has_WGL_ARB_create_context;
|
GLboolean has_WGL_ARB_create_context;
|
||||||
|
} _GLFWcontextWGL;
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
// Platform-specific window structure
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
typedef struct _GLFWwindowWin32
|
||||||
|
{
|
||||||
|
// Platform specific window resources
|
||||||
|
HWND handle; // Window handle
|
||||||
|
ATOM classAtom; // Window class atom
|
||||||
|
int modeID; // Mode ID for fullscreen mode
|
||||||
|
HHOOK keyboardHook; // Keyboard hook handle
|
||||||
|
DWORD dwStyle; // Window styles used for window creation
|
||||||
|
DWORD dwExStyle; // --"--
|
||||||
|
|
||||||
// Various platform specific internal variables
|
// Various platform specific internal variables
|
||||||
int oldMouseLock; // Old mouse-lock flag (used for remembering
|
int oldMouseLock; // Old mouse-lock flag (used for remembering
|
||||||
// mouse-lock state when iconifying)
|
// mouse-lock state when iconifying)
|
||||||
int oldMouseLockValid;
|
int oldMouseLockValid;
|
||||||
int desiredRefreshRate; // Desired vertical monitor refresh rate
|
int desiredRefreshRate; // Desired vertical monitor refresh rate
|
||||||
|
int mouseMoved;
|
||||||
};
|
int oldMouseX, oldMouseY;
|
||||||
|
} _GLFWwindowWin32;
|
||||||
GLFWGLOBAL _GLFWwin _glfwWin;
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
// User input status (most of this should go in _GLFWwin)
|
// Platform-specific library global data
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
GLFWGLOBAL struct {
|
typedef struct _GLFWlibraryWin32
|
||||||
|
{
|
||||||
|
// Instance of the application
|
||||||
|
HINSTANCE instance;
|
||||||
|
|
||||||
// ========= PLATFORM INDEPENDENT MANDATORY PART =========================
|
// Timer data
|
||||||
|
struct {
|
||||||
|
int HasPerformanceCounter;
|
||||||
|
double Resolution;
|
||||||
|
unsigned int t0_32;
|
||||||
|
__int64 t0_64;
|
||||||
|
} timer;
|
||||||
|
|
||||||
// Mouse status
|
// System information
|
||||||
int MousePosX, MousePosY;
|
struct {
|
||||||
int WheelPos;
|
int winVer;
|
||||||
char MouseButton[ GLFW_MOUSE_BUTTON_LAST+1 ];
|
int hasUnicode;
|
||||||
|
DWORD foregroundLockTimeout;
|
||||||
// Keyboard status
|
} sys;
|
||||||
char Key[ GLFW_KEY_LAST+1 ];
|
|
||||||
int LastChar;
|
|
||||||
|
|
||||||
// User selected settings
|
|
||||||
int StickyKeys;
|
|
||||||
int StickyMouseButtons;
|
|
||||||
int KeyRepeat;
|
|
||||||
|
|
||||||
|
|
||||||
// ========= PLATFORM SPECIFIC PART ======================================
|
|
||||||
|
|
||||||
// Platform specific internal variables
|
|
||||||
int MouseMoved, OldMouseX, OldMouseY;
|
|
||||||
|
|
||||||
} _glfwInput;
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
|
||||||
// Library global data
|
|
||||||
//------------------------------------------------------------------------
|
|
||||||
GLFWGLOBAL struct {
|
|
||||||
|
|
||||||
// Window opening hints
|
|
||||||
_GLFWhints hints;
|
|
||||||
|
|
||||||
// ========= PLATFORM SPECIFIC PART ======================================
|
|
||||||
|
|
||||||
HINSTANCE instance; // Instance of the application
|
|
||||||
|
|
||||||
// Timer data
|
|
||||||
struct {
|
|
||||||
int HasPerformanceCounter;
|
|
||||||
double Resolution;
|
|
||||||
unsigned int t0_32;
|
|
||||||
__int64 t0_64;
|
|
||||||
} Timer;
|
|
||||||
|
|
||||||
// System information
|
|
||||||
struct {
|
|
||||||
int winVer;
|
|
||||||
int hasUnicode;
|
|
||||||
DWORD foregroundLockTimeout;
|
|
||||||
} Sys;
|
|
||||||
|
|
||||||
#if !defined(_GLFW_NO_DLOAD_WINMM) || !defined(_GLFW_NO_DLOAD_GDI32)
|
#if !defined(_GLFW_NO_DLOAD_WINMM) || !defined(_GLFW_NO_DLOAD_GDI32)
|
||||||
// Library handles and function pointers
|
// Library handles and function pointers
|
||||||
struct {
|
struct {
|
||||||
#ifndef _GLFW_NO_DLOAD_GDI32
|
#ifndef _GLFW_NO_DLOAD_GDI32
|
||||||
// gdi32.dll
|
// gdi32.dll
|
||||||
HINSTANCE gdi32;
|
HINSTANCE gdi32;
|
||||||
CHOOSEPIXELFORMAT_T ChoosePixelFormat;
|
CHOOSEPIXELFORMAT_T ChoosePixelFormat;
|
||||||
DESCRIBEPIXELFORMAT_T DescribePixelFormat;
|
DESCRIBEPIXELFORMAT_T DescribePixelFormat;
|
||||||
GETPIXELFORMAT_T GetPixelFormat;
|
GETPIXELFORMAT_T GetPixelFormat;
|
||||||
SETPIXELFORMAT_T SetPixelFormat;
|
SETPIXELFORMAT_T SetPixelFormat;
|
||||||
SWAPBUFFERS_T SwapBuffers;
|
SWAPBUFFERS_T SwapBuffers;
|
||||||
#endif // _GLFW_NO_DLOAD_GDI32
|
#endif // _GLFW_NO_DLOAD_GDI32
|
||||||
|
|
||||||
// winmm.dll
|
// winmm.dll
|
||||||
#ifndef _GLFW_NO_DLOAD_WINMM
|
#ifndef _GLFW_NO_DLOAD_WINMM
|
||||||
HINSTANCE winmm;
|
HINSTANCE winmm;
|
||||||
JOYGETDEVCAPSA_T joyGetDevCapsA;
|
JOYGETDEVCAPSA_T joyGetDevCapsA;
|
||||||
JOYGETPOS_T joyGetPos;
|
JOYGETPOS_T joyGetPos;
|
||||||
JOYGETPOSEX_T joyGetPosEx;
|
JOYGETPOSEX_T joyGetPosEx;
|
||||||
TIMEGETTIME_T timeGetTime;
|
TIMEGETTIME_T timeGetTime;
|
||||||
#endif // _GLFW_NO_DLOAD_WINMM
|
#endif // _GLFW_NO_DLOAD_WINMM
|
||||||
} Libs;
|
} libs;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} _glfwLibrary;
|
} _GLFWlibraryWin32;
|
||||||
|
|
||||||
|
|
||||||
//========================================================================
|
//========================================================================
|
||||||
|
@ -465,13 +392,13 @@ GLFWGLOBAL struct {
|
||||||
//========================================================================
|
//========================================================================
|
||||||
|
|
||||||
// Time
|
// Time
|
||||||
void _glfwInitTimer( void );
|
void _glfwInitTimer(void);
|
||||||
|
|
||||||
// Fullscreen support
|
// Fullscreen support
|
||||||
int _glfwGetClosestVideoModeBPP( int *w, int *h, int *bpp, int *refresh );
|
int _glfwGetClosestVideoModeBPP(int* w, int* h, int* bpp, int* refresh);
|
||||||
int _glfwGetClosestVideoMode( int *w, int *h, int *r, int *g, int *b, int *refresh );
|
int _glfwGetClosestVideoMode(int* w, int* h, int* r, int* g, int* b, int* refresh);
|
||||||
void _glfwSetVideoModeMODE( int mode );
|
void _glfwSetVideoModeMODE(int mode);
|
||||||
void _glfwSetVideoMode( int *w, int *h, int r, int g, int b, int refresh );
|
void _glfwSetVideoMode(int* w, int* h, int r, int g, int b, int refresh);
|
||||||
|
|
||||||
|
|
||||||
#endif // _platform_h_
|
#endif // _platform_h_
|
||||||
|
|
Loading…
Reference in New Issue
Block a user