Note that this may only approximate self, because paths can contain
optimizations for various specialized contours, and depending on the
flags, the path may be decomposed into simpler curves than the ones
that it contained originally.
This function serves two purposes:
When the flags allow everything, it provides access to the raw,
unmodified data of the path.
When the flags disallow certain operations, it provides
an approximation of the path using just the allowed operations.
Calls func for every operation of the path.
Note that this may only approximate self, because paths can contain optimizations for various specialized contours, and depending on the flags, the path may be decomposed into simpler curves than the ones that it contained originally.
This function serves two purposes: