a
    [¨Xhú  ã                   @   sP   d Z ddlmZ ddlmZ dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )z&Resolve percentages into fixed values.é    )Úinfé   )Úboxesc                 C   sD   | du s| dkr| S | j dkr$| jS | j dks2J ‚|| j d S dS )z¸Return the percentage of the reference value, or the value unchanged.

    ``refer_to`` is the length for 100%. If ``refer_to`` is not a number, it
    just replaces percentages.

    NÚautoÚpxú%éd   )ÚunitÚvalue)r
   Úrefer_to© r   ú^/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/weasyprint/layout/percent.pyÚ
percentage   s    
r   c                 C   s@   | j | }t||ƒ}t| ||ƒ |dv r<|dkr<t| |dƒ dS )z¨Set a used length value from a computed length value.

    ``refer_to`` is the length for 100%. If ``refer_to`` is not a number, it
    just replaces percentages.

    )Ú	min_widthÚ
min_heightr   r   N)Ústyler   Úsetattr)ÚboxÚproperty_namer   r
   Úpercentr   r   r   Úresolve_one_percentage   s
    

r   c                 C   s<   |\}}t | d|ƒ t | d|ƒ t | d|ƒ t | d|ƒ d S )NÚleftÚrightÚtopÚbottom)r   )r   Úcontaining_blockÚcb_widthÚ	cb_heightr   r   r   Úresolve_position_percentages(   s
    r   c           	      C   s   t |tjƒr|j}|j}n|\}}t | tjƒr4|}n|}t| d|ƒ t| d|ƒ t| d|ƒ t| d|ƒ t| d|ƒ t| d|ƒ t| d|ƒ t| d|ƒ t| d	|ƒ t| d
|ƒ t| d|ƒ |dkr| jd }|dksâ|jdkrêd| _n|jdksøJ ‚|j	| _t| ddƒ t| dt
ƒ n$t| d|ƒ t| d|ƒ t| d|ƒ | jd dk}dD ]6}d|› d}|rrt| |ƒsPt| || j| ƒ qPt| d	ƒ t| dƒ dS )z0Set used values as attributes of the box object.Zmargin_leftZmargin_rightZ
margin_topZmargin_bottomÚpadding_leftÚpadding_rightÚpadding_topÚpadding_bottomÚwidthr   Ú	max_widthr   Úheightr   r   r   r   Z
max_heightZborder_collapseÚcollapse)r   r   r   r   Úborder_Ú_widthN)Ú
isinstancer   ZBoxr#   r%   ZPageBoxr   r   r	   r
   r   Úhasattrr   Úadjust_box_sizing)	r   r   r   r   Zmaybe_heightr%   r&   ÚsideÚpropr   r   r   Úresolve_percentages0   sH    


r.   c                 C   s˜   dD ]Ž}d|› d}| j | \}}d||fv r<t| |dƒ q| d¡D ]}|| jv rFt| |dƒ  qqFt||  ¡ ƒ}t||  ¡ ƒ}t| |||fƒ qd S )N)Ztop_leftZ	top_rightZbottom_rightZbottom_leftr'   Z_radius)r   r   )r   r   Ú_)r   r   ÚsplitZremove_decoration_sidesr   Zborder_widthZborder_height)r   Zcornerr   ÚrxZryr,   r   r   r   Úresolve_radii_percentagesh   s    
r2   c              	   C   s0  | j d dkrJ|dkr0| j| j | j | j }q’| j| j | j | j }nH| j d dkr||dkrn| j| j }q’| j| j }n| j d dksŽJ ‚d}|dkr,t	| |ƒdkrÆt
| |tdt	| |ƒ| ƒƒ t
| d|› tdt	| d|› ƒ| ƒƒ t	| d	|› ƒdkr,t
| d	|› tdt	| d	|› ƒ| ƒƒ d S )
NZ
box_sizingz
border-boxr#   zpadding-boxzcontent-boxr   r   Zmax_Zmin_)r   r   r    Zborder_left_widthZborder_right_widthr!   r"   Zborder_top_widthZborder_bottom_widthÚgetattrr   Úmax)r   ZaxisÚdeltar   r   r   r+   |   s4    
ÿÿÿ
ÿÿÿ
(r+   N)Ú__doc__Úmathr   Zformatting_structurer   r   r   r   r.   r2   r+   r   r   r   r   Ú<module>   s   8