From bf78a98ac294dead7e6dc12b86ca3650fe8f701d Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sat, 11 Oct 2025 14:33:56 +0000 Subject: [PATCH] work on viewport git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@274 b9cfdab3-6d41-4d17-bbe4-086880011989 --- GNUmakefile | 2 +- NTMakefile | 4 +-- WatMakefile | 12 +++++++-- doc/index.html | 20 +++++++++++++++ include/Mw/Milsko.h | 1 + include/Mw/Widget/Viewport.h | 27 +++++++++++++++++++++ include/MwOO/Base.h | 2 +- include/MwOO/Widget/Viewport.h | 19 +++++++++++++++ oosrc/deps.mk | 2 +- oosrc/widget/viewport.cc | 26 ++++++++++++++++++++ resource/icon/error.png | Bin 663 -> 663 bytes resource/icon/info.png | Bin 434 -> 434 bytes resource/icon/news.png | Bin 542 -> 542 bytes resource/icon/note.png | Bin 594 -> 594 bytes resource/icon/question.png | Bin 529 -> 529 bytes resource/icon/warning.png | Bin 498 -> 498 bytes src/widget/frame.c | 2 -- src/widget/viewport.c | 43 +++++++++++++++++++++++++++++++++ tools/genoo.pl | 27 ++++++++++++++++++--- 19 files changed, 174 insertions(+), 13 deletions(-) create mode 100644 include/Mw/Widget/Viewport.h create mode 100644 include/MwOO/Widget/Viewport.h create mode 100644 oosrc/widget/viewport.cc create mode 100644 src/widget/viewport.c 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 9f58caaeb62b422979cb5f066859bf2596ca8aed..60fd8e6da98fc5a874fc5dfc194cd587cb1cbb5d 100644 GIT binary patch delta 48 zcmbQvI-PaGbap;P;iQRdwHxQ%VU#toGB&m{wA3~*ure@+URssK00f?{elF{r5}E*8 CNDbQn delta 48 zcmbQvI-PaGbaq~A33rXz&}T51~@SQ!{ZFRjXA00K`}KbLh*2~7Y^ CRt;zX delta 48 zcmbQoGLL1#M0Q?l33rXz&}T51~@SQ!{ZFRjXA00K`}KbLh*2~7Y- C@C`u# delta 48 zcmbQpGLdD%M0Q?l33rXz&}T51~@SQ!{ZFRjXA00K`}KbLh*2~7ZI CQVrq& delta 48 zcmeyw{E2zOM0Q?l33rXz + +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++;