o
    Zh0h                     @   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   s@   | du s| dkr
| S | j dkr| jS | j dksJ || j d S )zReturn 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   O/var/www/html/rh/venv/lib/python3.10/site-packages/weasyprint/layout/percent.py
percentage   s   
r   c                 C   sH   | j | }t||}t| || |dv r |dkr"t| |d dS dS dS )zSet 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r|}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sp|jdkrtd| _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 ]}d| d}|rt| |st| || j|  qt| 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   maybe_heightr)   r,   sidepropr   r   r   resolve_percentages0   sJ   

r7   c                 C   s   dD ]G}d| d}| j | \}}d||fv rt| |d q|dD ]}|| jv r2t| |d  nq#t||  }t||  }t| |||f qd S )N)top_left	top_rightbottom_rightbottom_leftr-   _radius)r   r   )r   r   _)r   r   splitremove_decoration_sidesr   border_widthborder_height)r   cornerr   rxryr5   r   r   r   resolve_radii_percentagesh   s    
rE   c              	   C   s4  | j d dkr%|dkr| j| j | j | j }n1| j| j | j | j }n$| j d dkr>|dkr7| j| j }n| j| j }n| j d dksGJ d}|dkrt	| |dkrbt
| |tdt	| ||  t
| d| tdt	| d| |  t	| d	| dkrt
| d	| tdt	| d	| |  d S d S 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   |   s8   

(,r3   N)__doc__mathr   formatting_structurer   r   r   r   r7   rE   r3   r   r   r   r   <module>   s    8