diff --git a/include/MwOO/Widget/Menu.h b/include/MwOO/Widget/Menu.h index 5496526..5d9d4a1 100644 --- a/include/MwOO/Widget/Menu.h +++ b/include/MwOO/Widget/Menu.h @@ -8,6 +8,7 @@ namespace MwOO { class Menu : public MwOO::Base { public: Menu(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + MwMenu Add(MwMenu menu, const char* name); }; } // namespace MwOO diff --git a/include/MwOO/Widget/OpenGL.h b/include/MwOO/Widget/OpenGL.h index dfa1641..e2276ae 100644 --- a/include/MwOO/Widget/OpenGL.h +++ b/include/MwOO/Widget/OpenGL.h @@ -8,6 +8,9 @@ namespace MwOO { class OpenGL : public MwOO::Base { public: OpenGL(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + void MakeCurrent(void); + void* GetProcAddress(const char* name); + void SwapBuffer(void); }; } // namespace MwOO diff --git a/include/MwOO/Widget/ScrollBar.h b/include/MwOO/Widget/ScrollBar.h index ebdbb31..a361a81 100644 --- a/include/MwOO/Widget/ScrollBar.h +++ b/include/MwOO/Widget/ScrollBar.h @@ -8,6 +8,7 @@ namespace MwOO { class ScrollBar : public MwOO::Base { public: ScrollBar(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + int GetVisibleLength(void); void SetAreaShown(int value); int GetAreaShown(void); void SetValue(int value); diff --git a/include/MwOO/Widget/SubMenu.h b/include/MwOO/Widget/SubMenu.h index 8574f00..38c24c9 100644 --- a/include/MwOO/Widget/SubMenu.h +++ b/include/MwOO/Widget/SubMenu.h @@ -8,6 +8,7 @@ namespace MwOO { class SubMenu : public MwOO::Base { public: SubMenu(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + void Appear(MwMenu menu, MwPoint* point); }; } // namespace MwOO diff --git a/include/MwOO/Widget/Vulkan.h b/include/MwOO/Widget/Vulkan.h index f86869c..ff74da2 100644 --- a/include/MwOO/Widget/Vulkan.h +++ b/include/MwOO/Widget/Vulkan.h @@ -8,6 +8,11 @@ namespace MwOO { class Vulkan : public MwOO::Base { public: Vulkan(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + void EnableExtension(void); + void EnableLayer(void); + void Configure(void); + void* GetField(MwVulkanField field, MwErrorEnum* out); + VkBool32 Supported(void); }; } // namespace MwOO diff --git a/oosrc/widget/menu.cc b/oosrc/widget/menu.cc index f071331..eff6547 100644 --- a/oosrc/widget/menu.cc +++ b/oosrc/widget/menu.cc @@ -5,3 +5,6 @@ MwOO::Menu::Menu(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwMenuClass, widget_name, parent, x, y, w, h){ } +MwMenu MwOO::Menu::Add(MwMenu menu, const char* name){ + return MwMenuAdd(this->widget, menu, name); +} diff --git a/oosrc/widget/opengl.cc b/oosrc/widget/opengl.cc index 6397a83..5d6fb0b 100644 --- a/oosrc/widget/opengl.cc +++ b/oosrc/widget/opengl.cc @@ -5,3 +5,12 @@ MwOO::OpenGL::OpenGL(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwOpenGLClass, widget_name, parent, x, y, w, h){ } +void MwOO::OpenGL::MakeCurrent(void){ + MwOpenGLMakeCurrent(this->widget); +} +void* MwOO::OpenGL::GetProcAddress(const char* name){ + return MwOpenGLGetProcAddress(this->widget, name); +} +void MwOO::OpenGL::SwapBuffer(void){ + MwOpenGLSwapBuffer(this->widget); +} diff --git a/oosrc/widget/scrollbar.cc b/oosrc/widget/scrollbar.cc index a54319b..eed2b61 100644 --- a/oosrc/widget/scrollbar.cc +++ b/oosrc/widget/scrollbar.cc @@ -5,6 +5,9 @@ MwOO::ScrollBar::ScrollBar(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwScrollBarClass, widget_name, parent, x, y, w, h){ } +int MwOO::ScrollBar::GetVisibleLength(void){ + return MwScrollBarGetVisibleLength(this->widget); +} void MwOO::ScrollBar::SetAreaShown(int value){ MwSetInteger(this->widget, MwNareaShown, value); } diff --git a/oosrc/widget/submenu.cc b/oosrc/widget/submenu.cc index 33faf14..8442175 100644 --- a/oosrc/widget/submenu.cc +++ b/oosrc/widget/submenu.cc @@ -5,3 +5,6 @@ MwOO::SubMenu::SubMenu(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwSubMenuClass, widget_name, parent, x, y, w, h){ } +void MwOO::SubMenu::Appear(MwMenu menu, MwPoint* point){ + MwSubMenuAppear(this->widget, menu, point); +} diff --git a/oosrc/widget/vulkan.cc b/oosrc/widget/vulkan.cc index a781717..46473e3 100644 --- a/oosrc/widget/vulkan.cc +++ b/oosrc/widget/vulkan.cc @@ -5,3 +5,18 @@ MwOO::Vulkan::Vulkan(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwVulkanClass, widget_name, parent, x, y, w, h){ } +void MwOO::Vulkan::EnableExtension(void){ + MwVulkanEnableExtension(this->widget); +} +void MwOO::Vulkan::EnableLayer(void){ + MwVulkanEnableLayer(this->widget); +} +void MwOO::Vulkan::Configure(void){ + MwVulkanConfigure(this->widget); +} +void* MwOO::Vulkan::GetField(MwVulkanField field, MwErrorEnum* out){ + return MwVulkanGetField(this->widget, field, out); +} +VkBool32 MwOO::Vulkan::Supported(void){ + return MwVulkanSupported(this->widget); +} diff --git a/tools/genoo.pl b/tools/genoo.pl index f03cae0..cc6555c 100755 --- a/tools/genoo.pl +++ b/tools/genoo.pl @@ -44,8 +44,12 @@ foreach my $f (@files) { $f =~ /^(.+)\.h$/; - my $name = $1; - my @props = (); + my $name = $1; + my @props = (); + my @methods = (); + my @omethods = (); + my @names = (); + my @args = (); open(IN, "include/Mw/Widget/$f"); while (my $l = ) { @@ -54,6 +58,34 @@ foreach my $f (@files) { if ($l =~ /%prop[ \t]+(.+)$/) { @props = split(/[ \t]+/, $1); } + elsif ($l =~ +/^MWDECL[ \t]+(.+)[ \t]+Mw${name}([^ \t]+)[ \t]*\([^,\)]+(?:,(.*))?\);$/ + ) + { + my $arg = $3; + my $ret = $1; + my $nam = $2; + + $arg =~ s/^[ \t]+//; + $arg =~ s/[ \t]+$//; + + if (!$arg) { + $arg = "void"; + } + + push(@methods, "$ret $nam($arg)"); + push(@omethods, "$ret MwOO::${name}::$nam($arg)"); + push(@names, $nam); + + my @al = split(/[ \t]*,[ \t]*/, $arg); + my $i = 0; + foreach my $dummy (@al) { + $al[$i] =~ s/^.+[ \t]+([^ \t]+)$/\1/g; + $i++; + } + + push(@args, join(", ", @al)); + } } close(IN); @@ -71,6 +103,10 @@ foreach my $f (@files) { " ${name}(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h);\n" ); + foreach my $m (@methods) { + print(OUT " $m;\n"); + } + foreach my $prop (@props) { my $type = ""; my %hash = (); @@ -108,6 +144,24 @@ foreach my $f (@files) { print(OUT "}\n"); print(OUT "\n"); + my $i = 0; + foreach my $m (@omethods) { + print(OUT "$m\{\n"); + if ($m =~ /^void[ \t]+/) { + print(OUT " Mw${name}" . $names[$i]); + } + else { + print(OUT " return Mw${name}" . $names[$i]); + } + if ($args[$i] eq "void") { + print(OUT "(this->widget);\n"); + } + else { + print(OUT "(this->widget, " . $args[$i] . ");\n"); + } + print(OUT "}\n"); + $i++; + } foreach my $prop (@props) { my $type = ""; my $typename = "";