+GpStatus extend_current_figure(GpPath *path, INT count, REAL x1, REAL y1, INT *old_count)
I don't like this interface. It's hard for me to think about what "count" and "old_count" really mean. One of them is an index into Points, and one is a number of points.
I'd probably do something like: extend_current_figure(GpPath *path, REAL start_x, REAL start_y, INT extra_points, INT *start_index)
I don't really like extra_points as a name, but passing in the number of points that need to be added other than the start point makes more sense to me when we don't know if the start point will be added or reused.
I think no matter how we do it, we'll need a comment explaining what this function does.