Warning - for use with old version of Maverik (5.4) click here for latest versions

Changes to Maverik-5.4

I've made some changes to Maverik to improve compatibility under cygwin.

You can get all the changed files here. All the files are other-OS friendly, (which the exception of setup which is cygwin specific) and should work in any Maverik-5.4 environment

Enabling convert

This change allows use of most image formats with Maverik. See enabling image conversion.

Enabling PNG support

Now that cygwin has a PNG installation Maverik can be compiled with MAV_PNG defined. Use my setup (in the top level Maverik directory) and Makefile (for src/kernel) to activate this.

Executable name in window title bar

Download my updated mav_windows.c.gz and gunzip it to src/windows. Add -DMAV_CYGWIN to the CFLAGS line in the top level Maverik Makefile and make. Your windows should now display the name of the executable in the title bar instead of "Maverik".

Enabling VRML97 support

VRML97 support is now part of 5.3. The previous problems with bison don't apply to the current version of cygwin. Just remember to link your application with -lstdc++

Enabling Tile Rendering

This change allows use of the TR module. See enabling Tile Rendering.

Read hostname

Download my mav_kernel.c.gz. Gunzip it to src/kernel. Add -DMAV_CYGWIN to the CFLAGS line in the top level Maverik Makefile, and make. Maverik will now read the correct hostname and store it in mav_hostName. Currently nothing in the library actually uses this variable, but an application might.

Fix ctorus intersection

Download my mav_ctorus.c.gz. Gunzip it to src/objects, and make. This makes the circular torus intersection routine behave correctly.

Changes to mav_gfxWM.c

This is where most of the changes for win32 are located. Download my mav_gfxWM.c.gz and gunzip it to src/gfx. You will also need my mav_frame.c.gz which goes in src/kernel.

It contains the following updates:

new 21/11/00 left and right alt, shift and ctrl key events are now reported correctly (untested on NT)
new 07/11/00 defining fonts now allowed. A suitable font is "guessed", but it should at least be the correct size
2D text offsets calculated correctly
enter/leave events trapped - this makes mav_win_mouse correct (works on NT and win98 but may not work on win95)
some changes to the window/device context creation fuctions
mav_gfxWindowOpen compensates for the border size so the client area is the desired size/position.
single buffer option works
accumulation buffer option works
multiple windows share opengl contexts - this works for the generic windows implementation. Hardware drivers, though, may not be completely functional and some cannot render to multiple windows (e.g. ATI Rage Pro).
CaptureMouse is used after mouse button down events to avoid missing button up events
button status is polled in mav_mouseGet
keyboard punctuation characters reported correctly
window expose events processed
events return correct mouse position
proper full screen display mode

A quick note on the full screen support: if an application sets mav_opt_fullscreen the file ${HOME}/.mav_fullscreen is searched for, and if found the first three numbers in it are read in for the width, height and bitdepth of the required display mode. If the file isn't found then (conservative) defaults are used. These are stored in MAVLIB_WIDTH, MAVLIB_HEIGHT and MAVLIB_BITS in mav_gfxWM.c. If the display mode can't be set then Maverik reverts to windowed application mode. One other point: outputting text to the bash window during fullscreen mode causes serious slow down - redirect stdout and stderr to files to solve this (e.g. 2>foo >bar).

Updates needed

Some changes which I haven't made yet:

Not a lot... Cygwin Maverik is now pretty much as compatible as it could be with Unix Maverik
dll support (runtime module loading - should be possible...) - possible but very messy. Did a .dll for the tile renderer but I don't think it's worth continuing this