All the modules here are created and maintained across multiple platforms, using all kinds of weird and wonderful techniques to get everything to work seemlessly in BlitzMax, so you don't have to worry about it.

If you find any of these modules useful you may wish to donate a little something using the PayPal buttons provided. Donations help cover the cost of hardware and software upgrades, both of which make for better modules ;-)

A mention in your project doesn't hurt either :-)

Thanks for your continued interest and support !!

Applications

RadioBaH is a cross-platform Streamcast and Icecast Internet Radio player, written in BlitzMax, and using several of my BlitzMax Modules, including wxMax, BASS, Cairo, Growl, libcurl and libxml.

wxMax Tutorials

These tutorials introduce you to wxMax, and show you how to get the best out of the many different available controls, sizers, and events. Some of the tutorials are also available in different languages.

The tutorials are also included as part of the main wxMax download, so you can use them offline to help you to learn wxMax better.

Cross-Compiling with BlitzMax

If you use Mac or Linux, you can now cross-compile your modules and applications for the Windows platform. This uses Mac/Linux native MinGW utilities to create Win32 binaries which will run on a Windows operating system. If you can't, or don't want to have Windows, this is one method of creating software for Windows without the need for a Windows installation.

BlitzMax Modules

We're currently in the process of moving most of the modules to GoogleCode. This is great for everyone as it means releases can be better organised, latest source is available via Subversion, and it includes an Issue Tracker.

   

Last Update

 
28 - May - 2007

@ GoogleCode
29 - Apr - 2007
@ GoogleCode
@ GoogleCode
11 - Apr - 2007
@ GoogleCode
@ GoogleCode

@ GoogleCode
@ GoogleCode
06 - Dec - 2006

25 - Apr - 2007
06 - Dec - 2006
06 - Dec - 2006
@ GoogleCode

05 - May - 2007
@ GoogleCode
22 - Apr - 2007

@ GoogleCode
@ GoogleCode
@ GoogleCode

@ GoogleCode
@ GoogleCode

26 - May - 2007
06 - Aug - 2007
@ GoogleCode
@ GoogleCode

@ GoogleCode
15 - Aug - 2006

@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode
09 - Nov - 2007
@ GoogleCode
29 - May - 2007
@ GoogleCode

@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode
@ GoogleCode

Installing modules :

MANUAL INSTALL

The zip files contain modules in the structure:

bah.mod /
         modulename.mod /

Modules should be unzipped into the mod folder of your BlitzMax installation.

This creates a bah.mod folder in which each individual module folder is located.

For example, if you have installed BlitzMax in C:\Program Files\BlitzMax, then the zip should be unpacked into C:\Program Files\BlitzMax\mod.

If you have a previously installed version of the module you are installing you should uninstall it first. You can do this simply by removing it's folder. For example, if you had an install of libxml already and you had BlitzMax installed in the location above, you could remove the old version by deleting the libxml.mod folder from C:\Program Files\BlitzMax\mod\bah.mod

You might find Building Modules is required sometimes, to get all the modules in sync. You can do this from the IDE menu. Note that Windows users require MinGW installed to build modules.

Note on documentation : All the modules are fully documented. If you don't see it in your Modules area, you can run docmods from your BlitzMax bin folder or from the IDE (Program -> Document Modules). Blitz doesn't update this by itself usually.

The Tweaked BMK

UPDATE : Since BlitzMax 1.28, the BMK tweaks are part of the official BMK. I've left the download here for reference ;-)

You can download the source zip file here : bmk2.zip (47kb)

How to Install :

The file bmk.bmx should be compiled in Release mode with GUI disabled.

Once you have your binary, it needs to be copied into your BlitzMax/bin directory.

Warning : Remember to backup your existing bmk executable BEFORE you copy over the new one. Without a working bmk you cannot compile anything !!

 

Module Description Version Download (size) Compiled for

bah.appstub

This module is intended as an optional replacement for the official BRL.appstub module on MacOS X, when non-Cocoa GUI compilation is required.

Specifically, the module was created with the wxMax module-suite in mind, since it won't run properly using the built-in appstub.

To use this instead of the official appstub, you need to compile your app with the following BMK option : -b bah.appstub

 

Available at GoogleCode 1.26+

bah.base64

 

Convert your binary data to Base64 Strings and back again with this very handy module.

Useful if you need to embed binary data in XML

 

