§
    B! h-¬  ã                  ó0  — U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZ ddlmZmZ ddlmZ dd	lmZ ej        j        Zd
ed<   dZerddlmZmZ eeeedf         ef         Z 	  G d„ d¦  «        Z!d1d2d„Z"	 d3d4d„Z#	 	 d5d6d&„Z$d7d-„Z%d8d0„Z&dS )9é    )ÚannotationsN)ÚSequence)Ú
ModuleType)ÚAnyÚAnyStrÚCallableÚUnionÚcasté   )ÚImageÚ
ImageColor)Ú	deprecate)ÚCoordsz!Callable[[], Image.core._Outline]ÚOutlineF)Ú
ImageDraw2Ú	ImageFont.c                  óÄ  — e Zd ZU dZded<   dYdZd
„Zd[d„Zd\d„Z	 dYd]d„Z	 	 d^d_d„Z		 dYd`d „Z
	 	 	 dadbd"„Z	 	 	 dadcd#„Z	 	 	 daddd&„Z	 	 	 dedfd)„Z	 	 dgdhd,„Z	 	 	 dadbd-„ZdYdid.„Z	 	 	 dadcd/„Z	 	 	 	 djdkd4„Z	 	 	 dadcd5„Z	 	 	 	 djdd6œdld9„Zdmd=„Z	 	 	 	 	 	 	 	 	 	 	 dndodP„ZdpdR„Z	 	 	 	 	 	 	 	 	 	 	 dnddSœdqdT„Z	 	 	 	 	 drddSœdsdU„Z	 	 	 	 	 	 	 	 	 dtddSœdudW„Z	 	 	 	 	 	 	 	 	 dtddSœdudX„ZdS )vÚ	ImageDrawNúNImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | NoneÚfontÚimúImage.ImageÚmodeú
str | NoneÚreturnÚNonec                óP  — |                      ¦   «          |j        r|                     ¦   «          d}|€|j        }||j        k    r%|dk    r|j        dk    rd}nd}t	          |¦  «        ‚|dk    r|j        | _        nd| _        || _        |j        | _        t          j	         
                    | j        |¦  «        | _
        || _        |dv r | j
                             d¦  «        | _        n| j
                             d	¦  «        | _        |d
v rd| _        nd| _        d| _        dS )a˜  
        Create a drawing instance.

        :param im: The image to draw in.
        :param mode: Optional mode to use for color values.  For RGB
           images, this argument can be RGB or RGBA (to blend the
           drawing into the image).  For all other modes, this argument
           must be the same as the image mode.  If omitted, the mode
           defaults to the mode of the image.
        r   NÚRGBAÚRGBr   zmode mismatchÚP)ÚIÚFéÿÿÿÿ)Ú1r    r!   r"   r$   ÚLF)ÚloadÚreadonlyÚ_copyr   Ú
ValueErrorÚpaletteÚ_imager   r   ÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr   r   ÚblendÚmsgs        úGc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\PIL/ImageDraw.pyÚ__init__zImageDraw.__init__B   s  € ð 	�Š‰	Œ	ˆ	ØŒ;ð 	Ø�HŠH‰JŒJˆJØˆØˆ<Ø”7ˆDØ�2”7Š?ˆ?Ø�vŠ~ˆ~ "¤'¨UÒ"2Ð"2Ø��à%�Ý  ‘o”oÐ%Ø�3Š;ˆ;Øœ:ˆDŒLˆLàˆDŒLØˆŒØ”%ˆŒÝ”J—O’O D¤G¨UÑ3Ô3ˆŒ	ØˆŒ	Ø�:ÐÐØ”y×)Ò)¨!Ñ,Ô,ˆDŒHˆHà”y×)Ò)¨"Ñ-Ô-ˆDŒHØÐ'Ð'Ð'àˆDŒMˆMàˆDŒMØˆŒ	ˆ	ˆ	ó    úGImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFontc                óR   — | j         sddlm}  |j        ¦   «         | _         | j         S )a=  
        Get the current default font.

        To set the default font for this ImageDraw instance::

            from PIL import ImageDraw, ImageFont
            draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

        To set the default font for all future ImageDraw instances::

            from PIL import ImageDraw, ImageFont
            ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

        If the current default font is ``None``,
        it is initialized with ``ImageFont.load_default()``.

        :returns: An image font.r   ©r   )r   Ú r   Úload_default)r2   r   s     r5   ÚgetfontzImageDraw.getfontl   s:   € ð( Œyð 	1à#Ð#Ð#Ð#Ð#Ð#à.˜	Ô.Ñ0Ô0ˆDŒIØŒyÐr7   Ú	font_sizeúfloat | Nonec                óZ   — |�ddl m}  |j        |¦  «        S |                      ¦   «         S )Nr   r:   )r;   r   r<   r=   )r2   r>   r   s      r5   Ú_getfontzImageDraw._getfont‡   s=   € ð Ð Ø#Ð#Ð#Ð#Ð#Ð#à)�9Ô)¨)Ñ4Ô4Ð4à—<’<‘>”>Ð!r7   r/   ú_Ink | Noner1   útuple[int | None, int | None]c                óh  — d }d }|€|€| j         r	| j        }�n| j        }�n|�…t          |t          ¦  «        rt	          j        || j        ¦  «        }| j        r5t          |t          ¦  «        r | j                             || j	        ¦  «        }| j
                             |¦  «        }|�…t          |t          ¦  «        rt	          j        || j        ¦  «        }| j        r5t          |t          ¦  «        r | j                             || j	        ¦  «        }| j
                             |¦  «        }||fS ©N)r1   r/   Ú
isinstanceÚstrr   Úgetcolorr   r*   Útupler+   r-   r.   )r2   r/   r1   Ú
result_inkÚresult_fills        r5   Ú_getinkzImageDraw._getink‘   s,  € ð ˆ
ØˆØˆ;˜4˜<ØŒyð &Ø"œh�‘à!œX�
‘
àˆÝ˜c¥3Ñ'Ô'ð >Ý$Ô-¨c°4´9Ñ=Ô=�CØ”<ð B¥J¨sµEÑ$:Ô$:ð BØœ,×/Ò/°°T´[ÑAÔA�CØ!œY×/Ò/°Ñ4Ô4�
ØÐÝ˜d¥CÑ(Ô(ð @Ý%Ô.¨t°T´YÑ?Ô?�DØ”<ð D¥J¨tµUÑ$;Ô$;ð DØœ<×0Ò0°°t´{ÑCÔC�DØ"œi×0Ò0°Ñ6Ô6�Ø˜;Ð&Ð&r7   r   Úxyr   ÚstartÚfloatÚendÚwidthÚintc                óz   — |                       |¦  «        \  }}|� | j                             |||||¦  «         dS dS )zDraw an arc.N)rL   r-   Údraw_arc)r2   rM   rN   rP   r1   rQ   r/   s          r5   ÚarczImageDraw.arcª   sI   € ð —L’L Ñ&Ô&‰	ˆˆTØˆ?ØŒI×Ò˜r 5¨#¨s°EÑ:Ô:Ð:Ð:Ð:ð ˆ?r7   úSequence[int]Úbitmapc                ó°   — |                      ¦   «          |                      |¦  «        \  }}|€|}|�#| j                             ||j        |¦  «         dS dS )zDraw a bitmap.N)r&   rL   r-   Údraw_bitmapr   )r2   rM   rW   r1   r/   s        r5   rW   zImageDraw.bitmap·   s^   € ð 	�Š‰ŒˆØ—L’L Ñ&Ô&‰	ˆˆTØˆ;ØˆCØˆ?ØŒI×!Ò! " f¤i°Ñ5Ô5Ð5Ð5Ð5ð ˆ?r7   Úoutlinec                óÞ   — |                       ||¦  «        \  }}|�| j                             ||||d¦  «         |�-||k    r)|dk    r%| j                             ||||d|¦  «         dS dS dS dS )zDraw a chord.Nr   r   )rL   r-   Ú
draw_chord©	r2   rM   rN   rP   r1   rZ   rQ   r/   Úfill_inks	            r5   ÚchordzImageDraw.chordÂ   s‰   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI× Ò   U¨C°¸1Ñ=Ô=Ð=Øˆ?˜s hš˜°5¸A²:°:ØŒI× Ò   U¨C°°a¸Ñ?Ô?Ð?Ð?Ð?ð ˆ?˜˜°:°:r7   c                óÖ   — |                       ||¦  «        \  }}|�| j                             ||d¦  «         |�+||k    r'|dk    r#| j                             ||d|¦  «         dS dS dS dS )zDraw an ellipse.Nr   r   )rL   r-   Údraw_ellipse©r2   rM   r1   rZ   rQ   r/   r^   s          r5   ÚellipsezImageDraw.ellipseÒ   s�   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×"Ò" 2 x°Ñ3Ô3Ð3Øˆ?˜s hš˜°5¸A²:°:ØŒI×"Ò" 2 s¨A¨uÑ5Ô5Ð5Ð5Ð5ð ˆ?˜˜°:°:r7   úSequence[float]Úradiusc                óŠ   — |d         |z
  |d         |z
  |d         |z   |d         |z   f}|                       ||||¦  «         dS )z4Draw a circle given center coordinates and a radius.r   r   N)rc   )r2   rM   re   r1   rZ   rQ   Ú
ellipse_xys          r5   ÚcirclezImageDraw.circleà   sP   € ð ˜”e˜f‘n b¨¤e¨f¡n°b¸´e¸f±nÀbÈÄeÈfÁnÐUˆ
Ø�Š�Z  w°Ñ6Ô6Ð6Ð6Ð6r7   r   Újointc                ó  ‡‡— |                       |¦  «        d         }|��b| j                             ‰|‰¦  «         |dk    �rA‰dk    �r<t          ‰d         t          t
          f¦  «        r,t          t          t          t                            ‰¦  «        }n*ˆfd„t          dt          ‰¦  «        d¦  «        D ¦   «         }t          dt          |¦  «        dz
  ¦  «        D �]¤}||         }d„ ||dz
           |f|||dz            ffD ¦   «         }	|	d         |	d         k    rŒBdˆfd„}
|	d         |	d         k    o|	d         dz
  |	d         k    p&|	d         |	d         k     o|	d         dz   |	d         k    }|d         ‰dz  z
  dz   |d         ‰dz  z
  dz   f|d         ‰dz  z   dz
  |d         ‰dz  z   dz
  fg}|r|	d         dz   |	d         dz   }}n|	d         dz
  |	d         dz
  }}|                      ||dz
  |dz
  |¦  «         ‰dk    rq|r, |
||	d         dz   ¦  «        | |
||	d         dz   ¦  «        g}n+ |
||	d         dz
  ¦  «        | |
||	d         dz
  ¦  «        g}|                      ||d¬¦  «         �Œ dS dS dS dS )z6Draw a line, or a connected sequence of line segments.r   NÚcurveé   c                ó€   •— g | ]:}t          t          t                   t          ‰||d z   …         ¦  «        ¦  «        ‘Œ;S )é   )r
   r   rO   rI   )Ú.0ÚirM   s     €r5   ú
<listcomp>z"ImageDraw.line.<locals>.<listcomp>ü   sK   ø€ ð ð ð àõ �X¥eœ_­e°B°q¸1¸q¹5°y´MÑ.BÔ.BÑCÔCðð ð r7   rn   r   c           
     ó¤   — g | ]M\  }}t          j        t          j        |d          |d          z
  |d         |d         z
  ¦  «        ¦  «        dz  ‘ŒNS )r   r   éh  )ÚmathÚdegreesÚatan2)ro   rN   rP   s      r5   rq   z"ImageDraw.line.<locals>.<listcomp>  sg   € ð ð ð ñ '˜E 3õ œ¥T¤Z°°A´¸¸q¼Ñ0AÀ5ÈÄ8ÈcÐRSÌfÑCTÑ%UÔ%UÑVÔVØñðð ð r7   Úcoordrd   ÚanglerO   r   útuple[float, ...]c                ó  •— | \  }}|dz  }‰dz  dz
  }t          d„ ||t          j        t          j        |¦  «        ¦  «        z  f||t          j        t          j        |¦  «        ¦  «        z  ffD ¦   «         ¦  «        S )NéZ   rn   r   c              3  ó~   K  — | ]8\  }}||d k    rt          j        |¦  «        nt          j        |¦  «        z   V — Œ9dS )r   N)rt   ÚfloorÚceil)ro   ÚpÚp_ds      r5   ú	<genexpr>z9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>  s[   è è € ð %ð %á &  3ð °C¸!²G°G¥¤¨C¡¤ ÅÄÈ3ÁÄÑPð%ð %ð %ð %ð %ð %r7   )rI   rt   ÚcosÚradiansÚsin)rw   rx   ÚxÚyÚdistancerQ   s        €r5   Úcoord_at_anglez&ImageDraw.line.<locals>.coord_at_angle  s˜   ø€ ð  %™˜˜1Ø ™˜Ø#(¨1¡9¨q¡=˜Ý$ð %ð %ð "# H­t¬x½¼ÀUÑ8KÔ8KÑ/LÔ/LÑ$LÐ MØ!" H­t¬x½¼ÀUÑ8KÔ8KÑ/LÔ/LÑ$LÐ Mð+ð%ñ %ô %ñ  ô  ð r7   é´   r{   é   é   )rQ   )rw   rd   rx   rO   r   ry   )rL   r-   Ú
draw_linesrF   ÚlistrI   r
   r   rO   ÚrangeÚlenÚpiesliceÚline)r2   rM   r1   rQ   ri   r/   Úpointsrp   ÚpointÚanglesrˆ   ÚflippedÚcoordsrN   rP   Ú
gap_coordss    ` `            r5   r‘   zImageDraw.lineì   s7  øø€ ð �lŠl˜4Ñ Ô  Ô#ˆØ‰?ØŒI× Ò   S¨%Ñ0Ô0Ð0Ø˜ÒÑ E¨A¢I¡Iå˜b œe¥d­E ]Ñ3Ô3ð Ý!¥(­8µE¬?Ô";¸RÑ@Ô@�F�Fðð ð ð å!& q­#¨b©'¬'°1Ñ!5Ô!5ðñ ô �Fõ ˜q¥# f¡+¤+°¡/Ñ2Ô2ð 7=ñ 7=�AØ" 1œI�Eðð ð $ A¨¡Eœ]¨EÐ2Ø" F¨1¨q©5¤MÐ2ð+ðñ ô �Fð ˜a”y F¨1¤IÒ-Ð-à ðð ð ð ð ð ð ˜qœ	 F¨1¤IÒ-ÐM°&¸´)¸c±/ÀFÈ1ÄIÒ2MðQà  œ) f¨Q¤iÒ/ÐO°F¸1´IÀ±OÀfÈQÄiÒ4Oð ð ˜qœ E¨A¡IÑ-°Ñ1°5¸´8¸eÀa¹iÑ3GÈ!Ñ3KÐLØ˜qœ E¨A¡IÑ-°Ñ1°5¸´8¸eÀa¹iÑ3GÈ!Ñ3KÐLð�Fð ð FØ&,¨Q¤i°"¡n°f¸Q´iÀ"±n˜s˜˜à&,¨Q¤i°"¡n°f¸Q´iÀ"±n˜s˜Ø—M’M &¨%°"©*°c¸B±hÀÑEÔEÐEà˜q’y�yà"ð à . ¨u°f¸Q´iÀ"±nÑ EÔ EØ %Ø . ¨u°f¸Q´iÀ"±nÑ EÔ Eð*˜J˜Jð !/ ¨u°f¸Q´iÀ"±nÑ EÔ EØ %Ø . ¨u°f¸Q´iÀ"±nÑ EÔ Eð*˜Jð
 Ÿ	š	 *¨d¸!˜	Ñ<Ô<Ð<ùðE ˆ?àÐ I Ið7=ð 7=r7   ÚshapeúImage.core._Outlinec                óì   — |                      ¦   «          |                      ||¦  «        \  }}|�| j                             ||d¦  «         |�$||k    r | j                             ||d¦  «         dS dS dS )z(Experimental) Draw a shape.Nr   r   )ÚcloserL   r-   Údraw_outline)r2   r˜   r1   rZ   r/   r^   s         r5   r˜   zImageDraw.shape9  s€   € ð 	�Š‰ŒˆØŸš W¨dÑ3Ô3‰ˆˆXØÐØŒI×"Ò" 5¨(°AÑ6Ô6Ð6Øˆ?˜s hš˜ØŒI×"Ò" 5¨#¨qÑ1Ô1Ð1Ð1Ð1ð ˆ?˜˜r7   c                óÞ   — |                       ||¦  «        \  }}|�| j                             ||||d¦  «         |�-||k    r)|dk    r%| j                             ||||d|¦  «         dS dS dS dS )zDraw a pieslice.Nr   r   )rL   r-   Údraw_pieslicer]   s	            r5   r�   zImageDraw.piesliceG  s‰   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×#Ò# B¨¨s°H¸aÑ@Ô@Ð@Øˆ?˜s hš˜°5¸A²:°:ØŒI×#Ò# B¨¨s°C¸¸EÑBÔBÐBÐBÐBð ˆ?˜˜°:°:r7   c                ót   — |                       |¦  «        \  }}|�| j                             ||¦  «         dS dS )z#Draw one or more individual pixels.N)rL   r-   Údraw_points)r2   rM   r1   r/   s       r5   r“   zImageDraw.pointW  sA   € à—L’L Ñ&Ô&‰	ˆˆTØˆ?ØŒI×!Ò! " cÑ*Ô*Ð*Ð*Ð*ð ˆ?r7   c                ó  — |                       ||¦  «        \  }}|�| j                             ||d¦  «         |�È||k    rÄ|dk    rÀ|dk    r| j                             ||d|¦  «         dS | j        �–t	          j        d| j        j        ¦  «        }|                       d¦  «        d         }t          |¦  «        }	|	j                             ||d¦  «         | j                             ||d|dz  dz
  |j        ¦  «         dS dS dS dS dS )zDraw a polygon.Nr   r   r$   rn   )rL   r-   Údraw_polygonr   r   ÚnewÚsizeÚDraw)
r2   rM   r1   rZ   rQ   r/   r^   ÚmaskÚmask_inkr-   s
             r5   ÚpolygonzImageDraw.polygon]  s  € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×"Ò" 2 x°Ñ3Ô3Ð3Øˆ?˜s hš˜°5¸A²:°:Ø˜ŠzˆzØ”	×&Ò& r¨3°°5Ñ9Ô9Ð9Ð9Ð9Ø”Ð$õ ”y  d¤g¤lÑ3Ô3�ØŸ<š<¨™?œ?¨1Ô-�Ý˜D‘z”z�Ø”	×&Ò& r¨8°QÑ7Ô7Ð7à”	×&Ò& r¨3°°5¸1±9¸q±=À$Ä'ÑJÔJÐJÐJÐJð ˆ?˜˜°:°:ð %Ð$r7   Úbounding_circleú!Sequence[Sequence[float] | float]Ún_sidesÚrotationc                óX   — t          |||¦  «        }|                      ||||¦  «         dS )zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr¨   )r2   r©   r«   r¬   r1   rZ   rQ   rM   s           r5   Úregular_polygonzImageDraw.regular_polygonu  s3   € õ /¨ÀÈÑRÔRˆØ�Š�R˜˜w¨Ñ.Ô.Ð.Ð.Ð.r7   c                óÖ   — |                       ||¦  «        \  }}|�| j                             ||d¦  «         |�+||k    r'|dk    r#| j                             ||d|¦  «         dS dS dS dS )zDraw a rectangle.Nr   r   )rL   r-   Údraw_rectanglerb   s          r5   Ú	rectanglezImageDraw.rectangle‚  s�   € ð Ÿš W¨dÑ3Ô3‰ˆˆXØÐØŒI×$Ò$ R¨°1Ñ5Ô5Ð5Øˆ?˜s hš˜°5¸A²:°:ØŒI×$Ò$ R¨¨a°Ñ7Ô7Ð7Ð7Ð7ð ˆ?˜˜°:°:r7   )Úcornersr³   ú$tuple[bool, bool, bool, bool] | Nonec               ó$	  ‡ ‡‡‡‡‡‡‡‡‡‡‡— t          |d         t          t          f¦  «        r5t          t          t          t
                            |¦  «        \  \  ŠŠ\  ŠŠn%t          t          t
                   |¦  «        \  ŠŠŠŠ‰‰k     rd}t          |¦  «        ‚‰‰k     rd}t          |¦  «        ‚‰€dŠ|dz  Št          ‰¦  «        Št          ‰¦  «        Št          ‰¦  «        Št          ‰¦  «        Šd\  ŠŠt          ‰¦  «        rB‰‰‰z
  dz
  k    Š‰r‰‰z
  Š‰‰‰z
  dz
  k    Š‰r‰‰z
  Š‰r‰r‰  	                    |||‰¦  «        S ‰dk    st          ‰¦  «        s‰                      |||‰¦  «        S t          ‰dz  ¦  «        }‰                      ||¦  «        \  ŠŠdˆˆˆˆˆˆˆ ˆˆˆˆˆfd„}	‰��2 |	d¦  «         ‰r-‰ j                             ‰‰|z   dz   ‰‰|z
  dz
  f‰d¦  «         n>‰|z
  dz
  ‰|z   dz   k    r,‰ j                             ‰|z   dz   ‰‰|z
  dz
  ‰f‰d¦  «         ‰s¸‰s¶‰‰‰|z   ‰g}
‰d         r|
dxx         |dz   z  cc<   ‰d         r|
dxx         |dz   z  cc<   ‰ j                             |
‰d¦  «         ‰|z
  ‰‰‰g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         ‰��—‰‰k    �r’‰dk    �r� |	d¦  «         ‰s¼‰‰‰‰‰z   dz
  g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         ‰‰‰z
  dz   ‰‰g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         ‰sÄ‰‰‰‰z   dz
  ‰g}
‰d         r|
dxx         |dz   z  cc<   ‰d         r|
dxx         |dz   z  cc<   ‰ j                             |
‰d¦  «         ‰‰z
  dz   ‰‰‰g}‰d         r|dxx         |dz   z  cc<   ‰d         r|dxx         |dz   z  cc<   ‰ j                             |‰d¦  «         dS dS dS dS dS )zDraw a rounded rectangle.r   z&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTrn   )FFr   r�   Úboolr   r   c                ó¬  •— ‰r‰‰‰‰z   ‰‰z   fddf‰‰‰z
  ‰‰z   ‰fddff}n�‰r‰‰‰‰z   ‰‰z   fddf‰‰z
  ‰‰‰‰z   fddff}n`t          ˆfd„t          ‰‰‰‰z   ‰‰z   fddf‰‰z
  ‰‰‰‰z   fddf‰‰z
  ‰‰z
  ‰‰fddf‰‰‰z
  ‰‰z   ‰fddff¦  «        D ¦   «         ¦  «        }|D ]-}| r ‰	j        j        |‰dfz   Ž  Œ ‰	j        j        |‰‰
