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