Available at GoogleCode 1.28+

bah.boost

Boost is a collection of portable C++ source libraries intended to be widely useful, and usable across a broad spectrum of applications.

This BlitzMax module includes some of the boost core functionality, primarily for use with other modules.

Currently, this module doesn't expose any specific boost APIs, but is a requirement of the datetime and mathtoolkit modules.

 

Available at GoogleCode 1.28+

bah.box2d

 

Box2D is a 2D rigid body simulation library for games.
It features, continuous collision detection (CCD), contact callbacks, convex polyons and circles, multiple shapes per body, and lots more

 

Available at GoogleCode 1.32+

bah.cairo

A BlitzMax wrapper for Cairo , a 2D vector graphics library.
Fully documented, with examples.

It provides operations similar to the drawing operators of PostScript and PDF. Operations include stroking and filling cubic Bézier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.)

Can output to Image, PDF and Postscript formats.

Notes for PPC Mac : You will also need to install an updated pixmap module which includes enhancements for big-endian pixmaps. Download -> pixmap.zip

 

Available at GoogleCode 1.28+

bah.chipmunk

 

Chipmunk is a fast cross-platform 2D Game Dynamics engine.

 

Available at GoogleCode 1.32+

bah.clearsilver

ClearSilver is a fast, powerful, templating system. It is designed to produce HTML, but can as easily be applied to code generation.

ClearSilver also comes equipped with its own CGI kit, which makes it incredbily simple to create your own standards-savvy BlitzMax CGI applications.

The module includes the ClearSilver (0.10.4) source, and documentation.

1.00

26-May-07

clearsilver.zip (1.38mb) 1.20+

bah.crypto

 

The Crypto module harnesses the power of the OpenSSL cryptography library to provide state-of-the-art encryption/decryption functionality to your BlitzMax applications.

 

Available at GoogleCode 1.28+

bah.datetime

The datetime module uses the boost C++ libraries to provide extensive date/time functionality to BlitzMax.

Specifically, it allows calculations based on dates, times, date/time periods, date/time durations, date iterators, time zones, and month/weekday name localization (with 74 language translations ready for use with the locale module).

As usual, the module is cross-platform and comes with extensive documentation and examples.

Requires :
The Boost module.

Notes :

  1. To build the module, requires a modified verison of BMK. See here for more details.

1.00

01-Aug-07

datetime.zip (318kb) 1.20+

bah.database

 

This is the core module for a cross-platform Database Framework, which uses a consistent API to allow you to connect to a variety of different database types.

The Framework has support for executing queries directly, using prepare/execute statements, and transactioning.

On its own, this module doesn't do much. You will need to also install at least one of the database driver modules.

 

Available at GoogleCode 1.28+

bah.dbmsql

 

An mSQL (miniSQL) database driver module for the Database Framework.

Requires :
The Database Framework module.

1.01

10-Apr-07

dbmsql.zip (251kb) 1.20+
    Latest Changes 1.01
  • Modified for Win32 compile.

bah.dbmysql

 

A MySQL database driver module for the Database Framework.

Requires :
The Database Framework module.
MySQL client libraries (v5+)

 

Available at GoogleCode 1.28+

bah.dbodbc

 

An ODBC database driver module for the Database Framework.

On Windows, the module links to libodbc32.
For Mac/Linux, the module includes the open-source iODBC library.

Requires :
The Database Framework module.

 

Available at GoogleCode 1.28+

bah.postgresql

 

A PostgreSQL database driver module for the Database Framework.

Requires :
The Database Framework module.
PostgreSQL client libraries, v8+ (see docs for details)

1.03

11-Apr-07

dbpostgresql.zip (152kb) 1.20+
    Latest Changes 1.03
  • Fixed issue with mis-count of bound parameters.
1.02
  • Added hasPrepareSupport() and hasTransactionSupport() methods.

bah.dbsqlite

 

An SQLite database driver module for the Database Framework.

The module includes the source for SQLite, which is compiled into your applications.

Requires:
The Database Framework module.

 

Available at GoogleCode 1.28+

bah.dbxbase

 

An Xbase database driver module for the Database Framework.

Xbase is a C++ class library compatible with .dbf, .ndx and .ntx files, which are used by dBase, Clipper, FoxPro, etc. compatible databases.
xbSQL is a wrapper for Xbase which adds SQL query support.

