rL i:dZddlZddlmZddlmZGddZGddeZGd d eZ Gd d eZ Gd deZ GddeZ Gdde Z Gdde ZGdde ZGdde ZGdde Zee e e eeeegZdZddZy)z/Contains classes for generating hatch patterns.N)_api)PathceZdZdZy)HatchPatternBasez#The base class for a hatch pattern.N)__name__ __module__ __qualname____doc__V/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/hatch.pyrr s-r rceZdZdZdZy)HorizontalHatchct|jd|jdz|z|_|jdz|_y)N-+intcount num_lines num_verticesselfhatchdensitys r __init__zHorizontalHatch.__init__;ekk#.S1AAWLM NNQ.r c tjdd|jdd\}}||dz z }d|ddddf<||dddd f<d|d dddf<||d ddd f<tj|ddd<tj |d dd<y N?FT)retstepg@rrnplinspacerrMOVETOLINETOrverticescodesstepsstepsizes r set_vertices_and_codesz&HorizontalHatch.set_vertices_and_codess++c3.24x BAq!AqAq!Aqkkadd kkadd r Nrrr rr/r r r rr / "r rceZdZdZdZy) VerticalHatchct|jd|jdz|z|_|jdz|_y)N|rrrrs r rzVerticalHatch.__init__ rr c tjdd|jdd\}}||dz z }||ddddf<d|dddd f<||d dddf<d|d ddd f<tj|ddd<tj |d dd<yr r%r*s r r/z$VerticalHatch.set_vertices_and_codes$s++c3.24x B!AqAq!AqAqkkadd kkadd r Nr0r r r r3r3r1r r3ceZdZdZdZy)NorthEastHatchct|jd|jdz|jdz|z|_|jr|jdzdz|_yd|_y)N/xXr$rrrrs r rzNorthEastHatch.__init__1sa [[  C 0 05;;s3C Cw NP >>!%!!3q 8D  !D r c tjdd|jdz}d|z|ddddf<d|z |ddddf<d|z|ddddf<d|z |ddddf<tj|ddd<tj |ddd<yNgg?r$r!rrr"r%rr+r,r-s r r/z%NorthEastHatch.set_vertices_and_codes9 D#t~~'9:%KAq%KAq%KAq%KAqkkadd kkadd r Nr0r r r r8r80s ""r r8ceZdZdZdZy)SouthEastHatchct|jd|jdz|jdz|z|_|jr|jdzdz|_yd|_y)N\r;r<r$rrrrs r rzSouthEastHatch.__init__Dse [[ S!1 1EKK4D D  >>!%!!3q 8D  !D r c tjdd|jdz}d|z|ddddf<d|z|ddddf<d|z|ddddf<d|z|ddddf<tj|ddd<tj |ddd<yr>r%r?s r r/z%SouthEastHatch.set_vertices_and_codesMr@r Nr0r r r rBrBCs ""r rBceZdZdZdZdZy)ShapesFc8|jdk(rd|_d|_y|jdzdz|jdzz|jdz|jzz|_|jt|jz|j rdndz|_y)Nrrr$)num_rows num_shapesrlenshape_verticesfilledrs r rzShapes.__init__Zs ==A DO !D  $  2Q 64==1;LM $  2dmmC DDO!%!$T%8%8!9":'+{{!";D r cd|jz }|j|z|jz}|j}|js7t j ||ddddzg}t j ||g}g}g}t|jdzD]}|dzdk(r%t jdd|jdz} n*t j|dz d|dz z |j} ||z} | D])} |j|| | gz|j|+t j ||t j ||y)Nr"g?r$rr)out) rIrLsize shape_codesrMr& concatenateranger'append) rr+r,offsetrLrRvertices_parts codes_partsrowcolsrow_poscol_poss r r/zShapes.set_vertices_and_codeses=t}}$,,v5 A&& {{^^"!5!;<>N..+{)CDK *+ 0CQw!|{{1a):;{{6A:q6A:~t}}MFlG 0%%n7I&IJ"";/ 0  0 ~84 {.r N)rrr rMrr/r r r rGrGWs F </r rGceZdZfdZxZS)Circlesctj}|j|_|j|_t |||y)N)r unit_circler+rLr,rRsuperrrrrpath __class__s r rzCircles.__init__}s8!"mm:: (r )rrr r __classcell__rds@r r^r^|s ))r r^c"eZdZdZfdZxZS) SmallCirclesg?cX|jd|z|_t| ||y)NorrIrarrrrrds r rzSmallCircles.__init__'S)W4  (r rrr rQrrerfs@r rhrhs D))r rhc"eZdZdZfdZxZS) LargeCirclesgffffff?cX|jd|z|_t| ||y)NOrkrls r rzLargeCircles.__init__rmr rnrfs@r rprps D))r rpc&eZdZdZdZfdZxZS)SmallFilledCirclesg?TcX|jd|z|_t| ||y)N.rkrls r rzSmallFilledCircles.__init__rmr rrr rQrMrrerfs@r rtrts D F))r rtc&eZdZdZdZfdZxZS)StarsgUUUUUU?Tcv|jd|z|_tjd}|j|_t jt|j tjtj|_ tj|jd<t|9||y)N*)dtyper)rrIrunit_regular_starr+rLr&fullrKr) code_typerRr(rarrbs r rzStars.__init__sS)W4 %%a("mm773t':':#;T[[)-9"kk (r rwrfs@r ryrys D F))r ryc td}|qt|j|}|rTdjt|}djt|}t j ddd|d|dyyy) Nz -+|/\xXoO.*z3.4z3.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.)removalmessage)set differencejoinsortedrwarn_deprecated)rvalid_hatch_patternsinvalidsvalids r _validate_hatch_patternrs~. u:(()=> GGF#789Ewwvh/0H  =eWE$:&SS  r c6t|}tDcgc] }||| }}t|Dcgc]}|jc}}|dk(rt t j dSt j |df}t j |tj}d}|D]W}|jdk7s||||jz} ||||jz} |j| | ||jz }Yt ||Scc}wcc}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)rrr) r _hatch_typessumrrr&emptyrr/) hatchpatternr hatch_typepatternspatternrr+r,cursorvertices_chunk codes_chunks r get_pathrs 'lG#/0<10H0HE,,EFLqBHHV$%%xxq)*H HH\4>> 2E F+   1 $%fVg6J6J-JKNv0D0D'DEK  * *>; G g** *F + %  %0Es DD))r numpyr& matplotlibrmatplotlib.pathrrrr3r8rBrGr^rhrprtryrrrr r r rs5   "&"""$"""%"&"%"("/ "/J)f))7))7))) )F )   "!r