I'd like to be able to fill the fillable shapes with colors, transparent colors, or patterns. Shapes with lines should allow for shadows, bevels, and dot/dash effects. All these effects will be optionally supported by the output targets, and the API will be able to report whether an effect is supported at the time.
The object attributes (color, effects, etc) will be handled with a style system. If an object does not give a value for an attribute, the object's style stack is searched for a value. At the bottom of every object's style stack is the default style, which provides the defaults for all attributes. An object might have the styles: default + foreground + highlighted. The 'highlighted' style contains a few attribute values that override the lower styles' values. When constructing a style, the application will pay attention to what effects are supported. For example, if 'beveled' is not available at the time, the 'selected' style might use a thicker line instead.