
    zvg;                        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          Z G d	 d
          Z G d d          Z G 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                      e Zd ZdZdddZdS )Penz"Stores an outline color and width.r      colorstrwidthintopacityreturnNonec                F    t          j        |          | _        || _        d S N)r	   getrgbr   r   )selfr   r   r   s       K/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/PIL/ImageDraw2.py__init__zPen.__init__$   s    &u--



    N)r   r   )r   r   r   r   r   r   r   r   __name__
__module____qualname____doc__r    r   r   r   r   !   s3        ,,      r   r   c                      e Zd ZdZddd	Zd
S )BrushzStores a fill colorr   r   r   r   r   r   r   c                8    t          j        |          | _        d S r   )r	   r   r   )r   r   r   s      r   r   zBrush.__init__,   s    &u--


r   N)r   )r   r   r   r   r   r   r    r%   r   r   r'   r'   )   s3        . . . . . . .r   r'   c                      e Zd ZdZ	 dddZdS )Fontz Stores a TrueType font and color   r   r   fileStrOrBytesPath | BinaryIOsizefloatr   r   c                l    t          j        |          | _        t          j        ||          | _        d S r   )r	   r   r   r   truetypefont)r   r   r,   r.   s       r   r   zFont.__init__3   s.      &u--
&tT22			r   N)r+   )r   r   r,   r-   r.   r/   r   r   r    r%   r   r   r*   r*   0   s:        ** JL3 3 3 3 3 3 3r   r*   c                      e Zd ZdZ	 	 d/d0dZd1dZ	 d2d3dZd4dZd5d Zd5d!Z	d6d"Z
d6d#Zd5d$Zd6d%Zd6d&Zd7d+Zd8d-Zd9d.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                    t          |t                    r)|d}t          |          t          j        |||          }t          j        |          | _        || _        d | _	        d S )Nz>If image argument is mode string, size must be a list or tuple)

isinstancer   
ValueErrorr   newr
   r4   drawr5   	transform)r   r5   r.   r   msgs        r   r   zDraw.__init__@   sb     eS!! 	2|V oo%IeT511EN5))	
QUr   Image.Imagec                    | j         S r   )r5   )r   s    r   flushz
Draw.flushO   s
    zr   opr   xyr   penPen | Brush | NonebrushBrush | Pen | Nonekwargsr   c                ~   d x}}d}t          |t                    r|j        }|j        }n#t          |t                    r|j        }|j        }t          |t                    r|j        }nt          |t                    r|j        }| j        r0t          j        |          }	|	                    | j                   |	}|dv r|                    d|           n,|                    d|           |                    d|           |dk    r|                    d|            t          | j
        |          |fi | d S )Nr   )arclinefilloutlinerL   r   )r:   r   r   r   r'   r>   r   Path
setdefaultgetattrr=   )
r   rC   rD   rE   rG   rI   rN   rM   r   paths
             r   renderzDraw.renderR   sT    $c3 	 iGIEEs## 	 kGKEeU## 	;DDU## 	9D> 	>"%%DNN4>***B  fg....fd+++i111<<gu---	2r,,V,,,,,r   offsettuple[float, float]c                *    |\  }}dd|dd|f| _         dS )zSets a transformation offset.r   r   N)r>   )r   rT   xoffsetyoffsets       r   settransformzDraw.settransformv   s$    #'QAw7r   startr/   endoptionsc                .     | 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`
        rK   rZ   r[   NrS   r   rD   rE   rZ   r[   r\   s         r   rK   zDraw.arc{   s2     	E2sCWCCEsCCCCCCr   c                .     | 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`
        chordr^   Nr_   r`   s         r   rb   z
Draw.chord   s2     	GREwEEeEEEEEEr   c                &     | j         d||g|R   dS )z
        Draws an ellipse inside the given bounding box.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse`
        ellipseNr_   r   rD   rE   r\   s       r   rd   zDraw.ellipse   s(     	Ir31111111r   c                &     | j         d||g|R   dS )z
        Draws a line between the coordinates in the ``xy`` list.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line`
        rL   Nr_   re   s       r   rL   z	Draw.line   s(     	FB.g......r   c                .     | 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`
        pieslicer^   Nr_   r`   s         r   rh   zDraw.pieslice   s2     	JCH'HHCHHHHHHr   c                &     | 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`
        polygonNr_   re   s       r   rj   zDraw.polygon   s(     	Ir31111111r   c                &     | j         d||g|R   dS )zg
        Draws a rectangle.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle`
        	rectangleNr_   re   s       r   rl   zDraw.rectangle   s(     	KS37333333r   textr   r2   r*   c                    | j         r0t          j        |          }|                     | j                    |}| j                            |||j        |j                   dS )zw
        Draws the string at the given position.

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text`
        )r2   rM   N)r>   r   rO   r=   rm   r2   r   r   rD   rm   r2   rR   s        r   rm   z	Draw.text   s\     > 	>"%%DNN4>***B	r4didjAAAAAr   !tuple[float, float, float, float]c                    | j         r0t          j        |          }|                     | j                    |}| j                            |||j                  S )z
        Returns bounding box (in pixels) of given text.

        :return: ``(left, top, right, bottom)`` bounding box

        .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textbbox`
        r2   )r>   r   rO   r=   textbboxr2   ro   s        r   rs   zDraw.textbbox   sU     > 	>"%%DNN4>***By!!"d!;;;r   c                D    | j                             ||j                  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`
        rr   )r=   
textlengthr2   )r   rm   r2   s      r   ru   zDraw.textlength   s!     y##Dty#999r   )NN)r5   r6   r.   r7   r   r8   r   r   )r   r@   r   )rC   r   rD   r   rE   rF   rG   rH   rI   r   r   r   )rT   rU   r   r   )rD   r   rE   rF   rZ   r/   r[   r/   r\   r   r   r   )rD   r   rE   rF   r\   r   r   r   )rD   rU   rm   r   r2   r*   r   r   )rD   rU   rm   r   r2   r*   r   rp   )rm   r   r2   r*   r   r/   )r!   r"   r#   r$   r   rB   rS   rY   rK   rb   rd   rL   rh   rj   rl   rm   rs   ru   r%   r   r   r4   r4   ;   sc         488<	V V V V V    %)"- "- "- "- "-H8 8 8 8
D D D D F F F F 2 2 2 2/ / / /I I I I 2 2 2 24 4 4 4
B 
B 
B 
B< < < < : : : : : :r   r4   N)r$   
__future__r   typingr   r   r    r   r	   r
   r   r   _typingr   r   r   r'   r*   r4   r%   r   r   <module>rz      s7  ( 
 # " " " " " ( ( ( ( ( ( ( ( ( ( @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + +       . . . . . . . .3 3 3 3 3 3 3 3x: x: x: x: x: x: x: x: x: x:r   