U
    cqeb
  ã                   @   sJ   d Z ddlmZ ddlmZ ddlmZ G dd„ deƒZG dd„ dƒZd	S )
zhObjects related to shapes.

A shape is a visual object that appears on the drawing layer of a document.
é    )ÚWD_INLINE_SHAPE)Únsmap)ÚParentedc                       sD   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zed
d„ ƒZ	‡  Z
S )ÚInlineShapeszYSequence of |InlineShape| instances, supporting len(), iteration, and indexed
    access.c                    s   t t| ƒ |¡ || _d S ©N)Úsuperr   Ú__init__Ú_body)ÚselfZbody_elmÚparent©Ú	__class__© ú./tmp/pip-unpacked-wheel-gx5hpqp3/docx/shape.pyr      s    zInlineShapes.__init__c                 C   s<   z| j | }W n$ tk
r2   d| }t|ƒ‚Y nX t|ƒS )z2Provide indexed access, e.g. 'inline_shapes[idx]'.z$inline shape index [%d] out of range)Ú_inline_lstÚ
IndexErrorÚInlineShape)r
   ÚidxÚinlineÚmsgr   r   r   Ú__getitem__   s    zInlineShapes.__getitem__c                 C   s   dd„ | j D ƒS )Nc                 s   s   | ]}t |ƒV  qd S r   )r   )Ú.0r   r   r   r   Ú	<genexpr>   s     z(InlineShapes.__iter__.<locals>.<genexpr>)r   ©r
   r   r   r   Ú__iter__   s    zInlineShapes.__iter__c                 C   s
   t | jƒS r   )Úlenr   r   r   r   r   Ú__len__   s    zInlineShapes.__len__c                 C   s   | j }d}| |¡S )Nz//w:p/w:r/w:drawing/wp:inline)r	   Úxpath)r
   Úbodyr   r   r   r   r   "   s    zInlineShapes._inline_lst)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Úpropertyr   Ú__classcell__r   r   r   r   r      s   	r   c                       s`   e Zd ZdZ‡ fdd„Zedd„ ƒZejdd„ ƒZedd„ ƒZed	d
„ ƒZ	e	jdd
„ ƒZ	‡  Z
S )r   zdProxy for an ``<wp:inline>`` element, representing the container for an inline
    graphical object.c                    s   t t| ƒ ¡  || _d S r   )r   r   r   Ú_inline)r
   r   r   r   r   r   -   s    zInlineShape.__init__c                 C   s
   | j jjS )z[Read/write.

        The display height of this inline shape as an |Emu| instance.
        )r%   ÚextentÚcyr   r   r   r   Úheight1   s    zInlineShape.heightc                 C   s   || j j_|| j jjjj_d S r   )r%   r&   r'   ÚgraphicÚgraphicDataÚpicÚspPr)r
   r'   r   r   r   r(   9   s    
c                 C   sf   | j jj}|j}|td kr<|jjj}|jdk	r6t	j
S t	jS |td krNt	jS |td kr`t	jS t	jS )zThe type of this inline shape as a member of
        ``docx.enum.shape.WD_INLINE_SHAPE``, e.g. ``LINKED_PICTURE``.

        Read-only.
        r+   NÚcZdgm)r%   r)   r*   Úurir   r+   ZblipFillÚblipÚlinkr   ZLINKED_PICTUREZPICTUREZCHARTZ	SMART_ARTÚNOT_IMPLEMENTED)r
   r*   r.   r/   r   r   r   Útype>   s    


zInlineShape.typec                 C   s
   | j jjS )zZRead/write.

        The display width of this inline shape as an |Emu| instance.
        )r%   r&   Úcxr   r   r   r   ÚwidthR   s    zInlineShape.widthc                 C   s   || j j_|| j jjjj_d S r   )r%   r&   r3   r)   r*   r+   r,   )r
   r3   r   r   r   r4   Z   s    
)r   r    r!   r"   r   r#   r(   Úsetterr2   r4   r$   r   r   r   r   r   )   s   



r   N)	r"   Zdocx.enum.shaper   Zdocx.oxml.nsr   Zdocx.sharedr   r   r   r   r   r   r   Ú<module>   s
   