Files
intellecton/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageDraw.cpython-312.pyc
T

350 lines
38 KiB
Plaintext
Raw Normal View History

Ë
ß¼j‰�ãóN—UddlmZddlZddlZddlmZddlmZddlm Z m
Z
m Z dZ e r$ddlm
Z
dd lmZdd
lmZmZdd lmZmZdd lmZmZe j.j0Zd
ed< Gd„d«Zddd„Zddd„Z d dd„Z dd„Z dd„Z y)é)Ú annotationsN)ÚSequence)Úcasté)ÚImageÚ
ImageColorÚ ImageTextF)ÚCallable)Ú
ModuleType)ÚAnyÚAnyStr)Ú
ImageDraw2Ú ImageFont)ÚCoordsÚ_Inkz!Callable[[], Image.core._Outline]ÚOutlinecóº—eZdZUdZded<ddd„Z dd„Z dd„Z d d d„Z d! d"d„Z d d#d „Z
d$ d%d
„Z d$ d&d „Z d$ d'd „Z
d( d)d
„Z d* d+d„Z d$ d%d„Zdd,d„Z d$ d&d„Z d- d.d„Z d$ d&d„Z d-ddœ d/d„Z d0 d1d„Z d0ddœ d2d„Z d3ddœ d4d„Z d5ddœ d6d„Z d5ddœ d6d„Zy)7Ú ImageDrawNúNImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | NoneÚfontcóN—|j«d}|€ |j}||jk7r$|dk(r|jdk(rd}n
d}t|«‚|dk(r|j|_nd|_||_|j
|_t jj|j
|«|_||_|dvr!|jjd«|_
n |jjd «|_
|d
vrd |_ d
|_ yd |_ d
|_ y)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.
rNÚRGBAÚRGBrz
mode mismatchÚP)ÚIÚFéÿÿÿÿ)Ú1rrrrÚLF)
Ú_ensure_mutableÚmodeÚ
ValueErrorÚpaletteÚ_imageÚimrÚcoreÚdrawÚdraw_inkÚinkÚfontmodeÚfill)Úselfr%r!ÚblendÚmsgs úP/home/antigravity/intellecton/venv/lib/python3.12/site-packages/PIL/ImageDraw.pyÚ__init__zImageDraw.__init__Bsý€ð ×ÑÔØˆØ ˆ<Ø—7‘7ˆDØ �2—7‘7Š?Ø�vŠ~ "§'¡'¨UÒ"2Ø‘à%�Ü  “oÐ%Ø �3Š;ØŸ:™:ˆD�LàˆDŒL؈Œ Ø—%‘%ˆŒÜ—J‘J—O‘O D§G¡G¨UÓ3ˆŒ ؈Œ Ø �:Ñ Ø—y‘y×)Ñ)¨!Ó,ˆD�Hà—y‘y×)Ñ)¨"Ó-ˆDŒHØ Ð'Ñ 'àˆDŒMðˆ� ð ˆDŒM؈� ócój—|jsddlm}|j«|_|jS)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)r,rs r/ÚgetfontzImageDraw.getfontjs*€ð(�yŠyå #à.˜ ×.Ñ.Ó0ˆDŒIØ�y‰yÐr1cóV—|�ddlm}|j|«S|j«S)Nrr3)r4rr5r6)r,Ú font_sizers r/Ú_getfontzImageDraw._getfont…s,€ð Ð Ý #à)�9×)Ñ)¨)Ó4Ð 4à—<‘<“>Ð !r1có®—d}d}|€.|€,|jr|j}||fS|j}||fS|��t|t«r t j
||j «}|jr6t|t«r&|jj ||j«}|jj|«}|��t|t«r t j
||j «}|jr6t|t«r&|jj ||j«}|jj|«}||fS©N) r+r)Ú
isinstanceÚstrrÚgetcolorr!r#Útupler$r'r()r,r)r+Ú
result_inkÚ result_fills r/Ú_getinkzImageDraw._getink�s €ðˆ
؈ Ø ˆ;˜4˜<Ø�yŠyØ"Ÿh™h� ð ˜;Ð&Ð&ð"ŸX™X�
ð˜;Ð&Ð&ðˆÜ˜c¤3Ô'Ü$×-Ñ-¨c°4·9±9Ó=�CØ—<’<¤J¨s´EÔ$:ØŸ,™,×/Ñ/°°T·[±[ÓA�CØ!ŸY™Y×/Ñ/°Ó4�
ØÐܘd¤CÔ(Ü%×.Ñ.¨t°T·Y±YÓ?�DØ—<’<¤J¨t´UÔ$;ØŸ<™<×0Ñ0°°t·{±{ÓC�DØ"Ÿi™i×0Ñ0°Ó6� ؘ;Ð&Ð&r1cóp—|j|«\}}|� |jj|||||«yy)z Draw an arc.N)rBr'Údraw_arc)r,ÚxyÚstartÚendr+Úwidthr)s r/Úarcz
ImageDraw.arc¨s:€ð—L‘L Ó&‰ ˆˆTØ ˆ?Ø �I‰I× Ñ ˜r 5¨#¨s°EÕ :ð r1có¨—|j«|j|«\}}|€|}|�(|jj||j|«yy)zDraw a bitmap.N)ÚloadrBr'Ú draw_bitmapr%)r,rEÚbitmapr+r)s r/rMzImageDraw.bitmapµsM€ð � ‰ Œ
Ø—L‘L Ó&‰ ˆˆTØ ˆ;؈CØ ˆ?Ø �I‰I× !Ñ ! " f§i¡i°Õ 5ð r1cóΗ|j||«\}}|�|jj||||d«|�-||k7r'|dk7r!|jj||||d|«yyyy)z
Draw a chord.Nrr)rBr'Ú
draw_chord© r,rErFrGr+ÚoutlinerHr)Úfill_inks r/ÚchordzImageDraw.chordÀsn€ðŸ ™  W¨dÓ3‰
ˆˆXØ Ð Ø �I‰I× Ñ   U¨C°¸1Ô =Ø ˆ?˜s hš°5¸A²:Ø �I‰I× Ñ   U¨C°°a¸Õ ?ð4>˜ˆ?r1cóÆ—|j||«\}}|�|jj||d«|�+||k7r%|dk7r|jj||d|«yyyy)zDraw an ellipse.Nrr)rBr'Ú draw_ellipse©r,rEr+rQrHr)rRs r/ÚellipsezImageDraw.ellipseÐsf€ðŸ ™  W¨dÓ3‰
ˆˆXØ Ð Ø �I‰I× "Ñ " 2 x°Ô 3Ø ˆ?˜s hš°5¸A²:Ø �I‰I× "Ñ " 2 s¨A¨uÕ 5ð4>˜ˆ?r1cóh—|d|z
|d|z
|d|z|d|zf}|j||||«y)z4Draw a circle given center coordinates and a radius.rrN)rW)r,rEÚradiusr+rQrHÚ
ellipse_xys r/ÚcirclezImageDraw.circleÞsD€ð˜‘e˜f‘n b¨¡e¨f¡n°b¸±e¸f±nÀbÈÁeÈfÁnÐUˆ
Ø � ‰ �Z  w°Õ6r1c
ó|j|«d}|��R|jj||‰«|dk(�r.‰dkD�r't|dtt
f«rt
ttt|«}nGtdt|«d«D�cgc](}t
ttt |||dz««‘Œ*}}tdt|«dz
«D�]‹}||}||dz
|f|||dzffD� �
cgc]C\} }
tjtj|
d| dz
| d|
dz
««dz‘ŒE} } }
| d| dk(rŒw dˆfd„ } | d| dkDxr| dd z
| dkDxs| d| dkxr| dd z| dkD}
|d‰dz z
dz|d‰dz z
dzf|d‰dz zdz
|d‰dz zdz
fg}|
r| dd
z| dd
z}
} n| dd
z
| dd
z
}
} |j|| d
z
|
d
z
|«‰d kDs�Œ7|
r | || dd
z«|| || dd
z«g}n| || dd
z
«|| || dd
z
«g}|j||d ¬
«�ŒŽyyyycc}wcc}
} w)z6Draw a line, or a connected sequence of line segments.rNÚcurveééréhc óü•—|\}}|dz}‰dz dz
}td„||tjtj|««zf||tjtj|««zffD««S)NéZr_rc3ó†K—|]9\}}||dkDrtj|«ntj|«z–—Œ;y­w)rN)ÚmathÚfloorÚceil)Ú.0ÚpÚp_ds r/ú <genexpr>z9ImageDraw.line.<locals>.coord_at_angle.<locals>.<genexpr>s9èø€ò%á &  3ð°C¸!²G¤§¡¨C¤ÄÇÁÈ3ÃÕPñ%ùs‚?A)r?rdÚcosÚradiansÚsin)ÚcoordÚangleÚxÚyÚdistancerHs €r/Úcoord_at_anglez&ImageDraw.line.<locals>.coord_at_angle s€ø€ð %™˜˜1Ø ™ ˜Ø#(¨1¡9¨q¡=˜Ü$ñ%ð"# H¬t¯x©x¼¿ ¹ ÀUÓ8KÓ/LÑ$LÐ MØ!" H¬t¯x©x¼¿ ¹ ÀUÓ8KÓ/LÑ$LÐ Mð+ô%ó ðr1é´rbéé)rH)rnúSequence[float]roÚfloatÚreturnztuple[float, ...])rBr'Ú
draw_linesr<Úlistr?rrrxÚrangeÚlenrdÚdegreesÚatan2ÚpiesliceÚline)r,rEr+rHÚjointr)ÚpointsÚiÚpointrFrGÚanglesrsÚflippedÚcoordsÚ
gap_coordss ` r/r�zImageDraw.lineês&ø€ð�l‰l˜4Ó  Ñ#ˆØ ‰?Ø �I‰I× Ñ   S¨%Ô 0ؘӠE¨A£Iä˜b ™e¤d¬E ]Ô3Ü!¤(¬8´E©?Ñ";¸RÓ@‘Fô"' q¬#¨b«'°1Ó!5öàôœX¤e™_¬e°B°q¸1¸q¹5°MÓ.BÕCð�Fðô˜q¤# f£+°¡/Ó2ó7=�AØ" 1™I�Eð
$ A¨¡E™]¨EÐ2Ø" F¨1¨q©5¡MÐ2ð+÷ñ'˜E 3ôŸ ™ ¤T§Z¡Z°°A±¸¸q¹Ñ0AÀ5ÈÁ8ÈcÐRSÉfÑCTÓ%UÓVØóð�Fñð˜a‘y F¨1¡IÒ-à ð Ø.ð Ø7<ð à*õ ð˜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ñØ&,¨Q¡i°"¡n°f¸Q±iÀ"±n˜s™à&,¨Q¡i°"¡n°f¸Q±iÀ"±n˜s˜Ø—M‘M &¨%°"©*°c¸B±hÀÔEà˜q”yá"á .¨u°f¸Q±iÀ"±nÓ EØ %Ù .¨u°f¸Q±iÀ"±nÓ Eð*™Jñ!/¨u°f¸Q±iÀ"±nÓ EØ %Ù .¨u°f¸Q±iÀ"±nÓ Eð*˜Jð
Ÿ ™  *¨d¸!˜ Ö<ño7=ð%.Ðð ùòùó s
Â-I,Ã9AI1cóØ—|j«|j||«\}}|�|jj||d«|�$||k7r|jj||d«yyy)z(Experimental) Draw a shape.Nrr)ÚcloserBr'Ú draw_outline)r,Úshaper+rQr)rRs r/r�zImageDraw.shape7se€ð � ‰ Œ
ØŸ ™  W¨dÓ3‰
ˆˆXØ Ð Ø �I‰I× "Ñ " 5¨(°AÔ 6Ø ˆ?˜s hšØ �I‰I× "Ñ " 5¨#¨qÕ 1ð /ˆ?r1cóΗ|j||«\}}|�|jj||||d«|�-||k7r'|dk7r!|jj||||d|«yyyy)zDraw a pieslice.Nrr)rBr'Ú
draw_pieslicerPs r/r€zImageDraw.piesliceEsn€ðŸ ™  W¨dÓ3‰
ˆˆXØ Ð Ø �I‰I× #Ñ # B¨¨s°H¸aÔ @Ø ˆ?˜s hš°5¸A²:Ø �I‰I× #Ñ # B¨¨s°C¸¸EÕ Bð4>˜ˆ?r1cój—|j|«\}}|�|jj||«yy)z#Draw one or more individual pixels.N)rBr'Ú draw_points)r,rEr+r)s r/r…zImageDraw.pointUs2€à—L‘L Ó&‰ ˆˆTØ ˆ?Ø �I‰I× !Ñ ! " cÕ *ð r1có—|j||«\}}|�|jj||d«|�Ó||k7rÍ|dk7rÇ|dk(r|jj||d|«y|j�–t j
d|jj «}|jd«d}t|«} | jj||d«|jj||d|dzdz
|j«yyyyy)zDraw a polygon.Nrrrr_)rBr'Ú draw_polygonr%rÚnewÚsizeÚDraw)
r,rEr+rQrHr)rRÚmaskÚmask_inkr's
r/ÚpolygonzImageDraw.polygon[sí€ðŸ ™  W¨dÓ3‰
ˆˆXØ Ð Ø �I‰I× "Ñ " 2 x°Ô 3Ø ˆ?˜s hš°5¸A²:ؘŠzØ— ‘ ×&Ñ& r¨3°°5Õ9Ø—‘Ð$ô—y‘y  d§g¡g§l¡lÓ3�ØŸ<™<¨›?¨1Ñ-�ܘD“z�Ø— ‘ ×&Ñ& r¨8°QÔ7à— ‘ ×&Ñ& r¨3°°5¸1±9¸q±=À$Ç'Á'ÕJð%ð4>˜ˆ?r1cóF—t|||«}|j||||«y)zDraw a regular polygon.N)Ú!_compute_regular_polygon_verticesr™)r,Úbounding_circleÚn_sidesÚrotationr+rQrHrEs r/Úregular_polygonzImageDraw.regular_polygonss$€ô/¨ÀÈÓ
RˆØ � ‰ �R˜˜w¨Õ.r1cóÆ—|j||«\}}|�|jj||d«|�+||k7r%|dk7r|jj||d|«yyyy)zDraw a rectangle.Nrr)rBr'Údraw_rectanglerVs r/Ú rectanglezImageDraw.rectangle€sf€ðŸ ™  W¨dÓ3‰
ˆˆXØ Ð Ø �I‰I× $Ñ $ R¨°1Ô 5Ø ˆ?˜s hš°5¸A²:Ø �I‰I× $Ñ $ R¨¨a°Õ 7ð4>˜ˆ?r1)Úcornersc
óà‡‡‡‡‡‡‡‡‡‡‡‡—t|dttf«r(tttt
|«\\ŠŠ\ŠŠnttt
|«\ŠŠŠŠ‰‰kr
d}t
|«‚‰‰kr
d}t
|«‚‰€dŠ|dzŠt‰«Št‰«Št‰«Št‰«Šd\ŠŠt‰«r<‰‰‰z
dz
k\Љr‰‰z
Љ‰‰z
dz
k\Љr‰‰z
Љr‰r‰j|||‰«S‰dk(s t‰«s‰j|||‰«St‰dz«}‰j||«\ŠŠd
ˆˆˆˆˆˆˆˆˆˆˆˆf d „ } ‰��| d
«‰r.‰jj‰‰|zdz‰‰|z
dz
f‰d«n>‰|z
dz
‰|zdzk\r-‰jj‰|zdz‰‰|z
dz
‰f‰d«‰s¢‰s ‰‰‰|z‰g}
‰dr|
dxx|dzz
cc<‰d r|
d xx|dzzcc<‰jj|
‰d«‰|z
‰‰‰g} ‰dr| dxx|dzz
cc<‰dr| d xx|dzzcc<‰jj| ‰d«‰��h‰‰k7�ra‰dk7�rZ| d «‰s¦‰‰‰‰‰zdz
g} ‰dr| dxx|dzz
cc<‰dr| dxx|dzzcc<‰jj| ‰d«‰‰‰z
dz‰‰g}
‰d r|
dxx|dzz
cc<‰dr|
dxx|dzzcc<‰jj|
‰d«‰s§‰‰‰‰zdz
‰g}
‰dr|
dxx|dzz
cc<‰d r|
d xx|dzzcc<‰jj|
‰d«‰‰z
dz‰‰‰g} ‰dr| dxx|dzz
cc<‰dr| d xx|dzzcc<‰jj| ‰d«yyyyy)zDraw a rounded rectangle.rz&x1 must be greater than or equal to x0z&y1 must be greater than or equal to y0N)TTTTr_)FFrc óÀ• —‰r‰ ‰
‰ ‰z‰
‰zfddf‰ ‰‰z
‰ ‰z‰fddff}nv‰r‰ ‰
‰ ‰z‰
‰zfddf‰ ‰z
‰
‰ ‰
‰zfddff}nUtˆfd„t‰ ‰
‰ ‰z‰
‰zfddf‰ ‰z
‰
‰ ‰
‰zfddf‰ ‰z
‰‰z
‰ ‰fddf‰ ‰‰z
‰ ‰z‰fddff«D««}|D]A}|r‰ jj|‰dfzŽŒ$‰ jj|‰‰
fzŽŒCy)Nrtr`rrbéc3ó2•K—|]\}}‰|r|–—Œy­wr;©)rgr„Úpartr£s €r/rjzDImageDraw.rounded_rectangle.<locals>.draw_corners.<locals>.<genexpr>Ós&øèø€ò ᘘ4ð˜q’zôñ ùsƒr)r?Ú enumerater'r�rD)r€Úpartsr©r£ÚdrRÚfull_xÚfull_yr)r,rHÚx0Úx1Úy0Úy1s €€€€€€€€€€€€r/Ú draw_cornersz1ImageDraw.rounded_rectangle.<locals>.draw_cornersÃsfø€áð˜"˜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‘I×+Ñ+¨d°hÀ°]Ñ.BÒDà&�D—I‘I×&Ñ&¨°°e° Ñ)<Ò>ñ 
?r1TrvF)r€ÚboolryÚNone)r<r{r?rrrxr"ÚroundÚallrWÚanyr¢ÚintrBr'r¡)r,rErYr+rQrHr£r.Úrr³ÚleftÚrightÚtopÚbottomr¬rRr­r®r)r¯r°r±r²s` `` @@@@@@@@@r/Úrounded_rectanglezImageDraw.rounded_rectangleŽsWÿû€ô �b˜‘eœd¤E˜]Ô +Ü!%¤h¬x¼©Ñ&?ÀÓ!DÑ ‰HˆR�‘h�r™2ä!¤(¬5¡/°2Ó6‰NˆB��B˜Ø
�Š7Ø:ˆCܘS“/Ð !Ø
�Š7Ø:ˆCܘS“/Ð !Ø ˆ?Ø.ˆGà �Q‰Jˆä
�2‹YˆÜ
�2‹YˆÜ
�2‹YˆÜ
�2‹YˆØ%‰ˆ�Ü ˆwŒ<ؘ"˜r™' A™+Ñ%ˆFÙà˜‘G�ؘ"˜r™' A™+Ñ%ˆFÙà˜‘G�Ù™&à—|‘| B¨¨g°uÓ=Ð=à �Š6œ˜Wœð—>‘> " d¨G°UÓ;Ð ;ä ��Q‘‹KˆØŸ ™  W¨dÓ3‰
ˆˆX÷ ?÷ ?ð ?ðD Ñ Ù ˜Ô áØ— ‘ ×(Ñ(¨"¨b°1©f°q©j¸"¸bÀ1¹fÀq¹jÐ)IÈ8ÐUVÕWØ�a‘˜!‘˜r A™v¨™zÒ)Ø— ‘ ×(Ñ(¨"¨q©&°1©*°b¸"¸q¹&À1¹*ÀbÐ)IÈ8ÐUVÔWÙ¡&ؘB  Q¡¨Ð+�ؘ1’:ؘ“G˜q 1™uÑ$“Gؘ1’:ؘ“G˜q 1™uÑ$“GØ— ‘ ×(Ñ(¨¨x¸Ô;à˜a™  R¨Ð,�ؘ1’:ؘ!“H  A¡Ñ%“Hؘ1’:ؘ!“H  A¡Ñ%“HØ— ‘ ×(Ñ(¨°¸!Ô<Ø ‰?˜s h›°5¸A³:Ù ˜Ô áØ˜2˜r 2¨¡:°¡>Ð2�ؘ1’:ؘ“F˜a !™e‘O“Fؘ1’:ؘ“F˜a !™e‘O“FØ— ‘ ×(Ñ(¨¨c°1Ô5à˜b 5™j¨1™n¨b°"Ð5�ؘ1’:ؘ1“I  Q¡Ñ&“Iؘ1’:ؘ1“I  Q¡Ñ&“IØ— ‘ ×(Ñ(¨°°aÔ8ÙØ˜B  U¡
¨Q¡°Ð3�ؘ1’:ؘ“G˜q 1™uÑ$“Gؘ1’:ؘ“G˜q 1™uÑ$“GØ— ‘ ×(Ñ(¨¨s°AÔ6à˜e™ a™¨¨R°Ð4�ؘ1’:ؘ!“H  A¡Ñ%“Hؘ1’:ؘ!“H  A¡Ñ%“HØ— ‘ ×(Ñ(¨°°QÕ7ðð#4>˜ˆ?r1c óN‡‡‡ ‡
‡
‡‡‡‡—t|tj«r|Šnm|€ ‰j‰j d««}tj||‰j
|‰‰ ‰
«Š‰
r‰j
«| r‰j| | «dˆfd„ }||«}|€yd}‰jr ‰j�|‰j«n|}‰j|||«D]=Šddˆˆˆ
ˆ ˆˆˆ
ˆˆf d„
}|�"||‰j«||k7sŒ-||«Œ6||«Œ?y)z
Draw text.Nr8có@•—‰j|«\}}|€|€J‚|S|Sr;)rB)r+r)rRr,s €r/ÚgetinkzImageDraw.text.<locals>.getink?s0ø€Ø ŸL™L¨Ó.‰MˆC�؈{ØÐ+Ð+Ð+Ø�؈Jr1c ó• —‰j}|dk(r‰ rd}t‰j«}t‰j«}t j
‰j«dt j
‰j«df} ‰j j‰j|g‰
¢­‰ ‰
‰|d‰j||dœ‰¤Ž\}}||dz
}||dz
}|dk(r�||jd«}}tjd|«d} |j!d| «‰j"�B‰j"j%|||||j&dz||j&dzf|«yy‰j(j+||f||«y#t$rw ‰j j‰j|‰ ‰
‰|‰j|g‰
¢­d|i‰¤Ž}n4#t$r(‰j j‰j«}YnwxYwY�Œ1wxYw) NrrT)Ú directionÚfeaturesÚlanguageÚ stroke_widthÚ
stroke_filledÚanchorr)rFrrFrvr„)r*r¹rprqrdÚmodfrÚgetmask2ÚtextrÉÚAttributeErrorÚgetmaskÚ TypeErrorÚgetbandÚstructÚpackÚfillbandr%Úpaster•r'rL)r)rÇr!rprqrFr—ÚoffsetÚcolorÚ ink_alphaÚargsrÄÚembedded_colorrÅÚ
image_textÚkwargsrÆr�r,s €€€€€€€€€r/Ú draw_textz!ImageDraw.text.<locals>.draw_textTsø€Ø—}‘}�Ø 1Ò$©Ø!�DܘŸ™“K�ܘŸ™“K�ÜŸ™ 4§6¡6Ó*¨1Ñ-¬t¯y©y¸¿¹Ó/@ÀÑ/CÐD�ð!BØ#; :§?¡?×#;Ñ#;ØŸ ™ Øð
$ðñ
$ð#,Ø!)Ø!)Ø%1Ø&*Ø#Ÿ{™{ØØ#ñ
$ð!ñ
$‘L�D˜&𘠙‘N�Aؘ ™‘N�Að$˜6’>ð#'¨¯ © °Q«˜4�EÜ &§ ¡ ¨C°Ó 5°aÑ 8�IØ—N‘N 1 iÔ0Ø—w‘wÐ*ØŸ™Ÿ
™
Ø! A q¨!¨d¯i©i¸©lÑ*:¸AÀÇ Á È!Á Ñ<LÐ#MÈtõð+ð
—I‘I×)Ñ)¨1¨a¨&°$¸Õ<øô;&òBðBØ6˜zŸ™×6Ñ6Ø ŸI™IØ Ø%Ø$Ø$Ø(Ø ŸK™KØð ð"ò ð#(ð ð%ñ ™øô%òBØ)Ÿ™×6Ñ6°t·y±yÓAšðBýðBús7ÂAF Æ H Æ=GÇH Ç.HÇ?H ÈHÈH ÈH )r+ú _Ink | Noneryr¹)r)r)r¹rÇrxryrµ) r<r ÚTextr9Úgetr!Ú embed_colorÚstrokerÇÚ stroke_fillÚ_split)r,rErÌr+rrÉÚspacingÚalignrÄrÅrÆrÇrârÙrØrÛrÂr)Ú
stroke_inkrÜrÚr�s` ``` ``` @@r/rÌzImageDraw.texts&ÿø€ô0 �dœIŸN™NÔ +؉Jàˆ|Ø—}‘} V§Z¡Z° Ó%<Ó=�Ü"Ÿ™Ø�d˜DŸI™I w° ¸8ÀXóˆJñØ×&Ñ&Ô(ÙØ×!Ñ! ,° Ô<õ ñ�T‹lˆØ ˆ;Ø àˆ
Ø × "Ò "ð×)Ñ)Ð5ñ�z×-Ñ-Ô.àð
ð ×%Ñ% b¨&°%Ó8òB ˆD÷5
=ö5
=ðnÐ%á˜* j×&=Ñ&=Ô>ð˜*Ó$Ù˜c•Nñ˜#•ñEB r1©r8có@—|j||||||||| |
| | |
|¬«S©Nrç)rÌ)r,rErÌr+rrÉrärårÄrÅrÆrÇrârÙr8s r/Úmultiline_textzImageDraw.multiline_text–sD€ð.�y‰yØ Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Øðó
ð
r1có¶—|€|j|«}tj|||j|||¬«}|r|j «|j «S)z@Get the length of a given string, in pixels with 1/64 precision.)rÄrÅrÆ)r9r rÞr!ràÚ
get_length) r,rÌrrÄrÅrÆrÙr8rÚs r/Ú
textlengthzImageDraw.textlength¾s[€ð" ˆ<Ø—=‘= Ó+ˆDÜ—^‘^Ø Ø Ø �I‰IØØØô

ˆ
ñ Ø × "Ñ "Ô $Ø×$Ñ$Ó&Ð&r1c  óâ—|€|j| «}tj|||j|||| «}
| r|
j «|
r|
j |
«|
j
|||«S)z2Get the bounding box of a given string, in pixels.)r9r rÞr!ràráÚget_bbox)r,rErÌrrÉrärårÄrÅrÆrÇrÙr8rÚs r/ÚtextbboxzImageDraw.textbboxÝso€ð, ˆ<Ø—=‘= Ó+ˆDÜ—^‘^Ø �$˜Ÿ ™  7¨I°xÀó
ˆ
ñ Ø × "Ñ "Ô $Ù Ø × Ñ ˜lÔ +Ø×"Ñ" 2 v¨uÓ5Ð5r1c ó<—|j||||||||| |
| | ¬« Sré)rð)
r,rErÌrrÉrärårÄrÅrÆrÇrÙr8s
r/Úmultiline_textbboxzImageDraw.multiline_textbboxþs>€ð*�}‰}Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Øðó

ð
r1r;)r%ú Image.Imager!ú
str | Noneryrµ)ryúGImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont)r8ú float | Noneryrõ)r)rÝr+rÝryztuple[int | None, int | None])Nr) rErrFrxrGrxr+rÝrHr¹ryrµ)rEz
Sequence[int]rMrór+rÝryrµ)NNr)rErrFrxrGrxr+rÝrQrÝrHr¹ryrµ)
rErr+rÝrQrÝrHr¹ryrµ) rErwrYrxr+rÝrQrÝrHr¹ryrµ)NrN)
rErr+rÝrHr¹r‚rôryrµ)NN)r�zImage.core._Outliner+rÝrQrÝryrµ)rErr+rÝryrµ)rNNr)rœú!Sequence[Sequence[float] | float]r�r¹ržrxr+rÝrQrÝrHr¹ryrµ)rErrYrxr+rÝrQrÝrHr¹r£z$tuple[bool, bool, bool, bool] | Noneryrµ) NNNr^r»NNNrNF) rEútuple[float, float]rÌzAnyStr | ImageText.Text[AnyStr]r+rÝrrrÉrôrärxrår=rÄrôrÅúlist[str] | NonerÆrôrÇrxrârÝrÙr´rØr rÛr ryrµ)rErørÌr
r+rÝrrrÉrôrärxrår=rÄrôrÅrùrÆrôrÇrxrârÝrÙr´r8röryrµ)NNNNF)rÌr
rrrÄrôrÅrùrÆrôrÙr´r8röryrx) NNr^r»NNNrF)rErørÌr
rrrÉrôrärxrår=rÄrôrÅrùrÆrôrÇrxrÙr´r8röryz!tuple[float, float, float, float])Ú__name__Ú
__module__Ú __qualname__rÚ__annotations__r0r6r9rBrIrMrSrWr[r�r�r€r…r™rŸr¢r¿rÌrêrírðròr¨r1r/rr=sE…ð
ð ØVó
ô&ðPà Póð6"Ø%ð"à Pó"ð59ð'Øð'Ø&1ð'à &ó'ð<!Øð
;à ð ;ðð ;ðð ;ð
ð ;ð ð
;ð
ó ;ðKOð 6Øð 6Ø)4ð 6Ø<Gð 6à
ó 6ð !Ø#Øð@à ð@ðð@ðð @ð
ð @ð ð
@ðð@ð
ó@ð&!Ø#Øð 6à ð 6ðð 6ðð 6ð
ð 6ð
ó
6ð$!Ø#Øð
7à ð
7ðð
7ðð
7ð
ð
7ð ð
7ð
ó
7ð!ØØ ð K=à ðK=ððK=ðð K=ð
ð K=ð
ó
K=ð`!Ø#ð 2à"ð 2ðð 2ðð 2ð
ó 2ð&!Ø#ØðCà ðCððCðð Cð
ð Cð ð
CððCð
óCô +ð!Ø#Øð Kà ðKððKðð Kð
ð Kð
ó
Kð8Ø Ø#Øð /à:ð /ðð /ðð /ð
ð /ð ð
/ðð /ð
ó /ð !Ø#Øð 8à ð 8ðð 8ðð 8ð
ð 8ð
ó
8ð"Ø Ø#Øð
J8ð9=ñJ8à ðJ8ððJ8ðð J8ð
ð J8ð ð
J8ð6ðJ8ð
óJ8ð`!ð
Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'zà ðzð.ðzðð zð 
ð
zððzððzððzððzð#ðzð ð!zð"ð#zð$!ð%zð&ð'zð(ð)zð*ð+zð,
ó-zð@!ð
Ø!ØØØ $Ø%)Ø#ØØ#'Ø$ð'&
ð*#'ñ+&
à ð&
ðð&
ðð &
ð 
ð
&
ðð&
ðð&
ðð&
ðð&
ð#ð&
ð ð!&
ð"ð#&
ð$!ð%&
ð&ð'&
ð* ð+&
ð,
ó-&
ð`
Ø $Ø%)Ø#Ø$ð'ð#'ñ'àð'ð
ð 'ðð'ð#ð'ðð'ðð'ð ð'ð
ó'ðP
Ø!ØØØ $Ø%)Ø#ØØ$ð#6ð&#'ñ'6à ð6ðð6ð

ð 6ðð6ðð6ðð6ðð6ð#ð6ðð6ð ð!6ð"ð#6ð& ð'6ð(
+ó)6ðT
Ø!ØØØ $Ø%)Ø#ØØ$ð#"
ð&#'ñ'"
à ð"
ðð"
ð

ð "
ðð"
ðð"
ðð"
ðð"
ð#ð"