Giter Site home page Giter Site logo

ghaerr / microwindows Goto Github PK

View Code? Open in Web Editor NEW
615.0 47.0 87.0 34.22 MB

The Nano-X Window System

License: Other

Ada 0.03% C++ 4.87% Makefile 0.42% Shell 0.20% Assembly 0.13% C 93.06% Logos 0.03% Common Lisp 0.77% Awk 0.01% Perl 0.03% Tcl 0.19% Batchfile 0.01% HTML 0.16% RPC 0.04% Lex 0.01% Yacc 0.02% Java 0.01% M4 0.02% Roff 0.01%
graphical windowing emscripten x11 fltk gui window system android framebuffer

microwindows's Introduction

Microwindows or the Nano-X Window System

Microwindows or Nano-X is a small graphical windowing system that implements both Win32 and Nano-X (X11-like) APIs for clipped graphics drawing in windows on Linux, Mac OS X, EMSCRIPTEN, Android and other platforms. It is Open Source and licenced under the the Mozilla Public License. For creating GUIs, the Nuklear immediate mode GUI, Win32 builtin controls, and TinyWidget's controls based on Nano-X are included. FLTK can be used with the X11 compability library NX11.

This is a slightly outdated overview of the system:

Architecture

Some of the supported platforms are listed at the bottom on the left side. Next to that there are available screen drivers, mouse drivers and keyboard drivers. The Nano-X / Microwindows engine is the core code that implements all drawing and clipping, with the Win32 and Nano-X graphical windowing APIs implemented in seperately configurable layers on top of that. The engine is configured to use various OS platforms and associated screen, mouse and keyboard drivers, or bare hardware. The Nano-X API and the Win32 APIs are used to write applications. To provide close X11 compatibility the NX11 library can be built on top of the Nano-X API, which allows X11 applications to be linked and run without recompilation. The FLTK GUI toolkit runs based on NX11.

Areas where Microwindows can be used are:

  • NEW: Microui immediate-mode UI library port to Nano-X
  • NEW: PDF viewer and MP4 media player support on Nano-X through FBPDF and FBFF projects
  • NEW: updated Nano-X window frame drawing code resembles Nuklear UI
  • NEW: Nuklear immmediate-mode GUI apps now supported in seperate windows
  • NEW: run multiple simultaneous Win32 apps on Linux, OS X and in a browser
  • original classic shareware Doom v1.10 ported to Nano-X
  • run X11 or Win32 applications in a browser using EMSCRIPTEN
  • provide an excellent GUI for small embedded devices with FLTK, TinyWidgets or Win32
  • port the FLTK GUI toolkit to small platforms
  • linking an application with Microwindows can provide it with a GUI on console based Linux distros
  • provide Xlib support for platforms without Xlib
  • run FLTK or Win32 applications on Android phones
  • Portrait and Landscape modes and auto-flipping are supported for handheld devies

Platforms

Microwindows is very portable, is written in C and can be used on a wide range of platforms.

Currently supported platforms include Linux, Mac OS X, Android, EMSCRIPTEN, Nuklear GUI, Windows, Raspberry Pi, DOS DJGPP, RTEMS, ECOS, Sony PSP, Atari Jaguar, Nintendo DS and more.

Currently supported screen drivers include Memory-mapped framebuffer, X11, SDL 2, Allegro 5, Windows and an X11 based framebuffer emulator.

Support for cross-compiler toolchains on x86, x86_64, ARM, M68K, PowerPC and MIPS, big- and little-endian, and other processors.

Library design

The Nano-X Window System has a layered design. At the lowest level there are drivers for screen output as well as mouse and keyboard input. Touch input devices are also supported. Drivers are available for X11, frame buffer, SDL, the Allegro graphics library, VESA or the SVGA library. Additional drivers can be added to port Microwindows to more platforms.

At the mid level, a portable graphics engine is implemented, providing support for line draws, area fills, polygons, clipping and 1, 2, 4, 8, 15, 16, 24 and 32 bit color models.

At the upper level, the Nano-X/NX11 and Win32 API's are implemented providing access to the graphics applications programmer.

The Nano-X Window System can be compiled either as a separate server for several clients or linked together to a single, standalone library.

Web site

The main Nano-X web site is at http://www.microwindows.org

Install

To build Microwindows, see microwindows/src/README plus the faq files in the doc directory. For Android there is an application note in the doc directory. The Atari Jaguar requires a specific treatment.

An HTML based FAQ and Architecture document are available from the web site.

Gallery

AGG Nuklear Emscripten FLTK Doom AJaguar

Links

The chief maintainer of the project is Greg Haerr [email protected]

Microwindows and Nano-X are discussed on the NanoGUI mailing list. Mailing list archives are available at: http://www.linuxhacker.org/ezmlm-browse/index.cgi?list=nanogui

microwindows's People

Contributors

alex-sever-h avatar djipi avatar georgp24 avatar ghaerr avatar gnodvi avatar jkingan avatar julstrat avatar nwrkbiz avatar ppisa avatar rofl0r avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microwindows's Issues

My Emscripten issue with SDL2

It seems I am having a problem with SDL2.
This is what I am getting with all my applications in Emscripten (WebAssembly) (Mouse is moving and working)

image

