1 |
673 |
markom |
<html>
|
2 |
|
|
|
3 |
|
|
<head>
|
4 |
|
|
<title>Greg Haerr's Microwindows and NanoGUI Page</title>
|
5 |
|
|
</head>
|
6 |
|
|
|
7 |
|
|
<body BGCOLOR="#ffffff">
|
8 |
|
|
|
9 |
|
|
<table border="0" cellpadding="4" cellspacing="10">
|
10 |
|
|
<tr>
|
11 |
|
|
<td valign="top"><img border="0" src="file:///C:/My%20Documents/My%20Webs/myweb2/images/cat.gif" width="85" height="41"> </td>
|
12 |
|
|
<td><h1 align="center">Microwindows and NanoGUI Projects</h1>
|
13 |
|
|
</td>
|
14 |
|
|
</tr>
|
15 |
|
|
<tr>
|
16 |
|
|
<td valign="top"><!--left-column contents --> <p><b>Downloads</b> <br>
|
17 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/">Microwindows</a> <br>
|
18 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/ScreenShots">Screen Shots</a>
|
19 |
|
|
<br>
|
20 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/LinuxExamples">Linux Binaries</a>
|
21 |
|
|
<br>
|
22 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/ElksExamples">ELKS Binaries</a>
|
23 |
|
|
<br>
|
24 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/DosExamples">MSDOS Binaries</a>
|
25 |
|
|
</p>
|
26 |
|
|
<p><b>Docs</b> <br>
|
27 |
|
|
<a href="faq.html">FAQ</a> <br>
|
28 |
|
|
<a href="microwindows_architecture.html">Architecture</a> </p>
|
29 |
|
|
<p><b>Links</b> <br>
|
30 |
|
|
<a href="http://www.linuxhacker.org/nanogui/">NanoGUI</a> <br>
|
31 |
|
|
<a href="http://www.linuxce.org/">Linux CE</a> <br>
|
32 |
|
|
<a href="http://www.elks.ecs.soton.ac.uk/">ELKS</a> <br>
|
33 |
|
|
<a href="http://ltc.com/linux-mips">Brad's Linux MIPS Pages</a> <!--end left-column contents --> <br>
|
34 |
|
|
<a href="http://members.xoom.com/rosimildo/rtems_gui.html">RTEMS Port</a></td>
|
35 |
|
|
<td><!--main contents --> <h3>Welcome</h3>
|
36 |
|
|
<p>Microwindows is an Open Source project aimed at bringing the features of modern
|
37 |
|
|
graphical windowing environments to smaller devices and platforms. Microwindows
|
38 |
|
|
allows applications to be built and tested on the Linux desktop, as well as cross-compiled
|
39 |
|
|
for the target device. Microwindows' genesis was with the NanoGUI project, and has
|
40 |
|
|
now been combined into a single distribution. The Win32 API implementation is known
|
41 |
|
|
as Microwindows, and the Xlib-like API implementation is known as Nano-X. Please read the <a href="faq.html">FAQ</a> for more information. An extensive <a href="microwindows_architecture.html">Architecture</a> document is also available.
|
42 |
|
|
To get involved, please join <a href="http://www.linuxhacker.org/nanogui/">the NanoGUI
|
43 |
|
|
mailing list.</a></p>
|
44 |
|
|
<h3>News</h3>
|
45 |
|
|
<h3>Version 0.87pre2 release</h3>
|
46 |
|
|
<p>December 14, 1999<br>
|
47 |
|
|
The second prerelease for version 0.87 has just been released, and is
|
48 |
|
|
available for download at:<br>
|
49 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.87pre2.tar.gz">ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.87pre2.tar.gz</a>
|
50 |
|
|
This release is primarily intended for inspection and testing of the
|
51 |
|
|
changes before the directory tree reorganization, planned next.<br>
|
52 |
|
|
The major enhancements include:</p>
|
53 |
|
|
<ul>
|
54 |
|
|
<li>Portrait mode driver for framebuffer systems. This is a big
|
55 |
|
|
win for handhelds and palmtops, many of which require portrait mode
|
56 |
|
|
for normal operation. All graphics output, including mouse
|
57 |
|
|
movement, hotspots, and text output, are rotated and displayed in
|
58 |
|
|
portrait mode. In addition, your Microwindows applications can
|
59 |
|
|
be viewed in portrait mode on the desktop. Try moving the mouse
|
60 |
|
|
without holding your head sideways!</li>
|
61 |
|
|
<li>The RTEMS operating system port source has been integrated with the
|
62 |
|
|
main tree.</li>
|
63 |
|
|
<li>Fixes to allow Microwindows to be run on big-endian machines are now
|
64 |
|
|
included.</li>
|
65 |
|
|
<li>Various bug fixes including the Microwindows terminal emulator pty
|
66 |
|
|
fix for X11, and Nano-X GrMovewindow fixes for child windows.
|
67 |
|
|
There are still some issues relating to Nano-X clipping during window
|
68 |
|
|
movement.</li>
|
69 |
|
|
</ul>
|
70 |
|
|
<h3>RTEMS Port</h3>
|
71 |
|
|
<p>December 3, 1999<br>
|
72 |
|
|
There's been alot of interest and development with Microwindows lately. Rosimildo
|
73 |
|
|
daSilva has ported Microwindows 0.86 to the RTEMS operating system, available at <a href="http://members.xoom.com/rosimildo/rtems_gui.htm">http://members.xoom.com/rosimildo/rtems_gui.htm</a>.
|
74 |
|
|
<a href="http://www.oarcorp.com/">RTEMS</a> is a POSIX-threads compliant real time
|
75 |
|
|
multitasking operating system which runs on Intel, Motorola, Hitachi, Mips, and many other
|
76 |
|
|
CPUs.</p>
|
77 |
|
|
<h3>Version 0.87pre1 release</h3>
|
78 |
|
|
<p>December 2, 1999<br>
|
79 |
|
|
I have prepared an interim release of Microwindows and Nano-X enhancements, which
|
80 |
|
|
completes many things folks have asked for, version 0.87pre1. This is available for
|
81 |
|
|
download at <a href="ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.87pre1.tar.gz">ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.87pre1.tar.gz</a>
|
82 |
|
|
<br>
|
83 |
|
|
The major enhancements include:<ul>
|
84 |
|
|
<li>Support for running under X11. Microwindows and Nano-X can now run as a user-defined
|
85 |
|
|
(default 640x480) window under X Windows. The graphics output and look and feel are
|
86 |
|
|
identical to framebuffer, but will run on any X display server.</li>
|
87 |
|
|
</ul>
|
88 |
|
|
<ul>
|
89 |
|
|
<li>Compile-time options allow configuration to emulate any of the Microwindows truecolor or
|
90 |
|
|
palette modes, in any pixel depth, including grayscale. This allows a Microwindows or
|
91 |
|
|
Nano-X application to be emulated exactly, regardless of the host's or target's
|
92 |
|
|
framebuffer characteristics. Thanks to Tony Rogvall for the X11 driver.<br>
|
93 |
|
|
</li>
|
94 |
|
|
<li>The client/server network code has been completely rewritten for speed!!!
|
95 |
|
|
I studied the
|
96 |
|
|
X11 Xlib implementation and came up with a similar implementation. By queuing all client
|
97 |
|
|
data until an event or reply is required, Nano-X now runs at extremely high speed.
|
98 |
|
|
For benchmarking, use the world demo, which plots several thousand
|
99 |
|
|
points. This demo now runs extremely quickly. Unlike
|
100 |
|
|
the Xlib implementation, Nano-X still runs synchronously per client, meaning that once a
|
101 |
|
|
client request packet is sent, the server waits until the whole packet has arrived until
|
102 |
|
|
servicing another client. This keeps the server code immensely simpler, while still
|
103 |
|
|
running very quickly. I urge interested folks to check out the implementation, in
|
104 |
|
|
mwin/src/nanox/nxproto.{ch}, and mwin/src/nanox/client.c.<br>
|
105 |
|
|
</li>
|
106 |
|
|
<li>Routines were added to allow Nano-X to be used as a "passive library", meaning
|
107 |
|
|
that an application with it's own main loop can now call into Nano-X occasionally
|
108 |
|
|
(after a
|
109 |
|
|
select returns a file descriptor that Nano-X is interested in), and it will all work. This
|
110 |
|
|
was done for Morten. See mwin/src/nanox/client.c, functions GrPrepareSelect(),
|
111 |
|
|
GrServiceSelect(), GrMainLoop(). <br>
|
112 |
|
|
</li>
|
113 |
|
|
<li>Routines were added to get the system palette, and translate an RGB color to a PIXELVAL
|
114 |
|
|
palette index. This was for Richard and the Opera browser. See mwin/src/nanox/srvfunc.c,
|
115 |
|
|
functions GrGetSystemPalette, GrFindColor(). <br>
|
116 |
|
|
</li>
|
117 |
|
|
<li>A null mouse driver was added for systems without a mouse, by setting NOMOUSE=1 in
|
118 |
|
|
Makefile.<br>
|
119 |
|
|
<br>
|
120 |
|
|
This is released as 0.87pre1 because I still haven't finished the directory tree
|
121 |
|
|
reorganization, and adding Martin's cool X11 graphics makefile configuration tool. The
|
122 |
|
|
client/server code rewrite took alot more time than expected. I am also working on getting
|
123 |
|
|
all source on CVS. </li>
|
124 |
|
|
</ul>
|
125 |
|
|
<h3>NanoGUI combined with Microwindows</h3>
|
126 |
|
|
<p>November 13, 1999<br>
|
127 |
|
|
Alex Holden, the originator of the NanoGUI project, officially handed over his role to
|
128 |
|
|
Greg Haerr, so that the NanoGUI and Microwindows projects can officially be available as a
|
129 |
|
|
single distribution. Alex continues to host the Microwindows/NanoGUI mailing list.
|
130 |
|
|
Although the releases have been maintained for some time by Greg Haerr, the
|
131 |
|
|
official distribution site is now moved here. A big thanks goes to Alex for thinking
|
132 |
|
|
up the NanoGUI idea and hosting the initial web site.</p>
|
133 |
|
|
<h3>Opera Web Browser ported to Microwindows</h3>
|
134 |
|
|
<p>November 11, 1999<br>
|
135 |
|
|
<a href="http://www.opera.com">The Opera Web Browser</a>, a browser known for it's small
|
136 |
|
|
footprint and operation on different operating systems, including Windows, BeOS, Linux,
|
137 |
|
|
Solaris, MacOS and OS/2, has announced they have completed initial work porting Opera to
|
138 |
|
|
Microwindows. This is a crticial milestone for Microwindows, since it shows that
|
139 |
|
|
larger, graphics intensive applications can run on top of the Microwindows graphics
|
140 |
|
|
engine. The Opera port uses the Nano-X api and features jpeg and gif image support,
|
141 |
|
|
as well as transparent image drawing. The codefile size is 670k. The current
|
142 |
|
|
Microwindows footprint is less than 100k with no compiled-in images.</p>
|
143 |
|
|
<h3>Version 0.86 release</h3>
|
144 |
|
|
<p>October 28, 1999<br>
|
145 |
|
|
Thanks to Brad LaRonde for helping me get this web page out. I have posted an update
|
146 |
|
|
v0.86 to Microwindows/Nano-X at: </p>
|
147 |
|
|
<blockquote>
|
148 |
|
|
<a href="ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.86.tar.gz"><p>ftp://microwindows.censoft.com/pub/microwindows/microwindows-0.86.tar.gz</a>
|
149 |
|
|
</p>
|
150 |
|
|
</blockquote>
|
151 |
|
|
<p>This version completes a major effort, that of implementing off-screen drawing, as well
|
152 |
|
|
as screen-to-screen blitting. The screen driver interface had to change to accommodate
|
153 |
|
|
this, and I had to rewrite all the screen drivers. In addition, the blitting routines were
|
154 |
|
|
written for 1, 2, 4, 8, 16 and 32bpp linear framebuffer devices, as well as the 16 color 4
|
155 |
|
|
planes vga (this was a royal pain...) The blitting uses a clipping region traversal
|
156 |
|
|
algorithm so that blitting is always high speed, even when the destination window is
|
157 |
|
|
partly obscured. </p>
|
158 |
|
|
<p>This release also auto-detects most Linux framebuffer implementations, and should have
|
159 |
|
|
a compiled in driver for it. </p>
|
160 |
|
|
<p>The standard Microwindows demo is now a graphical terminal emulator, mterm. (No, it
|
161 |
|
|
doesn't run vi yet, and it doesn't repaint it's screen contents, but it will ;-) This demo
|
162 |
|
|
requires screen-to-screen blitting for scrolling. The 3d graphics demo now uses offscreen
|
163 |
|
|
blitting to enhance (read no flicker) the display. Check it out. </p>
|
164 |
|
|
<p>There is also some experimental full-blown region handling code included, which uses
|
165 |
|
|
X11's y-x banding region algorithms. (This stuff is truly for those with extra time and
|
166 |
|
|
brains). It is currently not compiled in, but can be included by replacing devclip.c with
|
167 |
|
|
devclip2.c. In the next release, arbitrary multi-rectangle clipping regions will be
|
168 |
|
|
available. I also plan on implementing separate clip regions from update regions for
|
169 |
|
|
windows, with the system computing the update region as a subset of the clip region.
|
170 |
|
|
Anyway, this sophisticated region handling is required for smart window painting as well
|
171 |
|
|
as higher end graphics primitives. Eventually, this will also allow separate source and
|
172 |
|
|
destination clipping for bitblit operations. Only destination clipping is working now. </p>
|
173 |
|
|
<p>The next release will have a reorganized directory structure, allowing separate
|
174 |
|
|
development of Nano-X, widgets, core engine, and Microwindows. I plan on moving the whole
|
175 |
|
|
thing to a CVS soon. BTW, Microwindows now supports three processor families, according to
|
176 |
|
|
reports emailed me. We've got i386, 8086, MIPS Vr41xx, and ARM families running ;-) </p>
|
177 |
|
|
<p>Following is a summary of the ChangeLog: <br>
|
178 |
|
|
Version 0.86 - 28th October 1999 - greg@censoft.com <ul>
|
179 |
|
|
<li>merged framebuffer, elks and msdos vga 16 color 4 planes drivers </li>
|
180 |
|
|
<li>wrote vga bitbit routines (a herculean effort) </li>
|
181 |
|
|
<li>optimized bitblit by traversing window clip region </li>
|
182 |
|
|
<li>added experimental multi-rectangle dynamically allocated regions </li>
|
183 |
|
|
<li>wrote scrolling terminal emulator demo for microwindows </li>
|
184 |
|
|
<li>added WM_FDINPUT msg, WndRegisterFdInput call for terminal emulator </li>
|
185 |
|
|
<li>changed SCREENINFO struct, removed black/white, added bpp, planes </li>
|
186 |
|
|
<li>added offscreen (memory DC) drawing to microwindows </li>
|
187 |
|
|
<li>added BitBlt, CreateCompatibleBitmap, CreateCompatibleDC, DeleteDC </li>
|
188 |
|
|
<li>retired BOGL library, must use new interface for blitting </li>
|
189 |
|
|
<li>converted framebuffer, svgalib, elks and msdos screen drivers (we need blit routines for
|
190 |
|
|
herc and svgalib still) </li>
|
191 |
|
|
<li>major screen driver interface change, old drivers not compatible </li>
|
192 |
|
|
</ul>
|
193 |
|
|
<p>Page maintained by Greg Haerr <<a href="mailto:greg@censoft.com">greg@censoft.com</a>></td>
|
194 |
|
|
</tr>
|
195 |
|
|
<tr>
|
196 |
|
|
<td valign="top"></td>
|
197 |
|
|
<td></td>
|
198 |
|
|
</tr>
|
199 |
|
|
</table>
|
200 |
|
|
</body>
|
201 |
|
|
</html>
|