Guichan project is a portable C++ GUI library designed for games using Allegro, SDL and/or OpenGL.
Guichan has a very abstract design which allows users of Guichan to use different objects for displaying of graphics and grabbing of user input. Guichan comes with (for now) 3 implemented graphics objects (SDLGraphics, OpenGLGraphics and AllegroGraphics) and 2 implemented input objects (SDLInput and AllegroInput).
Guichan is designed for games. This means that Guichan lacks many features of more advanced GUI libraries (such as GTK, QT). However, this should not be considered a weakness of Guichan but on the contrary a strength of Guichan. When making games you normally don't need all features in advanced GUI libraries. They often complicate things and adding a dependency such as QT for a small platform game doesn't really feel good. Guichan is small but contains all basic GUI features making it ideal for games.
Guichan is designed for games. This means that Guichan will not take over your game/application when it comes to initialization of external libraries. When making games you normally want to initiallize all extern libraries yourself. This gives all users of Guichan a freedom that's almost required in game development. Guichan should not be considered a full GUI library but rather a tool or helper library for game development.
Guichan is designed for games. This means that Guichan comes with a small number of really ugly default widgets. Also, there exists no themes or theme handling for Guichan. Every user of Guichan is suppose to make new widgets by ineherit from the standard widgets or by overloading standard widgets functions. This is very powerful and beats all theme based GUIs. If we would implement theme handling, for widgets to be able to look exaclty as you want, it would have to be very complex and it would increase the size of Guichan. We believe that theme handling for a specific GUI is nothing a game developer wants to learn when developing a simple game. The knowledge of standard C++ ought every game developer possess that uses Guichan, so no new learning is required (except the API) for using Guichan.
Guichan is designed in a very abstract way making it very easy to extend Guichan for your own needs. It is even very easy to implement new graphics objects making Guichan as portable as ANSI C++ is.
Guichan comes under the BSD license and there exist a very good reason for the choice of BSD over LGPL (which i believe are the standard licenses for open(free) source library projects). BSD lets you link with Guichan statically or even include all of the source for Guichan into your own project not using any linkage at all (which would violate the LGPL license). We believe this is something users of Guichan might want to do because of our philosophy of using inheritance and function overloading over theme handling.
Here are some key features of "Guichan":
· Doesn't take over your application when it comes to initialization of external libraries.
· Clean modular objectoriented design.
· Graphics support for SDL, Allegro and OpenGL.
· Input support for SDL and Allegro.
· No themes! As with Javas swing, member functions overloading and inheritance is the way to go.
· Comes with a set of standard widgets.
· No threading! The user of Guichan always has the power to tell Guichan when it can perfom logic and when it can draw itself.
· Licensed under the BSD license and therefore static linkage with Guichan is allowed.
· Very small compared to other GUI libraries like Qt or GTK.
· Guichan (guichan) - ANSI C++
· Guichan SDL (guichan_sdl) - SDL library, SDL image library
· Guichan Allegro (guichan_allegro) - Allegro library
· Guichan OpenGL (guichan_opengl) - OpenGL library
What's New in This Release:
· A soname issue has been fixed, along with a couple of GCC 3.4.2 issues.
· Add-ons are now called contribs and can be found in the main API documentation.