Mouse is working but all Windows are black.
I am not 100% sure it is SDL2 problem but I am now also getting this error in my browser (which is ignored) caused by the call to SDL_CreateRenderer

emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.

Everything works fine in my SDL2-Windows but not SDL2-Emscripten.

I also saw this : https://emscripten.org/docs/porting/emscripten-runtime-environment.html
which recommends When using SDL you will probably need to set the main loop.
So could it be the problem? Because SDL2 now uses the renderer?

Can Nano-X be used with a server-client distributed deployment?

Hi,
I was wondering, can the Nano-X server and the client be in different hosts and communicate through the internet? If so, how? Upon reading the documentation, I have not seen any information related to this (may well be because I am a poor reader too).

Black screen on Android

Hello :)

I am having troubles to get nanox + allegro running on android. Allegro and its examples work fi
ne, but when starting an nanox demo application, it seems to run but the screen keeps black.

Here is the config I used to build nano-X.a:
config_android_arm.txt

Here is a part of the android logcat:
LogCat.txt

Thanks in advanced, and thank you for this project :)

Support for wxWidgets X11 target with NX11?

Is there any chance more functionality could be added so wxWidgets X11 target could work via NX11? It'd be a nice alternative to FLTK. The microwindows code in wxWidgets doesn't really support anything, so targeting the X11 target would be better.

ELKS compilation appears broken

