σ
ίΘ[c           @` sx   d  d l  m Z m Z m Z d  d l Z d  d l m Z m Z d  d l	 m
 Z
 d  d l m Z d e f d     YZ d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   Patht   Line2D(   t   Affine2D(   t   rcParamst   Ticksc           B` sΒ   e  Z d  Z d d d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z e d d g d d g g  Z d   Z d   Z RS(   sD  
    Ticks are derived from Line2D, and note that ticks themselves
    are markers. Thus, you should use set_mec, set_mew, etc.

    To change the tick size (length), you need to use
    set_ticksize. To change the direction of the ticks (ticks are
    in opposite direction of ticklabels by default), use
    set_tick_out(False).

    Note that Matplotlib's defaults dictionary :data:`~matplotlib.rcParams`
    contains default settings (color, size, width) of the form `xtick.*` and
    `ytick.*`. In a WCS projection, there may not be a clear relationship
    between axes of the projection and 'x' or 'y' axes. For this reason,
    we read defaults from `xtick.*`. The following settings affect the
    default appearance of ticks:

    * `xtick.direction`
    * `xtick.major.size`
    * `xtick.major.width`
    * `xtick.color`
    c         K` sΆ   | d  k r t d } n  |  j |  |  j t j d d  d k  |  j   i t d d 6t j d d  d	 6} | j |  t j |  d
 g d
 g |  |  j	 d  t
 |  _ d  S(   Ns   xtick.major.sizes   xtick.directiont   int   outs   xtick.colort   colors   xtick.major.widthi   t	   linewidthg        t   all(   t   NoneR   t   set_ticksizet   set_tick_outt   gett   cleart   updateR   t   __init__t   set_visible_axest   Falset   _display_minor_ticks(   t   selft   ticksizet   tick_outt   kwargst   line2d_kwargs(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR   #   s    
c         C` s   | |  _  d  S(   N(   R   (   R   t   display_minor_ticks(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR   2   s    c         C` s   |  j  S(   N(   R   (   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   get_display_minor_ticks5   s    c         C` s   | |  _  d S(   sD   
        set True if tick need to be rotated by 180 degree.
        N(   t	   _tick_out(   R   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR   8   s    c         C` s   |  j  S(   sH   
        Return True if the tick will be rotated by 180 degree.
        (   R   (   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   get_tick_out>   s    c         C` s   | |  _  d S(   s4   
        set length of the ticks in points.
        N(   t	   _ticksize(   R   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR   D   s    c         C` s   |  j  S(   s7   
        Return length of the ticks in points.
        (   R    (   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   get_ticksizeJ   s    c         C` s   | |  _  d  S(   N(   t   _visible_axes(   R   t   visible_axes(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR   P   s    c         C` sI   |  j  d k r |  j j   Sg  |  j  D] } | |  j k r& | ^ q& Sd  S(   NR   (   R"   t   worldt   keys(   R   t   x(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   get_visible_axesS   s    c         C` sL   i  |  _  i  |  _ i  |  _ i  |  _ i  |  _ i  |  _ i  |  _ i  |  _ d  S(   N(   R$   t   pixelt   anglet   dispt   minor_worldt   minor_pixelt   minor_anglet
   minor_disp(   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR   Y   s    							c         C` s¦   | |  j  k rR | g |  j  | <| g |  j | <| g |  j | <| g |  j | <nP |  j  | j |  |  j | j |  |  j | j |  |  j | j |  d  S(   N(   R$   R(   R)   R*   t   append(   R   t   axisR$   R(   R)   t   axis_displacement(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   addc   s    c         C` s   |  j  S(   N(   R+   (   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   get_minor_worldo   s    c         C` s¦   | |  j  k rR | g |  j  | <| g |  j | <| g |  j | <| g |  j | <nP |  j  | j |  |  j | j |  |  j | j |  |  j | j |  d  S(   N(   R+   R,   R-   R.   R/   (   R   t
   minor_axisR+   R,   R-   t   minor_axis_displacement(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt	   add_minorr   s    c         C` s   t  |  j  S(   N(   t   lenR$   (   R   (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   __len__   s    g        g      π?c         C` sw   |  j    s d S| j |  j    } |  j | |  j |  j |  |  j rs | d } |  j | |  j |  j |  n  d S(   s!   
        Draw the ticks.
        Ng      ΰ?(	   t   get_visiblet   points_to_pixelsR!   t   _draw_ticksR(   R)   R   R,   R-   (   R   t   renderert   offset(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   draw   s    	
c         C` sQ  |  j    } | j   } | j |  j    | j |  j    | j |  j    t   j	 | |  } t   } | | }	 |  j
   r d n d }
 x― |  j   D]‘ } | | k rΆ q n  x t | | | |  D]m \ } } | j |
 |  | j t j | | g   } | j | |  j |	 t |  | j    | j   qΞ Wq W| j   d S(   s'   
        Draw the minor ticks.
        g     f@g        N(   t   get_transformt   new_gct   set_foregroundt	   get_colort	   set_alphat	   get_alphat   set_linewidtht   get_linewidthR   t   scaleR   R'   t   zipt
   rotate_degt   transform_non_affinet   npt   arrayt   draw_markerst   _tickvert_pathR   t
   get_affineR   t   restore(   R   R<   t   pixel_arrayt   angle_arrayR=   t
   path_transt   gct   marker_scalet   marker_rotationt   marker_transformt   initial_angleR0   t   locR)   t   locs(    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR;      s&    	
$N(   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R   R!   R   R'   R   R2   R3   R6   R8   R   RN   R>   R;   (    (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyR      s$   									
					(   t
   __future__R    R   R   t   numpyRK   t   matplotlib.linesR   R   t   matplotlib.transformsR   t
   matplotlibR   R   (    (    (    sB   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyt   <module>   s
   