)Ej.dZddlmZddlmZmZmZddlmZm Z m Z m Z m Z ddl mZmZGddZGd d ZGd d ZGd dZdS)z] (Experimental) WCK-style drawing interface operations .. seealso:: :py:mod:`PIL.ImageDraw` ) annotations)AnyAnyStrBinaryIO)Image ImageColor ImageDraw ImageFont ImagePath)CoordsStrOrBytesPathceZdZdZd dd Zd S)Penz"Stores an outline color and width.rcolorstrwidthintopacityreturnNonecFtj||_||_dSN)r getrgbrr)selfrrrs @C:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/ImageDraw2.py__init__z Pen.__init__%s&u--  N)rr)rrrrrrrr__name__ __module__ __qualname____doc__rrrrr"s3,,rrceZdZdZd d d Zd S) BrushzStores a fill colorrrrrrrrc8tj||_dSr)r rr)rrrs rrzBrush.__init__-s&u-- rN)r)rrrrrrr r%rrr'r'*s3.......rr'ceZdZdZ d dd Zd S)Fontz Stores a TrueType font and color rrfileStrOrBytesPath | BinaryIOsizefloatrrcltj||_tj|||_dSr)r rrr truetypefont)rrr,r.s rrz Font.__init__4s. &u-- &tT22 rN)r+)rrr,r-r.r/rrr r%rrr*r*1s:**JL3333333rr*ceZdZdZ d/d0d Zd1d Z d2d3dZd4dZd5d Zd5d!Z d6d"Z d6d#Z d5d$Z d6d%Z d6d&Zd7d+Zd8d-Zd9d.ZdS):Drawz4 (Experimental) WCK-style drawing interface NimageImage.Image | strr."tuple[int, int] | list[int] | Noner&float | tuple[float, ...] | str | Nonerrct|tr)|d}t|tj|||}t j||_||_d|_ dS)Nz>If image argument is mode string, size must be a list or tuple) isinstancer ValueErrorrnewr r4drawr5 transform)rr5r.rmsgs rrz Draw.__init__Asb eS ! ! 2|V oo%IeT511EN5))  QUr Image.Imagec|jSr)r5)rs rflushz Draw.flushPs zroprxyr penPen | Brush | NonebrushBrush | Pen | Nonekwargsrc ~dx}}d}t|tr|j}|j}n#t|tr|j}|j}t|tr|j}nt|tr|j}|jr0t j|} | |j| }|dvr|d|n,|d||d||dkr|d|t|j ||fi|dS)Nr)arclinefilloutlinerLr) r:rrrr'r>r Path setdefaultgetattrr=) rrCrDrErGrIrNrMrpaths rrenderz Draw.renderSsT$ c3   iGIEE s # # kGKE eU # # ;DD U # # 9D > >"%%D NN4> * * *B    fg . . . .   fd + + +   i 1 1 1 <<   gu - - - 2r,,V,,,,,roffsettuple[float, float]c*|\}}dd|dd|f|_dS)zSets a transformation offset.rrN)r>)rrTxoffsetyoffsets r settransformzDraw.settransformws$!QAw7rstartr/endoptionsc.|jd||g|R||ddS)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` rKrZr[NrSrrDrErZr[r\s rrKzDraw.arc|s2  E2sCWCCEsCCCCCCrc.|jd||g|R||ddS)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 rrbz Draw.chords2  GREwEEeEEEEEErc&|jd||g|RdS)z Draws an ellipse inside the given bounding box. .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` ellipseNr_rrDrEr\s rrdz Draw.ellipses(  Ir31111111rc&|jd||g|RdS)z Draws a line between the coordinates in the ``xy`` list. .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` rLNr_res rrLz Draw.lines(  FB.g......rc.|jd||g|R||ddS)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 rrhz Draw.pieslices2  JCH'HHCHHHHHHrc&|jd||g|RdS)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_res rrjz Draw.polygons(  Ir31111111rc&|jd||g|RdS)zg Draws a rectangle. .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` rectangleNr_res rrlzDraw.rectangles(  KS37333333rtextrr2r*c|jr0tj|}||j|}|j|||j|jdS)zw Draws the string at the given position. .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` )r2rMN)r>r rOr=rmr2rrrDrmr2rRs rrmz Draw.texts\ > >"%%D NN4> * * *B r4didjAAAAAr!tuple[float, float, float, float]c|jr0tj|}||j|}|j|||jS)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 rOr=textbboxr2ros rrsz Draw.textbboxsU > >"%%D NN4> * * *By!!"d!;;;rcD|j||jS)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)rrmr2s rruzDraw.textlengths!y##Dty#999r)NN)r5r6r.r7rr8rr)rr@r) rCrrDr rErFrGrHrIrrr)rTrUrr) rDr rErFrZr/r[r/r\rrr)rDr rErFr\rrr)rDrUrmrr2r*rr)rDrUrmrr2r*rrp)rmrr2r*rr/)r!r"r#r$rrBrSrYrKrbrdrLrhrjrlrmrsrur%rrr4r4<sc488< V V V V V%) "-"-"-"-"-H8888 DDDD FFFF 2222////IIII 2 2 2 24444 B B B B<<<< ::::::rr4N)r$ __future__rtypingrrrrr r r r _typingr rrr'r*r4r%rrrzs7( #"""""((((((((((@@@@@@@@@@@@@@++++++++........33333333x:x:x:x:x:x:x:x:x:x:r