a
    ¥Q•h�6  ã                   @   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rÄn nV| j
dkr~d| _
| jdkrŽd| _||| j
 | j  }t|| |ƒ| _	|sÀd}	|
| }�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�rÎd| _
| jdk�ràd| _|| j
 | j }| j| j	  k�rdk�r@n n0t|| || | j ƒ| _	|| j | |
 }d}	nö| j| j  k�r\dk�rˆn n(|�s6||| j
 | j  }d}	|
| }n®| j	| j  k�r¤dk�rÌn 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| _	�nºd| j| j| jfv�r|| j| j | j |  }
| j| j	  kr¾dkrÔn 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�r”dk�ršn nn–| j| j  k�r¶dk�rÆn 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	rŒt
| |||	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ƒr’t| |||||	ƒ}
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rŒd|_|jdkrœd|_|| ¡  }|jdkr¾||j |_|jdkrÔ||j |_nÔd|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�rÆdk�rÖn n|j| |_
d|j
|jfv �rJ|jdk�rúd|_|jdk�rd|_|| ¡  }|j
dk�r0||j |_
|jdk�rÖ||j
 |_nŒd|j|jfv �rÂ|| ¡ |j
 |j  }|j|j  k�r�dk�r¦n 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 