fz   Ž  Œ.d S )Nr‰   rs   r   r{   é  c              3  ó2   •K  — | ]\  }}‰|         ¯|V — Œd S rE   © )ro   rp   Úpartr³   s      €r5   r�   zDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Õ  sG   øè è € ð ð á˜˜4ð ˜q”zðØðð ð ð ð ð r7   r   )rI   Ú	enumerater-   rž   rT   )r�   Úpartsr»   r³   Údr^   Úfull_xÚfull_yr/   r2   rQ   Úx0Úx1Úy0Úy1s      €€€€€€€€€€€€r5   Údraw_cornersz1ImageDraw.rounded_rectangle.<locals>.draw_cornersÅ  s¨  ø€ àð ð ˜"˜b 1™f b¨1¡fÐ-¨s°CÐ8Ø˜"˜q™& " q¡&¨"Ð-¨q°#Ð6ð��ð ð ð ˜"˜b 1™f b¨1¡fÐ-¨r°3Ð7Ø˜1‘f˜b " b¨1¡fÐ-¨s°BÐ7ð��õ ð ð ð ð å#,à  " b¨1¡f¨b°1©fÐ5°s¸CÐ@Ø  1™f b¨"¨b°1©fÐ5°s¸CÐ@Ø  1™f b¨1¡f¨b°"Ð5°q¸"Ð=Ø  " q¡&¨"¨q©&°"Ð5°r¸3Ð?ð	ñ$ô $ðñ ô ñ ô �ð ð ?ð ?�Øð ?Ø+�D”IÔ+¨d°hÀ°]Ñ.BÐDÐDÐDà&�D”IÔ&¨°°e°Ñ)<Ð>Ð>Ð>ð	?ð ?r7   Tr‹   F)r�   r¶   r   r   )rF   r�   rI   r
   r   rO   r)   ÚroundÚallrc   Úanyr²   rR   rL   r-   r±   )r2   rM   re   r1   rZ   rQ   r³   r4   ÚrrÅ   ÚleftÚrightÚtopÚbottomr¾   r^   r¿   rÀ   r/   rÁ   rÂ   rÃ   rÄ   s   `    ``       @@@@@@@@@r5   Úrounded_rectanglezImageDraw.rounded_rectangle�  sô  øøøøøøøøøøøø€ õ �b˜”e�d¥E˜]Ñ+Ô+ð 	7Ý!%¥h­x½¬Ô&?ÀÑ!DÔ!DÑ‰HˆR�‘h�r˜2˜2å!¥(­5¤/°2Ñ6Ô6‰NˆB��B˜Ø�Š7ˆ7Ø:ˆCÝ˜S‘/”/Ð!Ø�Š7ˆ7Ø:ˆCÝ˜S‘/”/Ð!Øˆ?Ø.ˆGà�Q‰Jˆå�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆØ%‰ˆ�Ýˆw‰<Œ<ð 	>Ø˜"˜r™' A™+Ò%ˆFØð à˜‘G�Ø˜"˜r™' A™+Ò%ˆFØð à˜‘G�Øð >˜&ð >à—|’| B¨¨g°uÑ=Ô=Ð=à�Š6ˆ6�˜W™œˆ6ð —>’> " d¨G°UÑ;Ô;Ð;å��Q‘‰KŒKˆØŸš W¨dÑ3Ô3‰ˆˆXð 	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ð  	?ðD ÑØˆL˜ÑÔÐàð XØ”	×(Ò(¨"¨b°1©f°q©j¸"¸bÀ1¹fÀq¹jÐ)IÈ8ÐUVÑWÔWÐWÐWØ�a‘˜!‘˜b 1™f q™jÒ(Ð(Ø”	×(Ò(¨"¨q©&°1©*°b¸"¸q¹&À1¹*ÀbÐ)IÈ8ÐUVÑWÔWÐWØð = &ð =Ø˜B  Q¡¨Ð+�Ø˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ”	×(Ò(¨¨x¸Ñ;Ô;Ð;à˜a™  R¨Ð,�Ø˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ”	×(Ò(¨°¸!Ñ<Ô<Ð<Ø‰?˜s hš™°5¸A²:±:ØˆL˜ÑÔÐàð 9Ø˜2˜r 2¨¡:°¡>Ð2�Ø˜1”:ð $Ø˜�F�F”F˜a !™e‘O�F�F‘FØ˜1”:ð $Ø˜�F�F”F˜a !™e‘O�F�F‘FØ”	×(Ò(¨¨c°1Ñ5Ô5Ð5à˜b 5™j¨1™n¨b°"Ð5�Ø˜1”:ð 'Ø˜1�I�I”I  Q¡Ñ&�I�I‘IØ˜1”:ð 'Ø˜1�I�I”I  Q¡Ñ&�I�I‘IØ”	×(Ò(¨°°aÑ8Ô8Ð8Øð 8Ø˜B  U¡
¨Q¡°Ð3�Ø˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ˜1”:ð %Ø˜�G�G”G˜q 1™uÑ$�G�G‘GØ”	×(Ò(¨¨s°AÑ6Ô6Ð6à˜e™ a™¨¨R°Ð4�Ø˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ˜1”:ð &Ø˜!�H�H”H  A¡Ñ%�H�H‘HØ”	×(Ò(¨°°QÑ7Ô7Ð7Ð7Ð7ð= ˆ?˜˜°:°:ð"8ð 8r7   Útextr   r¶   c                ó<   — t          |t          ¦  «        rdnd}||v S )Nú
ó   
)rF   rG   )r2   rÏ   Úsplit_characters      r5   Ú_multiline_checkzImageDraw._multiline_check  s%   € Ý",¨Tµ3Ñ"7Ô"7ÐB˜$˜$¸Uˆà $Ð&Ð&r7   rl   rÊ   Fútuple[float, float]ÚanchorÚspacingÚalignrG   Ú	directionÚfeaturesúlist[str] | NoneÚlanguageÚstroke_widthÚstroke_fillÚembedded_colorÚargsr   Úkwargsc                óâ  ‡ ‡‡‡‡‡‡	‡
‡‡‡— ‰r‰ j         dvrd}t          |¦  «        ‚‰€(‰                      ‰                     d¦  «        ¦  «        Š‰                      ‰¦  «        r!‰                      ‰‰|‰‰||‰‰	‰
||‰¦  «        S dˆ fd	„}ddˆˆˆˆˆ	ˆˆˆ
ˆ ˆˆfd„} ||¦  «        }|�Cd}|r|� ||¦  «        n|}|�! |||¦  «         ||k    r ||¦  «         dS dS  ||¦  «         dS dS )z
Draw text.©r   r   ú3Embedded color supported only in RGB and RGBA modesNr>   r1   rB   r   rR   c                óH   •— ‰                      | ¦  «        \  }}|€|€J ‚|S |S rE   )rL   )r1   r/   r^   r2   s      €r5   ÚgetinkzImageDraw.text.<locals>.getinkQ  s3   ø€ Ø ŸLšL¨Ñ.Ô.‰MˆC�Øˆ{ØÐ+Ð+Ð+Ø�ØˆJr7   r   r/   rÝ   rO   r   c                ó´  •— ‰j         }|dk    r‰rd}g }t          d¦  «        D ]*}|                     t          ‰|         ¦  «        ¦  «         Œ+t	          j        ‰d         ¦  «        d         t	          j        ‰d         ¦  «        d         f}	  ‰j        ‰|g‰¢R ‰‰‰|d‰| |dœ‰¤Ž\  }}|d         |d         z   |d         |d         z   g}nQ# t          $ rD 	  ‰j        ‰|‰‰‰|‰| g‰¢R d|i‰¤Ž}n%# t          $ r ‰                     ‰¦  «        }Y nw xY wY nw xY w|dk    r”|| 
                    d¦  «        }}t          j        d	| ¦  «        d         }	|                     d|	¦  «         |\  }
}‰j        �>‰j                             ||
||
|j        d         z   ||j        d         z   f|¦  «         d S d S ‰j                             ||| ¦  «         d S )
Nr   r   rn   r   T)rÙ   rÚ   rÜ   rÝ   Ústroke_filledrÖ   r/   rN   rN   r‹   rp   )r0   rŽ   ÚappendrR   rt   ÚmodfÚgetmask2ÚAttributeErrorÚgetmaskÚ	TypeErrorÚgetbandÚstructÚpackÚfillbandr   Úpaster¤   r-   rY   )r/   rÝ   r   rw   rp   rN   r¦   ÚoffsetÚcolorÚ	ink_alphar…   r†   rÖ   rà   rÙ   rß   rÚ   r   rá   rÜ   r2   rÏ   rM   s               €€€€€€€€€€€r5   Ú	draw_textz!ImageDraw.text.<locals>.draw_textX  s…  ø€ Ø”=ˆDØ˜qÒ Ð  ^Ð Ø�ØˆEÝ˜1‘X”Xð )ð )�Ø—’�S  A¤™ZœZÑ(Ô(Ð(Ð(Ý”Y˜r !œuÑ%Ô% aÔ(­$¬)°B°q´EÑ*:Ô*:¸1Ô*=Ð>ˆEð .Ø,˜tœ}ØØð ð ð ð  ð (Ø%Ø%Ø!-Ø"&Ø!ØØð ð  ð ð ð  ‘��fð ˜qœ F¨1¤IÑ-¨u°Q¬x¸&À¼)Ñ/CÐD��øÝ!ð .ð .ð .ð.Ø'˜4œ<ØØØ!Ø Ø Ø$ØØðð ðð ð ð $ðð !ðð �D�Døõ !ð .ð .ð .ØŸ<š<¨Ñ-Ô-�D�D�Dð.øøøøøð.øøøð" �vŠ~ˆ~ð # D§L¢L°¡O¤O�t�Ý"œK¨¨SÑ1Ô1°!Ô4�	Ø—’˜q )Ñ,Ô,Ð,Ø‘��1Ø”7Ð&Ø”G—M’MØ  1 a¨$¬)°A¬,Ñ&6¸¸D¼IÀa¼LÑ8HÐIÈ4ñô ð ð ð ð 'Ð&ð
 ”	×%Ò% e¨T°3Ñ7Ô7Ð7Ð7Ð7s7   ÂA C Ã
DÃC7Ã6DÃ7DÄDÄDÄDÄD)r1   rB   r   rR   )r   )r/   rR   rÝ   rO   r   r   )r   r)   rA   ÚgetrÔ   Úmultiline_text)r2   rM   rÏ   r1   r   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÝ   rÞ   rß   rà   rá   r4   ræ   r÷   r/   Ú
stroke_inks   ``` ``  ```  ```     r5   rÏ   zImageDraw.text!  s³  øøøøøøøøøøø€ ð0 ð 	"˜dœi¨Ð>Ð>ØGˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= §¢¨KÑ!8Ô!8Ñ9Ô9ˆDà× Ò  Ñ&Ô&ð 	Ø×&Ò&ØØØØØØØØØØØØØñô ð ð 	ð 	ð 	ð 	ð 	ð 	ð5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ð 5	8ðn ˆf�T‰lŒlˆØˆ?ØˆJØð UØ4?Ð4K˜V˜V KÑ0Ô0Ð0ÐQT�
àÐ%à�	˜* lÑ3Ô3Ð3ð ˜*Ò$Ð$Ø�I˜c‘N”N�N�N�Nð %Ð$ð �	˜#‘”���ð ˆ?r7   ú}tuple[ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont, list[tuple[tuple[float, float], str, AnyStr]]]c           	     ó�  ‡ ‡‡‡‡	‡— |€‰dk    rdnd}nEt          |¦  «        dk    rd}t          |¦  «        ‚|d         dv r‰dk    rd}t          |¦  «        ‚‰€‰                      |¦  «        Š|                     t	          |t
          ¦  «        rd	nd
