> This sounds like a bloody awful design on Cairo's part: Why should > there be an allegedly-cross-platform API that changes its API based on > the available features? The API is the same for all backends except for the drawing surface constructors (and a few extensions) which take specific arguments, just like in OOP.