Cello is a project to create an open-source, industrial-strength, portable GUI
toolkit for Common Lisp. Its features include anti-aliased fonts, accelerated 2d-
and 3d-graphics, a standard set of GUI widgets, easy construction of new widgets, and
much more. Cello heavily utilizes Cells (a sister
project on common-lisp.net), in addition to industry-standard technologies such as
OpenGL, FreeType, and ImageMagick. It is currently in a prerelease state, and under
rapid development.
Cello discussion occurs on the
cello-devel mailing list.
Prerelease bundles and screenshots can be found on the
Cello FTP site.
To answer Noob FAQ #2, "Where's the GUI?":
More grandly, to be the CLOS of Common Lisp GUIs. Common Lisp did not do objects when
it was created, but when objects came up CLOS did them better than anyone else. Cello
intends to outdo the GUIs available in other languages by a similar margin.
Certain things must be true if such a lofty goal is to be reached:
- it must be portable to Mac OS X, *nix, and other widely-installed OSes, and work
from any serious implementation of Common Lisp.
- it must be Common Lisp "all the way down", not a wrapper for a
framework written in C/C++.
- it must have a full suite of standard GUI widgets, easily assembled into working
applications by novice users.
- it must be open source, with liberal licensing to achieve standard status.
- the graphics capabilities must include anti-aliased rendering of arbitrary
installed fonts.
An emerging open-source, industrial-strength, fast, powerful, easy-to-use, portable
GUI for Common Lisp, by Common Lisp, and of Common Lisp.
- MIT-licensed
- anti-aliased text using any installed font
- 2d- or 3d-graphics, vector or bitmapped, and straightforward display of a wide
variety of image formats such as GIF, JPEG, and AVI.
- hardware-accelerated.
- planned: hardcopy via PDF, sound via SuperCollider.
Those are the fundamental capabilities. Stepping back to a wide-angle shot:
- component architecture allowing selective adoption of Cello sub-systems.
- Cells Inside, making GUI development an order of magnitude easier, faster, and
more fun. Cells support a declarative paradigm for...
- Cello, a complete application framework with a full suite of standard GUI
widgets, implemented fully in Common Lisp/CLOS. Combining Cells with efficient,
powerful graphics capabilities, Cello permits easy construction of efficient,
bug-free interfaces providing users with more facile control of your
application.
- For OpenGL developers, Cello serves as what is known as a scene graph manager,
providing a higher-level framework for the development of games and other
applications using OpenGL primitives to model 3D worlds.
Cello has been neatly structured so developers can grab isolated chunks without
buying into the whole enchilada. Here are the standalone components to be found in a
Cello distro.
- cl-opengl
- OpenGL Bindings, including GLUT
- cl-ftgl
- glue and bindings for FTGL, a C++ implementation of FreeType fonts for
OpenGL.
- cl-magick
- bindings for ImageMagick, a library of pixmap, vector, and image-file
graphics routines.
- cellocore
- an application framework requiring only Cells (http:/common-lisp.net/
projects/Cells) and cl-opengl
Cello achieves its universal portability and graphical power through a number of
kick-ass external libraries, all open source, all with liberal licensing such as
Cello's MIT-style license:
- OpenGL/MesaGL
- Yes, Virginia, if you are using OpenGL the GPU will be handling a large fraction
of your application's CPU load. And, no, you will not believe the graphical
power at your fingertips.
- FreeGlut
- windows and callbacks for mouse, key, and display events. This bad boy is under
heavy development since getting picked up by RedHat after learning the original
Glut has an unfriendly license. And Freeglut is binary compatible with the
standard Glut, so developers can work under Freeglut but ship on another Glut,
such as Apple's Quartz-based glut.
- FreeType
- TrueType set free.
- FTGL
- use any TrueType/FreeType font on the system, in any mode: bitmap, pixmap,
texture, outline, polygon or extruded polygon.
- ImageMagick
- adopted originally for portable access to over 80 image formats such as JPEG,
GIF, BMP, AVI et al, this library also offers an insane suite of bitmapped and
vector graphics functions. Knock yourself out.
- SuperCollider (SC3)
- our interface from Cello is vaporware, but it will be worth the wait. SC3 can
play standard audio file formats, and it can be programmed to synthesize sound
in real-time. "(beep) on steroids" does not do SC3 justice.
- UFFI
- Kevin Rosenbeg's meta-contribution to the growth of Common Lisp, opening the
door to C and C++ libraries everywhere.