o
    s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   b/var/www/html/construction_image-detection-poc/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   