3
VmWQ1                 @   s   d Z ddlmZmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ d	d
lmZ G dd deZedd Zdd Zdd Zdd Zdd Zdd ZdS )z
    weasyprint.absolute
    -------------------

    :copyright: Copyright 2011-2014 Simon Sapin and contributors, see AUTHORS.
    :license: BSD, see LICENSE for details.

    )divisionunicode_literals   )resolve_percentagesresolve_position_percentages)shrink_to_fit)list_marker_layout)handle_min_max_width)table_wrapper_width   )boxesc               @   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   s0   t |t sttj| d| tj| dd d S )N_box_layout_doneF)
isinstancer   AssertionErrorobject__setattr__)selfbox r   Z/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/weasyprint/layout/absolute.py__init__   s    zAbsolutePlaceholder.__init__c             C   s    t j| d| t j| dd d S )Nr   r   T)r   r   )r   new_boxr   r   r   set_laid_out_box   s    z$AbsolutePlaceholder.set_laid_out_boxr   c             C   s:   | j r| jj|| n | j j|7  _| j j|7  _d S )N)r   r   	translate
position_x
position_y)r   ZdxZdyr   r   r   r   !   s    zAbsolutePlaceholder.translatec             C   s"   t | jj }tj|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 )N)setattrr   )r   r    valuer   r   r   r   2   s    zAbsolutePlaceholder.__setattr__c             C   s
   d| j  S )Nz<Placeholder %r>)r   )r   r   r   r   __repr__5   s    zAbsolutePlaceholder.__repr__N)r   r   )__name__
__module____qualname____doc__r   r   r   r   r!   r   r$   r   r   r   r   r      s   
r   c             C   s  | j }| j}| j}| j}| j}| j}| j}	| j}
| j}|\}}}}|| | | }d}d}|| j	 }|
|  ko|	  kodkn  r|dkrd| _ |dkrd| _||| j  | j  }t
|| || _n|
dko|dko|	dkrz|||
 |  }||  kodkn  rD|	| | |
 |kr6|d  | _ | _nd| _ || _n*|dkrV|| _ n|dkrh|| _n|| _|
| }n*|dkrd| _ |dkrd| _|| j  | j }|
|	  kodkn  rt
|| || | | _|| | | }d}n|
|  kodkn  rn|	|  ko$dkn  rLt
|| || |
 | _|
| }nX|
dkrl|| | | |	 }n8|	dkr|| |
 | | _|
| }n|dkr|
| }||fS )Nr   Fautor   T)margin_leftmargin_rightZpadding_leftZpadding_rightZborder_left_widthZborder_right_widthwidthleftrightr   r   )r   contextcontaining_blockZmargin_lZmargin_rZ	padding_lZ	padding_rZborder_lZborder_rr,   r-   r.   cb_xcb_ycb_width	cb_heightZpadding_plus_borders_xtranslate_xtranslate_box_widthZdefault_translate_xZavailable_widthZwidth_for_marginsspacingr   r   r   absolute_width9   sv    
"








r8   c             C   s4  | j }| j}| j}| j}| j}| j}| j}	| j}
| j}|\}}}}|| | | }d}d}|| j	 }|
|  ko|	  kodkn  r|dkrd| _ |dkrd| _n|
dko|dko|	dkr.||
| |  }||  kodkn  r|d  | _ | _n*|dkr|| _ n|dkr|| _n|| _|
| }n|dkr>d| _ |dkrNd| _|| j  | j }|
|	  kordkn  r|| | | }d}n|
|  kodkn  rn~|	|  kodkn  r|
| }nX|
dkr|| | | |	 }n8|	dkr|| |
 | | _|
| }n|dkr,|
| }||fS )Nr   Fr)   r   T)

margin_topmargin_bottomZpadding_topZpadding_bottomZborder_top_widthZborder_bottom_widthheighttopbottomr   )r   r/   r0   Zmargin_tZmargin_bZ	padding_tZ	padding_bZborder_tZborder_br;   r<   r=   r1   r2   r3   r4   Zpaddings_plus_borders_ytranslate_ytranslate_box_heightZdefault_translate_yZheight_for_marginsr7   r   r   r   absolute_height   sd    
"










r@   c             C   s   |\}}}}t || |\}}	t|| |\}
}g }|jrFt| |||f ddlm} || |tdd d d||d d	\}}}}}t| | x|D ]}t| ||| qW |r|	|j	8 }	|
r||j
8 }|j|	| |S )Nr   )block_container_layoutinfF)Zmax_position_yZ
skip_stackdevice_sizeZpage_is_emptyabsolute_boxesfixed_boxesZadjoining_margins)r8   r@   Zis_table_wrapperr
   ZblocksrA   floatr   absolute_layoutr,   r;   r   )r/   r   r0   rE   r1   r2   r3   r4   r6   r5   r?   r>   rD   rA   r   _Zchild_placeholderr   r   r   absolute_block   s.    



rI   c             C   s*   |j  st|j}|jt| ||| dS )z-Set the width of absolute positioned ``box``.N)r   r   r   r   absolute_box_layout)r/   placeholderr0   rE   r   r   r   r   rG      s    rG   c       
      C   s   |}t |tjr.|j }|j }|j}|j}n |j }|j }|j	 }|j
 }||||f}t|||f t|||f | j  t |tjrt| |||}	nt |tjstt| ||}	| j|	 |	S )N)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BlockBoxrI   ZBlockReplacedBoxr   absolute_replacedZfinish_block_formatting_context)
r/   r   r0   rE   cbr1   r2   r3   r4   r   r   r   r   rJ      s(    
rJ   c       
      C   s  ddl m} ||d d |\}}}}|jjdk}|j|j  koFdkn  rn|r^|j| |_n|| |j |_d|j|jfkr|jdkrd|_|jdkrd|_||j	  }	|jdkr|	|j |_|jdkr|	|j |_nd|j|jfkr|||j
 |j |j  }	|j|j  kodkn  r`|	dkr>|	d  |_|_n |rRd|_|	|_n|	|_d|_n|jdkrt|	|_n|	|_n0|r||j	 |j  |_n||j	 |j  |_|j|j  kodkn  r|j| |_d|j|jfkr@|jdkrd|_|jdkrd|_||j  }	|jdkr,|	|_|jdkr|	|_nd|j|jfkr||j |j |j  }	|j|j  kodkn  r|	d  |_|_n|jdkr|	|_n|	|_n||j |j  |_||j |_||j |_|S )Nr   ) inline_replaced_box_width_height)rC   ltrr)   r   r   )ZinlinesrN   style	directionr-   r.   r   r*   r+   Zmargin_widthZborder_widthr<   r=   r   r9   r:   Zmargin_heightZborder_height)
r/   r   r0   rN   r1   r2   r3   r4   rO   	remainingr   r   r   rL     sr    



 
  rL   N)r(   
__future__r   r   Zpercentagesr   r   Z	preferredr   markersr   Zmin_maxr	   Ztablesr
   Zformatting_structurer   r   r   r8   r@   rI   rG   rJ   rL   r   r   r   r   <module>	   s   $J?'