o
    :aw                     @   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                    s  j j jj d g g t jD ]1}|	  |j
dd }||fdd d|jv rC|j n ddd|_q fdd	}|du rcj}t |}|j }t||}td
d
|j|j_|j|j}	}
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)Zoriginalc                 S   s   |S N )ar_posr   r   7/usr/lib/python3/dist-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                     sv   t jD ]\} }}| | |u r| `q|| _q__  j_j	  j
dddd d S )Nr      )zipaxesset_axes_locatorr   bboxbbox_inchesset_tight_layouttransFigure_boxout
invalidatepatch
set_bounds)axlocZaspectr   figZlocator_listZ
old_aspectZorigBboxZorigBboxInchesZorig_tight_layoutZsentinelr   r
   restore_bbox'   s   


z!adjust_bbox.<locals>.restore_bboxr   r   )r   r   Zget_tight_layoutr   r   r   objectr   appendZget_axes_locatorZget_positionfrozenr   __dict__r   Zdpir   Zscaler   r   Zfrom_boundswidthZheightx0y0r   r   r   )r   r   	fixed_dpir   Zcurrent_posr   trZ	dpi_scaleZ_bboxr%   r&   Zw1Zh1r   r   r
   adjust_bbox   sD   







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_rasterizingM   s   r*   r   )__doc__Zmatplotlib.transformsr   r   r   r)   r*   r   r   r   r
   <module>   s    
E