3
EİWR                 @   sR   d Z ddlmZmZ ddlZddlmZ ddlmZ ej	dZ
G dd	 d	eZdS )
z
    weasyprint.stacking
    -------------------

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

    )divisionunicode_literalsN   )boxes)AbsolutePlaceholderz_indexc               @   s2   e Zd ZdZdd Zedd Zed	ddZdS )
StackingContextzStacking contexts define the paint order of all pieces of a document.

    http://www.w3.org/TR/CSS21/visuren.html#x43
    http://www.w3.org/TR/CSS21/zindex.html

    c             C   s   || _ || _|| _|| _g | _g | _g | _|| _xH|D ]@}|jdk rR| jj	| q6|jdkrj| jj	| q6| jj	| q6W | jj
td | jj
td |jj| _| jdkrd| _d S )Nr   )keyauto)boxpageZblock_level_boxesZfloat_contextsZnegative_z_contextsZzero_z_contextsZpositive_z_contextsblocks_and_cellsr   appendsort_Z_INDEX_GETTERstyle)selfr   child_contextsblocksfloatsr   r   context r   S/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/weasyprint/stacking.py__init__   s&    




zStackingContext.__init__c                s2    fddj D }jg  |g g g S )Nc                s   g | ]} j |qS r   )from_box).0child)clsr   r   r   
<listcomp><   s    z-StackingContext.from_page.<locals>.<listcomp>)childrencopy_with_children)r   r   r   r   )r   r   r   	from_page8   s    
zStackingContext.from_pageNc                sX   g }d kr|g  g g  fddfdd|}| || S )Nc                sF  t | tr| j} | j}|jdkr*|jdksD|jdk sD|jsD|jdkrXj	t
j|  n|jdkr|jdksptt}j|t
j|  n| j rj	t
j|  nt | tjrt
j| S t | tjrt }t}n$t | tjrd }t}nd }d }| } |d k	r( j||  |d k	r>j||  | S d S )Nstaticr
   r   Zvisible)
isinstancer   Z_boxr   positionr   Zopacity	transformZoverflowr   r   r   AssertionErrorleninsertZ
is_floatedr   ZInlineBlockBoxZBlockLevelBoxZTableCellBox)r   r   indexZblocks_indexZblocks_and_cells_index)r   r   r   dispatch_childrenr   r   r   r   dispatchP   sD    







z*StackingContext.from_box.<locals>.dispatchc                sH   t | tjs| S g }x(| jD ]} |}|d k	r|j| qW | j|S )N)r#   r   Z	ParentBoxr   r   r    )r   Znew_childrenr   result)r+   r   r   r*      s    z3StackingContext.from_box.<locals>.dispatch_childrenr   )r   r   r   r   r   r   )r   r   r   r+   r*   r   r   r   r   A   s    4zStackingContext.from_box)N)__name__
__module____qualname____doc__r   classmethodr!   r   r   r   r   r   r      s
   	r   )r0   
__future__r   r   operatorZformatting_structurer   Zlayout.absoluter   
attrgetterr   objectr   r   r   r   r   <module>	   s   
