a
    ]øj™  ã                   @  s–   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
 ertd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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.
é    )Úannotations)ÚTYPE_CHECKING)ÚWD_INLINE_SHAPE)Únsmap)ÚParented)ÚCT_Body)Ú	CT_Inline)Ú	StoryPart)ÚLengthc                      sR   e Zd ZdZdddœ‡ fdd„Zddœd	d
„Zdd„ Zdd„ Zedd„ ƒZ	‡  Z
S )ÚInlineShapeszUSequence of |InlineShape| instances, supporting len(), iteration, and indexed access.r   r	   )Úbody_elmÚparentc                   s   t t| ƒ |¡ || _d S ©N)Úsuperr   Ú__init__Ú_body)Úselfr   r   ©Ú	__class__© úF/var/www/html/assistant/venv/lib/python3.9/site-packages/docx/shape.pyr      s    zInlineShapes.__init__Úint)Úidxc                 C  s:   z| j | }W n" ty0   d| }t|ƒ‚Y n0 t|ƒS )z2Provide indexed access, e.g. 'inline_shapes[idx]'.z$inline shape index [%d] out of range)Ú_inline_lstÚ
IndexErrorÚInlineShape)r   r   Ú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>'   ó    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                      sx   e Zd ZdZddœ‡ fdd„Zeddœdd	„ƒZejdd
œdd	„ƒZedd„ ƒZedd„ ƒZ	e	jddœdd„ƒZ	‡  Z
S )r   zdProxy for an ``<wp:inline>`` element, representing the container for an inline
    graphical object.r   )r   c                   s   t t| ƒ ¡  || _d S r   )r   r   r   Ú_inline)r   r   r   r   r   r   7   s    zInlineShape.__init__r
   )Úreturnc                 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   Úheight;   s    zInlineShape.height)r1   c                 C  s   || j j_|| j jjjj_d S r   )r.   r0   r1   ÚgraphicÚgraphicDataÚpicÚspPr)r   r1   r   r   r   r2   C   s    
c                 C  sf   | j jj}|j}|td kr<|jjj}|jdu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.
        r5   NÚcZdgm)r.   r3   r4   Úurir   r5   ZblipFillÚblipÚlinkr   ZLINKED_PICTUREZPICTUREZCHARTZ	SMART_ARTÚNOT_IMPLEMENTED)r   r4   r8   r9   r   r   r   ÚtypeH   s    


zInlineShape.typec                 C  s
   | j jjS )zZRead/write.

        The display width of this inline shape as an |Emu| instance.
        )r.   r0   Úcxr"   r   r   r   Úwidth\   s    zInlineShape.width)r=   c                 C  s   || j j_|| j jjjj_d S r   )r.   r0   r=   r3   r4   r5   r6   )r   r=   r   r   r   r>   d   s    
)r(   r)   r*   r+   r   r,   r2   Úsetterr<   r>   r-   r   r   r   r   r   3   s   

r   N)r+   Ú
__future__r   Útypingr   Zdocx.enum.shaper   Zdocx.oxml.nsr   Zdocx.sharedr   Zdocx.oxml.documentr   Zdocx.oxml.shaper   Zdocx.parts.storyr	   r
   r   r   r   r   r   r   Ú<module>   s   