
&"V2                 @   s   d  d l  Z  d  d l Z d  d l m Z m Z d  d l m Z Gd d   d e  Z d d d  Z	 y e j
 j Z Wn e k
 r d Z Yn Xd d d d	  Z d d
 d  Z d S)    N)Image
ImageColor)isStringTypec               @   sr  e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d d  Z d d d  Z	 d d d  Z
 d d d d  Z d d d d  Z d d d d  Z d d d d  Z d d d d  Z d d d  Z d d d d   Z d d d! d"  Z d# d$   Z d% d&   Z d d d d' d(  Z d d d d) d* d+ d,  Z d d- d.  Z d d) d/ d0  Z d S)1	ImageDrawNc             C   sJ  | j    | j r  | j   n  d } | d  k r> | j } n  | | j k r | d k rq | j d k rq d } q t d   n  | d k r | j |  _ n	 d  |  _ | j |  _ t j j	 |  j |  |  _	 | |  _ | d k r |  j	 j
 d |  |  _ n |  j	 j
 d |  |  _ | d k r+d	 |  _ n	 d
 |  _ d |  _ d  |  _ d  S)Nr   ZRGBAZRGB   zmode mismatchPIF1L)r   r	   )r
   r   r   r	   )loadreadonlyZ_copymode
ValueErrorpaletteimr   coredrawdraw_inkinkfontmodefillfont)selfr   r   Zblend r   //tmp/pip-build-fj3bmf4v/Pillow/PIL/ImageDraw.py__init__:   s0    
						zImageDraw.__init__c             C   s   t  d d   d  S)Nzsetink() has been removed. z%Please use keyword arguments instead.)	Exception)r   r   r   r   r   setinkY   s    zImageDraw.setinkc             C   s   t  d d   d  S)Nzsetfill() has been removed. z%Please use keyword arguments instead.)r   )r   Zonoffr   r   r   setfill]   s    zImageDraw.setfillc             C   s   t  j d d  | |  _ d  S)Nzsetfont() is deprecated. z*Please set the attribute directly instead.)warningswarnr   )r   r   r   r   r   setfonta   s    	zImageDraw.setfontc             C   s2   |  j  s+ d d l m } | j   |  _  n  |  j  S)Nr   )	ImageFont)r   PILr$   Zload_default)r   r$   r   r   r   getfontj   s    	zImageDraw.getfontc             C   s;  | d  k r9 | d  k r9 |  j  r- |  j } q1|  j } n | d  k	 r t |  ri t j | |  j  } n  |  j r t | t j	  r |  j j |  } n  |  j
 j | |  j  } n  | d  k	 r1t |  r t j | |  j  } n  |  j rt | t j	  r|  j j |  } n  |  j
 j | |  j  } n  | | f S)N)r   r   r   r   Zgetcolorr   r   
isinstancenumbersNumberr   r   )r   r   r   r   r   r   _getinkq   s"    	zImageDraw._getinkc             C   sA   |  j  |  \ } } | d  k	 r= |  j j | | | |  n  d  S)N)r*   r   Zdraw_arc)r   xystartendr   r   r   r   r   arc   s    zImageDraw.arcc             C   s`   | j    |  j |  \ } } | d  k r4 | } n  | d  k	 r\ |  j j | | j |  n  d  S)N)r   r*   r   draw_bitmapr   )r   r+   bitmapr   r   r   r   r   r0      s    
	zImageDraw.bitmapc             C   sr   |  j  | |  \ } } | d  k	 rC |  j j | | | | d  n  | d  k	 rn |  j j | | | | d  n  d  S)Nr   r   )r*   r   Z
draw_chord)r   r+   r,   r-   r   outliner   r   r   r   chord   s
    zImageDraw.chordc             C   sf   |  j  | |  \ } } | d  k	 r= |  j j | | d  n  | d  k	 rb |  j j | | d  n  d  S)Nr   r   )r*   r   Zdraw_ellipse)r   r+   r   r1   r   r   r   r   ellipse   s
    zImageDraw.ellipser   c             C   s>   |  j  |  \ } } | d  k	 r: |  j j | | |  n  d  S)N)r*   r   Z
