diff --git a/GNUmakefile b/GNUmakefile index 230671fde..1e1c4deea 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 f3123aafc..f08383bb8 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 e94088433..15d861bcb 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 76ad8fbec..c2cdfcfa9 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 d4d9aa73f..e8e3bd64b 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 000000000..f9bb92814 --- /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 5cb9c727a..7c49f28c5 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 000000000..f015866fd --- /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 df1e9530e..a4a7ebb61 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 000000000..33cf916e6 --- /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 9f58caaeb..60fd8e6da 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 553ea1a1f..79bee5a69 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 d27e50e7a..92c912147 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 95d22cda5..5f60cf794 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 e63cb6d1b..3ed1f9401 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 d8efe4375..d655c07d2 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 d612cb4c7..0bcb1ae36 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 000000000..f46c2c340 --- /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 9316902b4..8e0ea6e24 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++;