U
    Âmœdz
  ã                   @   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                    sX  ˆj ‰ˆj‰ˆjj‰ g ‰g ‰tƒ ‰ˆjD ]b}ˆ | ¡ ¡ |jdd� 	¡ }| 
|fdd„¡ d|jkrtˆ |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.
    F)Úoriginalc                 S   s   |S ©N© )ÚaÚrÚ_posr   r   úO/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/_tight_bbox.pyÚ<lambda>   ó    zadjust_bbox.<locals>.<lambda>Úapply_aspectNc                 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   ÚappendZget_axes_locatorZget_positionÚfrozenr   Ú__dict__r   Zdpir   Úscaler   Zfrom_boundsÚsizeZ	transformÚp0r   r   r   r   ÚwidthÚheight)r   r   Ú	fixed_dpir   Zcurrent_posr    ÚtrZ	dpi_scaleZx0Zy0Zw1Zh1r   r   r   Úadjust_bbox   s<    






 
ÿ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_rasterizingF   s    r-   )N)N)Ú__doc__Zmatplotlib.transformsr   r   r   r,   r-   r   r   r   r   Ú<module>   s   
>