class_docstr: Camera implementing a MagnifyTransform combined with PanZoomCamera.
  
  Parameters
  ----------
  size_factor : float
      The size factor to use.
  radius_ratio : float
      The radius ratio to use.
  **kwargs : dict
      Keyword arguments to pass to `PanZoomCamera` and create a transform.
  
  Notes
  -----
  This Camera uses the mouse cursor position to set the center position of
  the MagnifyTransform, and uses mouse wheel events to adjust the 
  magnification factor.
  
  At high magnification, very small mouse movements can result in large
  changes, so we use a timer to animate transitions in the transform 
  properties.
  
  The camera also adjusts the size of its "lens" area when the view is
  resized.
code: def __init__(self, size_factor=0.25, radius_ratio=0.9, **kwargs):
      # what fraction of the view width to use for radius
      self.size_factor = size_factor
  
      # ratio of inner to outer lens radius
      self.radius_ratio = radius_ratio
  
      # Extract kwargs for panzoom
      camkwargs = {}
      for key in ("parent", "name", "rect", "aspect"):
          if key in kwargs:
              camkwargs[key] = kwargs.pop(key)
  
      # Create the mag transform - kwrds go here
      self.mag = self.transform_class(**kwargs)
  
      # for handling smooth transitions
      self.mag_target = self.mag.mag
      self.mag._mag = self.mag_target
      self.mouse_pos = None
      self.timer = Timer(interval=0.016, connect=self.on_timer)
  
      super(MagnifyCamera, self).__init__(**camkwargs)
  
      # This tells the camera to insert the magnification transform at the
      # beginning of the transform it applies to the scene. This is the
      # correct place for the mag transform because:
      # 1. We want it to apply to everything inside the scene, and not to
      #    the ViewBox itself or anything outside of the ViewBox.
      # 2. We do _not_ want the pan/zoom transforms applied first, because
      #    the scale factors implemented there should not change the shape
      #    of the lens.
      self.pre_transform = self.mag
  
file_path: vispy/vispy/scene/cameras/magnify.py
imports: from __future__ import division
  import numpy
  from .panzoom import PanZoomCamera
  from ...visuals.transforms.nonlinear import MagnifyTransform, Magnify1DTransform
  from ...app import Timer
label_desc: Use image node_id 1 to create a new MagnifyCamera object from inherited base classes: PanZoomCamera with example: obj = MagnifyCamera(size_factor, radius_ratio)