diff --git a/GNUmakefile b/GNUmakefile index 230671fd..1e1c4dee 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 f3123aaf..f08383bb 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 e9408843..15d861bc 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 76ad8fbe..c2cdfcfa 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 d4d9aa73..e8e3bd64 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 00000000..f9bb9281 --- /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 5cb9c727..7c49f28c 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 00000000..f015866f --- /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 df1e9530..a4a7ebb6 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 00000000..33cf916e --- /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 9f58caae..60fd8e6d 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 553ea1a1..79bee5a6 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 d27e50e7..92c91214 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 95d22cda..5f60cf79 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 e63cb6d1..3ed1f940 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 d8efe437..d655c07d 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 d612cb4c..0bcb1ae3 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 00000000..f46c2c34 --- /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 9316902b..8e0ea6e2 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++;