a
    Qh6                     @   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   S/var/www/sistema_ama/venv/lib/python3.9/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   sX   ||  krdkrn nd S | j r4| j||| n | 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   Z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   s>  | j jd u p| j jd dk}| j| j | j | j }d}d}	|| j }
| j| j  krj| j	  krjdkrn nV| j
dkr~d| _
| jdkrd| _||| j
 | j  }t|| || _	|sd}	|
| }nr| jdkr| jdkr| j	dkr|| j| j | j	 |  }| j
| j  krdkrrn nP| j	| | j | j |krP|d  | _
| _n |rZdn|| _
|rj|nd| _n<| j
dkr|| _
n(| jdkr|| _n|r|| _n|| _
| j|
 }nz| j
dkrd| _
| jdkrd| _|| j
 | j }| j| j	  krdkr@n n0t|| || | j | _	|| j | |
 }d}	n| j| j  kr\dkrn n(|s6||| j
 | j  }d}	|
| }n| j	| j  krdkrn n$t|| || | j | _	| j|
 }nj| jdkr||
 | j| | j	  }nD| j	dkr || j | j | | _	| j|
 }n| jdkr6| 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_widthZdefault_translate_xavailable_widthZwidth_for_marginsspacingr   r   r   absolute_width1   s    

(

$   
 
rB   c                 C   s8  | j | j | j | j }d}d}|| j }	| j| j  krN| j  krNdkrvn n$| jdkrbd| _| j	dkrrd| _	nd| j| j| jfvr|| j| j | j |  }
| j| j	  krdkrn n|
d  | _| _	n*| jdkr|
| _n| j	dkr|
| _	n|
| _	| j|	 }n$| jdkrd| _| j	dkr0d| _	|| j | j	 }| j| j  kr\dkrxn n|| j | |	 }d}n| j| j  krdkrn nn| j| j  krdkrn n| j|	 }nj| jdkr||	 | j| | j  }nD| jdkr|| j | j | | _| j|	 }n| jdkr0| 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   r8   r9   r:   r;   r<   r=   translate_ytranslate_box_heightZdefault_translate_yZheight_for_marginsrA   r   r   r   absolute_height|   sb    

(




   
rN   c
                 C   sx  ddl m}
 ddlm} ddlm} t|| ||||	\}}|rHd\}}nt|| ||||	\}}||rl|j n|7 }g }|j	rt
| |||	f t|tjr|
| |||d||d dd d
\}}}}}}nbt|tjr|| ||||d||dd		\}}}}}n0t|tjr$|| ||||d||d
\}}}}}|D ]}t| ||||d d q(|rT||j8 }|rd||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)rR   rS   rT   rV   )rR   rS   rT   )
skip_stack)blockrO   flexrP   gridrQ   rB   rN   r   is_table_wrapperr	   r   r   BlockBoxFlexContainerBoxGridContainerBoxabsolute_layoutr5   rI   r   )r8   r   containing_blockrT   bottom_spacerX   r9   r:   r;   r<   rO   rP   rQ   r?   r>   rM   rL   rS   r   	resume_at_Zchild_placeholderr   r   r   absolute_block   sX    







re   c           	      C   sH   |j r
J |j}t| |||||\}}|| |rD|||f| j|< dS )z-Set the width of absolute positioned ``box``.N)r   r   absolute_box_layoutr   broken_out_of_flow)	r8   placeholderra   rT   rb   rX   r   r   rc   r   r   r   r`      s    

r`   c                 C   s   t |tjr*| }| }|j}|j}	n | }| }|	 }|
 }	t|||	f t|||	f |   t |tjrt| |||||	}
d }nt| |||||||||	
\}
}| |
 |
|fS r   )r   r   PageBoxcontent_box_xcontent_box_yr5   rI   padding_box_xpadding_box_ypadding_widthpadding_heightr   r   create_block_formatting_contextBlockReplacedBoxabsolute_replacedre   finish_block_formatting_context)r8   r   ra   rT   rb   rX   r9   r:   r;   r<   r   rc   r   r   r   rf      s.    


rf   c                 C   s  t |||||f |jjd u p,|jjd dk}|j|j  krFdkrln n"|r\|j| |_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 |_nd|j|jfv rz||	 |j |j  }|j|j  krdkr^n n>|dkr<|d  |_|_n |rFdn||_|rV|nd|_n|jdkrr||_n||_n0|r|| |j  |_n|| |j  |_|j
|j  krdkrn n|j| |_
d|j
|jfv rJ|jdkrd|_|jdkrd|_||  }|j
dkr0||j |_
|jdkr||j
 |_nd|j|jfv r|| |j
 |j  }|j|j  krdkrn n|d  |_|_n|jdkr||_n||_n|| |j
  |_||j |_||j
 |_|S )Nr*   r+   r,   r   r   )r   r-   r.   r3   r4   r   r6   r7   margin_widthborder_widthrG   rH   r   rJ   rK   margin_heightborder_height)r8   r   r9   r:   r;   r<   r+   	remainingr   r   r   rr     sl    



 
  rr   N)r)   formatting_structurer   min_maxr   percentr   r   	preferredr   replacedr   tabler	   r
   rB   rN   re   r`   rf   rr   r   r   r   r   <module>   s   &
J54 