¦  «        }‰                      dd‰|
¬¦  «        d         |
z   |z   }|d         }g }‰dk    r.|d         }|D ]!}|                     ||f||f¦  «         ||z  }Œ"�nEg }d}|D ]B}‰                      |‰‰‰‰	‰¬¦  «        }|                     |¦  «         t          ||¦  «        }ŒC|d         dk    r|t          |¦  «        dz
  |z  dz  z  }n$|d         dk    r|t          |¦  «        dz
  |z  z  }t          |¦  «        D �]Ÿ\  }}|d         }|||         z
  }|dv rn,|dk    r	||dz  z  }n|dk    r||z  }nd}t          |¦  «        ‚|dk    �r	|dk    �r|t          |¦  «        dz
  k    rì|                     t	          |t
          ¦  «        rdnd¦  «        }t          |¦  «        dk    r­|d         dk    r	||dz  z  }n|d         dk    r||z  }ˆˆˆˆˆ	ˆ fd„|D ¦   «         }d|d         z   }|t          |¦  «        z
  }t          |¦  «        D ]@\  }}|                     ||f||f¦  «         |||         |t          |¦  «        dz
  z  z   z  }ŒA||z  }�ŒZ|d         dk    r	||dz  z  }n|d         dk    r||z  }|                     ||f||f¦  «         ||z  }�Œ¡‰|fS )NÚttbÚltÚlarn   z#anchor must be a 2 character stringr   Útbz'anchor not supported for multiline textrÑ   rÒ   )r   r   ÚA)rÝ   r‹   r   ©rÙ   rÚ   rÜ   rß   Úmg       @r¾   )rÊ   ÚjustifyÚcenterrË   z4align must be "left", "center", "right" or "justify"r  ú ó    rÉ   c           
     óF   •— g | ]}‰                      |‰‰‰‰‰¬ ¦  «        ‘ŒS )r  )Ú
