a
    [Xh6                     @   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   _/var/www/viveiro_mudafortebrasil/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   ZdxZdyZ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_styleZpadding_leftZpadding_rightZborder_left_widthZ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_xZavailable_widthZwidth_for_marginsspacingr   r   r   absolute_width1   s    

(

$   
 
r:   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)
Zpadding_topZpadding_bottomZborder_top_widthZborder_bottom_widthr   topbottomheight
margin_topmargin_bottom)r   r1   r2   r3   r4   r5   r6   translate_ytranslate_box_heightZdefault_translate_yZheight_for_marginsr9   r   r   r   absolute_height|   sb    

(




   
rB   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_boxesZadjoining_marginsdiscard	max_lines)rF   rG   rH   rI   )rF   rG   rH   )
skip_stack)blockrC   ZflexrD   ZgridrE   r:   rB   r   Zis_table_wrapperr	   r   r   ZBlockBoxZFlexContainerBoxZGridContainerBoxabsolute_layoutr.   r=   r   )r1   r   containing_blockrH   bottom_spacerK   r2   r3   r4   r5   rC   rD   rE   r8   r7   rA   r@   rG   r   	resume_at_Zchild_placeholderr   r   r   absolute_block   sX    







rR   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   Zbroken_out_of_flow)	r1   placeholderrN   rH   rO   rK   r   r   rP   r   r   r   rM      s    

rM   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   ZPageBoxZcontent_box_xZcontent_box_yr.   r=   Zpadding_box_xZpadding_box_yZpadding_widthZpadding_heightr   r   Zcreate_block_formatting_contextZBlockReplacedBoxabsolute_replacedrR   Zfinish_block_formatting_context)r1   r   rN   rH   rO   rK   r2   r3   r4   r5   r   rP   r   r   r   rS      s.    


rS   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+   r,   r-   r   r/   r0   Zmargin_widthZborder_widthr;   r<   r   r>   r?   Zmargin_heightZborder_height)r1   r   r2   r3   r4   r5   r(   	remainingr   r   r   rU     sl    



 
  rU   N)r&   Zformatting_structurer   Zmin_maxr   percentr   r   	preferredr   Zreplacedr   tabler	   r
   r:   rB   rR   rM   rS   rU   r   r   r   r   <module>   s   &
J54 