no, don't imagine. You can do that! :)
At least it is supposed to work, because Canvas inherits from some strange
things (NullEncoder, FlattenEncoder),
so you can actually instruct any object to draw itself on canvas..
which is makes some sense (sort of):
But as to me, Object should NOT implement #drawOnCanvas:, nor #drawOn:.
The real users of protocols placed in NullEncoder and FlattenEncoder is
PostscriptCanvas which are not included into core images.
So, the proposal is to remove the extra noise by making Canvas to be the
subclass of Object.
And for things which do care about serializing drawing commands onto some
stream (like PostScriptCanvas do), make a subclass and introduce this