o
    Zh0h6                     @   s   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ G d	d
 d
Zedd Zdd Zdd Zdd Zdd Zdd ZdS )z'Absolutely positioned boxes management.   )boxes   )handle_min_max_width)resolve_percentagesresolve_position_percentages)shrink_to_fit) inline_replaced_box_width_height)table_wrapper_widthc                   @   sJ   e Zd ZdZdd Zdd Zddd	Zd
d Zdd Zdd Z	dd Z
dS )AbsolutePlaceholderzBLeft where an absolutely-positioned box was taken out of the flow.c                 C   s.   t |trJ t| d| t| dd d S )N_box_layout_doneF)
isinstancer
   object__setattr__)selfbox r   P/var/www/html/rh/venv/lib/python3.10/site-packages/weasyprint/layout/absolute.py__init__   s   zAbsolutePlaceholder.__init__c                 C   s    t | d| t | dd d S )Nr   r   T)r   r   )r   new_boxr   r   r   set_laid_out_box   s   z$AbsolutePlaceholder.set_laid_out_box    Fc                 C   sV   ||  krdkrd S  | j r| j||| d S | j j|7  _| j j|7  _d S )Nr   )r   r   	translate
position_x
position_y)r   dxdyignore_floatsr   r   r   r      s   zAbsolutePlaceholder.translatec                 C   s"   t | j }t|d| j |S )Nr   )r
   r   copyr   r   r   )r   new_placeholderr   r   r   r   !   s   zAbsolutePlaceholder.copyc                 C   s   t | j|S N)getattrr   )r   namer   r   r   __getattr__'   s   zAbsolutePlaceholder.__getattr__c                 C   s   t | j|| d S r    )setattrr   )r   r"   valuer   r   r   r   *   s   zAbsolutePlaceholder.__setattr__c                 C   s
   d| j  S )Nz<Placeholder %r>)r   )r   r   r   r   __repr__-   s   
zAbsolutePlaceholder.__repr__N)r   r   F)__name__
__module____qualname____doc__r   r   r   r   r#   r   r&   r   r   r   r   r
      s    

r
   c                 C   sH  | j jd u p| j jd dk}| j| j | j | j }d}d}	|| j }
| j| j  kr5| j	  kr5dkrdn n-| j
dkr?d| _
| jdkrGd| _||| j
 | j  }t|| || _	|s`d}	|
| }|	|fS | jdkr| jdkr| j	dkr|| j| j | j	 |  }| j
| j  krdkrn n%| j	| | j | j |kr|d  | _
| _n*|rdn|| _
|r|nd| _n| j
dkr|| _
n| jdkr|| _n	|r|| _n|| _
| j|
 }|	|fS | j
dkrd| _
| jdkrd| _|| j
 | j }| j| j	  krdkrn nt|| || | j | _	|| j | |
 }d}	|	|fS | j| j  kr'dkr@n n|s<||| j
 | j  }d}	|
| }|	|fS | j	| j  krNdkren nt|| || | j | _	| j|
 }|	|fS | jdkr{||
 | j| | j	  }|	|fS | j	dkr|| j | j | | _	| j|
 }|	|fS | jdkr| j|
 }|	|fS )N	directionltrr   FautoTr   )styleparent_stylepadding_leftpadding_rightborder_left_widthborder_right_widthr   leftrightwidthmargin_leftmargin_rightr   )r   contextcb_xcb_ycb_width	cb_heightr,   paddings_borderstranslate_xtranslate_box_widthdefault_translate_xavailable_widthwidth_for_marginsspacingr   r   r   absolute_width1   s   

(

1




  



rE   c                 C   sL  | j | j | j | j }d}d}|| j }	| j| j  kr'| j  kr'dkr=n n| jdkr1d| _| j	dkr9d| _	||fS d| j| j| jfvr|| j| j | j |  }
| j| j	  kr`dkrkn n	|
d  | _| _	n| jdkrt|
| _n| j	dkr}|
| _	n|
| _	| j|	 }||fS | jdkrd| _| j	dkrd| _	|| j | j	 }| j| j  krdkrn n|| j | |	 }d}||fS | j| j  krdkrn n	 ||fS | j| j  krdkrn n	| j|	 }||fS | jdkr||	 | j| | j  }||fS | jdkr|| j | j | | _| j|	 }||fS | jdkr"| j|	 }||fS )Nr   Fr-   r   T)
padding_toppadding_bottomborder_top_widthborder_bottom_widthr   topbottomheight
margin_topmargin_bottom)r   r9   r:   r;   r<   r=   r>   translate_ytranslate_box_heightdefault_translate_yheight_for_marginsrD   r   r   r   absolute_height|   sp   

