
    G8c                     :   d Z ddlZddlmZ ddlmZ  G d d      Z G d de      Z G d	 d
e      Z	 G d de      Z
 G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zee	e
eeeeegZd ZddZy)z/Contains classes for generating hatch patterns.    N)_api)Pathc                       e Zd ZdZy)HatchPatternBasez#The base class for a hatch pattern.N)__name__
__module____qualname____doc__     2/usr/lib/python3/dist-packages/matplotlib/hatch.pyr   r   	   s    -r   r   c                       e Zd Zd Zd Zy)HorizontalHatchc                     t        |j                  d      |j                  d      z   |z        | _        | j                  dz  | _        y )N-+   intcount	num_linesnum_verticesselfhatchdensitys      r   __init__zHorizontalHatch.__init__   ;    ekk#.S1AAWLM NNQ.r   c                 
   t        j                  dd| j                  dd      \  }}||dz  z  }d|dd ddf<   ||dd dd	f<   d|d	d ddf<   ||d	d dd	f<   t        j                  |dd d<   t        j
                  |d	d d<   y 
N              ?FT)retstepg       @r   r      nplinspacer   r   MOVETOLINETOr   verticescodesstepsstepsizes        r   set_vertices_and_codesz&HorizontalHatch.set_vertices_and_codes   s    ++c3.24xBAq!AqAq!Aqkkaddkkaddr   Nr   r   r	   r   r/   r   r   r   r   r          /	"r   r   c                       e Zd Zd Zd Zy)VerticalHatchc                     t        |j                  d      |j                  d      z   |z        | _        | j                  dz  | _        y )N|r   r   r   r   s      r   r   zVerticalHatch.__init__    r   r   c                 
   t        j                  dd| j                  dd      \  }}||dz  z  }||dd ddf<   d|dd dd	f<   ||d	d ddf<   d|d	d dd	f<   t        j                  |dd d<   t        j
                  |d	d d<   y r    r%   r*   s        r   r/   z$VerticalHatch.set_vertices_and_codes$   s    ++c3.24xB!AqAq!AqAqkkaddkkaddr   Nr0   r   r   r   r3   r3      r1   r   r3   c                       e Zd Zd Zd Zy)NorthEastHatchc                     t        |j                  d      |j                  d      z   |j                  d      z   |z        | _        | j                  r| j                  dz   dz  | _        y d| _        y )N/xXr$   r   r   r   r   s      r   r   zNorthEastHatch.__init__1   sa    [[C 005;;s3CCwNP>>!%!!3q 8D !Dr   c                    t        j                  dd| j                  dz         }d|z   |dd ddf<   d|z
  |dd ddf<   d|z   |dd ddf<   d|z
  |dd ddf<   t        j                  |dd d<   t        j
                  |dd d<   y Ng      g      ?r$   r!   r   r   r"   r%   r   r+   r,   r-   s       r   r/   z%NorthEastHatch.set_vertices_and_codes9       D#t~~'9:%KAq%KAq%KAq%KAqkkaddkkaddr   Nr0   r   r   r   r8   r8   0   s    ""r   r8   c                       e Zd Zd Zd Zy)SouthEastHatchc                     t        |j                  d      |j                  d      z   |j                  d      z   |z        | _        | j                  r| j                  dz   dz  | _        y d| _        y )N\r;   r<   r$   r   r   r   r   s      r   r   zSouthEastHatch.__init__D   se    [[S!11EKK4DD >>!%!!3q 8D !Dr   c                    t        j                  dd| j                  dz         }d|z   |dd ddf<   d|z   |dd ddf<   d|z   |dd ddf<   d|z   |dd ddf<   t        j                  |dd d<   t        j
                  |dd d<   y r>   r%   r?   s       r   r/   z%SouthEastHatch.set_vertices_and_codesM   r@   r   Nr0   r   r   r   rB   rB   C   s    ""r   rB   c                       e Zd ZdZd Zd Zy)ShapesFc                 8   | j                   dk(  rd| _        d| _        y | j                   dz  dz   | j                   dz   z  | j                   dz  | j                   z  z   | _        | j                  t        | j                        z  | j
                  rdndz  | _        y )Nr   r   r$   )num_rows
num_shapesr   lenshape_verticesfilledr   s      r   r   zShapes.__init__Z   s    ==ADO !D $ 2Q 64==1;LM $ 2dmmC DDO!%!$T%8%8!9":'+{{!";Dr   c                    d| j                   z  }| j                  |z  | j                  z  }| j                  }| j                  s7t        j                  ||d d d   dz  g      }t        j                  ||g      }g }g }t        | j                   dz         D ]  }|dz  dk(  r%t        j                  dd| j                   dz         }	n*t        j                  |dz  d|dz  z
  | j                         }	||z  }
