o
    üÞh;  ã                   @  sŒ   d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
mZmZ ddl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`
é    )Úannotations)ÚAnyÚAnyStrÚBinaryIOé   )ÚImageÚ
ImageColorÚ	ImageDrawÚ	ImageFontÚ	ImagePath)ÚCoordsÚ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   úN/var/www/html/premium_crap/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@dAdd„ZdBdd„ZdCd$d%„ZdCd&d'„Z	dDd(d)„Z
dDd*d+„ZdCd,d-„ZdDd.d/„ZdDd0d1„ZdEd6d7„ZdFd9d:„ZdGd;d<„ZdS )HÚ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.flushÚopr   Úxyr   ÚpenúPen | Brush | NoneÚbrushúBrush | Pen | NoneÚkwargsr   c           
      K  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v rI| d|¡ n| d|¡ | d|¡ |dkr_| d|¡ t	| j
|ƒ|fi |¤Ž d S )Nr   )ÚarcÚlineÚfillÚoutlinerA   r   )r1   r   r   r   r#   r5   r   ÚPathÚ
setdefaultÚgetattrr4   )
r   r9   r:   r;   r=   r?   rC   rB   r   Úpathr   r   r   ÚrenderR   s.   	




zDraw.renderÚoffsetútuple[float, float]c                 C  s   |\}}dd|dd|f| _ dS )zSets a transformation offset.r   r   N)r5   )r   rI   ÚxoffsetÚyoffsetr   r   r   Úsettransformv   s   zDraw.settransformÚstartr)   ÚendÚoptionsc                 G  ó"   | j d||g|¢R ||dœŽ 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`
        r@   ©rN   rO   N©rH   ©r   r:   r;   rN   rO   rP   r   r   r   r@   {   ó   "zDraw.arcc                 G  rQ   )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`
        ÚchordrR   NrS   rT   r   r   r   rV   ‹   rU   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`
        ÚellipseNrS   ©r   r:   r;   rP   r   r   r   rX   ›   ó   zDraw.ellipsec                 G  rW   )zˆ
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        rA   NrS   rY   r   r   r   rA   £   rZ   z	Draw.linec                 G  rQ   )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`
        ÚpieslicerR   NrS   rT   r   r   r   r[   «   rU   zDraw.pieslicec                 G  rW   )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`
        ÚpolygonNrS   rY   r   r   r   r\   »   s   zDraw.polygonc                 G  rW   )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        Ú	rectangleNrS   rY   r   r   r   r]   È   rZ   zDraw.rectangleÚtextr   r+   r$   c                 C  s<   | 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+   rB   N)r5   r   rD   r4   r^   r+   r   ©r   r:   r^   r+   rG   r   r   r   r^   Ð   s
   
z	Draw.textú!tuple[float, float, float, float]c                 C  s4   | 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+   )r5   r   rD   r4   Útextbboxr+   r_   r   r   r   rb   Ü   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`
        ra   )r4   Ú
textlengthr+   )r   r^   r+   r   r   r   rc   ì   s   zDraw.textlength)NN)r-   r.   r(   r/   r   r0   r   r   )r   r7   r   )r9   r   r:   r   r;   r<   r=   r>   r?   r   r   r   )rI   rJ   r   r   )r:   r   r;   r<   rN   r)   rO   r)   rP   r   r   r   )r:   r   r;   r<   rP   r   r   r   )r:   rJ   r^   r   r+   r$   r   r   )r:   rJ   r^   r   r+   r$   r   r`   )r^   r   r+   r$   r   r)   )r   r   r    r!   r   r8   rH   rM   r@   rV   rX   rA   r[   r\   r]   r^   rb   rc   r   r   r   r   r,   ;   s&    ü
û
$








r,   N)r!   Ú
__future__r   Útypingr   r   r   Ú r   r   r	   r
   r   Ú_typingr   r   r   r#   r$   r,   r   r   r   r   Ú<module>   s   