From 4814054df5dcdbd58ad9010cccefc700aa4fcc4f Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Wed, 24 Oct 2018 06:27:42 +0200
Subject: [PATCH] remove duplicate code

---
 inc/opengl.h | 79 +++++++++++++++++++++---------------------------
 src/opengl.c | 84 ++++++++++++++++++++++++++--------------------------
 2 files changed, 75 insertions(+), 88 deletions(-)

diff --git a/inc/opengl.h b/inc/opengl.h
index c140894..9d7e5c1 100644
--- a/inc/opengl.h
+++ b/inc/opengl.h
@@ -1,54 +1,34 @@
 #pragma once
 #include "glcorearb.h"
 
-typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXT)(HDC);
-typedef BOOL (APIENTRYP PFNWGLDELETECONTEXT)(HGLRC);
-typedef PROC (APIENTRYP PFNWGLGETPROCADDRESS)(LPCSTR);
-typedef BOOL (APIENTRYP PFNWGLMAKECURRENT)(HDC, HGLRC);
+// wgl
+typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXTPROC)(HDC);
+typedef BOOL (APIENTRYP PFNWGLDELETECONTEXTPROC)(HGLRC);
+typedef PROC (APIENTRYP PFNWGLGETPROCADDRESSPROC)(LPCSTR);
+typedef BOOL (APIENTRYP PFNWGLMAKECURRENTPROC)(HDC, HGLRC);
+typedef void (APIENTRYP PFNWGLSWAPINTERVALEXTPROC) (int interval);
+typedef const char* (APIENTRYP PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc);
 
-extern PFNWGLCREATECONTEXT xwglCreateContext;
-extern PFNWGLDELETECONTEXT xwglDeleteContext;
-extern PFNWGLGETPROCADDRESS xwglGetProcAddress;
-extern PFNWGLMAKECURRENT xwglMakeCurrent;
+extern PFNWGLCREATECONTEXTPROC xwglCreateContext;
+extern PFNWGLDELETECONTEXTPROC xwglDeleteContext;
+extern PFNWGLGETPROCADDRESSPROC xwglGetProcAddress;
+extern PFNWGLMAKECURRENTPROC xwglMakeCurrent;
+extern PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
+extern PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
 