The module includes the source for both the Xbase and xbSQL libraries.

Requires:
The Database Framework module.

 

Available at GoogleCode 1.28+

bah.expat

The Expat XML parser, wrapped up in a BlitzMax module.

Note : At the moment, this is basically only a stub for Graphviz support. I may, at a later date, properly implement this library.

 

Available at GoogleCode 1.28+

bah.exrloader

NEW !

The EXRLoader module adds BlitzMax support for OpenEXR images.

The module includes both support for the standard LoadPixmap image loading, as well as a more advanced API that allows configuring of the image/pixmap appearance.

As usual, the module is cross-platform, includes some examples, and basic documentation.

Notes :

  1. Source only provided.
    You will need to "Build Modules" to use this. On Windows, that requires MinGW.
  2. To build the module, requires a modified verison of BMK. See here for more details.

1.00

05-May-07

exrloader.zip (992kb) 1.24+

bah.fontconfig

A Blitzmax wrapper for Fontconfig, a library for font customization and configuration.

The module introduces a new Font Loader to Blitzmax.
This enables you to specify a font name when using LoadImageFont and fontconfig will search the system for a font matching that name.

Note: as of 1.08, the Fontconfig library has changed its configuration method. A configuration file (font.conf) is now used to define some default settings, like location of font dirs etc. An app will try to load this file when it first starts.
Fontconfig also caches differently now. By default it will attempt to cache font details in the user's home/.fontconfig folder. The first time a fontconfig app runs it will check all the fonts and cache their details. This may result in a delay before the app continues. The next time the app is started it will load the cache instead, resulting in normal start-times.

1.08

09-Nov-07

fontconfig.zip (940kb) 1.20+
    Latest Changes 1.08
  • Updated to latest version (2.4.92).
  • Fixes issue running on 1.26 of BlitzMax.
  • Now uses font.conf to define font settings.
1.07
  • Linux version now uses system libfontconfig.

bah.format

 

The Format module introduces C-style printf formatting to BlitzMax.

With it, you can format strings and numbers, easily and efficiently.

Requires:
The RegEx module.

 

Available at GoogleCode 1.28+

bah.freeimage

 

The FreeImage module adds BlitzMax support for loading and saving of a large number of different formats, using the open source FreeImage library.

With this module you can load : GIF, BMP, DDS, EXR, HDR, ICO, IFF, JNG, JPG, JPEG-2000, KOALA, LBM, Kodak, MNG, PCS, PBM, PGM, PNG, PPM, Photoshop (PSD), Fax G3, SGI, RAS, TARGA, TIFF, WBMP, XBM and XPM.

And save : BMP, EXR, GIF, HDR, ICO, JPEG, JPEG-2000, PBM, PGM, PNG, PPM, TARGA, TIFF, WBMP and XPM.

As well as apply a range of image manipulation on the images.

Images can be loaded using the standard LoadPixmap() function, or for advanced use, with LoadFreeImage().

 

Available at GoogleCode 1.28+

bah.ftpparser

The FTP list parser module is designed to process directory listings retrieved from an FTP server.

It currently understands the list output for Unix / Linux, Enterprise Unix, VMS, MVS, NT, Netware, OS2 and OS400 FTP servers.

Requires :
The RegEx module

1.01

06-Aug-07

ftpparser.zip (62kb) 1.20+
    Latest Changes 1.01
  • Fixed problem on Win32, which has a different newline.

bah.growl

This is the BlitzMax module for Growl, a Mac OS X system for posting notifications to users.

 

Available at GoogleCode 1.28+

bah.gtkmaxgui

A replacement for the BlitzMax linux FLTK GUI module using GTK+ instead, providing a much nicer / standard GUI experience.
You can compile any GUI app using this module with only a minor tweak (to use either Framework bah.gtkmaxgui or Import bah.gtkmaxgui) .
The IDE is also *much* better running in GTK than FLTK.

To include an HTML View Gadget in your application you will need either of the two modules listed below, with which you should then add an appropriate Import to your application. Eg. Import bah.gtkwebmozilla)

Requires :
MaxGUI
gtk+2 dev packages (for compiling)

1.19

25-Apr-07

gtkmaxgui.zip (425kb)
1.22+
    Latest Changes 1.19
  • Fixed x, y coords returned by Panel MouseMove events. Now calculated relative to parent widget.
