mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2026-01-10 11:23:29 +00:00
merge generic_func_idea from git
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@433 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
13
src/core.c
13
src/core.c
@@ -230,6 +230,19 @@ void MwDestroyWidget(MwWidget handle) {
|
||||
handle->destroyed = 1;
|
||||
}
|
||||
|
||||
void MwWidgetExecute(MwWidget handle, const char* func_name, void* out, ...) {
|
||||
va_list args;
|
||||
va_start(args, out);
|
||||
va_end(args);
|
||||
MwVaWidgetExecute(handle, func_name, out, args);
|
||||
}
|
||||
|
||||
void MwVaWidgetExecute(MwWidget handle, const char* func_name, void* out, va_list va) {
|
||||
if(handle->widget_class->execute != NULL) {
|
||||
handle->widget_class->execute(handle, func_name, out, va);
|
||||
}
|
||||
}
|
||||
|
||||
static void clean_destroy_queue(MwWidget handle) {
|
||||
int i, j;
|
||||
for(i = 0; i < arrlen(handle->destroy_queue); i++) {
|
||||
|
||||
@@ -76,7 +76,7 @@ MwClassRec MwButtonClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -48,7 +48,7 @@ MwClassRec MwCheckBoxClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -134,7 +134,7 @@ MwClassRec MwEntryClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
key, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -51,7 +51,7 @@ MwClassRec MwFrameClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -39,7 +39,7 @@ MwClassRec MwImageClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -56,7 +56,7 @@ MwClassRec MwLabelClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -312,24 +312,6 @@ static void prop_change(MwWidget handle, const char* prop) {
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwListBoxClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwListBoxClass = &MwListBoxClassRec;
|
||||
|
||||
void MwListBoxVaInsert(MwWidget handle, int index, MwLLPixmap pixmap, va_list va) {
|
||||
MwListBox lb = handle->internal;
|
||||
MwListBoxEntry entry;
|
||||
@@ -392,7 +374,7 @@ void MwListBoxVaInsertMultiple(MwWidget handle, int index, int count, MwLLPixmap
|
||||
}
|
||||
}
|
||||
|
||||
void MwListBoxDelete(MwWidget handle, int index) {
|
||||
static void mwListBoxDeleteImpl(MwWidget handle, int index) {
|
||||
MwListBox lb = handle->internal;
|
||||
int i;
|
||||
|
||||
@@ -416,7 +398,7 @@ void MwListBoxDelete(MwWidget handle, int index) {
|
||||
}
|
||||
}
|
||||
|
||||
void MwListBoxReset(MwWidget handle) {
|
||||
static void mwListBoxResetImpl(MwWidget handle) {
|
||||
MwListBox lb = handle->internal;
|
||||
int i;
|
||||
|
||||
@@ -448,7 +430,7 @@ void MwListBoxInsert(MwWidget handle, int index, MwLLPixmap pixmap, ...) {
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
const char* MwListBoxGet(MwWidget handle, int index) {
|
||||
static const char* mwListBoxGetImpl(MwWidget handle, int index) {
|
||||
MwListBox lb = handle->internal;
|
||||
|
||||
if(index < 0) return NULL;
|
||||
@@ -457,7 +439,7 @@ const char* MwListBoxGet(MwWidget handle, int index) {
|
||||
return lb->list[index].name[0];
|
||||
}
|
||||
|
||||
void MwListBoxSetWidth(MwWidget handle, int index, int width) {
|
||||
static void mwListBoxSetWidthImpl(MwWidget handle, int index, int width) {
|
||||
MwListBox lb = handle->internal;
|
||||
|
||||
while(((index + 1) - arrlen(lb->width)) > 0) arrput(lb->width, 0);
|
||||
@@ -467,3 +449,42 @@ void MwListBoxSetWidth(MwWidget handle, int index, int width) {
|
||||
MwForceRender(handle);
|
||||
MwForceRender(lb->frame);
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
(void)out;
|
||||
|
||||
if(strcmp(name, "mwListBoxDelete") == 0) {
|
||||
int index = va_arg(va, int);
|
||||
mwListBoxDeleteImpl(handle, index);
|
||||
}
|
||||
if(strcmp(name, "mwListBoxReset") == 0) {
|
||||
mwListBoxResetImpl(handle);
|
||||
}
|
||||
if(strcmp(name, "mwListBoxGet") == 0) {
|
||||
int index = va_arg(va, int);
|
||||
mwListBoxGetImpl(handle, index);
|
||||
}
|
||||
if(strcmp(name, "mwListBoxSetWidth") == 0) {
|
||||
int index = va_arg(va, int);
|
||||
int width = va_arg(va, int);
|
||||
mwListBoxSetWidthImpl(handle, index, width);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwListBoxClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwListBoxClass = &MwListBoxClassRec;
|
||||
|
||||
@@ -172,25 +172,7 @@ static void mouse_up(MwWidget handle, void* ptr) {
|
||||
MwForceRender(handle);
|
||||
}
|
||||
|
||||
MwClassRec MwMenuClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
parent_resize, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
mouse_up, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwMenuClass = &MwMenuClassRec;
|
||||
|
||||
MwMenu MwMenuAdd(MwWidget handle, MwMenu menu, const char* name) {
|
||||
static MwMenu mwMenuAddImpl(MwWidget handle, MwMenu menu, const char* name) {
|
||||
MwMenu m = menu == NULL ? handle->internal : menu;
|
||||
MwMenu new = malloc(sizeof(*new));
|
||||
new->name = MwStringDupliacte(name);
|
||||
@@ -204,3 +186,29 @@ MwMenu MwMenuAdd(MwWidget handle, MwMenu menu, const char* name) {
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
if(strcmp(name, "mwMenuAdd") == 0) {
|
||||
MwMenu menu = va_arg(va, MwMenu);
|
||||
const char* name = va_arg(va, const char*);
|
||||
*(MwMenu*)out = mwMenuAddImpl(handle, menu, name);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwMenuClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
parent_resize, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
mouse_up, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwMenuClass = &MwMenuClassRec;
|
||||
|
||||
@@ -141,7 +141,7 @@ MwClassRec MwNumberEntryClassRec = {
|
||||
mouse_up, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
key, /* key */
|
||||
NULL,
|
||||
NULL, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -126,25 +126,7 @@ static void destroy(MwWidget handle) {
|
||||
free(o);
|
||||
}
|
||||
|
||||
MwClassRec MwOpenGLClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
NULL, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwOpenGLClass = &MwOpenGLClassRec;
|
||||
|
||||
void MwOpenGLMakeCurrent(MwWidget handle) {
|
||||
static void mwOpenGLMakeCurrentImpl(MwWidget handle) {
|
||||
opengl_t* o = (opengl_t*)handle->internal;
|
||||
#ifdef _WIN32
|
||||
o->wglMakeCurrent(o->dc, o->gl);
|
||||
@@ -153,7 +135,7 @@ void MwOpenGLMakeCurrent(MwWidget handle) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void MwOpenGLSwapBuffer(MwWidget handle) {
|
||||
static void mwOpenGLSwapBufferImpl(MwWidget handle) {
|
||||
opengl_t* o = (opengl_t*)handle->internal;
|
||||
#ifdef _WIN32
|
||||
SwapBuffers(o->dc);
|
||||
@@ -164,7 +146,7 @@ void MwOpenGLSwapBuffer(MwWidget handle) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void* MwOpenGLGetProcAddress(MwWidget handle, const char* name) {
|
||||
static void* mwOpenGLGetProcAddressImpl(MwWidget handle, const char* name) {
|
||||
opengl_t* o = (opengl_t*)handle->internal;
|
||||
#ifdef _WIN32
|
||||
return o->wglGetProcAddress(name);
|
||||
@@ -172,3 +154,34 @@ void* MwOpenGLGetProcAddress(MwWidget handle, const char* name) {
|
||||
return o->glXGetProcAddress((const GLubyte*)name);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
if(strcmp(name, "mwOpenGLMakeCurrent") == 0) {
|
||||
mwOpenGLMakeCurrentImpl(handle);
|
||||
}
|
||||
if(strcmp(name, "mwOpenGLSwapBuffer") == 0) {
|
||||
mwOpenGLSwapBufferImpl(handle);
|
||||
}
|
||||
if(strcmp(name, "mwOpenGLGetProcAddress") == 0) {
|
||||
const char* _name = va_arg(va, const char*);
|
||||
*(void**)out = mwOpenGLGetProcAddressImpl(handle, _name);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwOpenGLClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
NULL, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwOpenGLClass = &MwOpenGLClassRec;
|
||||
|
||||
@@ -132,7 +132,7 @@ static void draw(MwWidget handle) {
|
||||
}
|
||||
|
||||
static void mouse_move(MwWidget handle) {
|
||||
int or = MwGetInteger(handle, MwNorientation);
|
||||
int or = MwGetInteger(handle, MwNorientation);
|
||||
scrollbar_t* scr = handle->internal;
|
||||
|
||||
if(!handle->pressed) return;
|
||||
@@ -160,9 +160,9 @@ static void mouse_move(MwWidget handle) {
|
||||
}
|
||||
|
||||
static void mouse_down(MwWidget handle, void* ptr) {
|
||||
int ww = MwGetInteger(handle, MwNwidth);
|
||||
int wh = MwGetInteger(handle, MwNheight);
|
||||
int or = MwGetInteger(handle, MwNorientation);
|
||||
int ww = MwGetInteger(handle, MwNwidth);
|
||||
int wh = MwGetInteger(handle, MwNheight);
|
||||
int or = MwGetInteger(handle, MwNorientation);
|
||||
scrollbar_t* scr = handle->internal;
|
||||
MwLLMouse* m = ptr;
|
||||
|
||||
@@ -219,25 +219,7 @@ static void prop_change(MwWidget handle, const char* key) {
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwScrollBarClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
mouse_move, /* mouse_move */
|
||||
MwForceRender2, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwScrollBarClass = &MwScrollBarClassRec;
|
||||
|
||||
int MwScrollBarGetVisibleLength(MwWidget handle) {
|
||||
static int mwScrollBarGetVisibleLengthImpl(MwWidget handle) {
|
||||
int ww = MwGetInteger(handle, MwNwidth);
|
||||
int wh = MwGetInteger(handle, MwNheight);
|
||||
int or = MwGetInteger(handle, MwNorientation);
|
||||
@@ -253,3 +235,29 @@ int MwScrollBarGetVisibleLength(MwWidget handle) {
|
||||
}
|
||||
return s - tri - MwDefaultBorderWidth * 2;
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
(void)va;
|
||||
|
||||
if(strcmp(name, "mwScrollBarGetVisibleLength") == 0) {
|
||||
*(int*)out = mwScrollBarGetVisibleLengthImpl(handle);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwScrollBarClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
mouse_move, /* mouse_move */
|
||||
MwForceRender2, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwScrollBarClass = &MwScrollBarClassRec;
|
||||
|
||||
@@ -146,25 +146,7 @@ static void click(MwWidget handle) {
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwSubMenuClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwSubMenuClass = &MwSubMenuClassRec;
|
||||
|
||||
void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point) {
|
||||
static void mwSubMenuAppearImpl(MwWidget handle, MwMenu menu, MwPoint* point) {
|
||||
int i, w = 0, h = 0;
|
||||
#ifdef UNIX
|
||||
XSetWindowAttributes xswa;
|
||||
@@ -204,3 +186,31 @@ void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point) {
|
||||
MwNheight, h,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
(void)out;
|
||||
|
||||
if(strcmp(name, "mwSubMenuAppear") == 0) {
|
||||
MwMenu menu = va_arg(va, MwMenu);
|
||||
MwPoint* point = va_arg(va, MwPoint*);
|
||||
mwSubMenuAppearImpl(handle, menu, point);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwSubMenuClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
click, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwSubMenuClass = &MwSubMenuClassRec;
|
||||
|
||||
@@ -118,31 +118,13 @@ static void prop_change(MwWidget handle, const char* prop) {
|
||||
if(strcmp(prop, MwNwidth) == 0 || strcmp(prop, MwNheight) == 0) resize(handle);
|
||||
}
|
||||
|
||||
MwClassRec MwViewportClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwViewportClass = &MwViewportClassRec;
|
||||
|
||||
MwWidget MwViewportGetViewport(MwWidget handle) {
|
||||
static MwWidget mwViewportGetViewportImpl(MwWidget handle) {
|
||||
MwViewport vp = handle->internal;
|
||||
|
||||
return vp->inframe;
|
||||
}
|
||||
|
||||
void MwViewportSetSize(MwWidget handle, int w, int h) {
|
||||
static void mwViewportSetSizeImpl(MwWidget handle, int w, int h) {
|
||||
MwViewport vp = handle->internal;
|
||||
|
||||
MwVaApply(vp->inframe,
|
||||
@@ -152,3 +134,32 @@ void MwViewportSetSize(MwWidget handle, int w, int h) {
|
||||
|
||||
resize(handle);
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
if(strcmp(name, "mwViewportGetViewport") == 0) {
|
||||
*(MwWidget*)out = mwViewportGetViewportImpl(handle);
|
||||
}
|
||||
if(strcmp(name, "mwViewportSetSize") == 0) {
|
||||
int w = va_arg(va, int);
|
||||
int h = va_arg(va, int);
|
||||
mwViewportSetSizeImpl(handle, w, h);
|
||||
}
|
||||
}
|
||||
|
||||
MwClassRec MwViewportClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwViewportClass = &MwViewportClassRec;
|
||||
|
||||
@@ -452,7 +452,25 @@ void MwVulkanEnableExtension(const char* name) {
|
||||
void MwVulkanEnableLayer(const char* name) {
|
||||
arrput(enabledLayers, name);
|
||||
}
|
||||
void* MwVulkanGetField(MwWidget handle, MwVulkanField field, MwErrorEnum* out) {
|
||||
|
||||
VkBool32 MwVulkanSupported(void) {
|
||||
if(vulkan_supported == VULKAN_SUPPORTED_UNKNOWN) {
|
||||
LIB_TYPE lib = vulkan_lib_load();
|
||||
if(lib == NULL) {
|
||||
vulkan_supported = VULKAN_SUPPORTED_NO;
|
||||
} else {
|
||||
vulkan_supported = VULKAN_SUPPORTED_YES;
|
||||
LIB_CLOSE(lib);
|
||||
}
|
||||
}
|
||||
if(vulkan_supported == VULKAN_SUPPORTED_YES) {
|
||||
return VK_TRUE;
|
||||
} else {
|
||||
return VK_FALSE;
|
||||
}
|
||||
};
|
||||
|
||||
static void* mwVulkanGetFieldImpl(MwWidget handle, MwVulkanField field, MwErrorEnum* out) {
|
||||
vulkan_t* o = handle->internal;
|
||||
|
||||
switch(field) {
|
||||
@@ -486,35 +504,26 @@ void* MwVulkanGetField(MwWidget handle, MwVulkanField field, MwErrorEnum* out) {
|
||||
}
|
||||
};
|
||||
|
||||
VkBool32 MwVulkanSupported(void) {
|
||||
if(vulkan_supported == VULKAN_SUPPORTED_UNKNOWN) {
|
||||
LIB_TYPE lib = vulkan_lib_load();
|
||||
if(lib == NULL) {
|
||||
vulkan_supported = VULKAN_SUPPORTED_NO;
|
||||
} else {
|
||||
vulkan_supported = VULKAN_SUPPORTED_YES;
|
||||
LIB_CLOSE(lib);
|
||||
}
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
if(strcmp(name, "mwVulkanGetField") == 0) {
|
||||
MwVulkanField field = va_arg(va, MwVulkanField);
|
||||
MwErrorEnum* err = va_arg(va, MwErrorEnum*);
|
||||
*(void**)out = mwVulkanGetFieldImpl(handle, field, err);
|
||||
}
|
||||
if(vulkan_supported == VULKAN_SUPPORTED_YES) {
|
||||
return VK_TRUE;
|
||||
} else {
|
||||
return VK_FALSE;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
MwClassRec MwVulkanClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
NULL, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
NULL, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -20,29 +20,32 @@ static void draw(MwWidget handle) {
|
||||
|
||||
MwLLFreeColor(c);
|
||||
}
|
||||
static void mwWindowMakeBorderlessImpl(MwWidget handle, int toggle) {
|
||||
MwLLMakeBorderless(handle->lowlevel, toggle);
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
(void)out;
|
||||
|
||||
if(strcmp(name, "mwWindowMakeBorderless") == 0) {
|
||||
int toggle = va_arg(va, int);
|
||||
mwWindowMakeBorderlessImpl(handle, toggle);
|
||||
}
|
||||
}
|
||||
MwClassRec MwWindowClassRec = {
|
||||
create, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL,
|
||||
create, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
NULL, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwWindowClass = &MwWindowClassRec;
|
||||
|
||||
void MwWindowSetIcon(MwWidget handle, MwLLPixmap pixmap) {
|
||||
MwLLSetIcon(handle->lowlevel, pixmap);
|
||||
}
|
||||
|
||||
void MwWindowMakeBorderless(MwWidget handle, int toggle) {
|
||||
MwLLMakeBorderless(handle->lowlevel, toggle);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user