draw_lines)r   r+   r   widthr   r   r   r   line   s    zImageDraw.linec             C   sp   | j    |  j | |  \ } } | d  k	 rG |  j j | | d  n  | d  k	 rl |  j j | | d  n  d  S)Nr   r   )closer*   r   Zdraw_outline)r   shaper   r1   r   r   r   r   r7      s    
zImageDraw.shapec             C   sr   |  j  | |  \ } } | d  k	 rC |  j j | | | | d  n  | d  k	 rn |  j j | | | | d  n  d  S)Nr   r   )r*   r   Zdraw_pieslice)r   r+   r,   r-   r   r1   r   r   r   r   pieslice   s
    zImageDraw.pieslicec             C   s;   |  j  |  \ } } | d  k	 r7 |  j j | |  n  d  S)N)r*   r   Zdraw_points)r   r+   r   r   r   r   r   point   s    zImageDraw.pointc             C   sf   |  j  | |  \ } } | d  k	 r= |  j j | | d  n  | d  k	 rb |  j j | | d  n  d  S)Nr   r   )r*   r   Zdraw_polygon)r   r+   r   r1   r   r   r   r   polygon   s
    zImageDraw.polygonc             C   sf   |  j  | |  \ } } | d  k	 r= |  j j | | d  n  | d  k	 rb |  j j | | d  n  d  S)Nr   r   )r*   r   Zdraw_rectangle)r   r+   r   r1   r   r   r   r   	rectangle   s
    zImageDraw.rectanglec             C   s+   t  | t d   r d n d } | | k S)N 
s   
)r'   type)r   textsplit_characterr   r   r   _multiline_check   s    !zImageDraw._multiline_checkc             C   s.   t  | t d   r d n d } | j |  S)Nr<   r=   s   
)r'   r>   split)r   r?   r@   r   r   r   _multiline_split   s    !zImageDraw._multiline_splitc       	      C   s+  |  j  |  r( |  j | | | | |  S|  j |  \ } } | d  k rX |  j   } n  | d  k rm | } n  | d  k	 r'yC | j | |  j  \ } } | d | d | d | d f } WnO t k
 ry | j | |  j  } Wn! t k
 r| j |  } Yn XYn X|  j	 j
 | | |  n  d  S)Nr   r   )rA   multiline_textr*   r&   Zgetmask2r   AttributeErrorZgetmask	TypeErrorr   r/   )	r   r+   r?   r   r   anchorr   maskoffsetr   r   r   r?      s"    	(zImageDraw.text   leftc             C   sD  g  } d }	 |  j  |  }
 |  j d d | d | } xB |
 D]: } |  j | |  \ } } | j |  t |	 |  }	 q? W| \ } } x t |
  D] \ } } | d k r nX | d k r | |	 | | d 7} n3 | d k r | |	 | | 7} n d	 s	t d
   |  j | | f | | | |  | | 7} | d } q Wd  S)Nr   Ar   r   rK   centerg       @rightFz)align must be "left", "center" or "right")rC   textsizeappendmax	enumerateAssertionErrorr?   )r   r+   r?   r   r   rG   spacingZalignZwidths	max_widthlinesline_spacingr5   
line_widthline_heightrK   topidxr   r   r   rD     s(    
zImageDraw.multiline_textc             C   sG   |  j  |  r |  j | |  S| d  k r: |  j   } n  | j |  S)N)rA   multiline_textsizer&   getsize)r   r?   r   r   r   r   rO   #  s
    zImageDraw.textsizec       
      C   s~   d } |  j  |  } |  j d d | d | } x5 | D]- } |  j | |  \ } }	 t | |  } q9 W| t |  | f S)Nr   rL   r   r   )rC   rO   rQ   len)
r   r?   r   rT   rU   rV   rW   r5   rX   rY   r   r   r   r\   +  s    zImageDraw.multiline_textsize)__name__
__module____qualname__r   r   r    r#   r&   r*   r.   r0   r2   r3   r5   r7   r8   r9   r:   r;   rA   rC   r?   rD   rO   r\   r   r   r   r   r   .   s.   	




	r   c             C   s7   y |  j  |  SWn t k
 r2 t |  |  SYn Xd  S)N)getdrawrE   r   )r   r   r   r   r   Draw?  s    rc   c             C   s   d  } | s d | k rE y d d l  m } WqE t k
 rA YqE Xn  | d  k rd d d l  m } n  |  r| | j |   }  n  |  | f S)NZnicestr   )_imagingagg)
ImageDraw2)r%   rd   ImportErrorre   rc   )r   Zhintshandlerr   r   r   rb   T  s    rb   c             C   s?  |  j    } | \ } } y4 | | | f } | | k r; d S| | | | f <Wn t k
 rd d SYn X| | f g } | d k rYx| rUg  }	 x | D] \ } } x | d | f | d | f | | d f | | d f f D]g \ }
 } y | |
 | f } Wn t k
 rYq X| | k r | | |
 | f <|	 j |
 | f  q q Wq W|	 } q Wn x | r:g  }	 x | D] \ } } x | d | f | d | f | | d f | | d f f D]s \ }
 } y | |
 | f } Wn t k
 rYqX| | k r| | k r| | |
 | f <|	 j |
 | f  qqWqoW|	 } q\Wd S)zFill bounded region.Nr   )r   
IndexErrorrP   )imager+   valueZborderZpixelxyZ
backgroundZedgeZnewedgestpr   r   r   	floodfillo  sF    		G	Grp   )r(   r!   r%   r   r   Z	PIL._utilr   objectr   rc   r   r1   ZOutlinerE   rb   rp   r   r   r   r   <module>!   s   	 