mirror of
https://github.com/nishiowo/nishbox
synced 2025-04-21 04:04:39 +00:00
export symbol
This commit is contained in:
parent
d89c121e53
commit
f8fabe6a26
@ -21,7 +21,7 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void gf_engine_begin(void) {
|
||||
GF_EXPORT void gf_engine_begin(void) {
|
||||
gf_version_t ver;
|
||||
#ifdef _WIN32
|
||||
WSADATA wsa;
|
||||
@ -40,12 +40,12 @@ void gf_engine_begin(void) {
|
||||
gf_physics_begin();
|
||||
}
|
||||
|
||||
void gf_engine_end(void) {
|
||||
GF_EXPORT void gf_engine_end(void) {
|
||||
gf_physics_end();
|
||||
gf_draw_end();
|
||||
}
|
||||
|
||||
gf_engine_t* gf_engine_create(const char* title, int nogui) {
|
||||
GF_EXPORT gf_engine_t* gf_engine_create(const char* title, int nogui) {
|
||||
gf_engine_t* engine = malloc(sizeof(*engine));
|
||||
memset(engine, 0, sizeof(*engine));
|
||||
engine->log = stderr;
|
||||
@ -66,7 +66,7 @@ gf_engine_t* gf_engine_create(const char* title, int nogui) {
|
||||
return engine;
|
||||
}
|
||||
|
||||
void gf_engine_set_draw(gf_engine_t* engine, void (*func)(gf_draw_t*)) { gf_draw_set_draw(engine->draw, func); }
|
||||
GF_EXPORT void gf_engine_set_draw(gf_engine_t* engine, void (*func)(gf_draw_t*)) { gf_draw_set_draw(engine->draw, func); }
|
||||
|
||||
/**
|
||||
* Writing this so I don't forget
|
||||
@ -81,7 +81,7 @@ void gf_engine_set_draw(gf_engine_t* engine, void (*func)(gf_draw_t*)) { gf_draw
|
||||
* 6. _gf_draw_step swaps buffers
|
||||
* 7. Comes back here
|
||||
*/
|
||||
void gf_engine_loop(gf_engine_t* engine) {
|
||||
GF_EXPORT void gf_engine_loop(gf_engine_t* engine) {
|
||||
while(1) {
|
||||
if(engine->draw != NULL) {
|
||||
if(gf_draw_step(engine->draw) != 0) break;
|
||||
@ -89,7 +89,7 @@ void gf_engine_loop(gf_engine_t* engine) {
|
||||
}
|
||||
}
|
||||
|
||||
void gf_engine_destroy(gf_engine_t* engine) {
|
||||
GF_EXPORT void gf_engine_destroy(gf_engine_t* engine) {
|
||||
if(engine->physics != NULL) gf_physics_destroy(engine->physics);
|
||||
if(engine->draw != NULL) gf_draw_destroy(engine->draw);
|
||||
free(engine);
|
||||
|
@ -19,11 +19,11 @@
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
void gf_draw_begin(void) { gf_draw_platform_begin(); }
|
||||
GF_EXPORT void gf_draw_begin(void) { gf_draw_platform_begin(); }
|
||||
|
||||
void gf_draw_end(void) { gf_draw_platform_end(); }
|
||||
GF_EXPORT void gf_draw_end(void) { gf_draw_platform_end(); }
|
||||
|
||||
gf_draw_t* gf_draw_create(gf_engine_t* engine, const char* title) {
|
||||
GF_EXPORT gf_draw_t* gf_draw_create(gf_engine_t* engine, const char* title) {
|
||||
gf_draw_t* draw = malloc(sizeof(*draw));
|
||||
memset(draw, 0, sizeof(*draw));
|
||||
draw->x = 0;
|
||||
@ -55,16 +55,16 @@ gf_draw_t* gf_draw_create(gf_engine_t* engine, const char* title) {
|
||||
return draw;
|
||||
}
|
||||
|
||||
void gf_draw_reshape(gf_draw_t* draw) { gf_draw_driver_reshape(draw); }
|
||||
GF_EXPORT void gf_draw_reshape(gf_draw_t* draw) { gf_draw_driver_reshape(draw); }
|
||||
|
||||
/* Runs every frame */
|
||||
void gf_draw_frame(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_frame(gf_draw_t* draw) {
|
||||
if(draw->draw != NULL) draw->draw(draw);
|
||||
}
|
||||
|
||||
void gf_draw_set_draw(gf_draw_t* draw, void (*func)(gf_draw_t*)) { draw->draw = func; }
|
||||
GF_EXPORT void gf_draw_set_draw(gf_draw_t* draw, void (*func)(gf_draw_t*)) { draw->draw = func; }
|
||||
|
||||
int gf_draw_step(gf_draw_t* draw) {
|
||||
GF_EXPORT int gf_draw_step(gf_draw_t* draw) {
|
||||
int ret = gf_draw_platform_step(draw);
|
||||
if(ret != 0) return ret;
|
||||
draw->close = 0;
|
||||
@ -72,7 +72,7 @@ int gf_draw_step(gf_draw_t* draw) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void gf_draw_destroy(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_destroy(gf_draw_t* draw) {
|
||||
int i;
|
||||
if(draw->running) {
|
||||
gf_draw_driver_destroy(draw);
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
|
||||
void gf_log(gf_engine_t* engine, const char* fmt, ...) {
|
||||
GF_EXPORT void gf_log(gf_engine_t* engine, const char* fmt, ...) {
|
||||
va_list va;
|
||||
FILE* out = stderr;
|
||||
if(engine != NULL) {
|
||||
|
@ -13,9 +13,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
float gf_log2(float x) { return log(x) / log(2); }
|
||||
GF_EXPORT float gf_log2(float x) { return log(x) / log(2); }
|
||||
|
||||
void gf_calculate_normal(gf_vector_t* r, gf_vector_t v0, gf_vector_t v1, gf_vector_t v2) {
|
||||
GF_EXPORT void gf_calculate_normal(gf_vector_t* r, gf_vector_t v0, gf_vector_t v1, gf_vector_t v2) {
|
||||
int i;
|
||||
dReal length;
|
||||
gf_vector_t vec;
|
||||
|
@ -14,18 +14,18 @@
|
||||
/* Standard */
|
||||
#include <stdlib.h>
|
||||
|
||||
void gf_physics_begin(void) { dInitODE(); }
|
||||
GF_EXPORT void gf_physics_begin(void) { dInitODE(); }
|
||||
|
||||
void gf_physics_end(void) { dCloseODE(); }
|
||||
GF_EXPORT void gf_physics_end(void) { dCloseODE(); }
|
||||
|
||||
gf_physics_t* gf_physics_create(void) {
|
||||
GF_EXPORT gf_physics_t* gf_physics_create(void) {
|
||||
gf_physics_t* physics = malloc(sizeof(*physics));
|
||||
physics->id = dWorldCreate();
|
||||
dWorldSetGravity(physics->id, 0, 0, -9.81);
|
||||
return physics;
|
||||
}
|
||||
|
||||
void gf_physics_destroy(gf_physics_t* physics) {
|
||||
GF_EXPORT void gf_physics_destroy(gf_physics_t* physics) {
|
||||
dWorldDestroy(physics->id);
|
||||
free(physics);
|
||||
gf_function_log(NULL, "Destroyed physics", "");
|
||||
|
@ -13,7 +13,7 @@
|
||||
/* Standard */
|
||||
#include <stdlib.h>
|
||||
|
||||
gf_texture_t* gf_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data) {
|
||||
GF_EXPORT gf_texture_t* gf_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data) {
|
||||
gf_texture_t* texture = malloc(sizeof(*texture));
|
||||
gf_draw_driver_texture_t* ddtexture = gf_draw_driver_register_texture(draw, width, height, data);
|
||||
if(ddtexture == NULL) {
|
||||
@ -26,9 +26,9 @@ gf_texture_t* gf_register_texture(gf_draw_t* draw, int width, int height, unsign
|
||||
return texture;
|
||||
}
|
||||
|
||||
void gf_destroy_texture(gf_texture_t* texture) {
|
||||
GF_EXPORT void gf_destroy_texture(gf_texture_t* texture) {
|
||||
gf_draw_driver_destroy_texture(texture->draw_driver_texture);
|
||||
free(texture);
|
||||
}
|
||||
|
||||
void gf_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_texture_t* texture, float r, float g, float b, float a) { gf_draw_driver_draw_texture(draw, x, y, w, h, texture->draw_driver_texture, r, g, b, a); }
|
||||
GF_EXPORT void gf_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_texture_t* texture, float r, float g, float b, float a) { gf_draw_driver_draw_texture(draw, x, y, w, h, texture->draw_driver_texture, r, g, b, a); }
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
#define GF_VERSION "1.0.0"
|
||||
|
||||
void gf_get_version(gf_version_t* version) {
|
||||
GF_EXPORT void gf_get_version(gf_version_t* version) {
|
||||
char* cpstr = malloc(512);
|
||||
int i;
|
||||
int incr = 0;
|
||||
|
@ -30,7 +30,7 @@ GLfloat lightblk[] = {0.0, 0.0, 0.0, 1.0};
|
||||
|
||||
#define NEAREST_POW2(x) pow((2), gf_log2((int)(x) + 1))
|
||||
|
||||
gf_draw_driver_texture_t* gf_draw_driver_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data) {
|
||||
GF_EXPORT gf_draw_driver_texture_t* gf_draw_driver_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data) {
|
||||
gf_draw_driver_texture_t* r = malloc(sizeof(*r));
|
||||
int w = NEAREST_POW2(width);
|
||||
int h = NEAREST_POW2(height);
|
||||
@ -58,12 +58,12 @@ gf_draw_driver_texture_t* gf_draw_driver_register_texture(gf_draw_t* draw, int w
|
||||
return r;
|
||||
}
|
||||
|
||||
void gf_draw_driver_destroy_texture(gf_draw_driver_texture_t* t) {
|
||||
GF_EXPORT void gf_draw_driver_destroy_texture(gf_draw_driver_texture_t* t) {
|
||||
glDeleteTextures(1, &t->id);
|
||||
free(t);
|
||||
}
|
||||
|
||||
void gf_draw_driver_init(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_driver_init(gf_draw_t* draw) {
|
||||
int i;
|
||||
int w, h, ch;
|
||||
draw->driver = malloc(sizeof(*draw->driver));
|
||||
@ -110,7 +110,7 @@ void gf_draw_driver_init(gf_draw_t* draw) {
|
||||
draw->driver->quadric = gluNewQuadric();
|
||||
}
|
||||
|
||||
int gf_draw_driver_has_extension(gf_draw_t* draw, const char* query) {
|
||||
GF_EXPORT int gf_draw_driver_has_extension(gf_draw_t* draw, const char* query) {
|
||||
int ret = gf_draw_platform_has_extension(draw, query);
|
||||
const char* ext = NULL;
|
||||
const char* ptr;
|
||||
@ -122,7 +122,7 @@ int gf_draw_driver_has_extension(gf_draw_t* draw, const char* query) {
|
||||
return ((ptr != NULL) && ((ptr[len] == ' ') || (ptr[len] == '\0')));
|
||||
}
|
||||
|
||||
void gf_draw_driver_reshape(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_driver_reshape(gf_draw_t* draw) {
|
||||
glViewport(0, 0, (GLint)draw->width, (GLint)draw->height);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
@ -132,7 +132,7 @@ void gf_draw_driver_reshape(gf_draw_t* draw) {
|
||||
glLoadIdentity();
|
||||
}
|
||||
|
||||
void gf_draw_driver_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_draw_driver_texture_t* texture, float r, float g, float b, float a) {
|
||||
GF_EXPORT void gf_draw_driver_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_draw_driver_texture_t* texture, float r, float g, float b, float a) {
|
||||
gf_graphic_begin_2d(draw);
|
||||
glDisable(GL_LIGHTING);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
@ -158,14 +158,14 @@ void gf_draw_driver_draw_texture(gf_draw_t* draw, float x, float y, float w, flo
|
||||
gf_graphic_end_2d(draw);
|
||||
}
|
||||
|
||||
void gf_draw_driver_destroy(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_driver_destroy(gf_draw_t* draw) {
|
||||
int i;
|
||||
for(i = 0; i < sizeof(gf_font) / sizeof(gf_font[0]); i++) {
|
||||
gf_destroy_texture(draw->font[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void gf_draw_driver_before(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_driver_before(gf_draw_t* draw) {
|
||||
GLfloat lightpos[3];
|
||||
GF_VECTOR_COPY(draw->light, lightpos);
|
||||
|
||||
@ -178,7 +178,7 @@ void gf_draw_driver_before(gf_draw_t* draw) {
|
||||
gf_graphic_clear(draw);
|
||||
}
|
||||
|
||||
void gf_draw_driver_after(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_driver_after(gf_draw_t* draw) {
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_graphic_begin_2d(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_graphic_begin_2d(gf_draw_t* draw) {
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glPushMatrix();
|
||||
glLoadIdentity();
|
||||
@ -25,7 +25,7 @@ void gf_graphic_begin_2d(gf_draw_t* draw) {
|
||||
glLoadIdentity();
|
||||
}
|
||||
|
||||
void gf_graphic_end_2d(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_graphic_end_2d(gf_draw_t* draw) {
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glPopMatrix();
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
@ -33,9 +33,9 @@ void gf_graphic_end_2d(gf_draw_t* draw) {
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
}
|
||||
|
||||
void gf_graphic_clear(gf_draw_t* draw) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); }
|
||||
GF_EXPORT void gf_graphic_clear(gf_draw_t* draw) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); }
|
||||
|
||||
void gf_graphic_text(gf_draw_t* draw, float x, float y, float size, const char* text, float r, float g, float b, float a) {
|
||||
GF_EXPORT void gf_graphic_text(gf_draw_t* draw, float x, float y, float size, const char* text, float r, float g, float b, float a) {
|
||||
int i;
|
||||
for(i = 0; text[i] != 0; i++) {
|
||||
gf_draw_texture(draw, x + i * (size / 2), y, size / 2, size, draw->font[text[i]], r, g, b, a);
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void gf_draw_platform_begin(void) {
|
||||
GF_EXPORT void gf_draw_platform_begin(void) {
|
||||
glfwInit();
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1);
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
|
||||
@ -28,9 +28,9 @@ void gf_draw_platform_begin(void) {
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_ANY_PROFILE);
|
||||
}
|
||||
|
||||
void gf_draw_platform_end(void) {}
|
||||
GF_EXPORT void gf_draw_platform_end(void) {}
|
||||
|
||||
void gf_glfw_size(GLFWwindow* window, int w, int h) {
|
||||
GF_EXPORT void gf_glfw_size(GLFWwindow* window, int w, int h) {
|
||||
gf_draw_t* draw = (gf_draw_t*)glfwGetWindowUserPointer(window);
|
||||
draw->width = w;
|
||||
draw->height = h;
|
||||
@ -38,7 +38,7 @@ void gf_glfw_size(GLFWwindow* window, int w, int h) {
|
||||
gf_draw_reshape(draw);
|
||||
}
|
||||
|
||||
int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
GF_EXPORT int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
const char* ext = NULL;
|
||||
const char* ptr;
|
||||
const int len = strlen(query);
|
||||
@ -48,7 +48,7 @@ int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
return glfwExtensionSupported(query);
|
||||
}
|
||||
|
||||
int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
GF_EXPORT int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
int ret = 0;
|
||||
int w, h;
|
||||
glfwMakeContextCurrent(draw->platform->window);
|
||||
@ -65,7 +65,7 @@ int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
draw->platform = malloc(sizeof(*draw->platform));
|
||||
memset(draw->platform, 0, sizeof(*draw->platform));
|
||||
|
||||
@ -85,7 +85,7 @@ void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void gf_draw_platform_destroy(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_platform_destroy(gf_draw_t* draw) {
|
||||
if(draw->platform->window != NULL) {
|
||||
glfwDestroyWindow(draw->platform->window);
|
||||
}
|
||||
|
@ -38,10 +38,10 @@ typedef void (*PFNGLXSWAPINTERVALEXTPROC)(Display*, GLXDrawable, int);
|
||||
typedef void (*PFNGLXSWAPINTERVALSGIPROC)(int);
|
||||
#endif
|
||||
|
||||
void gf_draw_platform_begin(void) {}
|
||||
void gf_draw_platform_end(void) {}
|
||||
GF_EXPORT void gf_draw_platform_begin(void) {}
|
||||
GF_EXPORT void gf_draw_platform_end(void) {}
|
||||
|
||||
int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
GF_EXPORT int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
const char* ext = NULL;
|
||||
const char* ptr;
|
||||
const int len = strlen(query);
|
||||
@ -53,7 +53,7 @@ int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
return ((ptr != NULL) && ((ptr[len] == ' ') || (ptr[len] == '\0')));
|
||||
}
|
||||
|
||||
void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
int i = 0;
|
||||
int attribs[64];
|
||||
int screen;
|
||||
@ -151,7 +151,7 @@ void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
GF_EXPORT int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
int ret = 0;
|
||||
glXMakeCurrent(draw->platform->display, draw->platform->window, draw->platform->context);
|
||||
while(XPending(draw->platform->display) > 0) {
|
||||
@ -183,7 +183,7 @@ int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void gf_draw_platform_destroy(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_platform_destroy(gf_draw_t* draw) {
|
||||
if(draw->platform->context != NULL) {
|
||||
glXMakeCurrent(draw->platform->display, None, NULL);
|
||||
glXDestroyContext(draw->platform->display, draw->platform->context);
|
||||
|
@ -21,10 +21,10 @@
|
||||
typedef const char*(APIENTRY* PFNWGLGETEXTENSIONSSTRINGARB)(HDC);
|
||||
typedef BOOL(APIENTRY* PFNWGLSWAPINTERVALPROC)(int);
|
||||
|
||||
void gf_draw_platform_begin(void) {}
|
||||
void gf_draw_platform_end(void) {}
|
||||
GF_EXPORT void gf_draw_platform_begin(void) {}
|
||||
GF_EXPORT void gf_draw_platform_end(void) {}
|
||||
|
||||
LRESULT CALLBACK gf_draw_platform_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
|
||||
GF_EXPORT LRESULT CALLBACK gf_draw_platform_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
|
||||
PAINTSTRUCT ps;
|
||||
RECT rect;
|
||||
gf_draw_t* draw = (gf_draw_t*)GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
||||
@ -54,7 +54,7 @@ LRESULT CALLBACK gf_draw_platform_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
GF_EXPORT int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
const char* ext = NULL;
|
||||
const char* ptr;
|
||||
const int len = strlen(query);
|
||||
@ -72,7 +72,7 @@ int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
GF_EXPORT int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
MSG msg;
|
||||
int ret = 0;
|
||||
wglMakeCurrent(draw->platform->dc, draw->platform->glrc);
|
||||
@ -95,7 +95,7 @@ int gf_draw_platform_step(gf_draw_t* draw) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
WNDCLASSEX wc;
|
||||
PIXELFORMATDESCRIPTOR desc;
|
||||
PFNWGLSWAPINTERVALPROC wglSwapIntervalEXT;
|
||||
@ -187,7 +187,7 @@ void gf_draw_platform_create(gf_draw_t* draw) {
|
||||
UpdateWindow(draw->platform->window);
|
||||
}
|
||||
|
||||
void gf_draw_platform_destroy(gf_draw_t* draw) {
|
||||
GF_EXPORT void gf_draw_platform_destroy(gf_draw_t* draw) {
|
||||
if(draw->platform->glrc != NULL) {
|
||||
wglMakeCurrent(NULL, NULL);
|
||||
}
|
||||
|
@ -12,11 +12,11 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_engine_begin(void);
|
||||
void gf_engine_end(void);
|
||||
gf_engine_t* gf_engine_create(const char* title, int nogui);
|
||||
void gf_engine_loop(gf_engine_t* engine);
|
||||
void gf_engine_set_draw(gf_engine_t* engine, void (*func)(gf_draw_t*));
|
||||
void gf_engine_destroy(gf_engine_t* engine);
|
||||
GF_EXPORT void gf_engine_begin(void);
|
||||
GF_EXPORT void gf_engine_end(void);
|
||||
GF_EXPORT gf_engine_t* gf_engine_create(const char* title, int nogui);
|
||||
GF_EXPORT void gf_engine_loop(gf_engine_t* engine);
|
||||
GF_EXPORT void gf_engine_set_draw(gf_engine_t* engine, void (*func)(gf_draw_t*));
|
||||
GF_EXPORT void gf_engine_destroy(gf_engine_t* engine);
|
||||
|
||||
#endif
|
||||
|
@ -12,13 +12,13 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
gf_draw_t* gf_draw_create(gf_engine_t* engine, const char* title);
|
||||
void gf_draw_destroy(gf_draw_t* draw);
|
||||
void gf_draw_frame(gf_draw_t* draw);
|
||||
int gf_draw_step(gf_draw_t* draw);
|
||||
void gf_draw_begin(void);
|
||||
void gf_draw_end(void);
|
||||
void gf_draw_set_draw(gf_draw_t* engine, void (*func)(gf_draw_t*));
|
||||
void gf_draw_reshape(gf_draw_t* draw);
|
||||
GF_EXPORT gf_draw_t* gf_draw_create(gf_engine_t* engine, const char* title);
|
||||
GF_EXPORT void gf_draw_destroy(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_draw_frame(gf_draw_t* draw);
|
||||
GF_EXPORT int gf_draw_step(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_draw_begin(void);
|
||||
GF_EXPORT void gf_draw_end(void);
|
||||
GF_EXPORT void gf_draw_set_draw(gf_draw_t* engine, void (*func)(gf_draw_t*));
|
||||
GF_EXPORT void gf_draw_reshape(gf_draw_t* draw);
|
||||
|
||||
#endif
|
||||
|
@ -12,15 +12,15 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_draw_driver_init(gf_draw_t* draw);
|
||||
void gf_draw_driver_destroy(gf_draw_t* draw);
|
||||
int gf_draw_driver_has_extension(gf_draw_t* draw, const char* query);
|
||||
void gf_draw_driver_reshape(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_draw_driver_init(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_draw_driver_destroy(gf_draw_t* draw);
|
||||
GF_EXPORT int gf_draw_driver_has_extension(gf_draw_t* draw, const char* query);
|
||||
GF_EXPORT void gf_draw_driver_reshape(gf_draw_t* draw);
|
||||
|
||||
gf_draw_driver_texture_t* gf_draw_driver_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data);
|
||||
void gf_draw_driver_destroy_texture(gf_draw_driver_texture_t* texture);
|
||||
void gf_draw_driver_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_draw_driver_texture_t* texture, float r, float g, float b, float a);
|
||||
void gf_draw_driver_before(gf_draw_t* draw);
|
||||
void gf_draw_driver_after(gf_draw_t* draw);
|
||||
GF_EXPORT gf_draw_driver_texture_t* gf_draw_driver_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data);
|
||||
GF_EXPORT void gf_draw_driver_destroy_texture(gf_draw_driver_texture_t* texture);
|
||||
GF_EXPORT void gf_draw_driver_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_draw_driver_texture_t* texture, float r, float g, float b, float a);
|
||||
GF_EXPORT void gf_draw_driver_before(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_draw_driver_after(gf_draw_t* draw);
|
||||
|
||||
#endif
|
||||
|
@ -12,11 +12,11 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_draw_platform_create(gf_draw_t* draw);
|
||||
void gf_draw_platform_destroy(gf_draw_t* draw);
|
||||
int gf_draw_platform_step(gf_draw_t* draw);
|
||||
int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query);
|
||||
void gf_draw_platform_begin(void);
|
||||
void gf_draw_platform_end(void);
|
||||
GF_EXPORT void gf_draw_platform_create(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_draw_platform_destroy(gf_draw_t* draw);
|
||||
GF_EXPORT int gf_draw_platform_step(gf_draw_t* draw);
|
||||
GF_EXPORT int gf_draw_platform_has_extension(gf_draw_t* draw, const char* query);
|
||||
GF_EXPORT void gf_draw_platform_begin(void);
|
||||
GF_EXPORT void gf_draw_platform_end(void);
|
||||
|
||||
#endif
|
||||
|
@ -11,9 +11,9 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_graphic_clear(gf_draw_t* draw);
|
||||
void gf_graphic_begin_2d(gf_draw_t* draw);
|
||||
void gf_graphic_end_2d(gf_draw_t* draw);
|
||||
void gf_graphic_text(gf_draw_t* draw, float x, float y, float size, const char* text, float r, float g, float b, float a);
|
||||
GF_EXPORT void gf_graphic_clear(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_graphic_begin_2d(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_graphic_end_2d(gf_draw_t* draw);
|
||||
GF_EXPORT void gf_graphic_text(gf_draw_t* draw, float x, float y, float size, const char* text, float r, float g, float b, float a);
|
||||
|
||||
#endif
|
||||
|
@ -13,6 +13,6 @@
|
||||
|
||||
#define gf_function_log(engine, fmt, ...) gf_log(engine, "%6d %24s: " fmt "\n", __LINE__, __FUNCTION_NAME__, __VA_ARGS__)
|
||||
|
||||
void gf_log(gf_engine_t* engine, const char* fmt, ...);
|
||||
GF_EXPORT void gf_log(gf_engine_t* engine, const char* fmt, ...);
|
||||
|
||||
#endif
|
||||
|
@ -55,6 +55,12 @@
|
||||
|
||||
#define GF_DECLARE_TYPE(n, b) typedef struct _gf_##n b gf_##n##_t;
|
||||
|
||||
#if defined(_WIN32) && defined(_DLL)
|
||||
#define GF_EXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define GF_EXPORT
|
||||
#endif
|
||||
|
||||
/* Expose them by default */
|
||||
#ifndef GF_EXPOSE_MATH
|
||||
#define GF_EXPOSE_MATH
|
||||
|
@ -16,7 +16,7 @@
|
||||
to[1] = from[1]; \
|
||||
to[2] = from[2]
|
||||
|
||||
float gf_log2(float x);
|
||||
void gf_calculate_normal(gf_vector_t* r, gf_vector_t v0, gf_vector_t v1, gf_vector_t v2);
|
||||
GF_EXPORT float gf_log2(float x);
|
||||
GF_EXPORT void gf_calculate_normal(gf_vector_t* r, gf_vector_t v0, gf_vector_t v1, gf_vector_t v2);
|
||||
|
||||
#endif
|
||||
|
@ -11,9 +11,9 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_physics_begin(void);
|
||||
void gf_physics_end(void);
|
||||
gf_physics_t* gf_physics_create(void);
|
||||
void gf_physics_destroy(gf_physics_t* physics);
|
||||
GF_EXPORT void gf_physics_begin(void);
|
||||
GF_EXPORT void gf_physics_end(void);
|
||||
GF_EXPORT gf_physics_t* gf_physics_create(void);
|
||||
GF_EXPORT void gf_physics_destroy(gf_physics_t* physics);
|
||||
|
||||
#endif
|
||||
|
@ -12,8 +12,8 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
gf_texture_t* gf_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data);
|
||||
void gf_destroy_texture(gf_texture_t* texture);
|
||||
void gf_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_texture_t* texture, float r, float g, float b, float a);
|
||||
GF_EXPORT gf_texture_t* gf_register_texture(gf_draw_t* draw, int width, int height, unsigned char* data);
|
||||
GF_EXPORT void gf_destroy_texture(gf_texture_t* texture);
|
||||
GF_EXPORT void gf_draw_texture(gf_draw_t* draw, float x, float y, float w, float h, gf_texture_t* texture, float r, float g, float b, float a);
|
||||
|
||||
#endif
|
||||
|
@ -11,8 +11,8 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata);
|
||||
void gf_join_thread(gf_thread_t* thread);
|
||||
void gf_destroy_thread(gf_thread_t* thread);
|
||||
GF_EXPORT gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata);
|
||||
GF_EXPORT void gf_join_thread(gf_thread_t* thread);
|
||||
GF_EXPORT void gf_destroy_thread(gf_thread_t* thread);
|
||||
|
||||
#endif
|
||||
|
@ -11,6 +11,6 @@
|
||||
|
||||
/* Standard */
|
||||
|
||||
void gf_get_version(gf_version_t* version);
|
||||
GF_EXPORT void gf_get_version(gf_version_t* version);
|
||||
|
||||
#endif
|
||||
|
@ -13,13 +13,13 @@
|
||||
/* Standard */
|
||||
#include <stdlib.h>
|
||||
|
||||
void* gf_wrap_thread(void* arg) {
|
||||
GF_EXPORT void* gf_wrap_thread(void* arg) {
|
||||
gf_thread_context_t* ctx = (gf_thread_context_t*)arg;
|
||||
ctx->func(ctx->data);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata) {
|
||||
GF_EXPORT gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata) {
|
||||
gf_thread_t* thread = malloc(sizeof(*thread));
|
||||
thread->context.func = func;
|
||||
thread->context.data = userdata;
|
||||
@ -28,9 +28,9 @@ gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void gf_join_thread(gf_thread_t* thread) {
|
||||
GF_EXPORT void gf_join_thread(gf_thread_t* thread) {
|
||||
void* value;
|
||||
pthread_join(thread->thread, &value);
|
||||
}
|
||||
|
||||
void gf_destroy_thread(gf_thread_t* thread) { free(thread); }
|
||||
GF_EXPORT void gf_destroy_thread(gf_thread_t* thread) { free(thread); }
|
||||
|
@ -13,13 +13,13 @@
|
||||
/* Standard */
|
||||
#include <stdlib.h>
|
||||
|
||||
DWORD WINAPI gf_wrap_thread(void* arg) {
|
||||
GF_EXPORT DWORD WINAPI gf_wrap_thread(void* arg) {
|
||||
gf_thread_context_t* ctx = (gf_thread_context_t*)arg;
|
||||
ctx->func(ctx->data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata) {
|
||||
GF_EXPORT gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata) {
|
||||
gf_thread_t* thread = malloc(sizeof(*thread));
|
||||
thread->context.func = func;
|
||||
thread->context.data = userdata;
|
||||
@ -28,9 +28,9 @@ gf_thread_t* gf_create_thread(void (*func)(void*), void* userdata) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void gf_join_thread(gf_thread_t* thread) { WaitForSingleObject(thread->thread, INFINITE); }
|
||||
GF_EXPORT void gf_join_thread(gf_thread_t* thread) { WaitForSingleObject(thread->thread, INFINITE); }
|
||||
|
||||
void gf_destroy_thread(gf_thread_t* thread) {
|
||||
GF_EXPORT void gf_destroy_thread(gf_thread_t* thread) {
|
||||
CloseHandle(thread->thread);
|
||||
free(thread);
|
||||
}
|
||||
|
@ -158,6 +158,10 @@ function link_stuffs(cond)
|
||||
"toolset:gcc or toolset:clang",
|
||||
cond
|
||||
})
|
||||
linkoptions({
|
||||
"-static-libgcc",
|
||||
"-static-libstdc++"
|
||||
})
|
||||
links({
|
||||
"stdc++:static"
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user