A library by Paul Hertz for the Processing programming environment.
Last update, 03/05/2016.

Hierarchical display list for graphics and text with export to Adobe Illustrator 7.0 file format.
Supports display and output of complex objects composed of lines and cubic Bezier curves, simple text, RGB and CMYK color, and geometric transforms.

Version 0.2 implemented many new features including:

  • Transformation from the Processing coordinate system to the Adobe Illustrator coordinate system.
  • Subclasses of BezShape with factory methods for rectangles, ellipses, polygons, lines and curves.
  • Turtlegraphics with a stack of turtle states, handy for L-systems, etc.
  • A ComponentVisitor class for navigating and acting upon elements in the hierarchical display list.
  • Drawing to off-screen buffers.

IgnoCodeLib 0.3 modifies and adds to 0.2 in some notable ways:

  • The package namespace has changed from com.ignotus to net.paulhertz
  • A library initializer class, IgnoCodeLib, should be called in the setup of the host PApplet. It will cache a static reference to the PApplet for other classes in the same package. (Spinners and SpinnersTwo in the examples show why this can be useful).
  • All classes that extend DisplayComponent now have constructors or factory methods that do not require a reference to the host PApplet be passed in. They obtain the reference from the initialized library.
  • Constructors and factory methods that pass in the host PApplet are still supported. If you change the package namespaces, chances are that code for IgnoCodeLib 0.2 will run with IgnoCodeLib 0.3.
  • The DocumentComponent.write() method now automatically performs a transform (a horizontal mirror within the document bounding box) of all nested geometry from the Processing coordinate system to the Adobe Illustrator coordinate system. The transform is only applied by the DocumentComponent write method, not by write methods in other components.
  • The simplest way to use IgnoCodeLib is to add all components to a document component, or to group components and layer components within the document component. Then call the document component's draw() method to draw and its write() method to write.

Version 0.4 is formatted using the Processing 3 library template, but the code is the same.

I corrected errors in the examples for version 0.4. The 0.3 examples were updates of version 0.2, but the old examples (modified to run in version 0.3) are bundled in a .zip file in the examples folder.

The images in Sampling Patterns 21 and Boids 21 were created with this software.


Download IgnoCodeLib version 0.4 (2) in .zip format.


Unzip and put the extracted IgnoCodeLib folder into the libraries folder of your Processing sketches. Reference and examples are included in the IgnoCodeLib folder.

Keywords. export, graphics, 2D, curves, geometry

Reference. Have a look at the javadoc reference here. A copy of the reference is included in the .zip as well.

Source. The source code of IgnoCodeLib is available at GitHub, and its repository can be browsed here.


Find a list of examples in the current distribution of IgnoCodeLib, or have a look at them by following the links below.


Platform osx,windows
Processing 3.0
Dependencies No known code dependencies. You will need Adobe Illustrator to open the files.