I built dev86 (ELKS's development environment) and elks from github source yesterday and today tried to build nano-x/microwindows with the config.elks settings.

This resulted in compilation errors beginning with:
src/engine/devdraw.c:1124.13: error: duplicate case in switch

This code is switching several constants that have different hex values but are identical in the least-significant 16-bits. This appears to be breaking the 16-bit compilation.

I am so confused!

I'm trying to port a few programs to DOS, which use X11 library, and I found this library. According to the Readme.md, Nano-X and Microwindows seems to be two names refer to the exact same thing. I was thinking about if this library has functions required by the program, so I looked for X11's header files and I found some at src/nx11/X11-local/X11 and I couldn't find Xrender.h which is needed by the program. After a while, I found this website. It says:

  • Nano-X is an XLib compatible library for embedded systems - NXlib is a wrapper library for Nano-X which simplifies porting programs written for Xlib to Nano-X.
  • Microwindows is a library which provides a different API for the Nano-X core. This API is Microsoft Windows compatible. It provides a small subset of the Windows API.

It says Nano-X and Microwindows are two different things. I looked around on the website, and I found this file names djgppn.zip. This is a djgpp installation and in djgpp/include/X11 there are much more X11 header files.
So here are my questions:

  1. What are Nano-X and Microwindows exactly?
  2. Why there're more X11 header files in that archive?
  3. What is the relationship between this repo and the website?

Thank you!

Next Update?

It seems that this repo isn't very active since the last update was almost a year ago, how often will you update this repo?

GrCopyArea all 0s

Hi, I have an embedded Linux application that was previously using Microwin v0.91 (2005) and running on an old Arm CPU.
Now I'm porting the project to a new system (i.MX6 UL, armv7l) using the latest version of microwin.
My source code is well tested (>15 years of life) and was previously running without issues.

I have spent a few days adjusting the build config for this new system and the graphic library works as expected, APART from an issue that can be troublesome. We draw popups on our display and we need to backup the raster below the popup with GrCopyArea and restore it back after the popup gets deleted. Unfortunately, GrCopyArea seems not to work: it copies 0s to the raster when we try to restore the area below the popup, therefore after the popup is deleted we get a black spot below it.

I have debugged this and can't find anything wrong (from my little understanding of microwin guts). I reached one of the low level functions (rasteropGeneralLow) and can't see anything wrong (like a failed assert, a return before really copying the data, etc). The only thing I noticed is that the source and dest pitch are different: src pitch 8, dst pitch 16
What could be wrong?

The display is 1 bit only (the pixels can be on/off). These are some of the important fields in the config file:

SCREEN_PIXTYPE           = MWPF_PALETTE
SCREEN_DEPTH             = 1

SCREEN                   = FB

SCREEN_WIDTH             = 128
SCREEN_HEIGHT            = 64

MICROWIN                 = N
NANOX                    = Y
NUKLEARUI                = N
NX11                     = N
ENGINE                   = N
TINYWIDGETS              = N

LINK_APP_INTO_SERVER     = Y

HAVE_SHAREDMEM_SUPPORT   = Y

Load and display bitmaps at runtime

Hello Greg,

what is the "best" solution to load and display a BMP bitmap file with actual 0.94 version?
The following code doesn't work.

  image = GdLoadImageFromFile( filename, 0 );
  hdcMem = CreateCompatibleDC( hdc );
  hbmp = CreateCompatibleBitmap( hdcMem, SCREENX, SCREENY );
  hbmpOrg = SelectObject( hdcMem, hbmp );
  DrawDIB( hdcMem, 0, 0, image );
  StretchBlt( hdc, x, y, dx, dy, hdcMem, 0, 0, image->width, image->height, MWROP_SRC_OVER );
  DeleteObject(SelectObject(hdcMem, hbmpOrg));
  DeleteDC(hdcMem);

I got the following error:

/home/root/microwindows-0.94pre/src/drivers/genmem.c:144: gen_allocatememgc: Assertion `psd == &scrdev' failed.

When I display the bitmap file (8 bit palette image) with
GdDrawImageFromFile(hdc->psd, x,y,dx,dy, filename,0);
only the top half of the bitmap is displayed.

Porting to sel4

Since the purpose of this project was to be a small and stable window system, I thought this would go great with the ideals of sel4. In attempt to porting this project to the sel4 microkernel I am getting an error compiling however, when i compile for linux I get no such error.

`[1/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip2.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winclip2.c:7:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winclip2.c:7:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

../projects/microwindows/src/mwin/winclip2.c: In function โ€˜MwSetClipWindowโ€™:
../projects/microwindows/src/mwin/winclip2.c:73:3: warning: implicit declaration of function โ€˜GdSetClipRegionโ€™; did you mean โ€˜MwSetClipWindowโ€™? [-Wimplicit-function-declaration]
GdSetClipRegion(hdc->psd, NULL);
^~~~~~~~~~~~~~~
MwSetClipWindow
../projects/microwindows/src/mwin/winclip2.c:80:8: warning: implicit declaration of function โ€˜GdAllocRectRegionโ€™ [-Wimplicit-function-declaration]
vis = GdAllocRectRegion(x, y, x+width, y+height);
^~~~~~~~~~~~~~~~~
../projects/microwindows/src/mwin/winclip2.c:80:6: warning: assignment to โ€˜MWCLIPREGION *โ€™ {aka โ€˜struct *โ€™} from โ€˜intโ€™ makes pointer from integer without a cast [-Wint-conversion]
vis = GdAllocRectRegion(x, y, x+width, y+height);
^
../projects/microwindows/src/mwin/winclip2.c:85:6: warning: implicit declaration of function โ€˜GdAllocRegionโ€™ [-Wimplicit-function-declaration]
r = GdAllocRegion();
^~~~~~~~~~~~~
../projects/microwindows/src/mwin/winclip2.c:85:4: warning: assignment to โ€˜MWCLIPREGION *โ€™ {aka โ€˜struct โ€™} from โ€˜intโ€™ makes pointer from integer without a cast [-Wint-conversion]
r = GdAllocRegion();
^
../projects/microwindows/src/mwin/winclip2.c:114:4: warning: implicit declaration of function โ€˜GdSetRectRegionIndirectโ€™; did you mean โ€˜CreateRectRgnIndirectโ€™? [-Wimplicit-function-declaration]
GdSetRectRegionIndirect(r, &sibwp->winrect);
^~~~~~~~~~~~~~~~~~~~~~~
CreateRectRgnIndirect
../projects/microwindows/src/mwin/winclip2.c:115:4: warning: implicit declaration of function โ€˜GdSubtractRegionโ€™; did you mean โ€˜SubtractRectโ€™? [-Wimplicit-function-declaration]
GdSubtractRegion(vis, vis, r);
^~~~~~~~~~~~~~~~
SubtractRect
../projects/microwindows/src/mwin/winclip2.c:146:3: warning: implicit declaration of function โ€˜GdIntersectRegionโ€™; did you mean โ€˜IntersectRectโ€™? [-Wimplicit-function-declaration]
GdIntersectRegion(vis, vis, wp->update);
^~~~~~~~~~~~~~~~~
IntersectRect
../projects/microwindows/src/mwin/winclip2.c:161:2: warning: implicit declaration of function โ€˜GdDestroyRegionโ€™; did you mean โ€˜MwDestroyWindowโ€™? [-Wimplicit-function-declaration]
GdDestroyRegion(r);
^~~~~~~~~~~~~~~
MwDestroyWindow
[3/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winclip2.c:7,
from ../projects/microwindows/src/mwin/winclip.c:4:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void
)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winclip2.c:7,
from ../projects/microwindows/src/mwin/winclip.c:4:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

[4/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winevent.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winevent.c:13:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winevent.c:13:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

[5/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/windefw.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/windefw.c:10:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/windefw.c:10:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

[6/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winexpos.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winexpos.c:11:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winexpos.c:11:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

[7/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winfont.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winfont.c:8:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winfont.c:8:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

[8/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj
FAILED: projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj
/usr/bin/ccache /usr/bin/gcc --sysroot=/host/build -I../projects/microwindows/src/include -I../projects/microwindows/src/mwin/../include -Iprojects/musllibc/build-temp/stage/include -m64 -march=nehalem -D__KERNEL_64__ -g -nostdinc -fno-pic -fno-pie -fno-stack-protector -fno-asynchronous-unwind-tables -ftls-model=local-exec -mtls-direct-seg-refs -std=gnu11 -MD -MT projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj -MF projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj.d -o projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winclip1.c.obj -c ../projects/microwindows/src/mwin/winclip1.c
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winclip1.c:5:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void*)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winclip1.c:5:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

../projects/microwindows/src/mwin/winclip1.c: In function โ€˜MwSetClipWindowโ€™:
../projects/microwindows/src/mwin/winclip1.c:37:23: error: โ€˜MAX_CLIPRECTSโ€™ undeclared (first use in this function); did you mean โ€˜MWCLIPRECTโ€™?
MWCLIPRECT cliprects[MAX_CLIPRECTS]; /* clip rectangles /
^~~~~~~~~~~~~
MWCLIPRECT
../projects/microwindows/src/mwin/winclip1.c:37:23: note: each undeclared identifier is reported only once for each function it appears in
../projects/microwindows/src/mwin/winclip1.c:89:3: warning: implicit declaration of function โ€˜GdSetClipRectsโ€™; did you mean โ€˜MwSplitClipRectโ€™? [-Wimplicit-function-declaration]
GdSetClipRects(hdc->psd, 1, cliprects);
^~~~~~~~~~~~~~
MwSplitClipRect
../projects/microwindows/src/mwin/winclip1.c: In function โ€˜MwExcludeClipRectโ€™:
../projects/microwindows/src/mwin/winclip1.c:176:18: error: โ€˜MAX_CLIPRECTSโ€™ undeclared (first use in this function); did you mean โ€˜MWCLIPRECTโ€™?
if (newcount > MAX_CLIPRECTS - 3) {
^~~~~~~~~~~~~
MWCLIPRECT
[10/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winmain2.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/winmain2.c:7:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void
)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winmain2.c:7:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

[13/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/winres.c.obj
In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/winres.c:15:
../projects/microwindows/src/mwin/winres.c: In function โ€˜mwResCompareโ€™:
../projects/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
^
../projects/microwindows/src/mwin/winres.c:67:7: note: in expansion of macro โ€˜HIWORDโ€™
if ((HIWORD(res1) == 0xFFFF) || (HIWORD(res2) == 0xFFFF)) // OK: Not pointer. Checks high word of resource DWORD.
^~~~~~
../projects/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
^
../projects/microwindows/src/mwin/winres.c:67:35: note: in expansion of macro โ€˜HIWORDโ€™
if ((HIWORD(res1) == 0xFFFF) || (HIWORD(res2) == 0xFFFF)) // OK: Not pointer. Checks high word of resource DWORD.
^~~~~~
../projects/microwindows/src/mwin/winres.c: In function โ€˜mwIsSameTypeโ€™:
../projects/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
^
../projects/microwindows/src/mwin/winres.c:261:6: note: in expansion of macro โ€˜HIWORDโ€™
if (HIWORD(id) == 0xFFFF) {
^~~~~~
../projects/microwindows/src/mwin/winres.c:268:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
if (w == LOWORD((DWORD) id))
^
../projects/microwindows/src/include/windef.h:174:37: note: in definition of macro โ€˜LOWORDโ€™
#define LOWORD(l) ((WORD)(l))
^
../projects/microwindows/src/mwin/winres.c: In function โ€˜resDialogTemplateโ€™:
../projects/microwindows/src/mwin/winres.c:541:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
*extra++ = (WORD)menu; // OK: No string menus yet, menu id always passed as WORD.
^
../projects/microwindows/src/mwin/winres.c:542:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
extra++ = (WORD)classname; // OK: No string classes yet, class id always passed as WORD.
^
[15/263] Building C object projects/microwindows/src/mwin/CMakeFiles/mwin.dir/wingdi.c.obj
In file included from ../projects/microwindows/src/include/winres.h:14,
from ../projects/microwindows/src/include/windows.h:26,
from ../projects/microwindows/src/mwin/wingdi.c:7:
projects/musllibc/build-temp/stage/include/stdio.h:27: warning: "NULL" redefined
#define NULL ((void
)0)

In file included from ../projects/microwindows/src/include/windows.h:21,
from ../projects/microwindows/src/mwin/wingdi.c:7:
../projects/microwindows/src/include/windef.h:22: note: this is the location of the previous definition
#define NULL ((void *)0)

../projects/microwindows/src/mwin/wingdi.c: In function โ€˜FillRectโ€™:
../projects/microwindows/src/mwin/wingdi.c:787:24: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
crFill = GetSysColor((int)obr-1); // OK: Not pointer. Convert to int then decrement.`

Also to note, sel4 is based on the cmake build system

How to switch from 16bit to 32bit colors

Hello there!

I am currently working with a project which uses 2018-2019 year old modified branch ( unfortunately history is lost there... ) v0.93 I require to switch from using 16bit color scheme to 24bit.
In principle only changing config file and rebuilding should be needed? Or is there something else that needs to be handled? My project uses prebuilt nano-X (screen X11) and some of the headers.

Present to the future challenge

Currently 5 display servers: Xorg; Xenocara; Arcan; Nano-X; Wayland, which can be used on Unix-like, Xorg is being deprecated, only a few devs and Oracle maintain it, Wayland invents the wheel and has a lot of design problems.

https://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html

https://way-cooler.org/blog/2020/01/09/way-cooler-post-mortem.html

https://www.reddit.com/r/linux/comments/wwsiaf/writing_a_wayland_compositor_is_much_harder_than/

swaywm/wlroots#1826

Nano-X has a lot of potential, but it lacks a port for *BSDs and new releases, which makes adoption difficult in distro repositories.

Floating point exception on Centos 8 compile

I've compiled microwindows for Centos 8, with all standard libraries.

I've selected NANO-X to be compiled as well as the other libraries.

I set LINK_APP_INTO_SERVER = Y

Compiles fine, but on running any demo I see the window open briefly and then the message

Floating point exception (core dumped).

If I set LINK_APP_INTO_SERVER = N

the compile completes, but I get

nxclient: bad readblock -1, errno 104
nxclient 15577: Corrupted packet

when I use runapp, eg

./runapp demo-nuklear-demo

libxcb support?

I see that this project has the nx11 library for libx11 but it would be nice to see a wrapper for libxcb. I'm sure you may have thought of this but how would you implement this?

Nano-X on Openindiana illumos-based systems

Hello,

I am seeking a viable small footprint alternative to Xorg for a special project that will need to run just one application that is an RDP/VNC client and normally can run on X11 systems like Linux.

I am wondering if Nano-X has a small footprint when coupled with the X11 compability library NX11.

The Openindiana OS (https://www.openindiana.org/) is based on Solaris and can run many Linux applications that have been ported but currently uses Xorg and for my project, I need something significantly smaller than Xorg.

Any information or suggestions would be greatly appreciated.

Errors compiling with emscripten

It looks like the emscripten build might have some issues on Macos X 10.15.2. I'm using the latest emsdk and running the 'make-emscripten' build. Mostly seems to work except I get errors about:

....../microwindows/src/nanox/srvnonet.c:11:10: fatal error: 'emscripten.h' file not found

and also missing ft2build.h

It does build to completion, but the resultant 'binary' doesnt run.

I did notice that I had to use

emsdk install latest-fastcomp & emsdk activate latest-fastcomp

as well.

add iconv to suport multi-language

Hi,guys,
the function
int GdConvertEncoding

(const void *istr, MWTEXTFLAGS iflags, int cc, void *ostr,
MWTEXTFLAGS oflags)
int the file devfont.c can not convert a multi-language UTF8 string to UTF-16 string but ASCII.
so I add the iconv lib to make this function can convert multi-language UTF8 string to a right way.
maybe someone need it. by the way in config need add libiconv and libcharset

devfont.c

devfont.zip

Error running nano-X on linux framebuffer

After switching to a different tty and killing my initial xorg session I still get this same error.

Error opening /dev/fb0: No such file or directory. Check kernel config
Cannot initialize screen

I am using the linux-fb config and my framebuffer drivers are loaded as well

Linker Error with GCC 11

I am using it for first time and I am following the instruction given in src/README
I have run cp Configs/config.linux-X11 config and then make but it give me this error . And I have not made any changes to code.

Screenshot from 2023-09-26 15-41-26

gcc version = 11.3.0
GNU Make = 4.3

Please help me fix this issue.

microwindows on 64bit ARM

I try to port an existing microwindows program from i.MX6 (32 Bit code, 16 Bit framebuffer) to i.MX8 (64 Bit code, 32 Bit framebuffer).

I can compile the libs and demo programs. When starting mdemo (or any other microwindows programs), the program crashes.

It looks like tbe initial erasing of the framebuffer is not working and there are writes outside of the allowed framebuffer memory.

Should the code work with a 64Bit compiler?

Uwe

Build fails with Allegro 5.2.x

When trying to build with allegro 5.2.x the build fails with following error:

es/nanox/microwindows-master/src/obj/drivers/scr_allegro5.o /home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c: In function 'init_allegro':
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:134:31: error: 'ALLEGRO_MOUSE_EMULATION_5_0_x' undeclared (first use in this function)
   al_set_mouse_emulation_mode(ALLEGRO_MOUSE_EMULATION_5_0_x);
                               ^
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:134:31: note: each undeclared identifier is reported only once for each function it appears in
/home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:136:4: warning: passing argument 2 of 'al_register_event_source' makes pointer from integer without a cast
    al_get_touch_input_mouse_emulation_event_source());
    ^
In file included from ../../../../../lib_include/android_arm/allegro5/base.h:50:0,
                 from ../../../../../lib_include/android_arm/allegro5/allegro.h:26,
                 from /home/giri/workspace/fltk_mvc_template/MVC/packages/nanox/microwindows-master/src/drivers/scr_allegro5.c:15:
../../../../../lib_include/android_arm/allegro5/events.h:249:15: note: expected 'struct ALLEGRO_EVENT_SOURCE *' but argument is of type 'int'
 AL_FUNC(void, al_register_event_source, (ALLEGRO_EVENT_QUEUE*, ALLEGRO_EVENT_SOURCE*));
               ^
../../../../../lib_include/android_arm/allegro5/internal/alconfig.h:175:57: note: in definition of macro 'AL_FUNC'
    #define AL_FUNC(type, name, args)               type name args
                                                         ^

puzzling issue with bitblt

I have a strange issue which I can not figure out.

This is the code I have

HDC hDCMem = CreateCompatibleDC(hdc);
HBITMAP bitmap = CreateDIBSection(hDCMem, &bi, DIB_RGB_COLORS, (VOID**)&lpBitmapBits, NULL, 0);
HGDIOBJ oldbmp = SelectObject(hDCMem, bitmap);

BitBlt(hDCMem, 0, 0, width, height, hdc, 0, 0, SRCCOPY);

`

this is hdc
image

and this is result of hDCMem

image

Obviously some cliping happening somewhere.
and hdc came from BeginPaint and WMPaint event.

Can you point me to how this happens? What variables should I look at?

Anyway it seems mostly ok, what is not ok, I guess is, the 0,0 of the resultant bitblt. I think what I want is that window get drawn from 0,0.
But funny thing is if I change

BitBlt(hDCMem, 0, 0, width, height, hdc, 0, 0, SRCCOPY);

to for example

BitBlt(hDCMem, 0, 0, width, height, hdc, 80, 80, SRCCOPY);

you get this

image

You would think that picture would shift to 0,0 but no!
I am kind of going crazy over this :D

Proofreading and q.c. help?

for georgp as i can't see how to pm here>

Do you want some help with finding spelling problems and the like as it's nice to see that nano-x / microwindows is moving again. I can't code anymore, but I can at least proofread / quality-check for you if it's any help?

I can also build if that's of use, I work with Puppy Linux and would build on one of it's versions (either in or out of container types).

Extending nanowm

Hey all, another thread for a new topic. So I'm planning around with the innards of nanowm and have noticed that while trying to theme it similarly to Win16, it mis-calc's the size of the client's borders, causing the client area overflows by 1px.

I'm sure I am doing something, but I'm curious what it would be.

I will post more in a bit, as I'm on my phone right now.

Thanks!

WNDCLASSEX

hi, today i wanted to try out the MW_FEATURE_RESIZEFRAME feature (#26) so i went looking for some win32 sample programs and found this http://www.winprog.org/tutorial/

here is a small sample program i wanted to compile against microwindows (simple_window.c)

#include <windows.h>

const char g_szClassName[] = "myWindowClass";

// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		case WM_CLOSE:
			DestroyWindow(hwnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
		break;
		default:
			return DefWindowProc(hwnd, msg, wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	LPSTR lpCmdLine, int nCmdShow)
{
	WNDCLASSEX wc;
	HWND hwnd;
	MSG Msg;

	//Step 1: Registering the Window Class
	wc.cbSize		 = sizeof(WNDCLASSEX);
	wc.style		 = 0;
	wc.lpfnWndProc	 = WndProc;
	wc.cbClsExtra	 = 0;
	wc.cbWndExtra	 = 0;
	wc.hInstance	 = hInstance;
	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION);
	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName  = NULL;
	wc.lpszClassName = g_szClassName;
	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION);

	if(!RegisterClassEx(&wc))
	{
		MessageBox(NULL, "Window Registration Failed!", "Error!",
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Step 2: Creating the Window
	hwnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		g_szClassName,
		"The title of my window",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
		NULL, NULL, hInstance, NULL);

	if(hwnd == NULL)
	{
		MessageBox(NULL, "Window Creation Failed!", "Error!",
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	// Step 3: The Message Loop
	while(GetMessage(&Msg, NULL, 0, 0) > 0)
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
}

but it seems WNDCLASSEX isn't implemented in microwindows. are there any plans to add this ?

Question on keyboard event devices in linux

Hi all,

I have a custom keypad served with uinput (or now with libevdev) in linux-arm host. This keypad is not hooked to any tty, but it creates just /dev/input/eventX device. I checked the repo and kbd_event.c is now deprecated. My question is what is the recommended solution to my setup? Should I bring back kbd_event.c into the compilation or there is another way the event device can be somehow redirected to tty and then standard kbd_tty.c driver could be used?

I dont use X11.

Thank you for you suggestions,
Michael

'ft2build.h' file not found

make[1]: se entra en el directorio '/home/vita/Desktop/microwindows-master/src/mwin'
make[2]: se entra en el directorio '/home/vita/Desktop/microwindows-master/src/mwin/winlib'
make[2]: se sale del directorio '/home/vita/Desktop/microwindows-master/src/mwin/winlib'
Compiling engine/font_freetype2.c ...
/home/vita/Desktop/microwindows-master/src/engine/font_freetype2.c:56:10: fatal error: 'ft2build.h' file not found
#include <ft2build.h>
^~~~~~~~~~~~
1 error generated.
make[1]: *** [/home/vita/Desktop/microwindows-master/src/Makefile.rules:556: /home/vita/Desktop/microwindows-master/src/obj/engine/font_freetype2.o] Error 1
make[1]: se sale del directorio '/home/vita/Desktop/microwindows-master/src/mwin'
make: *** [/home/vita/Desktop/microwindows-master/src/Makefile.rules:481: subdir-/home/vita/Desktop/microwindows-master/src/mwin] Error 2

In ArchLinux looks like I have everything needed installed already:
[vita@desktop src]$ sudo pacman -Ss freetype
extra/freetype2 2.13.2-1 [instalado]
Font rasterization library
extra/freetype2-demos 2.13.2-1 [instalado]
Freetype tools and demos
extra/freetype2-docs 2.13.2-1
Freetype documentation
extra/haskell-gi-freetype2 2.0.4-29
freetype2 bindings
extra/libxft 2.3.8-1 [instalado]
FreeType-based font drawing library for X
multilib/lib32-freetype2 2.13.2-1 [instalado]
Font rasterization library (32-bit)
multilib/lib32-libxft 2.3.8-1 [instalado]
FreeType-based font drawing library for X (32-bit)

Compile on Ubuntu for Emscripten

I cant compile MicroWindows on Ubuntu for Emscripten.

Linking mwapp.html ...
emcc -O3 -I./nx11/X11-local -I/usr/include/freetype2 -I/usr/include/libpng16 -lfreetype -s USE_SDL=2 -s USE_ZLIB=1 -s USE_FREETYPE=1 -s USE_LIBPNG=1 -I/usr/include/freetype2 -I/usr/include/libpng16 -lfreetype -Iinclude -I/usr/include/freetype2 -I/usr/include/libpng16 -lfreetype -DEMSCRIPTEN=1 -DMULTIAPP=1 -DHAVE_FREETYPE_2_SUPPORT=1 -s WASM=0 -s TOTAL_MEMORY=67108864 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -o bin/mwapp.html ./demos/mwin/mwapp.c ./demos/mwin/mwdemo.c ./demos/mwin/mwdemo2.c ./demos/mwin/mwmine.c ./images/demos/mwin/mwmine/mineflag.c ./images/demos/mwin/mwmine/mineface.c ./images/demos/mwin/mwmine/minefacelost.c ./images/demos/mwin/mwmine/minebomb.c ./images/demos/mwin/mwmine/minedone.c ./images/demos/mwin/mwmine/minehitfalse.c lib/libmwin.a
wasm-ld: error: unknown file type: winmain.o
emcc: error: '/home/proddik/Projects/emsdk/upstream/bin/wasm-ld -o /tmp/emscripten_temp_7l3m8tws/mwapp.wasm /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a -L/home/proddik/Projects/emsdk/upstream/emscripten/system/local/lib -L/home/proddik/Projects/emsdk/upstream/emscripten/system/lib -L/home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm /tmp/emscripten_temp_7l3m8tws/mwapp_0.o /tmp/emscripten_temp_7l3m8tws/mwdemo_1.o /tmp/emscripten_temp_7l3m8tws/mwdemo2_2.o /tmp/emscripten_temp_7l3m8tws/mwmine_3.o /tmp/emscripten_temp_7l3m8tws/mineflag_4.o /tmp/emscripten_temp_7l3m8tws/mineface_5.o /tmp/emscripten_temp_7l3m8tws/minefacelost_6.o /tmp/emscripten_temp_7l3m8tws/minebomb_7.o /tmp/emscripten_temp_7l3m8tws/minedone_8.o /tmp/emscripten_temp_7l3m8tws/minehitfalse_9.o lib/libmwin.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libSDL2.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libpng.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libz.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libfreetype.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libgl.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libcompiler_rt.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc++-noexcept.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc++abi-noexcept.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libdlmalloc.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libpthread_stub.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libc_rt_wasm.a /home/proddik/Projects/emsdk/upstream/emscripten/cache/wasm/libsockets.a -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --allow-undefined --import-memory --strip-debug --export-table --export main --export stackSave --export stackRestore --export stackAlloc --export __data_end --export __wasm_call_ctors --export __errno_location --export malloc --export free --export setThrew --export realloc --export testSetjmp --export saveSetjmp --export memalign --export memset --export emscripten_GetProcAddress --export strstr -z stack-size=5242880 --initial-memory=67108864 --no-entry --max-memory=67108864 --global-base=1024' failed (1)

How fix it?

NanoX on Microsoft Windows

Hi,

According to your github page nano-X can run on Windows. I have a microcontroller running ubuntu and showing GUI on screen on LCD using nano-X. Now for monitoring purpose in control room we want same screen view on our Window 10 app as well (it is getting data from micrcontroller). We just want send a dynamic data while static gui data should be in Window app. So is there way to compile nano-X on Window 10 with Microsoft using either Microsoft Visual C++ or Cygwin. Do I have to change Makefiles significantly for that or will it work without significant rework ?

Strange gtk 1.2.10 behaviors with nano-X

Searching the mailing list, changelog, and google give indications that gtk 1.2 is/was working with nano-x.

I could not find any actual instructions, like you made for fltk. :-(
I have gtk compiled against NX11 and nano-x from this git page for armv7.

Tried a number of gtk programs with similar issue.

Any movement of a gtk scrollbar, or hitting enter in a multi line text widget freezes the gtk app. The nano-x window is stll movable, but have to kill the gtk app from a terminal.

Most other widgets seem to work fine.

Compiling same gtk stack against X11 works as expected.

Are there instructions for configuring gtk 1.2 to work properly with nano-X ?

My nano-x config is :

ARCH = LINUX-NATIVE
SHAREDLIBS = Y
SHAREDLINK = N
DEBUG = N
OPTIMIZE = Y
VERBOSE = Y
THREADSAFE = Y
PARALLEL = N

SCREEN = FB
MOUSE = DEVMICEMOUSE
KEYBOARD = SCANKBD
SCREEN_WIDTH = 1024
SCREEN_HEIGHT = 768

MICROWIN = N
NANOX = Y
NUKLEARUI = Y
NX11 = Y
ENGINE = Y
TINYWIDGETS = Y

FBEMULATOR = N
MICROWINDEMO = N
MICROWINMULTIAPP = N
NANOXDEMO = Y
HAVE_VNCSERVER_SUPPORT = N
VNCSERVER_PTHREADED = N
LIBVNC = -lvncserver
INCVNC =

LINK_APP_INTO_SERVER = N
NANOWM = Y

HAVE_SHAREDMEM_SUPPORT = Y

HAVE_FILEIO = Y

HAVE_BMP_SUPPORT = Y
HAVE_GIF_SUPPORT = Y
HAVE_PNM_SUPPORT = Y
HAVE_XPM_SUPPORT = Y

HAVE_JPEG_SUPPORT = Y
INCJPEG =
LIBJPEG = -ljpeg

HAVE_PNG_SUPPORT = Y
INCPNG =
LIBPNG = -lpng
INCZ =
LIBZ = -lz

HAVE_TIFF_SUPPORT = N
INCTIFF =
LIBTIFF = -ltiff

HAVE_PCF_SUPPORT = Y
HAVE_PCFGZ_SUPPORT = Y
PCF_FONT_DIR = "fonts/pcf"

HAVE_FREETYPE_2_SUPPORT = Y
HAVE_HARFBUZZ_SUPPORT = N
INCFT2LIB = /usr/include
LIBFT2LIB = -lfreetype
FREETYPE_FONT_DIR = "fonts/truetype"

HAVE_T1LIB_SUPPORT = N
T1LIB_FONT_DIR = "fonts/type1"
INCT1LIB =
LIBT1LIB = -lt1

HAVE_FNT_SUPPORT = Y
HAVE_FNTGZ_SUPPORT = Y
FNT_FONT_DIR = "fonts/fnt"

ERASEMOVE = Y
UPDATEREGIONS = Y

NOFONTS = N
NOCLIPPING = N

USE_EXPOSURE = Y
VTSWITCH = Y
FBREVERSE = N
GRAYPALETTE = N
HAVETEXTMODE = Y

SCREEN_PIXTYPE = MWPF_TRUECOLORARGB
SCREEN_DEPTH = 8

gtk 1.2.10 was configured as : ./configure --disable-nls --disable-glibtest

Tried 2 different tarballs for gtk 1.2.10, same outcome.

lex issue

yacc -d fileio.y
Compiling y.tab.c...
lex fileio.l
"fileio.l":line 54: Error: Too many transitions 
Try using %a num
make[2]: *** [lex.yy.c] Error 1

i'm using posix compatible lex https://github.com/sabotage-linux/lex as lex program, and it requires that the maximum number of transitions be specified with the %a directive. apparently the build system assumes that lex is a symlink to flex oslt.

endian.h

On macOS, it's <machine/endian.h> but on other platforms it's simply <endian.h>. To cover both of them, please include <sys/types.h> instead.

This is the error message on MSYS2 MINGW64:

In file included from C:/msys64/home/Administrator/microwindows/src/engine/devdraw.c:15:
C:/msys64/home/Administrator/microwindows/src/include/swap.h:30:10: fatal error: 'machine/endian.h' file not found
#include <machine/endian.h>
         ^~~~~~~~~~~~~~~~~~
1 error generated.
make[1]: *** [/home/Administrator/microwindows/src/Makefile.rules:556: /home/Administrator/microwindows/src/obj/engine/devdraw.o] Error 1
make[1]: Leaving directory '/home/Administrator/microwindows/src/mwin'
make: *** [/home/Administrator/microwindows/src/Makefile.rules:481: subdir-/home/Administrator/microwindows/src/mwin] Error 2

This is my proposed solution's source: https://stackoverflow.com/questions/27073837/fatal-error-endian-h-file-not-found

Build of head for Linux framebuffer fails on nonexistent mou_micedev.o

The driver name is miss-spelled.

diff --git a/src/drivers/Objects.rules b/src/drivers/Objects.rules
index 14de022..31e777b 100644
--- a/src/drivers/Objects.rules
+++ b/src/drivers/Objects.rules
@@ -152,7 +152,7 @@ endif

 # Linux /dev/input/mice driver
 ifeq ($(MOUSE), DEVMICEMOUSE)
-MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_micedev.o
+MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_devmice.o
 endif

 # Tslib touchscreen driver

Nano-X - Window repaint problem

Hello.
My env. Raspberry Pi Linux raspberrypi 4.14.98+ #1200 Tue Feb 12 20:11:02 GMT 2019 armv6l GNU/Linux
Microwindows config - config-linux.fb.
Problem - The window does not redraw properly after its movement.

Screenshots from demo application demo-ttffont attached.
Thanks.

ttfdemo

ttfdemo_after_move

ScrollWindow?

Hi,

Thanks for your great API. I am using it for a very interesting project, and will soon also contribute back my changes to your code, but meanwhile I was wondering if you have any plans to have Scrolling APIs implemented? like ScrollWindowEx?

Also what is that black lines always appearing at lower right of screen? Is it a known bug or something?

Framebuffer

With version 0.91, Microwindows show correctly png images but with the last version (0.94pre) doesn't show the image with correct colors.
After compiled with this config file you can run demo-composite or demo-blit directly on console.
Other thing i'm getting error when i compile with vnc server.
I used:

  • Slackware 14.2 kernel 4.4.14-smp, lilo.conf with vga=791
  • jpeg9c
  • png 1.6.37
  • freetype 2.10

blit

composite

config.txt

DJGPP and DOS

After installing DJGPP and reading the Microwindows FAQs and DJGPP PDF, running: make -f Makefile_nr ARCH=DOS results in:

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.