
    h                     <   S r SSKrSSKJr  SSKJr   " S S5      r " S S\5      r " S	 S
\5      r	 " S S\5      r
 " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\\	\
\\\\\/rS rSS jrg)z/Contains classes for generating hatch patterns.    N)_api)Pathc                       \ rS rSrSrSrg)HatchPatternBase	   z#The base class for a hatch pattern. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       B/var/www/html/env/lib/python3.13/site-packages/matplotlib/hatch.pyr   r   	   s    -r   r   c                        \ rS rSrS rS rSrg)HorizontalHatch   c                     [        UR                  S5      UR                  S5      -   U-  5      U l        U R                  S-  U l        g )N-+   intcount	num_linesnum_verticesselfhatchdensitys      r   __init__HorizontalHatch.__init__   ;    ekk#.S1AAWLM NNQ.r   c                     [         R                  " SSU R                  SSS9u  p4X4S-  -  nSUSS S2S4'   X1SS S2S	4'   SUS	S S2S4'   X1S	S S2S	4'   [        R                  USS S2'   [        R
                  US	S S2'   g 
N              ?FT)retstepg       @r   r      nplinspacer   r   MOVETOLINETOr   verticescodesstepsstepsizes        r   set_vertices_and_codes&HorizontalHatch.set_vertices_and_codes   s    ++c3.24BAq!AqAq!Aqkkaddkkaddr   r   r   Nr	   r
   r   r   r!   r4   r   r   r   r   r   r          /	"r   r   c                        \ rS rSrS rS rSrg)VerticalHatch   c                     [        UR                  S5      UR                  S5      -   U-  5      U l        U R                  S-  U l        g )N|r   r   r   r   s      r   r!   VerticalHatch.__init__    r#   r   c                     [         R                  " SSU R                  SSS9u  p4X4S-  -  nX1SS S2S4'   SUSS S2S	4'   X1S	S S2S4'   SUS	S S2S	4'   [        R                  USS S2'   [        R
                  US	S S2'   g r%   r*   r/   s        r   r4   $VerticalHatch.set_vertices_and_codes$   s    ++c3.24B!AqAq!AqAqkkaddkkaddr   r6   Nr7   r   r   r   r:   r:      r8   r   r:   c                        \ rS rSrS rS rSrg)NorthEastHatch0   c                     [        UR                  S5      UR                  S5      -   UR                  S5      -   U-  5      U l        U R                  (       a  U R                  S-   S-  U l        g SU l        g )N/xXr)   r   r   r   r   s      r   r!   NorthEastHatch.__init__1   sa    [[C 005;;s3CCwNP>>!%!!3q 8D !Dr   c                    [         R                  " SSU R                  S-   5      nSU-   USS S2S4'   SU-
  USS S2S4'   SU-   USS S2S4'   SU-
  USS S2S4'   [        R                  USS S2'   [        R
                  USS S2'   g Ng      g      ?r)   r&   r   r   r'   r*   r   r0   r1   r2   s       r   r4   %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   r6   Nr7   r   r   r   rB   rB   0   s    ""r   rB   c                        \ rS rSrS rS rSrg)SouthEastHatchC   c                     [        UR                  S5      UR                  S5      -   UR                  S5      -   U-  5      U l        U R                  (       a  U R                  S-   S-  U l        g SU l        g )N\rF   rG   r)   r   r   r   r   s      r   r!   SouthEastHatch.__init__D   se    [[S!11EKK4DD >>!%!!3q 8D !Dr   c                    [         R                  " SSU R                  S-   5      nSU-   USS S2S4'   SU-   USS S2S4'   SU-   USS S2S4'   SU-   USS S2S4'   [        R                  USS S2'   [        R
                  USS S2'   g rJ   r*   rK   s       r   r4   %SouthEastHatch.set_vertices_and_codesM   rM   r   r6   Nr7   r   r   r   rO   rO   C   s    ""r   rO   c                   $    \ rS rSrSrS rS rSrg)ShapesW   Fc                 D   U R                   S:X  a  SU l        SU l        g U R                   S-  S-   U R                   S-   -  U R                   S-  U R                   -  -   U l        U R                  [        U R                  5      -  U R
                  (       a  SOS-  U l        g )Nr   r   r)   )num_rows
num_shapesr   lenshape_verticesfilledr   s      r   r!   Shapes.__init__Z   s    ==ADO !D $ 2Q 64==1;LM $ 2dmmC DDO!%!$T%8%8!9":'+{{!";Dr   c                    SU R                   -  nU R                  U-  U R                  -  nU R                  nU R                  (       d7  [
        R                  " XDS S S2   S-  /5      n[
        R                  " XU/5      n/ n/ n[        U R                   S-   5       H  nUS-  S:X  a&  [
        R                  " SSU R                   S-   5      n	O+[
        R                  " US-  SUS-  -
  U R                   5      n	X-  n
U	 H)  nUR                  XKU
/-   5        UR                  U5        M+     M     [
        R                  " XaS9  [
        R                  " XrS9  g )Nr'   g?r)   r   r   )out)
rZ   r]   sizeshape_codesr^   r+   concatenateranger,   append)r   r0   r1   offsetr]   rd   vertices_partscodes_partsrowcolsrow_poscol_poss               r   r4   Shapes.set_vertices_and_codese   s'   t}}$,,v5		A&&{{^^"!5!;<>N..+)CDK*+CQw!|{{1a):;{{6A:q6A:~t}}MlG%%n7I&IJ"";/   , 	~4
{.r   )r[   r   N)r	   r
   r   r   r^   r!   r4   r   r   r   r   rW   rW   W   s    F	</r   rW   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )Circles|   c                    > [         R                  " 5       nUR                  U l        UR                  U l        [        TU ]  X5        g )N)r   unit_circler0   r]   r1   rd   superr!   r   r   r    path	__class__s       r   r!   Circles.__init__}   s6    !"mm::(r   )rd   r]   )r	   r
   r   r   r!   r   __classcell__rx   s   @r   rq   rq   |   s    ) )r   rq   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )SmallCircles   g?c                 V   > UR                  S5      U-  U l        [        TU ]  X5        g )Nor   rZ   ru   r!   r   r   r    rx   s      r   r!   SmallCircles.__init__   %    S)W4(r   rZ   r	   r
   r   r   rc   r!   r   rz   r{   s   @r   r}   r}      s    D) )r   r}   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )LargeCircles   gffffff?c                 V   > UR                  S5      U-  U l        [        TU ]  X5        g )NOr   r   s      r   r!   LargeCircles.__init__   r   r   r   r   r{   s   @r   r   r      s    D) )r   r   c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )SmallFilledCircles   g?Tc                 V   > UR                  S5      U-  U l        [        TU ]  X5        g )N.r   r   s      r   r!   SmallFilledCircles.__init__   r   r   r   	r	   r
   r   r   rc   r^   r!   r   rz   r{   s   @r   r   r      s    DF) )r   r   c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )Stars   gUUUUUU?Tc                 r  > UR                  S5      U-  U l        [        R                  " S5      nUR                  U l        [        R                  " [        U R
                  5      [        R                  [        R                  S9U l        [        R                  U R                  S'   [        TU ]9  X5        g )N*   )dtyper   )r   rZ   r   unit_regular_starr0   r]   r+   fullr\   r.   	code_typerd   r-   ru   r!   rv   s       r   r!   Stars.__init__   s    S)W4%%a("mm773t':':#;T[[)-9"kk(r   )rZ   rd   r]   r   r{   s   @r   r   r      s    DF) )r   r   c           	         [        S5      nU bt  [        U 5      R                  U5      nU(       aR  SR                  [        U5      5      nSR                  [        U5      5      n[        R
                  " SSSU SU S3S9  g g g )	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9Ewwvh/0H  =eW E$: &SS  r   c                 @   [        U5      n[         Vs/ s H  nU" X5      PM     nn[        U Vs/ s H  oDR                  PM     sn5      nUS:X  a  [	        [
        R                  " S5      5      $ [
        R                  " US45      n[
        R                  " U[        R                  5      nSnU HT  nUR                  S:w  d  M  XhXR                  -    n	XxXR                  -    n
UR                  X5        XR                  -  nMV     [	        Xg5      $ s  snf s  snf )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   r4   )hatchpatternr    
hatch_typepatternspatternr   r0   r1   cursorvertices_chunkcodes_chunks              r   get_pathr      s    'lG #/0".J <1".  0HEH,,HEFLqBHHV$%%xxq)*HHH\4>>2EF1$%V6J6J-JKNv0D0D'DEK**>G***F    %0Es
   DD)   )r   numpyr+   
matplotlibr   matplotlib.pathr   r   r   r:   rB   rO   rW   rq   r}   r   r   r   r   r   r   r   r   r   <module>r      s    5    	 	
"& """$ """% "&"% "("/ "/J)f ))7 ))7 )) ))F ) 		"!r   