U
    Evf
                     @   s0   d Z ddlmZmZmZ dddZd	ddZdS )
zE
Helper module for the *bbox_inches* parameter in `.Figure.savefig`.
    )BboxTransformedBboxAffine2DNc                    st  j jjj g g t jD ]~}| }|dk	rL|||d | |j	dd
 }||fdd d|jkr|j n
 ddd|_q( fdd	}|dkrΈj}t |}|j }tjd|j _||j\}	}
j j| \}}t|	 |
 ||j_j  tj|_ j|	| |
| j j| j j|  |S )aO  
    Temporarily adjust the figure so that only the specified area
    (bbox_inches) is saved.

    It modifies fig.bbox, fig.bbox_inches,
    fig.transFigure._boxout, and fig.patch.  While the figure size
    changes, the scale of the original figure is conserved.  A
    function which restores the original values are returned.
    NF)originalc                 S   s   |S N )ar_posr   r   :/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/_tight_bbox.py<lambda>       zadjust_bbox.<locals>.<lambda>apply_aspectc                 S   s   d S r   r   )posr   r   r   r   %   r   c                     sl   t jD ](\} }}| | |kr0| `q|| _q__ j_j  j	
dddd d S )Nr      )zipaxesset_axes_locatorr   bboxbbox_inchestransFigure_boxout
invalidatepatch
set_bounds)axlocZaspectr   figZlocator_listZ
old_aspectZorigBboxZorigBboxInchessentinelr   r   restore_bbox'   s    

z!adjust_bbox.<locals>.restore_bboxr   )N)r   r   )r   r   r   r   objectr   Zget_axes_locatorr   appendget_positionfrozenr   __dict__Zdpir   Zscaler   Zfrom_boundssizeZ	transformZp0r   r   r   r   widthheight)r   r   	fixed_dpir   locatorZcurrent_posr    trZ	dpi_scaleZx0Zy0Zw1h1r   r   r   adjust_bbox   sB    







 
r-   c                 C   s"   |\}}|  t | ||}||fS )z
    A function that needs to be called when figure dpi changes during the
    drawing (e.g., rasterizing).  It recovers the bbox and re-adjust it with
    the new dpi.
    )r-   )r   Zbbox_inches_restorer)   r   r    r	   r   r   r   process_figure_for_rasterizingI   s    r.   )N)N)__doc__Zmatplotlib.transformsr   r   r   r-   r.   r   r   r   r   <module>   s   
A