o
    Z#ûa›  ã                   @   s\   d Z ddlmZmZmZmZmZ G dd„ dƒZG dd„ dƒZG dd„ dƒZ	G d	d
„ d
ƒZ
dS )z]
(Experimental) WCK-style drawing interface operations

.. seealso:: :py:mod:`PIL.ImageDraw`
é   )ÚImageÚ
ImageColorÚ	ImageDrawÚ	ImageFontÚ	ImagePathc                   @   s   e Zd ZdZddd„ZdS )ÚPenz"Stores an outline color and width.r   éÿ   c                 C   s   t  |¡| _|| _d S ©N)r   ÚgetrgbÚcolorÚwidth)Úselfr   r   Úopacity© r   ú0/usr/lib/python3/dist-packages/PIL/ImageDraw2.pyÚ__init__!   s   
zPen.__init__N)r   r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      ó    r   c                   @   ó   e Zd ZdZddd„ZdS )ÚBrushzStores a fill colorr   c                 C   s   t  |¡| _d S r	   )r   r
   r   )r   r   r   r   r   r   r   )   s   zBrush.__init__N)r   r   r   r   r   r   r   &   r   r   c                   @   r   )ÚFontz Stores a TrueType font and coloré   c                 C   s   t  |¡| _t ||¡| _d S r	   )r   r
   r   r   ÚtruetypeÚfont)r   r   ÚfileÚsizer   r   r   r   0   s   zFont.__init__N)r   r   r   r   r   r   r   -   r   r   c                   @   s|   e Zd ZdZddd„Zdd„ Zddd„Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚDrawz4
    (Experimental) WCK-style drawing interface
    Nc                 C   s4   t |dƒst |||¡}t |¡| _|| _d | _d S )NÚim)Úhasattrr   Únewr   r    ÚdrawÚimageÚ	transform)r   r%   r   r   r   r   r   r   ;   s
   

zDraw.__init__c                 C   s   | j S r	   )r%   )r   r   r   r   ÚflushB   s   z
Draw.flushc                 C   s°   d  }}d}t |tƒr|j}|j}nt |tƒr|j}|j}t |tƒr&|j}nt |tƒr.|j}| jr<t |¡}| | j¡ |dkrK| jj	|||d� d S t
| j|ƒ|||d� d S )Nr   Úline)Úfillr   )r)   Úoutline)Ú
isinstancer   r   r   r   r&   r   ÚPathr$   r(   Úgetattr)r   ÚopÚxyÚpenÚbrushr*   r)   r   r   r   r   ÚrenderE   s$   




zDraw.renderc                 C   s   |\}}dd|dd|f| _ dS )zSets a transformation offset.r   é    N)r&   )r   ÚoffsetÚxoffsetÚyoffsetr   r   r   Úsettransform]   s   zDraw.settransformc                 G   ó   | j d|||g|¢R Ž  dS )zÄ
        Draws an arc (a portion of a circle outline) between the start and end
        angles, inside the given bounding box.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.arc`
        ÚarcN©r2   ©r   r/   ÚstartÚendÚoptionsr   r   r   r9   b   ó   zDraw.arcc                 G   r8   )z·
        Same as :py:meth:`~PIL.ImageDraw2.Draw.arc`, but connects the end points
        with a straight line.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.chord`
        ÚchordNr:   r;   r   r   r   r@   k   r?   z
Draw.chordc                 G   ó   | j d|g|¢R Ž  dS )z‚
        Draws an ellipse inside the given bounding box.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse`
        ÚellipseNr:   ©r   r/   r>   r   r   r   rB   t   ó   zDraw.ellipsec                 G   rA   )zˆ
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        r(   Nr:   rC   r   r   r   r(   |   rD   z	Draw.linec                 G   r8   )zÁ
        Same as arc, but also draws straight lines between the end points and the
        center of the bounding box.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.pieslice`
        ÚpiesliceNr:   r;   r   r   r   rE   „   r?   zDraw.pieslicec                 G   rA   )a  
        Draws a polygon.

        The polygon outline consists of straight lines between the given
        coordinates, plus a straight line between the last and the first
        coordinate.


        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.polygon`
        ÚpolygonNr:   rC   r   r   r   rF   �   s   zDraw.polygonc                 G   rA   )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        Ú	rectangleNr:   rC   r   r   r   rG   š   rD   zDraw.rectanglec                 C   s8   | j rt |¡}|  | j ¡ | jj|||j|jd� dS )zw
        Draws the string at the given position.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text`
        )r   r)   N)r&   r   r,   r$   Útextr   r   )r   r/   rH   r   r   r   r   rH   ¢   s   
z	Draw.textc                 C   s   | j j||jd�S )zƒ
        Return the size of the given string, in pixels.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textsize`
        )r   )r$   Útextsizer   )r   rH   r   r   r   r   rI   ­   s   zDraw.textsize)NNr	   )r   r   r   r   r   r'   r2   r7   r9   r@   rB   r(   rE   rF   rG   rH   rI   r   r   r   r   r    6   s    

			r    N)r   Ú r   r   r   r   r   r   r   r   r    r   r   r   r   Ú<module>   s   	