<< Ben Fry


Bagel is an architecture project that I've been developing as a basis for some of my other work. It's a 2D/3D rendering API that runs in Java. It's a cross between Postscript-style imaging in 2D, and 3D rendering with OpenGL. But it's intended to be less silly than both.

I've created bagel to support several concurrent project directions:
  1. As a graphics engine to be used with Processing, an environment for teaching computational design that Casey Reas and I are developing. Visit the Processing web site for examples of applications built using the bagel library by people more talented than myself.

  2. An API to be used on the iPaq running Linux from handhelds.org. That's good stuff! I'm using this device and operating system combination for some of my research. There isn't much in the way of 2D rendering in this Linux land, and 3D rendering (i.e. Mesa) is too slow. So the plan is for bagel to be small and efficient because it's optimized for semi-specific situations. For instance, it uses fixed-point math (because no FPU was available).

  3. In the future, I'd like to use a version of bagel to support rendering some of the large-format printed work (i.e. chromosome 14) that i've been working on. Adobe Illustrator leaves a lot to be desired when working with large files, so I'd like to have something more advanced.
I've been interested in writing something similar for a long time, but have avoided because writing your own graphics library is a bit too much like the kind of reinventing the wheel that programmers all-too-often engage in. However, the combination of the reasons listed here and not being able to find a library that fulfills the requirements led me to think that i should at least spend a week or two to write such an engine and see how it worked. So I spent two weeks sewing together bits of code from several old projects, and the result was an early release of Bagel. Since that time, the library has continued to advance, primarily as part of the Processing project.

The Processing project has made clear that handheld phones will be a clear area of growth that would benefit from such a library. We'd like to move further in this direction.

Bagel is open source under the LGPL. Since its initial inception, it is now called "core" or "processing.core". The code can be seen here. A large portion of the library was written in the Summer of 2001, and has been evolving since that time.

<< Ben Fry | Summer 2001