NWSTK (beta)

A Multiplatform Toolkit common to both Wasm and Windows.

# Name
Click To Run
Description last modified date
Japan Standard Time
1 demo1
Test for EditWidget, Window Menu. 2020/04/13, 17:56
2 demo2
Test for Loading and Drawing Image via CImage class.
Also, it's testing to use rotation and translation matrix in an interval timer event.
2020/04/13, 17:56
3 land_demo
Test for drawing the 3D geometry of the land.
This demo uses Canvas 2D of JavaScript.
Wire Frame
2020/04/13, 17:56
4 land_demo_WebGL
WebGL WireFrame Version of #3. 2020/04/13, 17:56
5 land_demo_Polygon
WebGL Polygon Version of #3. 2020/04/13, 17:56
6 land_demo_Voxel
WebGL Voxel-like Version of #3. 2020/04/13, 17:56
7 demo_Mountain
Drawing Mountain-like geometry using WebGL polygons. 2020/04/13, 17:56
8 demo_tennis
The demo of 2D tennis game using WebGL. 2020/04/13, 17:56

This site needs WebAssembly supported Browser such as Chrome 73 or FireFox 65.
Unfortunately, neither IE8 nor IE11 is supported.

These demos can be scaled up/down to any scaling. For example, if you are using Chrome, try such as the following keys:

Wasm   = WebAssembly.

Programmed by NOWSMARTSOFT, LightCone, Yutaka Aoki.


Browser OS Status Speed Description
Chrome 79 Win7, Pro, 64BIT slow ---> very slow for WebGL in Intel HD Graphics. With Intel HD Graphics, Chrome cannot use Hardware Accelerator for WebGL.
Chrome 78 Win7, Pro, 64BIT good fast
Chrome 73 Win7, Pro, 64BIT good fast
FireFox 71.0 Win7, Pro, 64BIT good faster
FireFox 67 Win7, Pro, 64BIT good faster
Chrome 79 Fire HD 10 Tablet (9th, 2019)
FireOS (based Android 9.0)
good fast
Chrome 73 Fire 7 Tablet (7th, 2017)
FireOS (based Android 5.0)
Ok enough fast
except demo_Mountain
FireFox 66.0.2 Fire 7 Tablet (7th, 2017)
FireOS (based Android 5.0)
WebGL fails.
But demo1 and demo2 are Ok.
fast Probably, this tablet GPU chip is not supported by this version's FireFox mobile.
Silk Browser Fire HD 10 Tablet (9th, 2019)
FireOS (based Android 9.0)
Ok fast at running but slow at loading Loading Page is very slow.
Parsing JavaScript is so slow ??
FireFox Ubuntu Linux, 32BIT Ok fast


NWSTK HomePage1(fast, PWA, github)
NWSTK HomePage2(slow, not PWA, atwebpages, ZettaHost)


This program has been built with NWSC "C++ Nex" Compiler and clang toolset, and is running under Wasm (WebAssembly), and is using NWSTK which is a multiplatform toolkit for Wasm and Windows. NWSTK represents NOWSMART ToolKit.
But, neither Emscripten compiler emcc nor its library was used to build this program.
Clang toolset is used as an LLVM BackEnd but is NOT used as a C/C++ compiler.

Produced by NOWSMARTSOFT, LightCone.


about donation


Modified Date
Japan Standard Time
2020/04/13, 17:56
  1. It has come to prevent from appearing the browsers' default context menu when you right-click in an NWSTK's window.

  2. The bug of mouse clipping region when an MDI Child Window is being clipped by the border of its parent FrameWnd has been fixed.
2020/04/12, 23:12 In demo1 the MDI Child Window has come to have an EditWnd in it.
2020/04/12, 02:40 It has come to support maximize, minimize and normal states of windows.
2020/04/09, 19:45 In demo1, the MainFrame has come to have a child window like MDI Child Window in MFC of Windows.
2020/04/03, 11:40
  1. It has made the speed of nexGetTextExtent() faster, so that creating a MessageBox has become faster.

  2. A MessageBox has come to appear in the center of the Active Top Window. So far, it appeared in the center of Browser's SandBox.
2020/04/01, 19:07 An EditWidget has started to support Wheel Scroll via Mouse.
2020/03/31, 16:15
  1. It has started to support NWWS_NC_CHILD style which will place child window not in client area but in window area.

  2. It has started to support nwsSetClientArea() API which can shrink client area of window.

  3. EditWnd has come to include ScrollBar in its own window. So far ScrollBar was placed out of EditWnd.
2020/03/19, 17:58 In connection with WebGL, the following trouble has been fixed.

