o
    e                     @   sV   d 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eZd	S )
a  Column of Section.

In most cases, one section per page. But in case multi-columns page, sections are used 
to distinguish these different layouts.

.. note::
    Currently, support at most two columns.

::

    {
        'bbox': (x0, y0, x1, y1),
        'blocks': [{
            ... # block instances
        }, ...],
        'shapes': [{
            ... # shape instances
        }, ...]
    }
   )
Collection)Element)Layout)Shape)Linec                       sV   e Zd ZdddZedd ZdefddZd	d
 Zde	f fddZ
dd Z  ZS )ColumnNc                 C   s   t |  t| || dS )zInitialize empty column.N)r   __init__r   )selfblocksshapes r   FD:\Projects\ConvertPro\env\Lib\site-packages\pdf2docx/layout/Column.pyr   !   s   
zColumn.__init__c                 C   s   | j S )N)bbox)r	   r   r   r   working_bbox)   s   zColumn.working_bboxelementsc                 C   s4   dd |D }dd |D }|  | | | dS )z@Add candidate elements, i.e. lines or shapes, to current column.c                 S      g | ]	}t |tr|qS r   )
isinstancer   .0er   r   r   
<listcomp>/       z'Column.add_elements.<locals>.<listcomp>c                 S   r   r   )r   r   r   r   r   r   r   0   r   N)Zassign_blocksZassign_shapes)r	   r   r
   r   r   r   r   add_elements-   s   
zColumn.add_elementsc                 C   s   t | }|t|  |S )z+Store parsed section layout in dict format.)r   storeupdater   )r	   resr   r   r   r   5   s   
zColumn.storerawc                    s"   |  |dd t | | S )zRestore Column from raw dict.r   )    r   r   r   )Zupdate_bboxgetsuperrestore)r	   r   	__class__r   r   r    <   s   zColumn.restorec                 C   s   | j | dS )zsCreate Section Column in docx. 

        Args:
            doc (Document): ``python-docx`` document object
        N)r
   	make_docx)r	   docr   r   r   r#   C   s   zColumn.make_docx)NN)__name__
__module____qualname__r   propertyr   r   r   r   dictr    r#   __classcell__r   r   r!   r   r      s    

r   N)__doc__Zcommon.Collectionr   Zcommon.Elementr   Zlayout.Layoutr   Zshape.Shaper   Z	text.Liner   r   r   r   r   r   <module>   s   