Nodebox compatibility¶
Shoebot was originally developed as a rewrite of Nodebox, attempting to follow its behaviour as close as possible. However, the developers eventually wanted some functionality that was not in Nodebox, and there are many aspects of Nodebox that, for one reason or other, were not ported over.
Now that the original Nodebox isn’t being developed further, we have decided to go on and keep implementing original features whenever appropriate.
In this page, you’ll find the features and behavior that differs between Nodebox and Shoebot.
If you find any difference that isn’t documented here, please file an issue.
Additional Shoebot features¶
These are features that were created in Shoebot and are not available in Nodebox, or where Shoebot behavior is distinct.
New functions¶
Drawing
rectmode()
andellipsemode()
are inspired by Processing and cater to the preferences of users who expect alternative ways to draw primitives. These are also useful for specific situations where coordinate calculation would be otherwise necessary.arc()
is provided by Cairo, so we support it as well.
Others
snapshot()
is a simple way to output to an image in the middle of the script execution.run()
can execute another script in the current context. This is mostly useful when using Shoebot as a Python module inside another application.
Bundled libraries¶
Nodebox provides a set of external libraries that can be downloaded and added to a project. Shoebot comes with ported versions of those libraries already included and available.
Unsupported Nodebox features¶
These are the Nodebox bits that aren’t available in Shoebot.
CMYK color¶
Nodebox was implemented using Mac OS X’s Cocoa toolkit, which supports CMYK color. Shoebot runs on the Cairo graphics backend, which does not. Nodebox commands that deal with CMYK color are therefore unsupported:
outputmode() is not available.
colormode() is implemented, but
CMYK
is not an accepted argument – onlyRGB
orHSB
.
Path operations¶
Operations between bézier paths are not supported yet. These are:
path.union()
path.intersect()
path.difference()
Fitting a path using path.fit()
isn’t supported either.
Animation¶
While animations work well in a window, Shoebot does not support exporting them to GIF or video formats.