(

$









rS   c
                 C   sp  ddl m}
 ddlm} ddlm} t|| ||||	\}}|r$d\}}nt|| ||||	\}}||r6|j n|7 }g }|j	rFt
| |||	f t|tjra|
| |||d||d dd d
\}}}}}}n0t|tjrz|| ||||d||dd		\}}}}}nt|tjr|| ||||d||d
\}}}}}|D ]}t| ||||d d q|r||j8 }|r||j8 }||| ||fS )Nr   )block_container_layout)flex_layout)grid_layout)Fr   TF)page_is_emptyabsolute_boxesfixed_boxesadjoining_marginsdiscard	max_lines)rW   rX   rY   r[   )rW   rX   rY   )
skip_stack)blockrT   flexrU   gridrV   rE   rS   r   is_table_wrapperr	   r   r   BlockBoxFlexContainerBoxGridContainerBoxabsolute_layoutr6   rL   r   )r9   r   containing_blockrY   bottom_spacer]   r:   r;   r<   r=   rT   rU   rV   r@   r?   rP   rO   rX   r   	resume_at_child_placeholderr   r   r   absolute_block   sX   






rk   c           	      C   sL   |j rJ |j}t| |||||\}}|| |r$|||f| j|< dS dS )z-Set the width of absolute positioned ``box``.N)r   r   absolute_box_layoutr   broken_out_of_flow)	r9   placeholderrf   rY   rg   r]   r   r   rh   r   r   r   re      s   

re   c                 C   s   t |tjr| }| }|j}|j}	n| }| }|	 }|
 }	t|||	f t|||	f |   t |tjrIt| |||||	}
d }nt| |||||||||	
\}
}| |
 |
|fS r    )r   r   PageBoxcontent_box_xcontent_box_yr6   rL   padding_box_xpadding_box_ypadding_widthpadding_heightr   r   create_block_formatting_contextBlockReplacedBoxabsolute_replacedrk   finish_block_formatting_context)r9   r   rf   rY   rg   r]   r:   r;   r<   r=   r   rh   r   r   r   rl      s.   


rl   c                 C   s  t |||||f |jjd u p|jjd dk}|j|j  kr#dkr6n n|r.|j| |_n|| |j |_d|j|jfv rk|jdkrFd|_|jdkrNd|_||  }|jdkr_||j |_|jdkrj||j |_nbd|j|jfv r||	 |j |j  }|j|j  krdkrn n|dkr|d  |_|_n3|rdn||_|r|nd|_n$|jdkr||_n||_n|r|| |j  |_n
|| |j  |_|j
|j  krdkrn n|j| |_
d|j
|jfv r|jdkrd|_|jdkrd|_||  }|j
dkr||j |_
|jdkr||j
 |_nFd|j|jfv rU|| |j
 |j  }|j|j  kr<dkrGn n	|d  |_|_n|jdkrQ||_n||_n
|| |j
  |_||j |_||j
 |_|S )Nr+   r,   r-   r   r   )r   r.   r/   r4   r5   r   r7   r8   margin_widthborder_widthrJ   rK   r   rM   rN   margin_heightborder_height)r9   r   r:   r;   r<   r=   r,   	remainingr   r   r   rx     sp   






 rx   N)r*   formatting_structurer   min_maxr   percentr   r   	preferredr   replacedr   tabler	   r
   rE   rS   rk   re   rl   rx   r   r   r   r   <module>   s    &
J54 