ó
 ‰\c           @   sa   d  d l  Z d  d l m Z d d g Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   linest   CanvasToolBaset   ToolHandlesc          G   s   d  S(   N(    (   t   args(    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   _pass   s    c           B   s   e  Z d  Z d d d e d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z e d „  ƒ Z RS(   sí  Base canvas tool for matplotlib axes.

    Parameters
    ----------
    manager : Viewer or PlotPlugin.
        Skimage viewer or plot plugin object.
    on_move : function
        Function called whenever a control handle is moved.
        This function must accept the end points of line as the only argument.
    on_release : function
        Function called whenever the control handle is released.
    on_enter : function
        Function called whenever the "enter" key is pressed.
    c         C   s|   | |  _  | j |  _ g  |  _ t |  _ | d  k r9 t n | |  _ | d  k rT t n | |  _ | d  k ro t n | |  _	 d  S(   N(
   t   managert   axt   artistst   Truet   activet   NoneR   t   callback_on_movet   callback_on_entert   callback_on_release(   t   selfR   t   on_movet   on_entert
   on_releaset   useblitR   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   __init__   s    			c         C   s   |  j  S(   s›   Return True if event should be ignored.

        This method (or a version of it) should be called at the beginning
        of any event callback.
        (   R	   (   R   t   event(    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   ignore&   s    c         C   s   t  S(   N(   t   False(   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   hit_test.   s    c         C   s   |  j  j ƒ  d  S(   N(   R   t   redraw(   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   1   s    c         C   s%   x |  j  D] } | j | ƒ q
 Wd  S(   N(   R   t   set_visible(   R   t   valt   artist(    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   4   s    c         C   s@   | j  d k r< |  j |  j ƒ |  j t ƒ |  j j ƒ  n  d  S(   Nt   enter(   t   keyR   t   geometryR   R   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   on_key_press8   s    c         C   s   d  S(   N(    (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   on_mouse_press>   s    c         C   s   d  S(   N(    (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   on_mouse_releaseA   s    c         C   s   d  S(   N(    (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   D   s    c         C   s   d  S(   N(    (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt	   on_scrollG   s    c         C   s   |  j  j |  ƒ d  S(   N(   R   t   remove_tool(   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   removeJ   s    c         C   s   d S(   s<   Geometry information that gets passed to callback functions.N(   R
   (   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   M   s    N(   t   __name__t
   __module__t   __doc__R
   R   R   R   R   R   R   R   R    R!   R   R"   R$   t   propertyR   (    (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR      s   	
										c           B   sb   e  Z d  Z d d	 d „ Z e d „  ƒ Z e d „  ƒ Z d	 d „ Z d „  Z	 d „  Z
 d „  Z RS(
   s¦  Control handles for canvas tools.

    Parameters
    ----------
    ax : :class:`matplotlib.axes.Axes`
        Matplotlib axes where tool handles are displayed.
    x, y : 1D arrays
        Coordinates of control handles.
    marker : str
        Shape of marker used to display handle. See `matplotlib.pyplot.plot`.
    marker_props : dict
        Additional marker properties. See :class:`matplotlib.lines.Line2D`.
    t   oc         C   s–   | |  _  t d | d d d d d d d d	 d
 t ƒ } | j | d  k	 rN | n i  ƒ t j | | d t | |  _ |  j  j	 |  j ƒ |  j |  _
 d  S(   Nt   markert
   markersizei   t   mfct   wt   lst   nonet   alphag      à?t   visiblet   animated(   R   t   dictR   t   updateR
   R    t   Line2DR   t   _markerst   add_lineR   (   R   R   t   xt   yR*   t   marker_propst   props(    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   a   s    	c         C   s   |  j  j ƒ  S(   N(   R6   t	   get_xdata(   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR8   k   s    c         C   s   |  j  j ƒ  S(   N(   R6   t	   get_ydata(   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR9   o   s    c         C   s>   | d k	 r* | } t j | | g ƒ } n  |  j j | ƒ d S(   s    Set x and y positions of handlesN(   R
   t   npt   arrayR6   t   set_data(   R   t   ptsR9   R8   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR@   s   s    c         C   s   |  j  j | ƒ d  S(   N(   R6   R   (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   z   s    c         C   s   |  j  j | ƒ d  S(   N(   R6   t   set_animated(   R   R   (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyRB   }   s    c         C   s~   t  j |  j |  j f ƒ } |  j j j | ƒ } | | | f } t  j t  j | d d d ƒƒ } t  j	 | ƒ t  j
 | ƒ f S(   s1   Return index and pixel distance to closest index.i   t   axisi   (   R>   t	   transposeR8   R9   R   t	   transDatat	   transformt   sqrtt   sumt   argmint   min(   R   R8   R9   RA   t   difft   dist(    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   closest€   s
    "N(   R%   R&   R'   R
   R   R(   R8   R9   R@   R   RB   RM   (    (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyR   S   s   
		(	   t   numpyR>   t
   matplotlibR    t   __all__R   t   objectR   R   (    (    (    s>   lib/python2.7/site-packages/skimage/viewer/canvastools/base.pyt   <module>   s
   	H