diff --git a/GNUmakefile b/GNUmakefile index 230671f..1e1c4de 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -28,7 +28,7 @@ L_LIBS = $(LIBS) L_OBJS = src/core.o src/default.o src/draw.o src/lowlevel.o src/font.o src/boldfont.o src/error.o src/unicode.o src/color.o src/messagebox.o L_OBJS += src/external/ds.o src/external/image.o -L_OBJS += src/widget/window.o src/widget/button.o src/widget/frame.o src/widget/menu.o src/widget/submenu.o src/widget/image.o src/widget/scrollbar.o src/widget/checkbox.o src/widget/label.o src/widget/entry.o src/widget/numberentry.o +L_OBJS += src/widget/window.o src/widget/button.o src/widget/frame.o src/widget/menu.o src/widget/submenu.o src/widget/image.o src/widget/scrollbar.o src/widget/checkbox.o src/widget/label.o src/widget/entry.o src/widget/numberentry.o src/widget/viewport.o L_OBJS += src/cursor/default.o src/cursor/cross.o src/cursor/text.o L_OBJS += src/icon/question.o src/icon/warning.o src/icon/note.o src/icon/info.o src/icon/news.o src/icon/error.o diff --git a/NTMakefile b/NTMakefile index f3123aa..f08383b 100644 --- a/NTMakefile +++ b/NTMakefile @@ -2,8 +2,8 @@ CC = cl LD = link -OBJS = 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\messagebox.obj src\boldfont.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\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\numberentry.obj src\external\ds.obj src\external\image.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.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\backend\gdi.obj -OOOBJS = 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\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj +OBJS = 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\messagebox.obj src\boldfont.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\image.obj src\widget\scrollbar.obj src\widget\checkbox.obj src\widget\label.obj src\widget\numberentry.obj src\widget\viewport.obj src\external\ds.obj src\external\image.obj src\cursor\default.obj src\cursor\cross.obj src\cursor\text.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\backend\gdi.obj +OOOBJS = 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\label.obj oosrc\widget\entry.obj oosrc\widget\numberentry.obj CFLAGS = /nologo /DSTBI_NO_SIMD /D_MILSKO /DUSE_GDI /DUSE_STB_IMAGE /Iinclude CXXFLAGS = /nologo /Iinclude LDFLAGS = /nologo /DLL /LIBPATH:src /LIBPATH:oosrc diff --git a/WatMakefile b/WatMakefile index e940884..15d861b 100644 --- a/WatMakefile +++ b/WatMakefile @@ -5,8 +5,8 @@ CXX = wpp386 CFLAGS = -q -d_MILSKO -dUSE_GDI -dUSE_STB_IMAGE -dSTBI_NO_SIMD -i=$(WATCOM)/h/nt -i=include CXXFLAGS = -q -i=include -i=$(WATCOM)/h/nt -OBJS = 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/messagebox.obj src/boldfont.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/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/numberentry.obj src/external/ds.obj src/external/image.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.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/backend/gdi.obj -OOOBJS = 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/label.obj oosrc/widget/entry.obj oosrc/widget/numberentry.obj +OBJS = 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/messagebox.obj src/boldfont.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/image.obj src/widget/scrollbar.obj src/widget/checkbox.obj src/widget/label.obj src/widget/numberentry.obj src/widget/viewport.obj src/external/ds.obj src/external/image.obj src/cursor/default.obj src/cursor/cross.obj src/cursor/text.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/backend/gdi.obj +OOOBJS = 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/label.obj oosrc/widget/entry.obj oosrc/widget/numberentry.obj all: src/Mw.dll oosrc/MwOO.dll @@ -33,6 +33,7 @@ clean: .SYMBOLIC %erase src/widget/checkbox.obj %erase src/widget/label.obj %erase src/widget/numberentry.obj + %erase src/widget/viewport.obj %erase src/external/ds.obj %erase src/external/image.obj %erase src/cursor/default.obj @@ -55,6 +56,7 @@ clean: .SYMBOLIC %erase oosrc/widget/submenu.obj %erase oosrc/widget/window.obj %erase oosrc/widget/checkbox.obj + %erase oosrc/widget/viewport.obj %erase oosrc/widget/label.obj %erase oosrc/widget/entry.obj %erase oosrc/widget/numberentry.obj @@ -78,6 +80,7 @@ oosrc/MwOO.dll: $(OOOBJS) src/Mw.dll %write MwOO.lnk file oosrc/widget/submenu.obj %write MwOO.lnk file oosrc/widget/window.obj %write MwOO.lnk file oosrc/widget/checkbox.obj + %write MwOO.lnk file oosrc/widget/viewport.obj %write MwOO.lnk file oosrc/widget/label.obj %write MwOO.lnk file oosrc/widget/entry.obj %write MwOO.lnk file oosrc/widget/numberentry.obj @@ -109,6 +112,7 @@ src/Mw.dll: $(OBJS) %write Mw.lnk file src/widget/checkbox.obj %write Mw.lnk file src/widget/label.obj %write Mw.lnk file src/widget/numberentry.obj + %write Mw.lnk file src/widget/viewport.obj %write Mw.lnk file src/external/ds.obj %write Mw.lnk file src/external/image.obj %write Mw.lnk file src/cursor/default.obj @@ -167,6 +171,8 @@ src/widget/label.obj: src/widget/label.c $(CC) $(CFLAGS) -bt=nt -fo=$@ src/widget/label.c src/widget/numberentry.obj: src/widget/numberentry.c $(CC) $(CFLAGS) -bt=nt -fo=$@ src/widget/numberentry.c +src/widget/viewport.obj: src/widget/viewport.c + $(CC) $(CFLAGS) -bt=nt -fo=$@ src/widget/viewport.c src/external/ds.obj: src/external/ds.c $(CC) $(CFLAGS) -bt=nt -fo=$@ src/external/ds.c src/external/image.obj: src/external/image.c @@ -211,6 +217,8 @@ oosrc/widget/window.obj: oosrc/widget/window.cc $(CXX) $(CXXFLAGS) -bt=nt -fo=$@ oosrc/widget/window.cc oosrc/widget/checkbox.obj: oosrc/widget/checkbox.cc $(CXX) $(CXXFLAGS) -bt=nt -fo=$@ oosrc/widget/checkbox.cc +oosrc/widget/viewport.obj: oosrc/widget/viewport.cc + $(CXX) $(CXXFLAGS) -bt=nt -fo=$@ oosrc/widget/viewport.cc oosrc/widget/label.obj: oosrc/widget/label.cc $(CXX) $(CXXFLAGS) -bt=nt -fo=$@ oosrc/widget/label.cc oosrc/widget/entry.obj: oosrc/widget/entry.cc diff --git a/doc/index.html b/doc/index.html index 76ad8fb..c2cdfcf 100644 --- a/doc/index.html +++ b/doc/index.html @@ -392,6 +392,12 @@
MwSubMenuClass
+
+ Mw/Widget/Viewport.h +
+
+ MwViewportClass +
Mw/Widget/Vulkan.h
@@ -2498,6 +2504,20 @@
+