-typedef void (APIENTRYP PFNGLVIEWPORT)(GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLBINDTEXTURE)(GLenum target, GLuint texture);
-typedef void (APIENTRYP PFNGLGENTEXTURES)(GLsizei n, GLuint *textures);
-typedef void (APIENTRYP PFNGLTEXPARAMETERI)(GLenum target, GLenum pname, GLint param);
-typedef void (APIENTRYP PFNGLDELETETEXTURES)(GLsizei n, const GLuint *textures);
-typedef void (APIENTRYP PFNGLTEXIMAGE2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-typedef void (APIENTRYP PFNGLDRAWELEMENTS)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
-typedef void (APIENTRYP PFNGLTEXSUBIMAGE2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-typedef GLenum (APIENTRYP PFNGLGETERROR)(void);
-typedef const GLubyte * (APIENTRYP PFNGLGETSTRING)(GLenum name);
-typedef void (APIENTRYP PFNGLGETTEXIMAGE)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
-typedef void (APIENTRYP PFNGLPIXELSTOREI)(GLenum pname, GLint param);
-
-extern PFNGLVIEWPORT glViewport;
-extern PFNGLBINDTEXTURE glBindTexture;
-extern PFNGLGENTEXTURES glGenTextures;
-extern PFNGLTEXPARAMETERI glTexParameteri;
-extern PFNGLDELETETEXTURES glDeleteTextures;
-extern PFNGLTEXIMAGE2D glTexImage2D;
-extern PFNGLDRAWELEMENTS glDrawElements;
-extern PFNGLTEXSUBIMAGE2D glTexSubImage2D;
-extern PFNGLGETERROR glGetError;
-extern PFNGLGETSTRING glGetString;
-extern PFNGLGETTEXIMAGE glGetTexImage;
-extern PFNGLPIXELSTOREI glPixelStorei;
 
 //compat profile only --->
 #define GL_LUMINANCE                      0x1909
 #define GL_LUMINANCE8                     0x8040
-typedef void (APIENTRYP PFNGLBEGIN)(GLenum mode);
-typedef void (APIENTRYP PFNGLEND)(void);
-typedef void (APIENTRYP PFNGLTEXCOORD2F)(GLfloat s, GLfloat t);
-typedef void (APIENTRYP PFNGLVERTEX2F)(GLfloat x, GLfloat y);
+typedef void (APIENTRYP PFNGLBEGINPROC)(GLenum mode);
+typedef void (APIENTRYP PFNGLENDPROC)(void);
+typedef void (APIENTRYP PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t);
+typedef void (APIENTRYP PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y);
 
-extern PFNGLBEGIN glBegin;
-extern PFNGLEND glEnd;
-extern PFNGLTEXCOORD2F glTexCoord2f;
-extern PFNGLVERTEX2F glVertex2f;
+extern PFNGLBEGINPROC glBegin;
+extern PFNGLENDPROC glEnd;
+extern PFNGLTEXCOORD2FPROC glTexCoord2f;
+extern PFNGLVERTEX2FPROC glVertex2f;
 // <--- compat profile only
 
 
@@ -58,8 +38,18 @@ BOOL OpenGL_ExtExists(char *ext, HDC hdc);
 GLuint OpenGL_BuildProgram(const GLchar *vertSource, const GLchar *fragSource);
 GLuint OpenGL_BuildProgramFromFile(const char *filePath);
 
-typedef void (APIENTRYP PFNWGLSWAPINTERVALEXT) (int interval);
-typedef const char* (WINAPI *PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc);
+extern PFNGLVIEWPORTPROC glViewport;
+extern PFNGLBINDTEXTUREPROC glBindTexture;
+extern PFNGLGENTEXTURESPROC glGenTextures;
+extern PFNGLTEXPARAMETERIPROC glTexParameteri;
+extern PFNGLDELETETEXTURESPROC glDeleteTextures;
+extern PFNGLTEXIMAGE2DPROC glTexImage2D;
+extern PFNGLDRAWELEMENTSPROC glDrawElements;
+extern PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
+extern PFNGLGETERRORPROC glGetError;
+extern PFNGLGETSTRINGPROC glGetString;
+extern PFNGLGETTEXIMAGEPROC glGetTexImage;
+extern PFNGLPIXELSTOREIPROC glPixelStorei;
 
 extern PFNGLCREATEPROGRAMPROC glCreateProgram;
 extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
@@ -120,9 +110,6 @@ extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
 extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
 extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
 
-extern PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT;
-extern PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
-
 extern PFNGLTEXBUFFERPROC glTexBuffer;
 
 extern HMODULE OpenGL_hModule;
diff --git a/src/opengl.c b/src/opengl.c
index eef3ac3..7057f2e 100644
--- a/src/opengl.c
+++ b/src/opengl.c
@@ -2,28 +2,28 @@
 #include <stdio.h>
 #include "opengl.h"
 
-PFNWGLCREATECONTEXT xwglCreateContext;
-PFNWGLDELETECONTEXT xwglDeleteContext;
-PFNWGLGETPROCADDRESS xwglGetProcAddress;
-PFNWGLMAKECURRENT xwglMakeCurrent;
+PFNWGLCREATECONTEXTPROC xwglCreateContext;
+PFNWGLDELETECONTEXTPROC xwglDeleteContext;
+PFNWGLGETPROCADDRESSPROC xwglGetProcAddress;
+PFNWGLMAKECURRENTPROC xwglMakeCurrent;
 
-PFNGLVIEWPORT glViewport;
-PFNGLBINDTEXTURE glBindTexture;
-PFNGLGENTEXTURES glGenTextures;
-PFNGLTEXPARAMETERI glTexParameteri;
-PFNGLDELETETEXTURES glDeleteTextures;
-PFNGLTEXIMAGE2D glTexImage2D;
-PFNGLDRAWELEMENTS glDrawElements;
-PFNGLTEXSUBIMAGE2D glTexSubImage2D;
-PFNGLGETERROR glGetError;
-PFNGLGETSTRING glGetString;
-PFNGLGETTEXIMAGE glGetTexImage;
-PFNGLPIXELSTOREI glPixelStorei;
+PFNGLVIEWPORTPROC glViewport;
+PFNGLBINDTEXTUREPROC glBindTexture;
+PFNGLGENTEXTURESPROC glGenTextures;
+PFNGLTEXPARAMETERIPROC glTexParameteri;
+PFNGLDELETETEXTURESPROC glDeleteTextures;
+PFNGLTEXIMAGE2DPROC glTexImage2D;
+PFNGLDRAWELEMENTSPROC glDrawElements;
+PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
+PFNGLGETERRORPROC glGetError;
+PFNGLGETSTRINGPROC glGetString;
+PFNGLGETTEXIMAGEPROC glGetTexImage;
+PFNGLPIXELSTOREIPROC glPixelStorei;
 
-PFNGLBEGIN glBegin;
-PFNGLEND glEnd;
-PFNGLTEXCOORD2F glTexCoord2f;
-PFNGLVERTEX2F glVertex2f;
+PFNGLBEGINPROC glBegin;
+PFNGLENDPROC glEnd;
+PFNGLTEXCOORD2FPROC glTexCoord2f;
+PFNGLVERTEX2FPROC glVertex2f;
 
 // Program
 PFNGLCREATEPROGRAMPROC glCreateProgram;
@@ -85,7 +85,7 @@ PFNGLDRAWBUFFERSPROC glDrawBuffers;
 PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
 PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
 
-PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT;
+PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
 PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
 
 PFNGLTEXBUFFERPROC glTexBuffer;
@@ -104,28 +104,28 @@ BOOL OpenGL_LoadDll()
 
     if (OpenGL_hModule)
     {
-        xwglCreateContext = (PFNWGLCREATECONTEXT)GetProcAddress(OpenGL_hModule, "wglCreateContext");
-        xwglDeleteContext = (PFNWGLDELETECONTEXT)GetProcAddress(OpenGL_hModule, "wglDeleteContext");
-        xwglGetProcAddress = (PFNWGLGETPROCADDRESS)GetProcAddress(OpenGL_hModule, "wglGetProcAddress");
-        xwglMakeCurrent = (PFNWGLMAKECURRENT)GetProcAddress(OpenGL_hModule, "wglMakeCurrent");
+        xwglCreateContext = (PFNWGLCREATECONTEXTPROC)GetProcAddress(OpenGL_hModule, "wglCreateContext");
+        xwglDeleteContext = (PFNWGLDELETECONTEXTPROC)GetProcAddress(OpenGL_hModule, "wglDeleteContext");
+        xwglGetProcAddress = (PFNWGLGETPROCADDRESSPROC)GetProcAddress(OpenGL_hModule, "wglGetProcAddress");
+        xwglMakeCurrent = (PFNWGLMAKECURRENTPROC)GetProcAddress(OpenGL_hModule, "wglMakeCurrent");
 
-        glViewport = (PFNGLVIEWPORT)GetProcAddress(OpenGL_hModule, "glViewport");
-        glBindTexture = (PFNGLBINDTEXTURE)GetProcAddress(OpenGL_hModule, "glBindTexture");
-        glGenTextures = (PFNGLGENTEXTURES)GetProcAddress(OpenGL_hModule, "glGenTextures");
-        glTexParameteri = (PFNGLTEXPARAMETERI)GetProcAddress(OpenGL_hModule, "glTexParameteri");
-        glDeleteTextures = (PFNGLDELETETEXTURES)GetProcAddress(OpenGL_hModule, "glDeleteTextures");
-        glTexImage2D = (PFNGLTEXIMAGE2D)GetProcAddress(OpenGL_hModule, "glTexImage2D");
-        glDrawElements = (PFNGLDRAWELEMENTS)GetProcAddress(OpenGL_hModule, "glDrawElements");
-        glTexSubImage2D = (PFNGLTEXSUBIMAGE2D)GetProcAddress(OpenGL_hModule, "glTexSubImage2D");
-        glGetError = (PFNGLGETERROR)GetProcAddress(OpenGL_hModule, "glGetError");
-        glGetString = (PFNGLGETSTRING)GetProcAddress(OpenGL_hModule, "glGetString");
-        glGetTexImage = (PFNGLGETTEXIMAGE)GetProcAddress(OpenGL_hModule, "glGetTexImage");
-        glPixelStorei = (PFNGLPIXELSTOREI)GetProcAddress(OpenGL_hModule, "glPixelStorei");
+        glViewport = (PFNGLVIEWPORTPROC)GetProcAddress(OpenGL_hModule, "glViewport");
+        glBindTexture = (PFNGLBINDTEXTUREPROC)GetProcAddress(OpenGL_hModule, "glBindTexture");
+        glGenTextures = (PFNGLGENTEXTURESPROC)GetProcAddress(OpenGL_hModule, "glGenTextures");
+        glTexParameteri = (PFNGLTEXPARAMETERIPROC)GetProcAddress(OpenGL_hModule, "glTexParameteri");
+        glDeleteTextures = (PFNGLDELETETEXTURESPROC)GetProcAddress(OpenGL_hModule, "glDeleteTextures");
+        glTexImage2D = (PFNGLTEXIMAGE2DPROC)GetProcAddress(OpenGL_hModule, "glTexImage2D");
+        glDrawElements = (PFNGLDRAWELEMENTSPROC)GetProcAddress(OpenGL_hModule, "glDrawElements");
+        glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)GetProcAddress(OpenGL_hModule, "glTexSubImage2D");
+        glGetError = (PFNGLGETERRORPROC)GetProcAddress(OpenGL_hModule, "glGetError");
+        glGetString = (PFNGLGETSTRINGPROC)GetProcAddress(OpenGL_hModule, "glGetString");
+        glGetTexImage = (PFNGLGETTEXIMAGEPROC)GetProcAddress(OpenGL_hModule, "glGetTexImage");
+        glPixelStorei = (PFNGLPIXELSTOREIPROC)GetProcAddress(OpenGL_hModule, "glPixelStorei");
 
-        glBegin = (PFNGLBEGIN)GetProcAddress(OpenGL_hModule, "glBegin");
-        glEnd = (PFNGLEND)GetProcAddress(OpenGL_hModule, "glEnd");
-        glTexCoord2f = (PFNGLTEXCOORD2F)GetProcAddress(OpenGL_hModule, "glTexCoord2f");
-        glVertex2f = (PFNGLVERTEX2F)GetProcAddress(OpenGL_hModule, "glVertex2f");
+        glBegin = (PFNGLBEGINPROC)GetProcAddress(OpenGL_hModule, "glBegin");
+        glEnd = (PFNGLENDPROC)GetProcAddress(OpenGL_hModule, "glEnd");
+        glTexCoord2f = (PFNGLTEXCOORD2FPROC)GetProcAddress(OpenGL_hModule, "glTexCoord2f");
+        glVertex2f = (PFNGLVERTEX2FPROC)GetProcAddress(OpenGL_hModule, "glVertex2f");
     }
 
     return xwglCreateContext && xwglDeleteContext && xwglGetProcAddress && xwglMakeCurrent && glViewport &&
@@ -194,7 +194,7 @@ void OpenGL_Init()
     glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)xwglGetProcAddress("glCheckFramebufferStatus");
     glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)xwglGetProcAddress("glDeleteFramebuffers");
 
-    wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXT)xwglGetProcAddress("wglSwapIntervalEXT");
+    wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)xwglGetProcAddress("wglSwapIntervalEXT");
     wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)xwglGetProcAddress("wglGetExtensionsStringARB");
 
     glTexBuffer = (PFNGLTEXBUFFERPROC)xwglGetProcAddress("glTexBuffer");