a
    ¥Q•hú  ã                   @   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   úR/var/www/sistema_ama/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.Úmargin_leftÚmargin_rightÚ
margin_topÚmargin_bottomÚpadding_leftÚpadding_rightÚpadding_topÚpadding_bottomÚwidthr   Ú	max_widthr   Úheightr   r   r   r   Ú
max_heightÚborder_collapseÚcollapse)r   r   r   r   Úborder_Ú_widthN)Ú
isinstancer   ÚBoxr'   r)   ÚPageBoxr   r   r	   r
   r   Úhasattrr   Úadjust_box_sizing)	r   r   r   r   Zmaybe_heightr)   r,   ÚsideÚpropr   r   r   Úresolve_percentages0   sH    


r6   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)Útop_leftÚ	top_rightÚbottom_rightÚbottom_leftr-   Z_radius)r   r   )r   r   Ú_)r   r   ÚsplitÚremove_decoration_sidesr   Úborder_widthÚborder_height)r   Úcornerr   ÚrxÚryr4   r   r   r   Úresolve_radii_percentagesh   s    
rC   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 )
NÚ
box_sizingz
border-boxr'   zpadding-boxzcontent-boxr   r   Úmax_Úmin_)r   r#   r$   Úborder_left_widthÚborder_right_widthr%   r&   Úborder_top_widthÚborder_bottom_widthÚgetattrr   Úmax)r   ÚaxisÚdeltar   r   r   r3   |   s4    
ÿÿÿ
ÿÿÿ
(r3   N)Ú__doc__Úmathr   Úformatting_structurer   r   r   r   r6   rC   r3   r   r   r   r   Ú<module>   s   8