
    3vj                     \    d Z ddlmZ ddlmZ ddlmZ ddlmZ d Z	d Z
d	 Zd
 Zd Zd Zy)z&Resolve percentages into fixed values.    )inf   )resolve_math)
check_math)boxesc                     t        |       rt        | ||      } | | dk(  r| S | j                  j                         dk(  r| j                  S | j                  dk(  sJ || j                  z  dz  S )zuReturn the percentage of the reference value, or the value unchanged.

    ``refer_to`` is the length for 100%.

    )refer_toautopx%d   )r   r   unitlowervalue)r   computedr	   s      L/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/layout/percent.py
percentager   
   so     %UHx@}				t	#{{zzS   %++%++    c                     | j                   |   }t        || j                   |      }t        | ||       |dv r|dk(  rt        | |d       yyy)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   percents        r   resolve_one_percentager      sU     IIm$E		84GC(3368I]A& 9J3r   c                 v    |\  }}t        | d|       t        | d|       t        | d|       t        | d|       y )Nleftrighttopbottom)r   )r   containing_blockcb_width	cb_heights       r   resolve_position_percentagesr&   +   s<    *Hi31323y13)4r   c                    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(  st        |      s|j                  dk(  rd| _        n0|j                  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 ]1  }d| d}|rt        | |      rt        | || j                  |          3 t        | d	       t        | d       y)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   Boxr0   r2   PageBoxr   r   r   r   r   r   r   hasattrr   adjust_box_sizing)	r   r#   r$   r%   maybe_heightr2   r5   sideprops	            r   resolve_percentagesr@   3   s   "EII.#))$++	.)#u}}% 3x8393l;3>393:3|<3 0,?323X63X6 F 8$Vz&1V[[C5GCJ;;$$&$...CJsL!4sL#6sHi8sL)<sL)<yy*+z9H2 0f% WS$/Csyy/0 c7#c8$r   c                    dD ]  }d| d}| j                   |   }|\  }}d||fv rt        | |d       1|j                  d      D ]  }|| j                  v st        | |d        c t	        || j                   | j                               }t	        || j                   | j                               }t        | |||f        y )N)top_left	top_rightbottom_rightbottom_leftr6   _radius)r   r   )r   r   _)r   r   splitremove_decoration_sidesr   border_widthborder_height)r   cornerr   r   rxryr>   s          r   resolve_radii_percentagesrO   k   s    J 2!&199]+B R C/LL% 	2Ds222]F3	2
 B		3+;+;+=>BB		3+<+<+>?BCR1#2r   c                    | j                   d   dk(  rm|dk(  r4| j                  | j                  z   | j                  z   | j                  z   }n| j
                  | j                  z   | j                  z   | j                  z   }na| j                   d   dk(  r9|dk(  r| j                  | j                  z   }n0| j
                  | j                  z   }n| j                   d   dk(  sJ d}|dkD  rt        | |      dk7  r$t        | |t        dt        | |      |z
               t        | d| t        dt        | d|       |z
               t        | d	|       dk7  r+t        | d	| t        dt        | d	|       |z
               y y y )
N
box_sizingz
border-boxr0   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deltas      r   r<   r<      s   
yy,.7?  3#4#44%%&(+(>(>? 
 #"4"44$$%'*'>'>?  
<	 M	17?$$s'8'88EOOc&8&88Eyy&-777
 qy3'Cs1gc4&85&@ABtD6]C73$tf+F+N$OP3$tf&&0C4vAwsd4&M/JU/R(ST 1	 r   N)__doc__mathr   cssr   css.functionsr   formatting_structurer   r   r   r&   r@   rO   r<    r   r   <module>rb      s4    ,   & (,"' 55%p2*Ur   