diff --git a/BorMakefile b/BorMakefile index c4678f5c..caa66cf3 100644 --- a/BorMakefile +++ b/BorMakefile @@ -66,11 +66,12 @@ clean: del /f /q src\dialog\messagebox.obj del /f /q src\abstract\time.obj del /f /q src\abstract\directory.obj + del /f /q src\abstract\dynamic.obj del /f /q src\backend\gdi.obj del /f /q src\Mw.dll -src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj - $(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib +src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj + $(LD) $(LDFLAGS) -e$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj -lopengl32.lib -lgdi32.lib -luser32.lib implib src\Mw.lib src\Mw.dll .c.obj: diff --git a/NTMakefile b/NTMakefile index ba6421d2..573034c1 100644 --- a/NTMakefile +++ b/NTMakefile @@ -66,11 +66,12 @@ clean: del /f /q src\dialog\messagebox.obj del /f /q src\abstract\time.obj del /f /q src\abstract\directory.obj + del /f /q src\abstract\dynamic.obj del /f /q src\backend\gdi.obj del /f /q src\Mw.dll -src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj - $(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib +src\Mw.dll: src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj + $(LD) $(LDFLAGS) /OUT:$@ src\core.obj src\draw.obj src\string.obj src\text.obj src\default.obj src\lowlevel.obj src\error.obj src\unicode.obj src\color.obj external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\icon\info.obj src\icon\note.obj src\icon\warning.obj src\icon\error.obj src\icon\news.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\icon\down.obj src\icon\left.obj src\icon\right.obj src\icon\clock.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.obj src\cursor\hidden.obj src\cursor\arrow.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\widget\progressbar.obj src\widget\radiobox.obj src\widget\combobox.obj src\font\boldttf.obj src\font\ttf.obj src\font\boldfont.obj src\font\font.obj src\dialog\filechooser.obj src\dialog\colorpicker.obj src\dialog\messagebox.obj src\abstract\time.obj src\abstract\directory.obj src\abstract\dynamic.obj src\backend\gdi.obj opengl32.lib gdi32.lib user32.lib .c.obj: diff --git a/WatMakefile b/WatMakefile index d7ed1bbf..95b389bd 100644 --- a/WatMakefile +++ b/WatMakefile @@ -65,11 +65,12 @@ clean: .SYMBOLIC %erase src/dialog/messagebox.obj %erase src/abstract/time.obj %erase src/abstract/directory.obj + %erase src/abstract/dynamic.obj %erase src/backend/gdi.obj %erase src/Mw.dll -src/Mw.dll: src/core.obj src/draw.obj src/string.obj src/text.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/color.obj external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.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/icon/down.obj src/icon/left.obj src/icon/right.obj src/icon/clock.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/cursor/hidden.obj src/cursor/arrow.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/widget/progressbar.obj src/widget/radiobox.obj src/widget/combobox.obj src/font/boldttf.obj src/font/ttf.obj src/font/boldfont.obj src/font/font.obj src/dialog/filechooser.obj src/dialog/colorpicker.obj src/dialog/messagebox.obj src/abstract/time.obj src/abstract/directory.obj src/backend/gdi.obj - $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/string.obj file src/text.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/color.obj file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.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/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/icon/down.obj file src/icon/left.obj file src/icon/right.obj file src/icon/clock.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/cursor/hidden.obj file src/cursor/arrow.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/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/combobox.obj file src/font/boldttf.obj file src/font/ttf.obj file src/font/boldfont.obj file src/font/font.obj file src/dialog/filechooser.obj file src/dialog/colorpicker.obj file src/dialog/messagebox.obj file src/abstract/time.obj file src/abstract/directory.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/draw.obj src/string.obj src/text.obj src/default.obj src/lowlevel.obj src/error.obj src/unicode.obj src/color.obj external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/icon/info.obj src/icon/note.obj src/icon/warning.obj src/icon/error.obj src/icon/news.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/icon/down.obj src/icon/left.obj src/icon/right.obj src/icon/clock.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.obj src/cursor/hidden.obj src/cursor/arrow.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/widget/progressbar.obj src/widget/radiobox.obj src/widget/combobox.obj src/font/boldttf.obj src/font/ttf.obj src/font/boldfont.obj src/font/font.obj src/dialog/filechooser.obj src/dialog/colorpicker.obj src/dialog/messagebox.obj src/abstract/time.obj src/abstract/directory.obj src/abstract/dynamic.obj src/backend/gdi.obj + $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file src/core.obj file src/draw.obj file src/string.obj file src/text.obj file src/default.obj file src/lowlevel.obj file src/error.obj file src/unicode.obj file src/color.obj file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.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/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/icon/down.obj file src/icon/left.obj file src/icon/right.obj file src/icon/clock.obj file src/cursor/default.obj file src/cursor/cross.obj file src/cursor/text.obj file src/cursor/hidden.obj file src/cursor/arrow.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/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/combobox.obj file src/font/boldttf.obj file src/font/ttf.obj file src/font/boldfont.obj file src/font/font.obj file src/dialog/filechooser.obj file src/dialog/colorpicker.obj file src/dialog/messagebox.obj file src/abstract/time.obj file src/abstract/directory.obj file src/abstract/dynamic.obj file src/backend/gdi.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib @@ -191,5 +192,7 @@ src/abstract/time.obj: src/abstract/time.c $(CC) $(CFLAGS) -fo=$@ $< src/abstract/directory.obj: src/abstract/directory.c $(CC) $(CFLAGS) -fo=$@ $< +src/abstract/dynamic.obj: src/abstract/dynamic.c + $(CC) $(CFLAGS) -fo=$@ $< src/backend/gdi.obj: src/backend/gdi.c $(CC) $(CFLAGS) -fo=$@ $< diff --git a/include/Mw/Abstract/Dynamic.h b/include/Mw/Abstract/Dynamic.h new file mode 100644 index 00000000..4f754198 --- /dev/null +++ b/include/Mw/Abstract/Dynamic.h @@ -0,0 +1,39 @@ +/* $Id$ */ +/*! + * @file Mw/Abstract/iDynamic.h + * @brief Time + */ +#ifndef __MW_ABSTRACT_DYNAMIC_H__ +#define __MW_ABSTRACT_DYNAMIC_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * @brief Opens a dynamic library + * @param path Path + * @return Handle + */ +MWDECL void* MwDynamicOpen(const char* path); + +/*! + * @brief Gets a symbol from the dynamic library + * @param handle Handle + * @param symbol Symbol + */ +MWDECL void* MwDynamicSymbol(void* handle, const char* symbol); + +/*! + * @brief Closes a dynamic library + * @param handle Handle + */ +MWDECL void MwDynamicClose(void* handle); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/Mw/Milsko.h b/include/Mw/Milsko.h index 53efe4b4..60f25bb3 100644 --- a/include/Mw/Milsko.h +++ b/include/Mw/Milsko.h @@ -20,6 +20,7 @@ #include #include +#include #include #include diff --git a/src/abstract/dynamic.c b/src/abstract/dynamic.c new file mode 100644 index 00000000..f5418200 --- /dev/null +++ b/src/abstract/dynamic.c @@ -0,0 +1,26 @@ +/* $Id$ */ +#include + +void* MwDynamicOpen(const char* path) { +#ifdef _WIN32 + return LoadLibrary(path); +#else + return dlopen(path, RTLD_LAZY | RTLD_LOCAL); +#endif +} + +void* MwDynamicSymbol(void* handle, const char* symbol) { +#ifdef _WIN32 + return GetProcAddress(handle, symbol); +#else + return dlsym(handle, symbol); +#endif +} + +void MwDynamicClose(void* handle) { +#ifdef _WIN32 + FreeLibrary(handle); +#else + dlclose(handle); +#endif +}