|	D ])  }|j                  |||
gz          |j                  |       +  t        j                  ||       t        j                  ||       y )Nr"   g?r$   r   r   )out)
rI   rL   sizeshape_codesrM   r&   concatenateranger'   append)r   r+   r,   offsetrL   rR   vertices_partscodes_partsrowcolsrow_poscol_poss               r   r/   zShapes.set_vertices_and_codese   s=   t}}$,,v5		A&&{{^^"!5!;<>N..+{)CDK*+ 	0CQw!|{{1a):;{{6A:q6A:~t}}MFlG 0%%n7I&IJ"";/0	0 	~84
{.r   N)r   r   r	   rM   r   r/   r   r   r   rG   rG   W   s    F	</r   rG   c                        e Zd Z fdZ xZS )Circlesc                     t        j                         }|j                  | _        |j                  | _        t        |   ||       y )N)r   unit_circler+   rL   r,   rR   superr   r   r   r   path	__class__s       r   r   zCircles.__init__}   s8    !"mm::(r   )r   r   r	   r   __classcell__rd   s   @r   r^   r^   |   s    ) )r   r^   c                   "     e Zd ZdZ fdZ xZS )SmallCirclesg?c                 X    |j                  d      |z  | _        t        |   ||       y )Nor   rI   ra   r   r   r   r   rd   s      r   r   zSmallCircles.__init__   '    S)W4(r   r   r   r	   rQ   r   re   rf   s   @r   rh   rh      s    D) )r   rh   c                   "     e Zd ZdZ fdZ xZS )LargeCirclesgffffff?c                 X    |j                  d      |z  | _        t        |   ||       y )NOrk   rl   s      r   r   zLargeCircles.__init__   rm   r   rn   rf   s   @r   rp   rp      s    D) )r   rp   c                   &     e Zd ZdZdZ fdZ xZS )SmallFilledCirclesg?Tc                 X    |j                  d      |z  | _        t        |   ||       y )N.rk   rl   s      r   r   zSmallFilledCircles.__init__   rm   r   r   r   r	   rQ   rM   r   re   rf   s   @r   rt   rt      s    DF) )r   rt   c                   &     e Zd ZdZdZ fdZ xZS )StarsgUUUUUU?Tc                 v   |j                  d      |z  | _        t        j                  d      }|j                  | _        t        j                  t        | j
                        t        j                  t        j                        | _        t        j                  | j                  d<   t        | 9  ||       y )N*   )dtyper   )r   rI   r   unit_regular_starr+   rL   r&   fullrK   r)   	code_typerR   r(   ra   r   rb   s       r   r   zStars.__init__   s    S)W4%%a("mm773t':':#;T[[)-9"kk(r   rw   rf   s   @r   ry   ry      s    DF) )r   ry   c           	          t        d      }| qt        |       j                  |      }|rTdj                  t        |            }dj                  t        |            }t	        j
                  ddd| d| d       y y y )	Nz-+|/\xXoO.* z3.4z3.7z#hatch must consist of a string of "z3" or None, but found the following invalid values "z]". Passing invalid values is deprecated since %(since)s and will become an error %(removal)s.)removalmessage)set
differencejoinsortedr   warn_deprecated)r   valid_hatch_patternsinvalidsvalids       r   _validate_hatch_patternr      s    ~.u:(()=>GGF#789Ewwvh/0H  =eW E$: &PP  r   c                 6   t        |      }t        D cg c]  } || |       }}t        |D cg c]  }|j                   c}      }|dk(  rt	        t        j                  d            S t        j                  |df      }t        j                  |t        j                        }d}|D ]W  }|j                  dk7  s||||j                  z    }	||||j                  z    }
|j                  |	|
       ||j                  z  }Y t	        ||      S c c}w c c}w )z
    Given a hatch specifier, *hatchpattern*, generates Path to render
    the hatch in a unit square.  *density* is the number of lines per
    unit square.
    r   )r   r   r   )	r   _hatch_typessumr   r   r&   emptyr   r/   )hatchpatternr   
hatch_typepatternspatternr   r+   r,   cursorvertices_chunkcodes_chunks              r   get_pathr      s    'lG #/0 <1 0H 0HE,,EFLqBHHV$%%xxq)*HHH\4>>2EF +1$%fVg6J6J-JKNv0D0D'DEK**>;Gg***F+ %  %0Es
   DD)   )r
   numpyr&   
matplotlibr   matplotlib.pathr   r   r   r3   r8   rB   rG   r^   rh   rp   rt   ry   r   r   r   r   r   r   <module>r      s    5    	 	
"& """$ """% "&"% "("/ "/J)f ))7 ))7 )) ))F ) 		"!r   