diff --git a/BorMakefile b/BorMakefile index e6e4e3a..b48d96f 100644 --- a/BorMakefile +++ b/BorMakefile @@ -10,6 +10,7 @@ LDFLAGS = -tWD all: src\Mw.dll oosrc\MwOO.dll clean: del /f /q src\core.obj + del /f /q src\string.obj del /f /q src\draw.obj del /f /q src\default.obj del /f /q src\lowlevel.obj @@ -19,7 +20,6 @@ clean: del /f /q src\color.obj del /f /q src\directory.obj del /f /q src\messagebox.obj - del /f /q src\string.obj del /f /q src\boldfont.obj del /f /q src\filechooser.obj del /f /q external\ds.obj @@ -74,8 +74,8 @@ clean: del /f /q src\Mw.dll del /f /q oosrc\MwOO.dll -src\Mw.dll: src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj - $(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib +src\Mw.dll: src\core.obj src\string.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj + $(LD) $(LDFLAGS) -e$@ src\core.obj src\string.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib implib src\Mw.lib src\Mw.dll oosrc\MwOO.dll: oosrc\base.obj oosrc\widget\button.obj oosrc\widget\frame.obj oosrc\widget\image.obj oosrc\widget\menu.obj oosrc\widget\opengl.obj oosrc\widget\scrollbar.obj oosrc\widget\submenu.obj oosrc\widget\window.obj oosrc\widget\checkbox.obj oosrc\widget\viewport.obj oosrc\widget\listbox.obj oosrc\widget\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj diff --git a/NTMakefile b/NTMakefile index 0e119bb..d1a459c 100644 --- a/NTMakefile +++ b/NTMakefile @@ -10,6 +10,7 @@ LDFLAGS = /DLL all: src\Mw.dll oosrc\MwOO.dll clean: del /f /q src\core.obj + del /f /q src\string.obj del /f /q src\draw.obj del /f /q src\default.obj del /f /q src\lowlevel.obj @@ -19,7 +20,6 @@ clean: del /f /q src\color.obj del /f /q src\directory.obj del /f /q src\messagebox.obj - del /f /q src\string.obj del /f /q src\boldfont.obj del /f /q src\filechooser.obj del /f /q external\ds.obj @@ -74,8 +74,8 @@ clean: del /f /q src\Mw.dll del /f /q oosrc\MwOO.dll -src\Mw.dll: src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj - $(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\string.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib +src\Mw.dll: src\core.obj src\string.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj + $(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\string.obj src\draw.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\font.obj src\color.obj src\directory.obj src\messagebox.obj src\boldfont.obj src\filechooser.obj external\ds.obj external\image.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.obj src\icon\question.obj src\icon\directory.obj src\icon\file.obj src\icon\back.obj src\icon\forward.obj src\icon\up.obj src\icon\computer.obj src\icon\search.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\widget\button.obj src\widget\frame.obj src\widget\opengl.obj src\widget\window.obj src\widget\menu.obj src\widget\entry.obj src\widget\submenu.obj src\widget\viewport.obj src\widget\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\listbox.obj src\widget\numberentry.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib oosrc\MwOO.dll: oosrc\base.obj oosrc\widget\button.obj oosrc\widget\frame.obj oosrc\widget\image.obj oosrc\widget\menu.obj oosrc\widget\opengl.obj oosrc\widget\scrollbar.obj oosrc\widget\submenu.obj oosrc\widget\window.obj oosrc\widget\checkbox.obj oosrc\widget\viewport.obj oosrc\widget\listbox.obj oosrc\widget\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj diff --git a/WatMakefile b/WatMakefile index a5e8f32..d0d74a4 100644 --- a/WatMakefile +++ b/WatMakefile @@ -9,6 +9,7 @@ LDFLAGS = system nt_dll all: src/Mw.dll oosrc/MwOO.dll clean: .SYMBOLIC %erase src/core.obj + %erase src/string.obj %erase src/draw.obj %erase src/default.obj %erase src/lowlevel.obj @@ -18,7 +19,6 @@ clean: .SYMBOLIC %erase src/color.obj %erase src/directory.obj %erase src/messagebox.obj - %erase src/string.obj %erase src/boldfont.obj %erase src/filechooser.obj %erase external/ds.obj @@ -73,8 +73,8 @@ clean: .SYMBOLIC %erase src/Mw.dll %erase oosrc/MwOO.dll -src/Mw.dll: src/core.obj src/draw.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/font.obj src/color.obj src/directory.obj src/messagebox.obj src/string.obj src/boldfont.obj src/filechooser.obj external/ds.obj external/image.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/question.obj src/icon/directory.obj src/icon/file.obj src/icon/back.obj src/icon/forward.obj src/icon/up.obj src/icon/computer.obj src/icon/search.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/cursor/hidden.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/viewport.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/listbox.obj src/widget/numberentry.obj src/backend/gdi.obj - $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/font.obj file src/color.obj file src/directory.obj file src/messagebox.obj file src/string.obj file src/boldfont.obj file src/filechooser.obj file external/ds.obj file external/image.obj file src/icon/info.obj file src/icon/note.obj file src/icon/warning.obj file src/icon/error.obj file src/icon/news.obj file src/icon/question.obj file src/icon/directory.obj file src/icon/file.obj file src/icon/back.obj file src/icon/forward.obj file src/icon/up.obj file src/icon/computer.obj file src/icon/search.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/cursor/hidden.obj file src/widget/button.obj file src/widget/frame.obj file src/widget/opengl.obj file src/widget/window.obj file src/widget/menu.obj file src/widget/entry.obj file src/widget/submenu.obj file src/widget/viewport.obj file src/widget/image.obj file src/widget/scrollbar.obj file src/widget/checkbox.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/numberentry.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib +src/Mw.dll: src/core.obj src/string.obj src/draw.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/font.obj src/color.obj src/directory.obj src/messagebox.obj src/boldfont.obj src/filechooser.obj external/ds.obj external/image.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.obj src/icon/question.obj src/icon/directory.obj src/icon/file.obj src/icon/back.obj src/icon/forward.obj src/icon/up.obj src/icon/computer.obj src/icon/search.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/cursor/hidden.obj src/widget/button.obj src/widget/frame.obj src/widget/opengl.obj src/widget/window.obj src/widget/menu.obj src/widget/entry.obj src/widget/submenu.obj src/widget/viewport.obj src/widget/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/listbox.obj src/widget/numberentry.obj src/backend/gdi.obj + $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/string.obj file src/draw.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/font.obj file src/color.obj file src/directory.obj file src/messagebox.obj file src/boldfont.obj file src/filechooser.obj file external/ds.obj file external/image.obj file src/icon/info.obj file src/icon/note.obj file src/icon/warning.obj file src/icon/error.obj file src/icon/news.obj file src/icon/question.obj file src/icon/directory.obj file src/icon/file.obj file src/icon/back.obj file src/icon/forward.obj file src/icon/up.obj file src/icon/computer.obj file src/icon/search.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/cursor/hidden.obj file src/widget/button.obj file src/widget/frame.obj file src/widget/opengl.obj file src/widget/window.obj file src/widget/menu.obj file src/widget/entry.obj file src/widget/submenu.obj file src/widget/viewport.obj file src/widget/image.obj file src/widget/scrollbar.obj file src/widget/checkbox.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/numberentry.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib oosrc/MwOO.dll: oosrc/base.obj oosrc/widget/button.obj oosrc/widget/frame.obj oosrc/widget/image.obj oosrc/widget/menu.obj oosrc/widget/opengl.obj oosrc/widget/scrollbar.obj oosrc/widget/submenu.obj oosrc/widget/window.obj oosrc/widget/checkbox.obj oosrc/widget/viewport.obj oosrc/widget/listbox.obj oosrc/widget/label.obj oosrc/widget/entry.obj oosrc/widget/numberentry.obj @@ -84,6 +84,8 @@ oosrc/MwOO.dll: oosrc/base.obj oosrc/widget/button.obj oosrc/widget/frame.obj o src/core.obj: src/core.c $(CC) $(CFLAGS) -fo=$@ $< +src/string.obj: src/string.c + $(CC) $(CFLAGS) -fo=$@ $< src/draw.obj: src/draw.c $(CC) $(CFLAGS) -fo=$@ $< src/default.obj: src/default.c @@ -102,8 +104,6 @@ src/directory.obj: src/directory.c $(CC) $(CFLAGS) -fo=$@ $< src/messagebox.obj: src/messagebox.c $(CC) $(CFLAGS) -fo=$@ $< -src/string.obj: src/string.c - $(CC) $(CFLAGS) -fo=$@ $< src/boldfont.obj: src/boldfont.c $(CC) $(CFLAGS) -fo=$@ $< src/filechooser.obj: src/filechooser.c diff --git a/doc/index.html b/doc/index.html index 7902ce6..7b61abc 100644 --- a/doc/index.html +++ b/doc/index.html @@ -78,10 +78,10 @@ MwDestroyWidget
MWDECL void MwWidgetExecute ( +MWDECL void MwVaWidgetExecute ( MwWidget handle, const char* func_name, void* out, @@ -1024,7 +1024,7 @@
-MWDECL void MwVaWidgetExecute ( +MWDECL void MwVaListWidgetExecute ( MwWidget handle, const char* func_name, void* out, diff --git a/include/Mw/Core.h b/include/Mw/Core.h index 7685732..96daf29 100644 --- a/include/Mw/Core.h +++ b/include/Mw/Core.h @@ -97,7 +97,7 @@ MWDECL void MwDestroyWidget(MwWidget handle); * %param handle Widget * %param ... Widget function arguments. */ -MWDECL void MwWidgetExecute(MwWidget handle, const char* func_name, void* out, ...); +MWDECL void MwVaWidgetExecute(MwWidget handle, const char* func_name, void* out, ...); /*! * %brief Executes a method specific to the widget (va_list version). diff --git a/include/Mw/Widget/ListBox.h b/include/Mw/Widget/ListBox.h index 95665a8..61edd6b 100644 --- a/include/Mw/Widget/ListBox.h +++ b/include/Mw/Widget/ListBox.h @@ -64,7 +64,7 @@ MWDECL void MwListBoxVaInsertMultiple(MwWidget handle, int index, int count, MwL * %param index Index */ MwInline void MwListBoxDelete(MwWidget handle, int index) { - MwWidgetExecute(handle, "mwListboxDelete", NULL, index); + MwVaWidgetExecute(handle, "mwListboxDelete", NULL, index); }; /*! @@ -75,7 +75,7 @@ MwInline void MwListBoxDelete(MwWidget handle, int index) { */ MwInline const char* MwListBoxGet(MwWidget handle, int index) { const char* out; - MwWidgetExecute(handle, "mwListBoxGet", (void*)&out, index); + MwVaWidgetExecute(handle, "mwListBoxGet", (void*)&out, index); return out; }; @@ -86,7 +86,7 @@ MwInline const char* MwListBoxGet(MwWidget handle, int index) { * %param width Width */ MwInline void MwListBoxSetWidth(MwWidget handle, int index, int width) { - MwWidgetExecute(handle, "mwListBoxSetWidth", NULL, index, width); + MwVaWidgetExecute(handle, "mwListBoxSetWidth", NULL, index, width); }; /*! @@ -94,7 +94,7 @@ MwInline void MwListBoxSetWidth(MwWidget handle, int index, int width) { * %param handle Widget */ MwInline void MwListBoxReset(MwWidget handle) { - MwWidgetExecute(handle, "mwListBoxReset", NULL, handle); + MwVaWidgetExecute(handle, "mwListBoxReset", NULL, handle); }; #ifdef __cplusplus diff --git a/include/Mw/Widget/Menu.h b/include/Mw/Widget/Menu.h index 900aa7c..d4d0838 100644 --- a/include/Mw/Widget/Menu.h +++ b/include/Mw/Widget/Menu.h @@ -28,7 +28,7 @@ MWDECL MwClass MwMenuClass; */ MwInline MwMenu MwMenuAdd(MwWidget handle, MwMenu menu, const char* name) { MwMenu out; - MwWidgetExecute(handle, "mwMenuAdd", &out, menu, name); + MwVaWidgetExecute(handle, "mwMenuAdd", &out, menu, name); return out; }; diff --git a/include/Mw/Widget/OpenGL.h b/include/Mw/Widget/OpenGL.h index 9fcb836..eb49468 100644 --- a/include/Mw/Widget/OpenGL.h +++ b/include/Mw/Widget/OpenGL.h @@ -35,7 +35,7 @@ MWDECL MwClass MwOpenGLClass; * %param handle Widget */ MwInline void MwOpenGLMakeCurrent(MwWidget handle) { - MwWidgetExecute(handle, "mwOpenGLMakeCurrent", NULL); + MwVaWidgetExecute(handle, "mwOpenGLMakeCurrent", NULL); }; /*! @@ -46,7 +46,7 @@ MwInline void MwOpenGLMakeCurrent(MwWidget handle) { */ MwInline void* MwOpenGLGetProcAddress(MwWidget handle, const char* name) { void* out; - MwWidgetExecute(handle, "mwOpenGLGetProcAddress", &out, name); + MwVaWidgetExecute(handle, "mwOpenGLGetProcAddress", &out, name); return out; }; @@ -55,7 +55,7 @@ MwInline void* MwOpenGLGetProcAddress(MwWidget handle, const char* name) { * %param handle Widget */ MwInline void MwOpenGLSwapBuffer(MwWidget handle) { - MwWidgetExecute(handle, "mwOpenGLSwapBuffer", NULL); + MwVaWidgetExecute(handle, "mwOpenGLSwapBuffer", NULL); }; #ifdef __cplusplus diff --git a/include/Mw/Widget/ScrollBar.h b/include/Mw/Widget/ScrollBar.h index 3c138be..31718ee 100644 --- a/include/Mw/Widget/ScrollBar.h +++ b/include/Mw/Widget/ScrollBar.h @@ -27,7 +27,7 @@ MWDECL MwClass MwScrollBarClass; */ MwInline int MwScrollBarGetVisibleLength(MwWidget handle) { int out; - MwWidgetExecute(handle, "mwScrollBarGetVisibleLength", &out, NULL); + MwVaWidgetExecute(handle, "mwScrollBarGetVisibleLength", &out, NULL); return out; }; diff --git a/include/Mw/Widget/SubMenu.h b/include/Mw/Widget/SubMenu.h index 0063420..cc6410d 100644 --- a/include/Mw/Widget/SubMenu.h +++ b/include/Mw/Widget/SubMenu.h @@ -20,7 +20,7 @@ extern "C" { MWDECL MwClass MwSubMenuClass; MwInline void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point) { - MwWidgetExecute(handle, "mwSubMenuAppear", NULL, menu, point); + MwVaWidgetExecute(handle, "mwSubMenuAppear", NULL, menu, point); }; #ifdef __cplusplus diff --git a/include/Mw/Widget/Viewport.h b/include/Mw/Widget/Viewport.h index 3d217e4..5b4d0ee 100644 --- a/include/Mw/Widget/Viewport.h +++ b/include/Mw/Widget/Viewport.h @@ -26,7 +26,7 @@ MWDECL MwClass MwViewportClass; */ MwInline MwWidget MwViewportGetViewport(MwWidget handle) { MwWidget out; - MwWidgetExecute(handle, "mwViewportGetViewport", &out); + MwVaWidgetExecute(handle, "mwViewportGetViewport", &out); return out; }; @@ -37,7 +37,7 @@ MwInline MwWidget MwViewportGetViewport(MwWidget handle) { * %param h Height */ MwInline void MwViewportSetSize(MwWidget handle, int w, int h) { - MwWidgetExecute(handle, "mwViewportSetSize", NULL, w, h); + MwVaWidgetExecute(handle, "mwViewportSetSize", NULL, w, h); }; #ifdef __cplusplus diff --git a/include/Mw/Widget/Vulkan.h b/include/Mw/Widget/Vulkan.h index d5d41c3..69c12a2 100644 --- a/include/Mw/Widget/Vulkan.h +++ b/include/Mw/Widget/Vulkan.h @@ -115,7 +115,7 @@ typedef enum MwVulkanField_T { */ MwInline void* MwVulkanGetField(MwWidget handle, MwVulkanField field, MwErrorEnum* out) { void* field_out; - MwWidgetExecute(handle, "mwVulkanGetField", &field_out, field, out); + MwVaWidgetExecute(handle, "mwVulkanGetField", &field_out, field, out); return field_out; }; diff --git a/include/Mw/Widget/Window.h b/include/Mw/Widget/Window.h index 52ebac8..674d487 100644 --- a/include/Mw/Widget/Window.h +++ b/include/Mw/Widget/Window.h @@ -26,7 +26,7 @@ MWDECL MwClass MwWindowClass; * %param toggle Toggle */ MwInline void MwWindowMakeBorderless(MwWidget handle, int toggle) { - MwWidgetExecute(handle, "mwWindowMakeBorderless", NULL, toggle); + MwVaWidgetExecute(handle, "mwWindowMakeBorderless", NULL, toggle); }; #ifdef __cplusplus diff --git a/src/backend/x11.c b/src/backend/x11.c index bef0372..7f17d03 100644 --- a/src/backend/x11.c +++ b/src/backend/x11.c @@ -59,22 +59,14 @@ static void wait_map(MwLL handle) { arrfree(queue); } -static unsigned long generate_color(XVisualInfo* xvi, unsigned long r, unsigned long g, unsigned long b) { - int i; - unsigned long n = 1; +static unsigned long generate_color(MwLL handle, unsigned long r, unsigned long g, unsigned long b) { unsigned long c = 0; - i = 0; - while(!((n << i) & xvi->red_mask)) i++; - c |= (r * (xvi->red_mask >> i) / 255) << i; + c |= (r * handle->red_max / 255) << handle->red_shift; - i = 0; - while(!((n << i) & xvi->green_mask)) i++; - c |= (g * (xvi->green_mask >> i) / 255) << i; + c |= (g * handle->green_max / 255) << handle->green_shift; - i = 0; - while(!((n << i) & xvi->blue_mask)) i++; - c |= (b * (xvi->blue_mask >> i) / 255) << i; + c |= (b * handle->blue_max / 255) << handle->blue_shift; return c; } @@ -90,8 +82,11 @@ static XVisualInfo* get_visual_info(Display* display) { } MwLL MwLLCreate(MwLL parent, int x, int y, int width, int height) { - MwLL r; - Window p; + MwLL r; + Window p; + XVisualInfo* xvi; + unsigned long n = 1; + int i; r = malloc(sizeof(*r)); @@ -111,7 +106,29 @@ MwLL MwLLCreate(MwLL parent, int x, int y, int width, int height) { } r->window = XCreateSimpleWindow(r->display, p, x, y, width, height, 0, 0, WhitePixel(r->display, DefaultScreen(r->display))); - r->visual = get_visual_info(r->display); + xvi = get_visual_info(r->display); + + if(xvi->red_mask != 0) { + i = 0; + while(!((n << i) & xvi->red_mask)) i++; + r->red_mask = xvi->red_mask; + r->red_max = xvi->red_mask >> i; + r->red_shift = i; + + i = 0; + while(!((n << i) & xvi->green_mask)) i++; + r->green_mask = xvi->green_mask; + r->green_max = xvi->green_mask >> i; + r->green_shift = i; + + i = 0; + while(!((n << i) & xvi->blue_mask)) i++; + r->blue_mask = xvi->blue_mask; + r->blue_max = xvi->blue_mask >> i; + r->blue_shift = i; + } + + XFree(xvi); XSetLocaleModifiers(""); if((r->xim = XOpenIM(r->display, 0, 0, 0)) == NULL) { @@ -160,7 +177,6 @@ void MwLLDestroy(MwLL handle) { if(handle->xim) XCloseIM(handle->xim); destroy_pixmap(handle); - XFree(handle->visual); XFreeGC(handle->display, handle->gc); XUnmapWindow(handle->display, handle->window); XDestroyWindow(handle->display, handle->window); @@ -194,7 +210,7 @@ MwLLColor MwLLAllocColor(MwLL handle, int r, int g, int b) { MwLLColor c = malloc(sizeof(*c)); XColor xc; - if(handle->visual->red_mask == 0) { + if(handle->red_mask == 0) { if(r > 255) r = 255; if(g > 255) g = 255; if(b > 255) b = 255; @@ -209,7 +225,7 @@ MwLLColor MwLLAllocColor(MwLL handle, int r, int g, int b) { c->pixel = xc.pixel; } else { - c->pixel = generate_color(handle->visual, r, g, b); + c->pixel = generate_color(handle, r, g, b); } c->red = r; c->green = g; diff --git a/src/backend/x11.h b/src/backend/x11.h index 2d12a53..c05412d 100644 --- a/src/backend/x11.h +++ b/src/backend/x11.h @@ -13,17 +13,16 @@ #includestruct _MwLL { - Display* display; - Window window; - Pixmap pixmap; - GC gc; - Colormap colormap; - void* user; - Atom wm_delete; - int copy_buffer; - XIM xim; - XIC xic; - XVisualInfo* visual; + Display* display; + Window window; + Pixmap pixmap; + GC gc; + Colormap colormap; + void* user; + Atom wm_delete; + int copy_buffer; + XIM xim; + XIC xic; unsigned int width; unsigned int height; @@ -31,6 +30,18 @@ struct _MwLL { MwLLHandler handler; int grabbed; + + unsigned long red_mask; + unsigned long red_max; + unsigned long red_shift; + + unsigned long green_mask; + unsigned long green_max; + unsigned long green_shift; + + unsigned long blue_mask; + unsigned long blue_max; + unsigned long blue_shift; }; struct _MwLLColor { diff --git a/src/core.c b/src/core.c index ce52452..3a7fdd9 100644 --- a/src/core.c +++ b/src/core.c @@ -230,7 +230,7 @@ void MwDestroyWidget(MwWidget handle) { handle->destroyed = 1; } -void MwWidgetExecute(MwWidget handle, const char* func_name, void* out, ...) { +void MwVaWidgetExecute(MwWidget handle, const char* func_name, void* out, ...) { va_list args; va_start(args, out); MwVaListWidgetExecute(handle, func_name, out, args);