Mw/Widget/Viewport.h

+
+
+ Viewport widget. +
+
+
+
MWDECL MwClass MwViewportClass;
+
+
+ Viewport widget class. +
+
+

Mw/Widget/Vulkan.h

diff --git a/include/Mw/Milsko.h b/include/Mw/Milsko.h index d4d9aa7..e8e3bd6 100644 --- a/include/Mw/Milsko.h +++ b/include/Mw/Milsko.h @@ -32,5 +32,6 @@ #include #include #include +#include #endif diff --git a/include/Mw/Widget/Viewport.h b/include/Mw/Widget/Viewport.h new file mode 100644 index 0000000..f9bb928 --- /dev/null +++ b/include/Mw/Widget/Viewport.h @@ -0,0 +1,27 @@ +/* $Id$ */ +/*! + * %file Mw/Widget/Viewport.h + * %brief Viewport widget + */ +#ifndef __MW_WIDGET_VIEWPORT_H__ +#define __MW_WIDGET_VIEWPORT_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + * %brief Viewport widget class + */ +MWDECL MwClass MwViewportClass; + +MWDECL MwWidget MwViewportGetViewport(MwWidget widget); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/MwOO/Base.h b/include/MwOO/Base.h index 5cb9c72..7c49f28 100644 --- a/include/MwOO/Base.h +++ b/include/MwOO/Base.h @@ -16,7 +16,6 @@ class Base { private: int can_be_gc; void SetHandler(void); - Base(MwWidget widget, int gc = 0); public: MwOO::Base MessageBox(const char* title, const char* text, unsigned int flags); @@ -44,6 +43,7 @@ class Base { /* END AUTOGENERATE */ Base(MwClass widget_class, const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + Base(MwWidget widget, int gc = 0); ~Base(void); }; } // namespace MwOO diff --git a/include/MwOO/Widget/Viewport.h b/include/MwOO/Widget/Viewport.h new file mode 100644 index 0000000..f015866 --- /dev/null +++ b/include/MwOO/Widget/Viewport.h @@ -0,0 +1,19 @@ +/* $Id$ */ +#ifndef __MWOO_WIDGET_VIEWPORT_H__ +#define __MWOO_WIDGET_VIEWPORT_H__ + +#include + +namespace MwOO { +class Viewport : public MwOO::Base { + public: + Viewport(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h); + MwOO::Base GetViewport(void); + void SetBackground(const char* value); + const char* GetBackground(void); + void SetForeground(const char* value); + const char* GetForeground(void); +}; +} // namespace MwOO + +#endif diff --git a/oosrc/deps.mk b/oosrc/deps.mk index df1e953..a4a7ebb 100644 --- a/oosrc/deps.mk +++ b/oosrc/deps.mk @@ -1,2 +1,2 @@ # $Id$ -OOL_OBJS += oosrc/widget/button.o oosrc/widget/frame.o oosrc/widget/image.o oosrc/widget/menu.o oosrc/widget/scrollbar.o oosrc/widget/submenu.o oosrc/widget/window.o oosrc/widget/checkbox.o oosrc/widget/label.o oosrc/widget/entry.o oosrc/widget/numberentry.o +OOL_OBJS += oosrc/widget/button.o oosrc/widget/frame.o oosrc/widget/image.o oosrc/widget/menu.o oosrc/widget/scrollbar.o oosrc/widget/submenu.o oosrc/widget/window.o oosrc/widget/checkbox.o oosrc/widget/label.o oosrc/widget/entry.o oosrc/widget/viewport.o oosrc/widget/numberentry.o diff --git a/oosrc/widget/viewport.cc b/oosrc/widget/viewport.cc new file mode 100644 index 0000000..33cf916 --- /dev/null +++ b/oosrc/widget/viewport.cc @@ -0,0 +1,26 @@ +/* $Id$ */ +#include +#include + +MwOO::Viewport::Viewport(const char* widget_name, MwOO::Base* parent, int x, int y, int w, int h) : MwOO::Base(MwViewportClass, widget_name, parent, x, y, w, h){ +} + +MwOO::Base MwOO::Viewport::GetViewport(void){ + return MwOO::Base(MwViewportGetViewport(this->widget)); +} +void MwOO::Viewport::SetBackground(const char* value){ + MwSetText(this->widget, MwNbackground, value); +} + +const char* MwOO::Viewport::GetBackground(void){ + return MwGetText(this->widget, MwNbackground); +} + +void MwOO::Viewport::SetForeground(const char* value){ + MwSetText(this->widget, MwNforeground, value); +} + +const char* MwOO::Viewport::GetForeground(void){ + return MwGetText(this->widget, MwNforeground); +} + diff --git a/resource/icon/error.png b/resource/icon/error.png index 9f58caa..60fd8e6 100644 Binary files a/resource/icon/error.png and b/resource/icon/error.png differ diff --git a/resource/icon/info.png b/resource/icon/info.png index 553ea1a..79bee5a 100644 Binary files a/resource/icon/info.png and b/resource/icon/info.png differ diff --git a/resource/icon/news.png b/resource/icon/news.png index d27e50e..92c9121 100644 Binary files a/resource/icon/news.png and b/resource/icon/news.png differ diff --git a/resource/icon/note.png b/resource/icon/note.png index 95d22cd..5f60cf7 100644 Binary files a/resource/icon/note.png and b/resource/icon/note.png differ diff --git a/resource/icon/question.png b/resource/icon/question.png index e63cb6d..3ed1f94 100644 Binary files a/resource/icon/question.png and b/resource/icon/question.png differ diff --git a/resource/icon/warning.png b/resource/icon/warning.png index d8efe43..d655c07 100644 Binary files a/resource/icon/warning.png and b/resource/icon/warning.png differ diff --git a/src/widget/frame.c b/src/widget/frame.c index d612cb4..0bcb1ae 100644 --- a/src/widget/frame.c +++ b/src/widget/frame.c @@ -16,8 +16,6 @@ static void draw(MwWidget handle) { r.width = MwGetInteger(handle, MwNwidth); r.height = MwGetInteger(handle, MwNheight); - MwDrawFrameEx(handle, &r, base, 1, 1); - MwDrawFrameEx(handle, &r, base, 0, 1); MwDrawRect(handle, &r, base); MwLLFreeColor(base); diff --git a/src/widget/viewport.c b/src/widget/viewport.c new file mode 100644 index 0000000..f46c2c3 --- /dev/null +++ b/src/widget/viewport.c @@ -0,0 +1,43 @@ +/* $Id$ */ +#include + +static int create(MwWidget handle) { + MwSetDefault(handle); + + return 0; +} + +static void draw(MwWidget handle) { + MwRect r; + MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground)); + + r.x = 0; + r.y = 0; + r.width = MwGetInteger(handle, MwNwidth); + r.height = MwGetInteger(handle, MwNheight); + + MwDrawRect(handle, &r, base); + + MwLLFreeColor(base); +} + +MwWidget MwViewportGetViewport(MwWidget widget) { +} + +MwClassRec MwViewportClassRec = { + 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, + NULL, + NULL, + NULL, + NULL}; +MwClass MwViewportClass = &MwViewportClassRec; diff --git a/tools/genoo.pl b/tools/genoo.pl index 9316902..8e0ea6e 100755 --- a/tools/genoo.pl +++ b/tools/genoo.pl @@ -103,7 +103,14 @@ foreach my $f (@files) { ); foreach my $m (@methods) { - print(OUT " $m;\n"); + if ($m =~ /^MwWidget[ \t]+/) { + my $l = $m; + $l =~ s/^MwWidget([ \t]+)/MwOO::Base\1/g; + print(OUT " $l;\n"); + } + else { + print(OUT " $m;\n"); + } } foreach my $prop (@props) { @@ -145,18 +152,30 @@ foreach my $f (@files) { my $i = 0; foreach my $m (@omethods) { - print(OUT "$m\{\n"); + my $end = ""; + if ($m =~ /^MwWidget[ \t]+/) { + my $l = $m; + $l =~ s/^MwWidget([ \t]+)/MwOO::Base\1/; + print(OUT "$l\{\n"); + } + else { + print(OUT "$m\{\n"); + } if ($m =~ /^void[ \t]+/) { print(OUT " Mw${name}" . $names[$i]); } + elsif ($m =~ /^MwWidget[ \t]+/) { + print(OUT " return MwOO::Base(Mw${name}" . $names[$i]); + $end = ")"; + } else { print(OUT " return Mw${name}" . $names[$i]); } if ($args[$i] eq "void") { - print(OUT "(this->widget);\n"); + print(OUT "(this->widget)$end;\n"); } else { - print(OUT "(this->widget, " . $args[$i] . ");\n"); + print(OUT "(this->widget, " . $args[$i] . ")$end;\n"); } print(OUT "}\n"); $i++;