Until now the TypedArray allocated via WebGL's gl.bufferData() came to have trouble after WebAssembly's memory.grow() function is executed.
2020/03/17, 18:54
  1. An UpBox has started to be supported.
    An UpBox ToolBox will appear when you click on the titlebar.
    It can be used to make z-order of the window up or down.

  2. The index of array of canvas has come to be allocated strictly. It will lead that you can repeat to create and close windows freely more than 200 times safely. It has eliminated restriction of the number of times of creating windows.
2020/03/13, 10:06 The color of buttons have come to change when the mouse cursor is on them.
2020/03/08, 17:26 The method for executing event's handler has changed from directly calling the event's handler to posting a message in the queue the first and dispatching it the second and calling the corresponding event's handler the third.

Probably this will lead that a bug from input event's handler which deletes some windows be fixed. 

Ago, the iteration of all windows by the toolkit had the potential of troubles if it used the method of directly executing mouse/keyboard event's handler which deletes some windows object.
2020/03/02, 19:07 When the height of the display is too small, PullDown Menu has come to appear at the high point so that the lowest line of it should be above the bottom line of the display at least.
2020/03/02, 14:23
  1. The width of a MenuWindow has started to be shrinked automatically on a narrow display.

  2. The width of a MessageBox has started to be shrinked automatically on a narrow display. And the width of each button in the MessageBox also will be shrinked automatically at that time.
2020/03/01, 18:23 The bug of automatic wrapping in MessageBox in narrow screen has been fixed.
2020/03/01, 17:41 Various bug fixes.
2020/03/01, 15:08
  1. Appearance of 3 Caption Buttons(Minimize, Maximize, Close) has started to be changed dynamically.

  2. Each event handler has come to be fired at the time mouse button is released on the menu item. Previously it was fired at mouse_down.

  3. Each event handler for the corresponded caption button has come to be fired at the time mouse button is released on the caption button. Previously it was fired at mouse_down.
2020/02/28, 16:32 The appearance of the menu window has been improved.
2020/02/28, 10:50 In demo1, menu and MessageBox have been improved.
2020/02/26, 18:20 In demo1, it has started to have limitters during moving or resizing windows with mouse.
2020/02/24, 18:23 Button has come to have the image of sunken type.
2020/02/24, 16:57 The size of border of Buttons in MessageBox in demo1 has become thin.
2020/02/24, about 14:00 The size of bstack for bsync/bwait/bresume has become larger -- 4096 bytes.
  1. The MessageBox Test in demo1 has become faster.
  2. The size of bstack for bsync/bwait/bresume has become larger -- 2048 bytes.
  1. Bugs for vertical scroll bar of the editbox in demo1 has been fixed.

  2. A Help-About and tests for MessageBox has been added to demo1.
2020/01/13 Touch Mark in the device with touch panel has been improved to be clearly cognizable.
2020/01/08 Touch Mark in the device with touch panel has come to be changed dynamically for representing the state of the operation which is correspond to resizing/moving/normal state.
2020/01/03 Menu Operation for the device with touch panel has been improved. 
2019/12/13, 11:10
  1. demo_tennis has been added.

  2. HTML5 DOM elements which is not drawn by NWSTK has started to be able to be clicked or dragged.

  3. The menu item which does not have an event handler has started to be drawn with grayed color for specifying as a disabled item.

  4. index.html and corresponded CSS file has been arranged for the clean source.

  5. ServiceWorker has been modified.

  6. Various bug fix.
  1. It has started to support PWA -- Progressive Web Application.

    But it need to be placed in the https server.

    So it can be tested only at the site https://yutakaaoki.github.io/ at present.

  2. It has supported gziped test.wasm which is automatically compressed via Apache mod_gzip module for Progress Bar at the begin of starting up test.wasm. It is acctually demonstrated in the github homepage at the linked site above.
2019/11/17, 17:45
  1. Progress Bar with percent number during initial loading wasm module was implemented.

  2. File Open Dialog("Open" Menu) and File Save Dialog ("New" Menu) from main menu were implemeted experimentally.
2019/05/01, 21:43 Especially in a slow mobile device/phone/tablet, an emission of a pulldown menu has become faster than the previous.
2019/05/01, 08:36 If it is failed to get WebGL context for canvas, the toolkit will pop up an error dialog that alerts that.
This feature is for a FireFox 66.0 in the Amazon 7th generation Fire7 Tablet.
2019/04/30 In the environment where touch panel is used such as Mobile -- Android, a touch mark like a missile target mark has been started drawing at the touched point.
  1. EditWidget has started supporting key inputs from the on-screen keyboard for Mobile Device(Touch Panel).
    Among them, tested specially for USA English and Japanese on-screen Keybords in the intel HAXM Andoid Emulator.

  2. IME -- Input Method Editor -- for both PC and Mobile has been started supporting. Testing was done especially for Japanese IME.

  3. In mobile devices, the width of sensitive borders or resizing gripper to resize the demension of windows have been wider than the previous.

  4. The dimension and position of windows in demo1 has been adjusted in mobile devices.