U
    d»{jï
  ã                   @   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                    sl  ˆj ‰ˆj‰ˆ ¡ ‰ˆ d¡ ˆjj‰ g ‰g ‰tƒ ‰ˆjD ]b}ˆ | 	¡ ¡ |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   úU/var/www/html/bwave/python/venv/lib/python3.8/site-packages/matplotlib/_tight_bbox.pyÚ<lambda>   ó    zadjust_bbox.<locals>.<lambda>Úapply_aspectc                 S   s   d S r   r   )Úposr   r   r   r   $   r   c                     sv   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Úset_layout_engineÚtransFigureÚ_boxoutÚ
invalidateÚpatchÚ
set_bounds)ÚaxÚlocZaspect©r   ÚfigZlocator_listZ
old_aspectZorigBboxZorigBboxInchesZorig_layoutÚsentinelr   r   Úrestore_bbox&   s    


z!adjust_bbox.<locals>.restore_bboxr   )N)r   r   )r   r   Zget_layout_enginer   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_rasterizingI   s    r.   )N)N)Ú__doc__Zmatplotlib.transformsr   r   r   r-   r.   r   r   r   r   Ú<module>   s   
A