§
    aÒ³g;  ã                  ó¾   — 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       úL/var/www/html/mpstechhub/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Ñ-Ô-ˆŒ
ÝÔ& t¨TÑ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   € õ �e�SÑ!Ô!ð 	2Øˆ|ØV�Ý  ‘o”oÐ%Ý”I˜e T¨5Ñ1Ô1ˆEÝ”N 5Ñ)Ô)ˆŒ	ØˆŒ
Ø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  € ð Ðˆ�$ØˆÝ�c�3ÑÔð 	 Ø”iˆGØ”IˆEˆEÝ˜�sÑ#Ô#ð 	 Ø”kˆGØ”KˆEÝ�e�UÑ#Ô#ð 	Ø”;ˆDˆDÝ˜�UÑ#Ô#ð 	Ø”9ˆDàŒ>ð 	Ý”> "Ñ%Ô%ˆDØ�NŠN˜4œ>Ñ*Ô*Ð*ØˆBà�Ð Ð Ø×Ò˜f gÑ.Ô.Ð.Ð.à×Ò˜f dÑ+Ô+Ð+Ø×Ò˜i¨Ñ1Ô1Ð1Ø�Š<ˆ<Ø×Ò˜g uÑ-Ô-Ð-Ø��”	˜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 ¨¨A¨wÐ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   € ð 	ˆŒ�E˜2˜sÐC WÐCÐC°E¸sÐ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   € ð 	ˆŒ�G˜R ÐE wÐEÐE°eÀÐ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(   € ð 	ˆŒ�I˜r 3Ð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(   € ð 	ˆŒ�F˜B Ð. 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(   € ð 	ˆŒ�I˜r 3Ð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Ð3¨7Ð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Ø�NŠN˜4œ>Ñ*Ô*Ð*ØˆBØŒ	�Š�r˜4 d¤i°d´jˆÑ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Ø�NŠN˜4œ>Ñ*Ô*Ð*Øˆ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×#Ò# D¨t¬yÐ#Ñ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  € € € € € ðð ð 48Ø8<ð	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   