a
    ç´«j;  ã                   @  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ddœdd	„Zd
S )ÚPenz"Stores an outline color and width.r   éÿ   ÚstrÚintÚNone)ÚcolorÚwidthÚopacityÚreturnc                 C  s   t  |¡| _|| _d S ©N)r   Úgetrgbr   r   )Úselfr   r   r   © r   úM/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/ImageDraw2.pyÚ__init__$   s    zPen.__init__N)r   r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   !   s   r   c                   @  s$   e Zd ZdZd
dd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"   )   s   r"   c                   @  s&   e Zd ZdZddddddœdd	„Zd
S )ÚFontz Stores a TrueType font and coloré   r   zStrOrBytesPath | BinaryIOÚfloatr   )r   ÚfileÚsizer   c                 C  s   t  |¡| _t ||¡| _d S r   )r   r   r   r
   ZtruetypeÚfont)r   r   r&   r'   r   r   r   r   3   s    zFont.__init__N)r$   r   r   r   r   r   r#   0   s    ÿr#   c                   @  s0  e Zd ZdZd6dddddœdd	„Zd
dœdd„Zd7dddddddœdd„Zdddœdd„Zdddddddœdd„Zdddddddœdd„Z	ddddd œd!d"„Z
ddddd œd#d$„Zdddddddœd%d&„Zddddd œd'd(„Zddddd œd)d*„Zdd+d,dd-œd.d/„Zdd+d,d0d-œd1d2„Zd+d,dd3œd4d5„ZdS )8ÚDrawz4
    (Experimental) WCK-style drawing interface
    NzImage.Image | strz"tuple[int, int] | list[int] | Nonez&float | tuple[float, ...] | str | Noner   )Úimager'   r   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__zImage.Image)r   c                 C  s   | j S r   )r*   )r   r   r   r   ÚflushO   s    z
Draw.flushr   r   zPen | Brush | NonezBrush | Pen | Noner   )ÚopÚxyÚpenÚbrushÚkwargsr   c           
      K  sÚ   d  }}d}t |tƒr$|j}|j}nt |tƒr:|j}|j}t |tƒrL|j}nt |tƒr\|j}| jr|t |¡}	|	 | j¡ |	}|dv r’| d|¡ n| d|¡ | d|¡ |dkr¾| d|¡ t	| j
|ƒ|fi |¤Ž d S )Nr   )ÚarcÚlineÚfillÚoutliner8   r   )r+   r   r   r   r"   r/   r   ÚPathÚ
setdefaultÚgetattrr.   )
r   r2   r3   r4   r5   r6   r:   r9   r   Úpathr   r   r   ÚrenderR   s.    	




zDraw.renderztuple[float, float])Úoffsetr   c                 C  s   |\}}dd|dd|f| _ dS )zSets a transformation offset.r   r   N)r/   )r   r@   ZxoffsetZyoffsetr   r   r   Úsettransformv   s    zDraw.settransformr%   )r3   r4   ÚstartÚendÚoptionsr   c                 G  s"   | 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`
        r7   ©rB   rC   N©r?   ©r   r3   r4   rB   rC   rD   r   r   r   r7   {   s    zDraw.arcc                 G  s"   | j d||g|¢R ||dœŽ dS )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`
        ÚchordrE   NrF   rG   r   r   r   rH   ‹   s    z
Draw.chord)r3   r4   rD   r   c                 G  s   | j d||g|¢R Ž  dS )z‚
        Draws an ellipse inside the given bounding box.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse`
        ÚellipseNrF   ©r   r3   r4   rD   r   r   r   rI   ›   s    zDraw.ellipsec                 G  s   | j d||g|¢R Ž  dS )zˆ
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        r8   NrF   rJ   r   r   r   r8   £   s    z	Draw.linec                 G  s"   | j d||g|¢R ||dœŽ dS )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`
        ÚpieslicerE   NrF   rG   r   r   r   rK   «   s    zDraw.pieslicec                 G  s   | j d||g|¢R Ž  dS )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   rJ   r   r   r   rL   »   s    zDraw.polygonc                 G  s   | j d||g|¢R Ž  dS )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        Ú	rectangleNrF   rJ   r   r   r   rM   È   s    zDraw.rectangler   r#   )r3   Útextr(   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(   r9   N)r/   r   r;   r.   rN   r(   r   ©r   r3   rN   r(   r>   r   r   r   rN   Ð   s
    
z	Draw.textz!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(   )r/   r   r;   r.   Útextbboxr(   rO   r   r   r   rQ   Ü   s
    

zDraw.textbbox)rN   r(   r   c                 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`
        rP   )r.   Ú
textlengthr(   )r   rN   r(   r   r   r   rR   ì   s    zDraw.textlength)NN)N)r   r   r    r!   r   r1   r?   rA   r7   rH   rI   r8   rK   rL   rM   rN   rQ   rR   r   r   r   r   r)   ;   s$     ü û$r)   N)r!   Ú
__future__r   Útypingr   r   r   Ú r   r   r	   r
   r   Z_typingr   r   r   r"   r#   r)   r   r   r   r   Ú<module>   s   