1.18
  • Fixed generation of GADGETSELECT on TreeView creation.
  • Fixed loss of next text change event after setting empty text field to empty.

bah.gtkwebgtkhtml

An HTML View gadget for the GTK GUI module, using the GTKHTML widget.

Requires:
The gtkmaxgui module.
libgtkhtml 3.8 / dev

1.02

06-Dec-06

gtkwebgtkhtml.zip (94kb) 1.20+
    Latest Changes 1.02
  • ProcessURL changes to use banks. [Simon Armstrong]

bah.gtkwebmozilla

An HTML View gadget for the GTK GUI module using the GTK Mozilla Embed widget.

Requires:
The gtkmaxgui module.
Firefox / mozilla with libgtkembedmoz

1.02

06-Dec-06

gtkwebmozilla.zip (40kb) 1.20+
    Latest Changes 1.02
  • Added Free() method.

bah.graphviz

Graphviz is a graph visualization library which enables the representation of structural information as diagrams of abstract graphs and networks.

This BlitzMax module provides a means of displaying Graphviz graphs interactively through BlitzMax's Max2D interface (OpenGL / DirectX), and provides facilities to pan, zoom, select graph parts, as well as create in-memory graphs using a simple API.

As usual, this module is extensively documented, with examples, and is cross-platform capable.

Requires:
The Expat module.

 

Available at GoogleCode 1.28+

bah.libcurl

This is the BlitzMax module for libcurl, the multi-protocol file transfer library.

The libcurl module adds enhanced support for the protocols FTP, HTTP, TFTP, TELNET, DICT, and FILE.

libcurl also supports HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more!

The Blitzmax libcurl module also includes c-ares, a library that performs DNS requests and name resolves asynchronously.

As usual, this module is fully cross-platform with extensive documentation and some basic examples.

This module does not handle SSL encryption (FTPS, HTTPS, etc). For that, you should use the libcurlSSL module.

 

Available at GoogleCode 1.28+

bah.libcurlSSL

This is the SSL-enabled BlitzMax module for libcurl, the multi-protocol file transfer library.

The libcurl module adds enhanced support for the protocols FTP, FTPS, HTTP, HTTPS, TFTP, TELNET, DICT, and FILE.

libcurl also supports HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more!

The Blitzmax libcurlSSL module also includes c-ares, a library that performs DNS requests and name resolves asynchronously.

As usual, this module is fully cross-platform with extensive documentation and some basic examples.

Requires:
OpenSSL - This provides the secure SSL functionality. It comes as standard on Linux and Mac OS X systems. Win32 users can find a binary distribution from here. (The module includes headers for Win32, so only the "light" package is required.)

 

Available at GoogleCode 1.28+

bah.libsvg

 

A BlitzMax wrapper for libsvg and libsvg-cairo.

Please note, this is released under the LGPL 2 license.

Adds loading and rendering of .svg files to the Cairo module.
Since it extends the main Cairo Type, you can use all of the Cairo drawing methods with SVGs.

Requires both the Cairo module and libxml module.

1.02

06-Dec-06

libsvg.zip (410kb) 1.20+
    Latest Changes 1.02
  • Updates to cvs versions of libsvg and libsvg-cairo (1 Dec 2006)

bah.libxml

A BlitzMax wrapper for the Libxml2 XML parser library, an industrial-strength XML parser.
Fully documented, with tutorials and examples.

If you are happy compiling Modules in BlitzMax you can download the smaller libxml_src.zip, which does not include pre-compiled code for the three platforms.

 

Available at GoogleCode 1.28+

bah.libxslt

A BlitzMax wrapper for the Libxslt library, an XML language to define transformation for XML.

This module allows for the execution of XSLT scripts on XML from within your BlitzMax applications.

An example of a useful XSLT might be to convert a Collada definition into a .b3d format file. ;-)

Fully documented, with tutorials and examples.

Requires:
The Libxml module.

 

Available at GoogleCode 1.28+

bah.locale

A Localization module for BlitzMax.

Makes it easy to add multi-language support for your apps.
The module is ISO-692 savvy, supporting 190+ 2 and 3-letter ISO language codes.
Most of the languages also have their "native" script equivalent (like Deutsch for "de"), handy for displaying a language menu in the native languages, rather than all in English.

Also included is a utility called BLFBuilder (source included), designed to create and maintain the "blf" format files that the module uses. (the files are XML based, but an editor makes it a breeze to maintain them).