textlength)ro   ÚwordrÙ   rß   rÚ   r   rÜ   r2   s     €€€€€€r5   rq   z5ImageDraw._prepare_multiline_text.<locals>.<listcomp>  sP   ø€ ð 
'ð 
'ð 
'ð !%ð !ŸOšOØ $Ø $Ø*3Ø)1Ø)1Ø/=ð ,ñ ô ð
'ð 
'ð 
'r7   Úl)r�   r)   rA   ÚsplitrF   rG   Útextbboxré   r	  Úmaxr¼   Úsum)r2   rM   rÏ   r   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÝ   rß   r>   r4   ÚlinesÚline_spacingrÌ   r½   rÊ   r‘   ÚwidthsÚ	max_widthÚ
line_widthÚidxÚwidth_differenceÚwordsÚword_widthsÚword_anchorrp   r
  s   `  `   ``` `                  r5   Ú_prepare_multiline_textz!ImageDraw._prepare_multiline_text   sa  øøøøøø€ ð. ˆ>Ø&¨%Ò/Ð/�T�T°TˆFˆFÝ�‰[Œ[˜AÒÐØ7ˆCÝ˜S‘/”/Ð!Ø�AŒY˜$ÐÐ 9°Ò#5Ð#5Ø;ˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDà—
’
¥:¨dµCÑ#8Ô#8ÐC˜4˜4¸eÑDÔDˆà�MŠM˜& # t¸,ˆMÑGÔGÈÔJØñàñð 	ð �ŒeˆØˆØ˜ÒÐØ�a”5ˆDØð %ð %�Ø—’˜t S˜k¨6°4Ð8Ñ9Ô9Ð9Ø˜Ñ$��ñ%ð ˆFØ ˆIØð 
7ð 
7�Ø!Ÿ_š_ØØØ'Ø%Ø%Ø#1ð -ñ ô �
ð —’˜jÑ)Ô)Ð)Ý 	¨:Ñ6Ô6�	�	à�aŒy˜CÒÐØ�˜E™
œ
 Q™¨,Ñ6¸Ñ<Ñ<��Ø˜”˜cÒ!Ð!Ø�˜E™
