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 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 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 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++;