Requires:
The Libxml module.
MaxGUI to compile the BLFBuilder utility.

 

Available at GoogleCode 1.28+

bah.mapm

 

MAPM is an Arbitrary Precision Math library which allows you to process numbers with much greater precision than normal integers or doubles. In fact, MAPM support numbers with up to 2^31 digits.
That's 2,147,483,647 digits.

 

Available at GoogleCode 1.32+

bah.mathtoolkit

 

The Math Toolkit module implements Boost's math and statistical distribution utilities, including univariate, continuous and discrete distributions.

Requires:
The Boost module.

 

Available at GoogleCode 1.32+

bah.muparser

 

The muParser module is capable of parsing mathematical expressions.
It is very fast and highly customizable.

 

Available at GoogleCode 1.32+

bah.maxunit

A unit testing module based loosly on Junit.
Useful if you want a framework for regression testing. Simple implementation, easy to use.

 

Available at GoogleCode 1.28+

bah.portmidi

Portmidi is a cross-platform library for real time input and output of MIDI data. This module wraps up the library into an easy to use set of Types and callbacks.

With it you have access to input and output MIDI streams, as well as the ability to send and receive SysEx data.

Notes :

To build the module, requires a modified verison of BMK. See here for more details.

1.00

28-May-07

portmidi.zip (303kb) 1.24+

bah.random

The Random module is a drop-in replacement for BRL.Random that uses the SFMT (SIMD-oriented Fast Mersenne Twister) pseudorandom number generator to produce cross-platform random number sequences.

(the official Random module doesn't guarantee that numbers from the same seed on different platforms will have the same sequence)

Notes :

To build the module, requires a modified verison of BMK. See here for more details.

1.01

29-May-07

random.zip (54kb) 1.24+
    Latest Changes 1.01
  • Automatically initializes via SeedRnd() if required.

bah.realtimebattle

RealTimeBattle is a programming game, in which robots controlled by programs are fighting each other. The goal is to destroy the enemies, using the radar to examine the environment and the cannon to shoot.

This module allows you to create robots written in BlitzMax, to compete with other robots in the RealTimeBattle arena.

Requires:
RealTimeBattle package for running your robots.
Linux, or Windows with cygwin.

1.00

15-Aug-06

realtimebattle.zip (66kb) 1.20+

bah.regex

The Regular Expression module uses the open source PCRE library to add support for string search and replace using regular expressions.

As usual, the module is cross-platform, comes with some examples and full documentation.

 

Available at GoogleCode 1.20+

bah.rgbloader

NEW !

The RGBLoader module allows the loading into BlitzMax of SGI RGB format images.

Supports RGBA, RGB, BW, and Greyscale with Alpha.
Currently only handles RLE compressed files. Non-compressed supprt to be added shortly.

Simply Import the module, and it is auto-magically enabled, so you can use LoadPixmap etc normally.

1.00

22-Apr-07

rgbloader.zip (281kb) 1.20+

bah.rtl

 

The RTL module utilises the fribidi library to provide Unicode Bidirectional Text support to BlitzMax.
This allows you to create Strings of Arabic, Hebrew and other right-to-left scripts, and display them correctly on the screen.

 

Available at GoogleCode 1.32+

bah.tesseract

 

The Tesseract module adds an OCR engine to BlitzMax.
It can recognise 200-300dpi page scans of text in English, German, French, Italian, Dutch, and Spanish.

 

Available at GoogleCode 1.32+

bah.volumes

A small cross-platform module for retrieving volume and directory information for the current system.

Also allows standard access to various user directories such as Home, Documents, Desktop and Application Data (Support on Mac).
The Application directory is where apps can store user-specific resources and such-like.

 

Available at GoogleCode 1.33+

wxMax

wxMax is a BlitzMax language binding for the wxWidgets toolkit.

Struggling with MaxGUI? Perhaps this is a viable alternative for your cross-platform BlitzMax GUI applications?

Because the module is bigger than all my other modules put together (as of 7/Sep/2007, there's 25000+ lines of bmx, and 7000+ lines of cpp glue), I've decided to locate it on its own repository.

The repository supports issue-tracking, and source control, and I've even set up a discussion group for support and development.

Follow the link on the right to head there now!

 

wxMax at GoogleCode 1.24+

   

Back