ó
›ßÈ[c           @` sk   d  d l  m Z m Z m Z d  d l Z d  d l m Z d d l m	 Z	 d „  Z
 d e f d „  ƒ  YZ d S(	   i    (   t   print_functiont   divisiont   absolute_importN(   t   Texti   (   t   RectangularFramec         C` s,   g  t  t | |  ƒ ƒ D] \ } } | ^ q S(   N(   t   sortedt   zip(   t   Xt   Yt   yt   x(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt
   sort_using   s    t
   TickLabelsc           B` sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         O` s\   |  j  ƒ  | |  _ t t |  ƒ j | | Ž  |  j t ƒ |  j d ƒ d |  _ t	 |  _
 d  S(   Nt   allg333333Ó?(   t   cleart   _framet   superR   t   __init__t   set_clip_ont   Truet   set_visible_axest   padt   Falset   _exclude_overlapping(   t   selft   framet   argst   kwargs(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyR      s    
		c         C` s1   i  |  _  i  |  _ i  |  _ i  |  _ i  |  _ d  S(   N(   t   worldt   pixelt   anglet   textt   disp(   R   (    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyR      s
    				c         C` sÊ   | |  j  k rb | g |  j  | <| g |  j | <| g |  j | <| g |  j | <| g |  j | <nd |  j  | j | ƒ |  j | j | ƒ |  j | j | ƒ |  j | j | ƒ |  j | j | ƒ d  S(   N(   R   R   R   R   R    t   append(   R   t   axisR   R   R   R   t   axis_displacement(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt   add"   s    c         C` sÌ   xÅ |  j  D]º } t |  j  | |  j | ƒ |  j  | <t |  j | |  j | ƒ |  j | <t |  j | |  j | ƒ |  j | <t |  j | |  j | ƒ |  j | <t |  j | |  j | ƒ |  j | <q
 Wd S(   sw   
        Sort by axis displacement, which allows us to figure out which parts
        of labels to not repeat.
        N(   R   R   R    R   R   R   (   R   R"   (    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt   sort0   s    $$$$c         C` s6  |  j  ƒ  x%|  j D]} |  j | d } x t d t |  j | ƒ ƒ D]â } |  j | | } t | ƒ t | ƒ k rŽ |  j | | } qH n  d } xS t t | ƒ d ƒ D]; } | | | | k rÉ Pn  | | d k r« | d } q« q« W|  j | | } | d k rH |  j | | | |  j | | <qH qH Wq Wd S(   sV   
        Figure out which parts of labels can be dropped to avoid repetition.
        i    i   s   -0123456789.N(   R%   R   R   t   ranget   len(   R   R"   t   t1t   it   t2t   startt   j(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt   simplify_labels<   s"    
#c         C` s   | |  _  d  S(   N(   t   _visible_axes(   R   t   visible_axes(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyR   V   s    c         C` sI   |  j  d k r |  j j ƒ  Sg  |  j  D] } | |  j k r& | ^ q& Sd  S(   NR   (   R.   R   t   keys(   R   R
   (    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt   get_visible_axesY   s    c         C` s   | |  _  d  S(   N(   R   (   R   t   exclude_overlapping(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt   set_exclude_overlapping_   s    c         C` s*  |  j  ƒ  s d  S|  j ƒ  | j |  j ƒ  ƒ } xô|  j ƒ  D]æ} xÝt t |  j | ƒ ƒ D]Â} |  j | | d k r q\ n  |  j	 |  j | | ƒ |  j
 | | \ } } t |  j t ƒ råt j |  j | | ƒ d k  rd }	 d }
 | d } | d } n¨ t j |  j | | d ƒ d k  rId }	 d }
 d	 } | d
 } nd t j |  j | | d ƒ d k  r‘d }	 d }
 | d } | d } n d }	 d }
 d	 } | d } |  j | | | | f ƒ |  j |	 ƒ |  j |
 ƒ nÏ|  j | | f ƒ t t |  ƒ j | ƒ } | j } | j } t j t j |  j | | ƒ ƒ } t j t j |  j | | ƒ ƒ } t j |  j | | ƒ d k  r›| } | | } n€ t j |  j | | d ƒ d k  rÒ| | } | } nI t j |  j | | d ƒ d k  r
| } | | } n | | } | } | d 9} | d 9} t j | | ƒ } | | } | | } | | | |  j 7} | | | |  j 7} |  j | | | | f ƒ |  j d ƒ |  j d ƒ t t |  ƒ j | ƒ } |  j së| j | ƒ d	 k r\ t t |  ƒ j  | ƒ | j! | ƒ | j! | ƒ q\ q\ Wq< Wd  S(   Nt    g     €F@t   rightt   bottomg      à?g     €V@i-   t   centeri    g      ø?g     €f@t   leftgš™™™™™É?("   t   get_visibleR-   t   points_to_pixelst   get_sizeR1   R&   R'   R   R   t   set_textR   t
   isinstanceR   R   t   npt   absR   t   set_positiont   set_hat   set_vaR   R   t   get_window_extentt   widtht   heightt   cost   radianst   sint   hypotR   R   t   count_overlapst   drawR!   (   R   t   renderert   bboxest   ticklabels_bboxt	   text_sizeR"   R)   R
   R	   t   hat   vat   dxt   dyt   bbRD   RE   t   axt   ayt   distt   ddxt   ddy(    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyRK   b   s‚    
  $$

		## $
	$




(   t   __name__t
   __module__R   R   R$   R%   R-   R   R1   R3   RK   (    (    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyR      s   									(   t
   __future__R    R   R   t   numpyR>   t   matplotlib.textR   R   R   R   R   (    (    (    sG   lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyt   <module>   s
   	