œ
 Q™¨,Ñ6Ñ6�å& uÑ-Ô-ð 5$ñ 5$‘	��TØ˜!”u�Ø#,¨v°c¬{Ñ#:Ð ð Ð/Ð/Ð/ØØ˜hÒ&Ð&ØÐ,¨sÑ2Ñ2�D�DØ˜gÒ%Ð%ØÐ,Ñ,�D�DàP�CÝ$ S™/œ/Ð)ð ˜YÒ&Ñ&Ø(¨AÒ-Ñ-Ø�s 5™zœz¨A™~Ò-Ð-à ŸJšJ­j¸½sÑ.CÔ.CÐ'M s sÈÑNÔN�EÝ˜5‘z”z A’~�~à! !œ9¨Ò+Ð+Ø  I°¡OÑ3˜D˜DØ# AœY¨#Ò-Ð-Ø  IÑ-˜Dð
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð ).ð
'ñ 
'ô 
'˜ð '*¨F°1¬I¡o˜Ø+4µs¸;Ñ7GÔ7GÑ+GÐ(Ý'0°Ñ'7Ô'7ð Yð Y™G˜A˜tØ!ŸLšL¨4°¨+°{ÀDÐ)IÑJÔJÐJØ  K°¤NÐ5EÍÈUÉÌÐVWÉÑ5XÑ$XÑX˜D˜DØ˜|Ñ+˜Ù ð ˜!”9 Ò#Ð#ØÐ,¨sÑ2Ñ2�D�DØ˜A”Y #Ò%Ð%ØÐ,Ñ,�DØ—’˜t S˜k¨6°4Ð8Ñ9Ô9Ð9Ø�|Ñ#�‘à�Uˆ{Ðr7   )r>   c               óž   — |                       ||||||||	|
|||¦  «        \  }}|D ]&\  }}}|                      |||||||	|
|||¬¦  «         Œ'd S )N)rÙ   rÚ   rÜ   rÝ   rÞ   rß   )r  rÏ   )r2   rM   rÏ   r1   r   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÝ   rÞ   rß   r>   r  r‘   s                    r5   rù   zImageDraw.multiline_text  s¤   € ð. ×2Ò2ØØØØØØØØØØØØñ
ô 
‰ˆˆeð !&ð 	ð 	ÑˆB�˜Ø�IŠIØØØØØØ#Ø!Ø!Ø)Ø'Ø-ð ñ ô ð ð ð	ð 	r7   c               óü   — |                       |¦  «        rd}t          |¦  «        ‚|r| j        dvrd}t          |¦  «        ‚|€|                      |¦  «        }|rdn| j        }	|                     ||	|||¦  «        S )z@Get the length of a given string, in pixels with 1/64 precision.z&can't measure length of multiline textrã   rä   Nr   )rÔ   r)   r   rA   r0   Ú	getlength)
r2   rÏ   r   rÙ   rÚ   rÜ   rß   r>   r4   r   s
             r5   r	  zImageDraw.textlengthS  s�   € ð" × Ò  Ñ&Ô&ð 	"Ø:ˆCÝ˜S‘/”/Ð!Øð 	"˜dœi¨Ð>Ð>ØGˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDØ'Ð:ˆvˆv¨T¬]ˆØ�~Š~˜d D¨)°X¸xÑHÔHÐHr7   ú!tuple[float, float, float, float]c               ó   — |r| j         dvrd}t          |¦  «        ‚|€|                      |¦  «        }|                      |¦  «        r|                      |||||||||	|
