o
    پhq                     @   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   T/home/www/facesmatcher.com/frenv_dlib/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   Z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 )NZ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penZ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   offsetZxoffsetZ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r1   r   r/   startendoptionsr   r   r   r5   e      zDraw.arcc                 G   r4   )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`
        chordNr6   r7   r   r   r   r<   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`
        ellipseNr6   r   r/   r:   r   r   r   r>   w      zDraw.ellipsec                 G   r=   )z
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        r(   Nr6   r?   r   r   r   r(      r@   z	Draw.linec                 G   r4   )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`
        piesliceNr6   r7   r   r   r   rA      r;   zDraw.pieslicec                 G   r=   )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`
        polygonNr6   r?   r   r   r   rB      s   zDraw.polygonc                 G   r=   )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        	rectangleNr6   r?   r   r   r   rC      r@   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   r/   rD   r   r   r   r   rD      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$   rF   r   r   rD   r   r   r   r   rF      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`
        rJ   )r&   r   r,   r$   textbboxr   rE   r   r   r   rP      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`
        rJ   )r$   
textlengthr   rO   r   r   r   rQ      s   zDraw.textlength)NNr   )r   r   r   r   r   r'   r1   r3   r5   r<   r>   r(   rA   rB   rC   rD   rF   rP   rQ   r   r   r   r   r!   9   s"    

			r!   )r   rK    r   r   r   r   r   Z
_deprecater   r	   r   r   r!   r   r   r   r   <module>   s   	