
    P/Ph                     ~   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dS )z/Contains classes for generating hatch patterns.    N)_api)Pathc                       e Zd ZdZdS )HatchPatternBasez#The base class for a hatch pattern.N)__name__
__module____qualname____doc__     P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/hatch.pyr   r   	   s        --Dr   r   c                       e Zd Zd Zd ZdS )HorizontalHatchc                     t          |                    d          |                    d          z   |z            | _        | j        dz  | _        d S )N-+   intcount	num_linesnum_verticesselfhatchdensitys      r   __init__zHorizontalHatch.__init__   H    ekk#..S1A1AAWLMM NQ.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<   d S 
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 4 4xBAq!AqAq!Aqkaddkaddr   Nr   r   r	   r   r/   r   r   r   r   r      2        / / /	" 	" 	" 	" 	"r   r   c                       e Zd Zd Zd ZdS )VerticalHatchc                     t          |                    d          |                    d          z   |z            | _        | j        dz  | _        d S )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<   d S r    r%   r*   s        r   r/   z$VerticalHatch.set_vertices_and_codes$   s    +c3.24 4 4xB!AqAq!AqAqkaddkaddr   Nr0   r   r   r   r3   r3      r1   r   r3   c                       e Zd Zd Zd ZdS )NorthEastHatchc                     t          |                    d          |                    d          z   |                    d          z   |z            | _        | j        r| j        dz   dz  | _        d S d| _        d S )N/xXr$   r   r   r   r   s      r   r   zNorthEastHatch.__init__1   s}    [[C 0 005;;s3C3CCwNP 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<   d S 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kaddkaddr   Nr0   r   r   r   r8   r8   0   s2        " " "" " " " "r   r8   c                       e Zd Zd Zd ZdS )SouthEastHatchc                     t          |                    d          |                    d          z   |                    d          z   |z            | _        | j        r| j        dz   dz  | _        d S d| _        d S )N\r;   r<   r$   r   r   r   r   s      r   r   zSouthEastHatch.__init__D   s    [[S!1!11EKK4D4D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<   d S r>   r%   r?   s       r   r/   z%SouthEastHatch.set_vertices_and_codesM   r@   r   Nr0   r   r   r   rB   rB   C   s2        " " "" " " " "r   rB   c                       e Zd ZdZd Zd ZdS )ShapesFc                     | j         dk    rd| _        d| _        d S | 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  | _        d S )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 $ 2dmC DDO!%!$T%8!9!9":'+{"9!!";Dr   c                 h   d| j         z  }| j        |z  | j        z  }| j        }| j        s8t          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 ]1}|	                    |||
gz              |	                    |           2t          j        ||           t          j        ||           d S )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   sh   t}$,v5	A&{ 	E^"!5!;<> >N.+{)CDDK*++ 	0 	0CQw!||{1a):;;{6A:q6A:~t}MMFlG 0 0%%n7I&IJJJ"";////0 	~84444
{......r   N)r   r   r	   rM   r   r/   r   r   r   rG   rG   W   s7        F	< 	< 	</ / / / /r   rG   c                        e Zd Z fdZ xZS )Circlesc                     t          j                    }|j        | _        |j        | _        t                                          ||           d S )N)r   unit_circler+   rL   r,   rR   superr   r   r   r   path	__class__s       r   r   zCircles.__init__}   sE    !!"m:(((((r   )r   r   r	   r   __classcell__rd   s   @r   r^   r^   |   s8        ) ) ) ) ) ) ) ) )r   r^   c                   "     e Zd ZdZ fdZ xZS )SmallCirclesg?c                     |                     d          |z  | _        t                                          ||           d S )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                     |                     d          |z  | _        t                                          ||           d S )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                     |                     d          |z  | _        t                                          ||           d S )N.rk   rl   s      r   r   zSmallFilledCircles.__init__   rm   r   r   r   r	   rQ   rM   r   re   rf   s   @r   rt   rt      sB        DF) ) ) ) ) ) ) ) )r   rt   c                   &     e Zd ZdZdZ fdZ xZS )StarsgUUUUUU?Tc                 r   |                     d          |z  | _        t          j        d          }|j        | _        t          j        t          | j                  t          j	        t          j
                  | _        t          j        | j        d<   t                                          ||           d S )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(("m73t':#;#;T[)-9 9 9"k(((((r   rw   rf   s   @r   ry   ry      sB        DF) ) ) ) ) ) ) ) )r   ry   c           	      <   t          d          }| t          |                               |          }|rfd                    t          |                    }d                    t          |                    }t	          j        ddd| d| d           d S d S d S )	Nz-+|/\xXoO.* z3.4z3.11z#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 in %(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899Ewwvh//00H Se S S$S S S      
	 
	r      c                     t                     fdt          D             }t          d |D                       }|dk    r!t          t	          j        d                    S t	          j        |df          }t	          j        |t          j                  }d}|D ]Q}|j        dk    rD||||j        z            }||||j        z            }	|                    ||	           ||j        z  }Rt          ||          S )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.
    c                 (    g | ]} |          S r   r   ).0
hatch_typer   hatchpatterns     r   
<listcomp>zget_path.<locals>.<listcomp>   s5     0 0 0 
<11 0 0 0r   c                     g | ]	}|j         
S r   )r   )r   patterns     r   r   zget_path.<locals>.<listcomp>   s    EEE,EEEr   r   )r   r   r   )	r   _hatch_typessumr   r&   emptyr   r   r/   )
r   r   patternsr   r+   r,   cursorr   vertices_chunkcodes_chunks
   ``        r   get_pathr      s(    'llG0 0 0 0 0".0 0 0HEEHEEEFFLqBHV$$%%%xq)**HH\4>22EF + +1$$%fVg6J-J&JKNv0D'D DEK**>;GGGg**F%   r   )r   )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 5                      	 	 	 	 	 	 	 	
" " " " "& " " """ " " " "$ " " """ " " " "% " " "&" " " " "% " " "("/ "/ "/ "/ "/ "/ "/ "/J) ) ) ) )f ) ) )) ) ) ) )7 ) ) )) ) ) ) )7 ) ) )) ) ) ) ) ) ) )) ) ) ) )F ) ) ) 		  "! ! ! ! ! !r   