class_docstr: BaseCanvasBackend(vispy_canvas, capability, context_type)
  
  Abstract class that provides an interface between backends and Canvas.
  Each backend must implement a subclass of CanvasBackend, and
  implement all its _vispy_xxx methods. Also, a backend must
  make sure to generate the following events: 'initialize', 'resize',
  'draw', 'mouse_press', 'mouse_release', 'mouse_move',
  'mouse_wheel', 'key_press', 'key_release'. When a backend detects
  that the canvas should be closed, the backend should call
  'self._vispy_canvas.close', because the close event is handled within
  the canvas itself.
class_docstr_tok: ["BaseCanvasBackend","(","vispy_canvas",",","capability",",","context_type",")","Abstract","class","that","provides","an","interface","between","backends","and","Canvas",".","Each","backend","must","implement","a","subclass","of","CanvasBackend",",","and","implement","all","its","_vispy_xxx","methods",".","Also",",","a","backend","must","make","sure","to","generate","the","following","events",":","'initialize","'",",","'resize","'",",","'draw","'",",","'mouse_press","'",",","'mouse_release","'",",","'mouse_move","'",",","'mouse_wheel","'",",","'key_press","'",",","'key_release","'",".","When","a","backend","detects","that","the","canvas","should","be","closed",",","the","backend","should","call","'self._vispy_canvas.close","'",",","because","the","close","event","is","handled","within","the","canvas","itself","."]
code: def _vispy_get_position(self):
      # Should return widget position
      raise NotImplementedError()
  
imports: from ..util import SimpleBunch
  import time
  from timeit import default_timer
label_desc: Use image node_id 14 for calling the BaseCanvasBackend obj's underlying member method code with example usage: obj._vispy_get_position() without return types