B
    îq\  ã               @   sL   d dl Zd dlmZ d dlmZ d dlmZ ddl	m
Z
 G dd„ deƒZdS )é    N)ÚrcParams)ÚTexté   )ÚRectangularFramec                   sZ   e Zd Zd‡ fdd„	Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	‡ fdd„Z
‡  ZS )Ú
AxisLabelsr   c                sˆ   d|krt d |d< d|kr(t d |d< d|kr<t d |d< || _tƒ j||Ž |  d¡ |  d¡ |  d	¡ |  d	¡ || _d
| _	d S )NZweightzaxes.labelweightÚsizezaxes.labelsizeZcolorzaxes.labelcolorTÚallÚcenterÚlabels)
r   Ú_frameÚsuperÚ__init__Zset_clip_onÚset_visible_axesZset_haZset_vaÚ_minpadÚ_visibility_rule)ÚselfÚframeÚminpadÚargsÚkwargs)Ú	__class__© úGlib/python3.7/site-packages/astropy/visualization/wcsaxes/axislabels.pyr      s    



zAxisLabels.__init__c             C   s&   y
| j | S  tk
r    | j S X d S )N)r   Ú	TypeError)r   Úaxisr   r   r   Ú
get_minpad"   s    
zAxisLabels.get_minpadc             C   s
   || _ d S )N)Ú_visible_axes)r   Zvisible_axesr   r   r   r   (   s    zAxisLabels.set_visible_axesc                s,   ˆ j dkrˆ j ¡ S ‡ fdd„ˆ j D ƒS d S )Nr   c                s   g | ]}|ˆ j kr|‘qS r   )r   )Ú.0Úx)r   r   r   ú
<listcomp>/   s    z/AxisLabels.get_visible_axes.<locals>.<listcomp>)r   r   Úkeys)r   r   )r   r   Úget_visible_axes+   s    

zAxisLabels.get_visible_axesc             C   s
   || _ d S )N)r   )r   r   r   r   r   Ú
set_minpad1   s    zAxisLabels.set_minpadc             C   s0   dddg}||kr&t d d |¡¡ƒ‚|| _d S )NÚalwaysr
   Úticksz+Axis label visibility rule must be one of{}z / )Ú
ValueErrorÚformatÚjoinr   )r   ÚvalueZallowedr   r   r   Úset_visibility_rule4   s    
zAxisLabels.set_visibility_rulec             C   s   | j S )N)r   )r   r   r   r   Úget_visibility_rule;   s    zAxisLabels.get_visibility_rulec                s’  |   ¡ sd S | |  ¡ ¡}xp|  ¡ D ]b}g }	x*| ¡ D ]}
x|
 ¡ D ]}|	|7 }	qHW q:W |  ¡ dkrt|| s†q&n|  ¡ dkr†|s†q&||  |¡ }| j| jd d …df | j| jd d …df  }}t	 
dt	 t	 t	 |¡d t	 |¡d  ¡¡g¡}t	 |d d ||¡}t	 |d d ||¡}t	 ||d d ¡d }| j| j| d	 }|d
 d }d|  k rtdk r€n n|d7 }|  |¡ t| jtƒrt|	ƒdkrÈ|	d d k	rÈtj |	¡g||< n
d g||< |dkr$||kr|| d d k	r|| d j}n|}|| }|  ||f¡ nô|dkrv||krZ|| d d k	rZ|| d j}n|}|| }|  ||f¡ n¢|dkrÈ||kr¬|| d d k	r¬|| d j}n|}|| }|  ||f¡ nP|dkrh||krþ|| d d k	rþ|| d j}n|}|| }|  ||f¡ nNt	 t	 |¡¡||d   }t	 t	 |¡¡||d   }|  || || f¡ t ƒ  !|¡ t ƒ  "|¡}| #|¡ q&W d S )Nr$   r
   r   r   g        é   éÿÿÿÿg       @g     €f@g     €V@g     €v@é‡   éá   é´   ÚlÚrÚbÚtg      ø?)$Zget_visibleZpoints_to_pixelsZget_sizer!   Úvaluesr*   r   r   ZpixelÚnpZhstackZcumsumZsqrtZdiffZinterpZsearchsortedÚnormal_angleZset_rotationÚ
isinstancer   ÚlenÚmtransformsZBboxÚunionZxminZset_positionZx1ZyminZy1ZcosZradiansZsinr   ÚdrawZget_window_extentÚappend)r   ZrendererZbboxesZticklabels_bboxZcoord_ticklabels_bboxZ
ticks_locsZvisible_ticksZ	text_sizer   Zticklabels_bbox_listZbbcoordZbbaxisZpaddingZx_dispZy_dispÚdZxcenZycenZiminr6   Zlabel_angleÚleftZxposÚrightZbottomZyposÚtopZdxZdyZbb)r   r   r   r;   >   sv    22





zAxisLabels.draw)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r!   r"   r)   r*   r;   Ú__classcell__r   r   )r   r   r      s   r   )Znumpyr5   Z
matplotlibr   Zmatplotlib.textr   Zmatplotlib.transformsZ
transformsr9   r   r   r   r   r   r   r   Ú<module>   s
   