|
@@ -14,6 +14,8 @@
|
|
SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false))
|
|
SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false))
|
|
SOKOL_ABORT() - called after an unrecoverable error (default: abort())
|
|
SOKOL_ABORT() - called after an unrecoverable error (default: abort())
|
|
SOKOL_WIN32_FORCE_MAIN - define this on Win32 to use a main() entry point instead of WinMain
|
|
SOKOL_WIN32_FORCE_MAIN - define this on Win32 to use a main() entry point instead of WinMain
|
|
|
|
+ SOKOL_API_DECL - public function declaration prefix (default: extern)
|
|
|
|
+ SOKOL_API_IMPL - public function implementation (default: -)
|
|
|
|
|
|
Optionally define the following to force debug checks and validations
|
|
Optionally define the following to force debug checks and validations
|
|
even in release mode:
|
|
even in release mode:
|
|
@@ -327,6 +329,10 @@
|
|
#include <stdint.h>
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <stdbool.h>
|
|
|
|
|
|
|
|
+#ifndef SOKOL_API_DECL
|
|
|
|
+ #define SOKOL_API_DECL extern
|
|
|
|
+#endif
|
|
|
|
+
|
|
#ifdef __cplusplus
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
extern "C" {
|
|
#endif
|
|
#endif
|
|
@@ -554,30 +560,30 @@ typedef struct {
|
|
extern sapp_desc sokol_main(int argc, char* argv[]);
|
|
extern sapp_desc sokol_main(int argc, char* argv[]);
|
|
|
|
|
|
/* sokol_app API functions */
|
|
/* sokol_app API functions */
|
|
-extern bool sapp_isvalid(void);
|
|
|
|
-extern int sapp_width(void);
|
|
|
|
-extern int sapp_height(void);
|
|
|
|
-extern bool sapp_high_dpi(void);
|
|
|
|
-extern float sapp_dpi_scale(void);
|
|
|
|
-extern void sapp_show_keyboard(bool visible);
|
|
|
|
-extern bool sapp_keyboard_shown(void);
|
|
|
|
|
|
+SOKOL_API_DECL bool sapp_isvalid(void);
|
|
|
|
+SOKOL_API_DECL int sapp_width(void);
|
|
|
|
+SOKOL_API_DECL int sapp_height(void);
|
|
|
|
+SOKOL_API_DECL bool sapp_high_dpi(void);
|
|
|
|
+SOKOL_API_DECL float sapp_dpi_scale(void);
|
|
|
|
+SOKOL_API_DECL void sapp_show_keyboard(bool visible);
|
|
|
|
+SOKOL_API_DECL bool sapp_keyboard_shown(void);
|
|
|
|
|
|
/* GL/GLES specific functions */
|
|
/* GL/GLES specific functions */
|
|
-extern bool sapp_gles2(void);
|
|
|
|
|
|
+SOKOL_API_DECL bool sapp_gles2(void);
|
|
|
|
|
|
/* OSX/Metal specific functions */
|
|
/* OSX/Metal specific functions */
|
|
-extern const void* sapp_metal_get_device(void);
|
|
|
|
-extern const void* sapp_metal_get_renderpass_descriptor(void);
|
|
|
|
-extern const void* sapp_metal_get_drawable(void);
|
|
|
|
-extern const void* sapp_macos_get_window(void);
|
|
|
|
-extern const void* sapp_ios_get_window(void);
|
|
|
|
|
|
+SOKOL_API_DECL const void* sapp_metal_get_device(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_metal_get_renderpass_descriptor(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_metal_get_drawable(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_macos_get_window(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_ios_get_window(void);
|
|
|
|
|
|
/* Win32/D3D11 specific functions */
|
|
/* Win32/D3D11 specific functions */
|
|
-extern const void* sapp_d3d11_get_device(void);
|
|
|
|
-extern const void* sapp_d3d11_get_device_context(void);
|
|
|
|
-extern const void* sapp_d3d11_get_render_target_view(void);
|
|
|
|
-extern const void* sapp_d3d11_get_depth_stencil_view(void);
|
|
|
|
-extern const void* sapp_win32_get_hwnd(void);
|
|
|
|
|
|
+SOKOL_API_DECL const void* sapp_d3d11_get_device(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_d3d11_get_device_context(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_d3d11_get_render_target_view(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_d3d11_get_depth_stencil_view(void);
|
|
|
|
+SOKOL_API_DECL const void* sapp_win32_get_hwnd(void);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
} /* extern "C" */
|
|
@@ -632,6 +638,9 @@ extern const void* sapp_win32_get_hwnd(void);
|
|
#error "sokol_app.h: Unknown platform"
|
|
#error "sokol_app.h: Unknown platform"
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#ifndef SOKOL_API_IMPL
|
|
|
|
+ #define SOKOL_API_IMPL
|
|
|
|
+#endif
|
|
#ifndef SOKOL_DEBUG
|
|
#ifndef SOKOL_DEBUG
|
|
#ifdef _DEBUG
|
|
#ifdef _DEBUG
|
|
#define SOKOL_DEBUG (1)
|
|
#define SOKOL_DEBUG (1)
|
|
@@ -5660,31 +5669,31 @@ int main(int argc, char* argv[]) {
|
|
#endif /* LINUX */
|
|
#endif /* LINUX */
|
|
|
|
|
|
/*== PUBLIC API FUNCTIONS ====================================================*/
|
|
/*== PUBLIC API FUNCTIONS ====================================================*/
|
|
-bool sapp_isvalid(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL bool sapp_isvalid(void) {
|
|
return _sapp.valid;
|
|
return _sapp.valid;
|
|
}
|
|
}
|
|
|
|
|
|
-int sapp_width(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL int sapp_width(void) {
|
|
return (_sapp.framebuffer_width > 0) ? _sapp.framebuffer_width : 1;
|
|
return (_sapp.framebuffer_width > 0) ? _sapp.framebuffer_width : 1;
|
|
}
|
|
}
|
|
|
|
|
|
-int sapp_height(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL int sapp_height(void) {
|
|
return (_sapp.framebuffer_height > 0) ? _sapp.framebuffer_height : 1;
|
|
return (_sapp.framebuffer_height > 0) ? _sapp.framebuffer_height : 1;
|
|
}
|
|
}
|
|
|
|
|
|
-bool sapp_high_dpi(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL bool sapp_high_dpi(void) {
|
|
return _sapp.desc.high_dpi && (_sapp.dpi_scale > 1.5f);
|
|
return _sapp.desc.high_dpi && (_sapp.dpi_scale > 1.5f);
|
|
}
|
|
}
|
|
|
|
|
|
-float sapp_dpi_scale(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL float sapp_dpi_scale(void) {
|
|
return _sapp.dpi_scale;
|
|
return _sapp.dpi_scale;
|
|
}
|
|
}
|
|
|
|
|
|
-bool sapp_gles2(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL bool sapp_gles2(void) {
|
|
return _sapp.gles2_fallback;
|
|
return _sapp.gles2_fallback;
|
|
}
|
|
}
|
|
|
|
|
|
-void sapp_show_keyboard(bool shown) {
|
|
|
|
|
|
+SOKOL_API_IMPL void sapp_show_keyboard(bool shown) {
|
|
#if TARGET_OS_IPHONE
|
|
#if TARGET_OS_IPHONE
|
|
_sapp_ios_show_keyboard(shown);
|
|
_sapp_ios_show_keyboard(shown);
|
|
#elif __EMSCRIPTEN__
|
|
#elif __EMSCRIPTEN__
|
|
@@ -5694,11 +5703,11 @@ void sapp_show_keyboard(bool shown) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-bool sapp_keyboard_shown(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL bool sapp_keyboard_shown(void) {
|
|
return _sapp.onscreen_keyboard_shown;
|
|
return _sapp.onscreen_keyboard_shown;
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_metal_get_device(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_metal_get_device(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_METAL)
|
|
#if defined(SOKOL_METAL)
|
|
const void* obj = (__bridge const void*) _sapp_mtl_device_obj;
|
|
const void* obj = (__bridge const void*) _sapp_mtl_device_obj;
|
|
@@ -5709,7 +5718,7 @@ const void* sapp_metal_get_device(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_metal_get_renderpass_descriptor(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_metal_get_renderpass_descriptor(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_METAL)
|
|
#if defined(SOKOL_METAL)
|
|
const void* obj = (__bridge const void*) [_sapp_view_obj currentRenderPassDescriptor];
|
|
const void* obj = (__bridge const void*) [_sapp_view_obj currentRenderPassDescriptor];
|
|
@@ -5720,7 +5729,7 @@ const void* sapp_metal_get_renderpass_descriptor(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_metal_get_drawable(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_metal_get_drawable(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_METAL)
|
|
#if defined(SOKOL_METAL)
|
|
const void* obj = (__bridge const void*) [_sapp_view_obj currentDrawable];
|
|
const void* obj = (__bridge const void*) [_sapp_view_obj currentDrawable];
|
|
@@ -5731,7 +5740,7 @@ const void* sapp_metal_get_drawable(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_macos_get_window(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_macos_get_window(void) {
|
|
#if defined(__APPLE__) && !TARGET_OS_IPHONE
|
|
#if defined(__APPLE__) && !TARGET_OS_IPHONE
|
|
const void* obj = (__bridge const void*) _sapp_macos_window_obj;
|
|
const void* obj = (__bridge const void*) _sapp_macos_window_obj;
|
|
SOKOL_ASSERT(obj);
|
|
SOKOL_ASSERT(obj);
|
|
@@ -5741,7 +5750,7 @@ const void* sapp_macos_get_window(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_ios_get_window(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_ios_get_window(void) {
|
|
#if defined(__APPLE__) && TARGET_OS_IPHONE
|
|
#if defined(__APPLE__) && TARGET_OS_IPHONE
|
|
const void* obj = (__bridge const void*) _sapp_ios_window_obj;
|
|
const void* obj = (__bridge const void*) _sapp_ios_window_obj;
|
|
SOKOL_ASSERT(obj);
|
|
SOKOL_ASSERT(obj);
|
|
@@ -5752,7 +5761,7 @@ const void* sapp_ios_get_window(void) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_d3d11_get_device(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_d3d11_get_device(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_D3D11)
|
|
#if defined(SOKOL_D3D11)
|
|
return _sapp_d3d11_device;
|
|
return _sapp_d3d11_device;
|
|
@@ -5761,7 +5770,7 @@ const void* sapp_d3d11_get_device(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_d3d11_get_device_context(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_d3d11_get_device_context(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_D3D11)
|
|
#if defined(SOKOL_D3D11)
|
|
return _sapp_d3d11_device_context;
|
|
return _sapp_d3d11_device_context;
|
|
@@ -5770,7 +5779,7 @@ const void* sapp_d3d11_get_device_context(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_d3d11_get_render_target_view(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_d3d11_get_render_target_view(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_D3D11)
|
|
#if defined(SOKOL_D3D11)
|
|
return _sapp_d3d11_rtv;
|
|
return _sapp_d3d11_rtv;
|
|
@@ -5779,7 +5788,7 @@ const void* sapp_d3d11_get_render_target_view(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_d3d11_get_depth_stencil_view(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_d3d11_get_depth_stencil_view(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(SOKOL_D3D11)
|
|
#if defined(SOKOL_D3D11)
|
|
return _sapp_d3d11_dsv;
|
|
return _sapp_d3d11_dsv;
|
|
@@ -5788,7 +5797,7 @@ const void* sapp_d3d11_get_depth_stencil_view(void) {
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-const void* sapp_win32_get_hwnd(void) {
|
|
|
|
|
|
+SOKOL_API_IMPL const void* sapp_win32_get_hwnd(void) {
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
SOKOL_ASSERT(_sapp.valid);
|
|
#if defined(_WIN32)
|
|
#if defined(_WIN32)
|
|
return _sapp_win32_hwnd;
|
|
return _sapp_win32_hwnd;
|