allow canvas element, id, or create canvas on the fly