|¦  «        S |rdn| j        }|                     |||||	|
|¦  «        }|d         |d         z   |d         |d         z   |d         |d         z   |d         |d         z   fS )	z2Get the bounding box of a given string, in pixels.rã   rä   Nr   r   r   rn   r‹   )r   r)   rA   rÔ   Úmultiline_textbboxr0   Úgetbbox)r2   rM   rÏ   r   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÝ   rß   r>   r4   r   Úbboxs                   r5   r  zImageDraw.textbboxp  s  € ð, ð 	"˜dœi¨Ð>Ð>ØGˆCÝ˜S‘/”/Ð!àˆ<Ø—=’= Ñ+Ô+ˆDà× Ò  Ñ&Ô&ð 	Ø×*Ò*ØØØØØØØØØØØñô ð ð (Ð:ˆvˆv¨T¬]ˆØ�|Š|Ø�$˜	 8¨X°|ÀVñ
ô 
ˆð �AŒw˜˜Aœ‰  Q¤¨"¨Q¬%¡°°a´¸2¸a¼5±À$ÀqÄ'ÈBÈqÌEÁ/ÐQÐQr7   c               óÄ  — |                       |||||||||	|
||¦  «        \  }}d }|D ]—\  }}}|                      |||||||	|
|¬¦	  «	        }|€|}Œ)t          |d         |d         ¦  «        t          |d         |d         ¦  «        t          |d         |d         ¦  «        t          |d         |d         ¦  «        f}Œ˜|€|d         |d         |d         |d         fS |S )N)rÙ   rÚ   rÜ   rÝ   rß   r   r   rn   r‹   )r  r  Úminr  )r2   rM   rÏ   r   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÝ   rß   r>   r  r"  r‘   Ú	bbox_lines                    r5   r   zImageDraw.multiline_textbbox¢  s)  € ð* ×2Ò2ØØØØØØØØØØØØñ
ô 
‰ˆˆeð :>ˆà %ð 	ð 	ÑˆB�˜ØŸšØØØØØ#Ø!Ø!Ø)Ø-ð &ñ 
ô 
ˆIð ˆ|Ø ��õ ˜˜Qœ ¨1¤Ñ.Ô.Ý˜˜Qœ ¨1¤Ñ.Ô.Ý˜˜Qœ ¨1¤Ñ.Ô.Ý˜˜Qœ ¨1¤Ñ.Ô.ð	��ð ˆ<Ø�a”5˜"˜Qœ%  A¤¨¨1¬Ð-Ð-Øˆr7   rE   )r   r   r   r   r   r   )r   r8   )r>   r?   r   r8   )r/   rB   r1   rB   r   rC   )Nr   )rM   r   rN   rO   rP   rO   r1   rB   rQ   rR   r   r   )rM   rV   rW   r   r1   rB   r   r   )NNr   )rM   r   rN   rO   rP   rO   r1   rB   rZ   rB   rQ   rR   r   r   )
rM   r   r1   rB   rZ   rB   rQ   rR   r   r   )rM   rd   re   rO   r1   rB   rZ   rB   rQ   rR   r   r   )Nr   N)
rM   r   r1   rB   rQ   rR   ri   r   r   r   ©NN)r˜   r™   r1   rB   rZ   rB   r   r   )rM   r   r1   rB   r   r   )r   NNr   )r©   rª   r«   rR   r¬   rO   r1   rB   rZ   rB   rQ   rR   r   r   )rM   r   re   rO   r1   rB   rZ   rB   rQ   rR   r³   r´   r   r   )rÏ   r   r   r¶   )NNNrl   rÊ   NNNr   NF) rM   rÕ   rÏ   r   r1   rB   r   r   rÖ   r   r×   rO   rØ   rG   rÙ   r   rÚ   rÛ   rÜ   r   rÝ   rO   rÞ   rB   rß   r¶   rà   r   rá   r   r   r   )rM   rÕ   rÏ   r   r   r   rÖ   r   r×   rO   rØ   rG   rÙ   r   rÚ   rÛ   rÜ   r   rÝ   rO   rß   r¶   r>   r?   r   rû   )rM   rÕ   rÏ   r   r1   rB   r   r   rÖ   r   r×   rO   rØ   rG   rÙ   r   rÚ   rÛ   rÜ   r   rÝ   rO   rÞ   rB   rß   r¶   r>   r?   r   r   )NNNNF)rÏ   r   r   r   rÙ   r   rÚ   rÛ   rÜ   r   rß   r¶   r>   r?   r   rO   )	NNrl   rÊ   NNNr   F)rM   rÕ   rÏ   r   r   r   rÖ   r   r×   rO   rØ   rG   rÙ   r   rÚ   rÛ   rÜ   r   rÝ   rO   rß   r¶   r>   r?   r   r  )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r6   r=   rA   rL   rU   rW   r_   rc   rh   r‘   r˜   r�   r“   r¨   r¯   r²   rÎ   rÔ   rÏ   r  rù   r	  r  r   rº   r7   r5   r   r   =   s  € € € € € € ð 	ð 	ð ð ð ñ ð(ð (ð (ð (ð (ðTð ð ð ð6"ð "ð "ð "ð 59ð'ð 'ð 'ð 'ð 'ð< !Øð;ð ;ð ;ð ;ð ;ð KOð	6ð 	6ð 	6ð 	6ð 	6ð  !Ø#Øð@ð @ð @ð @ð @ð& !Ø#Øð6ð 6ð 6ð 6ð 6ð$ !Ø#Øð
7ð 
7ð 
7ð 
7ð 
7ð !ØØ ðK=ð K=ð K=ð K=ð K=ð` !Ø#ð	2ð 2ð 2ð 2ð 2ð& !Ø#ØðCð Cð Cð Cð Cð +ð +ð +ð +ð +ð !Ø#ØðKð Kð Kð Kð Kð8 Ø Ø#Øð/ð /ð /ð /ð /ð  !Ø#Øð8ð 8ð 8ð 8ð 8ð" Ø Ø#ØðJ8ð 9=ðJ8ð J8ð J8ð J8ð J8ð J8ðX'ð 'ð 'ð 'ð !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'}ð }ð }ð }ð }ð~|ð |ð |ð |ðD !ð Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'3ð* #'ð+3ð 3ð 3ð 3ð 3ð 3ðz Ø $Ø%)Ø#Ø$ðIð #'ðIð Ið Ið Ið Ið IðL Ø!ØØØ $Ø%)Ø#ØØ$ð#0Rð& #'ð'0Rð 0Rð 0Rð 0Rð 0Rð 0Rðv Ø!ØØØ $Ø%)Ø#ØØ$ð#>ð& #'ð'>ð >ð >ð >ð >ð >ð >ð >r7   r   r   r   r   r   r   c                óv   — 	  t          | d¦  «        |¦  «        S # t          $ r t          | |¦  «        cY S w xY w)a‹  
    A simple 2D drawing interface for PIL images.

    :param im: The image to draw in.
    :param mode: Optional mode to use for color values.  For RGB
       images, this argument can be RGB or RGBA (to blend the
       drawing into the image).  For all other modes, this argument
       must be the same as the image mode.  If omitted, the mode
       defaults to the mode of the image.
    Úgetdraw)Úgetattrrì   r   )r   r   s     r5   r¥   r¥   ã  sR   € ð#Ø%�w�r˜9Ñ%Ô% dÑ+Ô+Ð+øÝð #ð #ð #Ý˜˜TÑ"Ô"Ð"Ð"Ð"ð#øøøs   ‚ ›8·8úImage.Image | NoneÚhintsrÛ   ú)tuple[ImageDraw2.Draw | None, ModuleType]c                ób   — |�t          dd¦  «         ddlm} | � |j        | ¦  «        nd}||fS )z¦
    :param im: The image to draw in.
    :param hints: An optional list of hints. Deprecated.
    :returns: A (drawing context, drawing resource factory) tuple.
    Nz'hints' parameteré   r   )r   )r   r;   r   r¥   )r   r/  r   r-   s       r5   r,  r,  ô  sR   € ð ÐÝÐ% rÑ*Ô*Ð*ØÐÐÐÐÐà"$ .ˆ?ˆ:Œ?˜2ÑÔÐ°d€DØ�ÐÐr7   ÚimagerM   útuple[int, int]Úvalueúfloat | tuple[int, ...]Úborderúfloat | tuple[int, ...] | NoneÚthreshrO   r   c                óz  — |                       ¦   «         }|€J ‚|\  }}	 |||f         }t          ||¦  «        |k    rdS ||||f<   n# t          t          f$ r Y dS w xY w||fh}	t	          ¦   «         }
|	rÇt	          ¦   «         }|	D ]®\  }}|dz   |f|dz
  |f||dz   f||dz
  ffD ]Ž\  }}||f|
v s|dk     s|dk     rŒ	 |||f         }|
                     ||f¦  «         |€t          ||¦  «        |k    }n|||fv}|r||||f<   |                     ||f¦  «         Œx# t          t          f$ r Y Œ‹w xY wŒ¯|	}
|}	|	°ÅdS dS )aï  
    .. warning:: This method is experimental.

    Fills a bounded region with a given color.

    :param image: Target image.
    :param xy: Seed position (a 2-item coordinate tuple). See
        :ref:`coordinate-system`.
    :param value: Fill color.
    :param border: Optional border value.  If given, the region consists of
        pixels with a color different from the border color.  If not given,
        the region consists of pixels having the same color as the seed
        pixel.
    :param thresh: Optional threshold value which specifies a maximum
        tolerable difference of a pixel value from the 'background' in
        order for it to be replaced. Useful for filling regions of
        non-homogeneous, but similar, colors.
    Nr   r   )r&   Ú_color_diffr)   Ú
IndexErrorÚsetÚadd)r3  rM   r5  r7  r9  Úpixelr…   r†   Ú
backgroundÚedgeÚ	full_edgeÚnew_edgeÚsÚtr   r1   s                   r5   Ú	floodfillrF    sõ  € ð6 �JŠJ‰LŒL€EØÐÐÐØ�D€A€qðØ˜1˜a˜4”[ˆ
Ý�u˜jÑ)Ô)¨VÒ3Ð3ØˆFØˆˆa�ˆd‰ˆøÝ�
Ð#ð ð ð Øˆˆðøøøà�ˆFˆ8€Dõ ‘”€IØ
ð Ý‘5”5ˆØð 	-ð 	-‰DˆAˆqØ˜a™% ˜ a¨!¡e¨Q Z°!°Q¸±U°¸aÀÀQÁ¸ZÐHð -ð -‘��1à�q�6˜YÐ&Ð&¨!¨aª%¨%°1°q²5°5Øð-Ø˜a ˜dœ�Að —M’M 1 a &Ñ)Ô)Ð)Ø�~Ý*¨1¨jÑ9Ô9¸VÒC˜˜à ¨°¨Ð7˜Øð -Ø&+˜˜a ˜d™Ø Ÿš a¨ VÑ,Ô,Ð,øøõ #¥JÐ/ð ð ð Ø�Dðøøøð-ð" ˆ	Øˆð+ ð ð ð ð ð s(   ŸA ¿A ÁAÁAÂ<
DÄD/Ä.D/r©   rª   r«   rR   r¬   úlist[tuple[float, float]]c                ó¼  ‡‡‡‡	— t          |t          ¦  «        sd}t          |¦  «        ‚|dk     rd}t          |¦  «        ‚t          | t          t
          f¦  «        sd}t          |¦  «        ‚t          | ¦  «        dk    r\t          d„ | D ¦   «         ¦  «        sd}t          |¦  «        ‚t          t          t                   t	          | ¦  «        ¦  «        �^ ŠŠ	�nt          | ¦  «        dk    rít          | d         t          t
          f¦  «        rËt          d	„ | d         D ¦   «         ¦  «        r"t          | d
         t          t          f¦  «        sd}t          |¦  «        ‚t          | d         ¦  «        dk    rd}t          |¦  «        ‚t          t          t                   t	          | d         ¦  «        ¦  «        Št          t          | d
         ¦  «        Š	nd}t          |¦  «        ‚‰	dk    rd}t          |¦  «        ‚t          |t          t          f¦  «        sd}t          |¦  «        ‚dˆfd„Šdˆˆ	fd„Šdd„} |||¦  «        }ˆfd„|D ¦   «         S ) u‘  
    Generate a list of vertices for a 2D regular polygon.

    :param bounding_circle: The bounding circle is a sequence defined
        by a point and radius. The polygon is inscribed in this circle.
        (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``)
    :param n_sides: Number of sides
        (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon)
    :param rotation: Apply an arbitrary rotation to the polygon
        (e.g. ``rotation=90``, applies a 90 degree rotation)
    :return: List of regular polygon vertices
        (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``)

    How are the vertices computed?
    1. Compute the following variables
        - theta: Angle between the apothem & the nearest polygon vertex
        - side_length: Length of each polygon edge
        - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle)
        - polygon_radius: Polygon radius (last element of bounding_circle)
        - angles: Location of each polygon vertex in polar grid
            (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0])

    2. For each angle in angles, get the polygon vertex at that angle
        The vertex is computed using the equation below.
            X= xcos(Ï†) + ysin(Ï†)
            Y= âˆ’xsin(Ï†) + ycos(Ï†)

        Note:
            Ï† = angle in degrees
            x = 0
            y = polygon_radius

        The formula above assumes rotation around the origin.
        In our case, we are rotating around the centroid.
        To account for this, we use the formula below
            X = xcos(Ï†) + ysin(Ï†) + centroid_x
            Y = âˆ’xsin(Ï†) + ycos(Ï†) + centroid_y
    zn_sides should be an intr‹   zn_sides should be an int > 2z$bounding_circle should be a sequencec              3  óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S rE   ©rF   rR   rO   ©ro   rp   s     r5   r�   z4_compute_regular_polygon_vertices.<locals>.<genexpr>}  s0   è è € ÐHÐH°1•:˜a¥#¥u Ñ.Ô.ÐHÐHÐHÐHÐHÐHr7   z0bounding_circle should only contain numeric datarn   r   c              3  óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S rE   rJ  rK  s     r5   r�   z4_compute_regular_polygon_vertices.<locals>.<genexpr>ƒ  sA   è è € ð 
ð 
Ø,-�J�q�3¥˜,Ñ'Ô'ð
ð 
ð 
ð 
ð 
ð 
r7   r   zBbounding_circle centre should contain 2D coordinates (e.g. (x, y))z[bounding_circle should contain 2D coordinates and a radius (e.g. (x, y, r) or ((x, y), r) )z$bounding_circle radius should be > 0z"rotation should be an int or floatr“   úlist[float]ru   rO   r   rÕ   c                óô  •— t          | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  z
  ‰d         z   d¦  «        t          | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  | d         t          j        t          j        d|z
  ¦  «        ¦  «        z  z   ‰d         z   d¦  «        fS )Nr   rs   r   rn   )rÆ   rt   r‚   rƒ   r„   )r“   ru   Úcentroids     €r5   Ú_apply_rotationz:_compute_regular_polygon_vertices.<locals>._apply_rotation   sç   ø€ åØ�a”�4œ8¥D¤L°°w±Ñ$?Ô$?Ñ@Ô@Ñ@Ø˜”(�TœX¥d¤l°3¸±=Ñ&AÔ&AÑBÔBÑBñCà˜1”+ñð ñ	ô õ Ø�a”�4œ8¥D¤L°°w±Ñ$?Ô$?Ñ@Ô@Ñ@Ø˜”(�TœX¥d¤l°3¸±=Ñ&AÔ&AÑBÔBÑBñCà˜1”+ñð ñ	ô ð
ð 	
r7   rx   c                ó$   •— ‰dg} ‰|| ¦  «        S ©Nr   rº   )rx   Ústart_pointrP  Úpolygon_radiuss     €€r5   Ú_compute_polygon_vertexzB_compute_regular_polygon_vertices.<locals>._compute_polygon_vertex°  s   ø€ Ø% qÐ)ˆØˆ˜{¨EÑ2Ô2Ð2r7   r«   rR   r¬   c                ó˜   — g }d| z  }dd|z  z
  |z   }t          | ¦  «        D ]'}|                     |¦  «         ||z  }|dk    r|dz  }Œ(|S )Nrs   r¸   g      à?)rŽ   ré   )r«   r¬   r”   ru   Úcurrent_angleÚ_s         r5   Ú_get_anglesz6_compute_regular_polygon_vertices.<locals>._get_angles´  so   € ØˆØ˜‘-ˆà˜s W™}Ñ,°Ñ8ˆÝ�w‘”ð 	%ð 	%ˆAØ�MŠM˜-Ñ(Ô(Ð(Ø˜WÑ$ˆMØ˜sÒ"Ð"Ø Ñ$�øØˆr7   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rº   rº   )ro   rx   rU  s     €r5   rq   z5_compute_regular_polygon_vertices.<locals>.<listcomp>Ä  s%   ø€ Ð?Ð?Ð?¨uÐ#Ð# EÑ*Ô*Ð?Ð?Ð?r7   )r“   rM  ru   rO   r   rÕ   )rx   rO   r   rÕ   )r«   rR   r¬   rO   r   rM  )
rF   rR   rî   r)   r�   rI   r�   rÇ   r
   rO   )
r©   r«   r¬   r4   rY  r”   rP  rU  rO  rT  s
         @@@@r5   r®   r®   E  s¢  øøøø€ õV �g�sÑ#Ô#ð Ø(ˆÝ˜‰nŒnÐØ�‚{€{Ø,ˆÝ˜‰oŒoÐõ �o­­e }Ñ5Ô5ð Ø4ˆÝ˜‰nŒnÐå
ˆ?ÑÔ˜qÒ Ð ÝÐHÐH¸ÐHÑHÔHÑHÔHð 	"ØDˆCÝ˜S‘/”/Ð!å$(­­e¬µd¸?Ñ6KÔ6KÑ$LÔ$LÑ!ˆ�>‘>Ý	ˆ_Ñ	Ô	 Ò	"Ð	"¥z°/À!Ô2DÅtÍUÀmÑ'TÔ'TÐ	"Ýð 
ð 
Ø1@ÀÔ1Cð
ñ 
ô 
ñ 
ô 
ð 	"å˜O¨AÔ.µµe°Ñ=Ô=ð	"ð EˆCÝ˜S‘/”/Ð!åˆ˜qÔ!Ñ"Ô" aÒ'Ð'ØVˆCÝ˜S‘/”/Ð!å��Uœ¥T¨/¸!Ô*<Ñ%=Ô%=Ñ>Ô>ˆÝ�e _°QÔ%7Ñ8Ô8ˆˆð<ð 	õ ˜‰oŒoÐà˜ÒÐØ4ˆÝ˜‰oŒoÐõ �h¥¥e Ñ-Ô-ð Ø2ˆÝ˜‰oŒoÐð
ð 
ð 
ð 
ð 
ð 
ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð
ð 
ð 
ð 
ð ˆ[˜ (Ñ+Ô+€Fð @Ð?Ð?Ð?¸Ð?Ñ?Ô?Ð?r7   Úcolor1Úcolor2c                óÚ   ‡‡— t          | t          ¦  «        r| n| fŠt          |t          ¦  «        r|n|fŠt          ˆˆfd„t          t	          ‰¦  «        ¦  «        D ¦   «         ¦  «        S )zJ
    Uses 1-norm distance to calculate difference between two values.
    c              3  óT   •K  — | ]"}t          ‰|         ‰|         z
  ¦  «        V — Œ#d S rE   )Úabs)ro   rp   ÚfirstÚseconds     €€r5   r�   z_color_diff.<locals>.<genexpr>Ð  s8   øè è € ÐEÐE¨Q�s�5˜”8˜f QœiÑ'Ñ(Ô(ÐEÐEÐEÐEÐEÐEr7   )rF   rI   r  rŽ   r�   )r[  r\  r`  ra  s     @@r5   r;  r;  Ç  sn   øø€ õ ! ­Ñ/Ô/Ð>ˆFˆF°f°Y€EÝ! &­%Ñ0Ô0Ð?ˆVˆV°v°i€FåÐEÐEÐEÐEÐEµ%½¸F¹¼Ñ2DÔ2DÐEÑEÔEÑEÔEÐEr7   rE   )r   r   r   r   r   r   r&  )r   r.  r/  rÛ   r   r0  rR  )r3  r   rM   r4  r5  r6  r7  r8  r9  rO   r   r   )r©   rª   r«   rR   r¬   rO   r   rG  )r[  r6  r\  r6  r   rO   )'Ú
__future__r   rt   rð   Úcollections.abcr   Útypesr   Útypingr   r   r   r	   r
   r;   r   r   Ú
_deprecater   Ú_typingr   r,   rZ   r   r*  ÚTYPE_CHECKINGr   r   rO   rI   rR   rG   Ú_Inkr   r¥   r,  rF  r®   r;  rº   r7   r5   ú<module>rj     sà  ðð@ #Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ð .3¬ZÔ-?€Ð ?Ð ?Ð ?Ñ ?à€Øð (Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'àˆU�E˜#˜s˜(”O SÐ(Ô)€ððcð cð cð cð cñ cô cð cðL#ð #ð #ð #ð #ð$ >Bðð ð ð ð ð( .2Øð>ð >ð >ð >ð >ðB@ð @ð @ð @ðD	Fð 	Fð 	Fð 	Fð 	Fð 	Fr7   