o
    svXjq  ã                   @   sp   d Z ddlZddlmZmZmZmZmZ ddl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`
é    Né   )ÚImageÚ
ImageColorÚ	ImageDrawÚ	ImageFontÚ	ImagePath)Ú	deprecatec                   @   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   úK/var/www/html/myproject/venv/lib/python3.10/site-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   3   s   zFont.__init__N)r   r   r   r   r   r   r   0   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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   ÚflushE   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   ÚrenderH   s$   




zDraw.renderc                 C   s   |\}}dd|dd|f| _ dS )zSets a transformation offset.r   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©r4   ©r   r1   ÚstartÚendÚoptionsr   r   r   r:   e   ó   zDraw.arcc                 G   r9   )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   rA   n   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   r1   r?   r   r   r   rC   w   ó   zDraw.ellipsec                 G   rB   )zˆ
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        r*   Nr;   rD   r   r   r   r*      rE   z	Draw.linec                 G   r9   )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   rF   ‡   r@   zDraw.pieslicec                 G   rB   )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;   rD   r   r   r   rG   �   s   zDraw.polygonc                 G   rB   )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        Ú	rectangleNr;   rD   r   r   r   rH   �   rE   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   r1   rI   r   r   r   r   rI   ¥   s   
z	Draw.textc                 C   sX   t dddƒ t ¡ � tjdtd� | jj||jd�W  d  ƒ S 1 s%w   Y  dS )z¢
        .. deprecated:: 9.2.0

        Return the size of the given string, in pixels.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textsize`
        Útextsizeé
   ztextbbox or textlengthÚignore)Úcategory©r   N)r   ÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarningr&   rK   r   ©r   rI   r   r   r   r   rK   °   s
   
$þzDraw.textsizec                 C   s0   | j rt |¡}|  | j ¡ | jj|||jd�S )zÁ
        Returns bounding box (in pixels) of given text.

        :return: ``(left, top, right, bottom)`` bounding box

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textbbox`
        rO   )r(   r   r.   r&   Útextbboxr   rJ   r   r   r   rU   ½   s   
zDraw.textbboxc                 C   s   | j j||jd�S )zÄ
        Returns length (in pixels) of given text.
        This is the amount by which following text should be offset.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textlength`
        rO   )r&   Ú
textlengthr   rT   r   r   r   rV   Ê   s   zDraw.textlength)NNr   )r   r   r   r   r   r)   r4   r8   r:   rA   rC   r*   rF   rG   rH   rI   rK   rU   rV   r   r   r   r   r"   9   s"    

			r"   )r   rP   Ú r   r   r   r   r   Ú
_deprecater   r	   r   r   r"   r   r   r   r   Ú<module>   s   	