Ah, understood. Thanks for the nice code explanation and references... they both really help.
I noticed that t_canvasenvironment remains privately defined, so it's difficult to use this struct. To get the dollarzero, I saw this works:
canvas_setcurrent(x_canvas);
int dzero = canvas_getdollarzero();
Cheers, Rich