o
    Ñ­j‡  ã                   @  s€   d Z ddlmZ ddlm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`
é    )Úannotations)ÚBinaryIOé   )ÚImageÚ
ImageColorÚ	ImageDrawÚ	ImageFontÚ	ImagePath)ÚStrOrBytesPathc                   @  s   e Zd ZdZdddd„ZdS )ÚPenz"Stores an outline color and width.r   éÿ   ÚcolorÚstrÚwidthÚintÚopacityÚreturnÚNonec                 C  s   t  |¡| _|| _d S ©N)r   Úgetrgbr   r   )Úselfr   r   r   © r   úK/var/www/html/CropPilot/venv/lib/python3.10/site-packages/PIL/ImageDraw2.pyÚ__init__$   s   
zPen.__init__N)r   r   )r   r   r   r   r   r   r   r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   !   ó    r   c                   @  s   e Zd ZdZddd	d
„ZdS )ÚBrushzStores a fill colorr   r   r   r   r   r   r   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   r   r   r   r    )   r   r    c                   @  s   e Zd ZdZ	dddd„ZdS )ÚFontz Stores a TrueType font and coloré   r   r   ÚfileúStrOrBytesPath | BinaryIOÚsizeÚfloatr   r   c                 C  s   t  |¡| _t ||¡| _d S r   )r   r   r   r   ÚtruetypeÚfont)r   r   r#   r%   r   r   r   r   3   s   zFont.__init__N)r"   )r   r   r#   r$   r%   r&   r   r   r   r   r   r   r   r!   0   s    ÿr!   c                   @  sŒ   e Zd ZdZ		d(d)dd„Zd*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S ),ÚDrawz4
    (Experimental) WCK-style drawing interface
    NÚimageúImage.Image | strr%   ú"tuple[int, int] | list[int] | Noner   ú&float | tuple[float, ...] | str | Noner   r   c                 C  sH   t |tƒr|d u rd}t|ƒ‚t |||¡}t |¡| _|| _d | _	d S )Nz>If image argument is mode string, size must be a list or tuple)
Ú
isinstancer   Ú
ValueErrorr   Únewr   r)   Údrawr*   Ú	transform)r   r*   r%   r   Úmsgr   r   r   r   @   s   

zDraw.__init__úImage.Imagec                 C  s   | j S r   )r*   )r   r   r   r   ÚflushO   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   )r7   Úoutline)r.   r   r   r   r    r2   r	   ÚPathr1   r6   Úgetattr)r   ÚopÚxyÚpenÚbrushr8   r7   r   r   r   r   ÚrenderR   s$   




zDraw.renderc                 C  s   |\}}dd|dd|f| _ dS )zSets a transformation offset.r   r   N)r2   )r   ÚoffsetÚxoffsetÚyoffsetr   r   r   Úsettransformj   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©r?   ©r   r<   ÚstartÚendÚoptionsr   r   r   rE   o   ó   zDraw.arcc                 G  rD   )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`
        ÚchordNrF   rG   r   r   r   rL   x   rK   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`
        ÚellipseNrF   ©r   r<   rJ   r   r   r   rN   �   ó   zDraw.ellipsec                 G  rM   )zˆ
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        r6   NrF   rO   r   r   r   r6   ‰   rP   z	Draw.linec                 G  rD   )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`
        ÚpiesliceNrF   rG   r   r   r   rQ   ‘   rK   zDraw.pieslicec                 G  rM   )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`
        ÚpolygonNrF   rO   r   r   r   rR   š   s   zDraw.polygonc                 G  rM   )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        Ú	rectangleNrF   rO   r   r   r   rS   §   rP   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(   r7   N)r2   r	   r9   r1   Útextr(   r   ©r   r<   rT   r(   r   r   r   rT   ¯   s   
z	Draw.textc                 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`
        ©r(   )r2   r	   r9   r1   Útextbboxr(   rU   r   r   r   rW   º   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`
        rV   )r1   Ú
textlengthr(   )r   rT   r(   r   r   r   rX   Ç   s   zDraw.textlength)NN)r*   r+   r%   r,   r   r-   r   r   )r   r4   r   )r   r   r   r   r   r5   r?   rC   rE   rL   rN   r6   rQ   rR   rS   rT   rW   rX   r   r   r   r   r)   ;   s$    ü

			r)   N)r   Ú
__future__r   Útypingr   Ú r   r   r   r   r	   Ú_typingr
   r   r    r!   r)   r   r   r   r   Ú<module>   s   