L iFdZddlmZmZddlmZddlmZddlm Z ddl m Z ddl Z ddl Z ddlZe jeZddZd Zdd Zd Zd Zd ZdZdZdZddZedk(rddlZej8eyy)z;Visualize DesignSpaceDocument and resulting VariationModel.)VariationModel supportScalar)DesignSpaceDocument)pyplot)axes3d)cycleNc|\}}}t|Dcgc]}|||z |z|z zc}t|Dcgc]}|||z |z|z zc}z|gzScc}wcc}wN)range)supportcountabcis [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/varLib/plot.pystopsrsqGAq!+0,7Qa!eq[5 7,1%L 9q1A{U" " 9 : # 7 9s AAc t|ttjjj D]\}}t |dk(r-|j|j|ddgdgdfd|i|At |dk(rB|j|j|ddg|j|ddgdgdfd|i|tt |y)Nr?ocolor) ziprrcmSet1colorslenplotgetAssertionError) locationsaxessubplotkwargslocrs r_plotLocationsDotsr's)U699>>+@+@%AB , U t9> GLL#''$q'1-.s R% R6 R Y!^ GLLa!$%a!$%        !T+ + ,c t|}tj|dz}tj||z }|dgt|z}t|}t t|Dcgc]}||j |}}t |dj} t| dk(rt|| d|||fd|i|yt| dk(rt|| |||fd|i|ytdcc}w)Ng?rrnamesrOnly 1 or 2 axes are supported) rmathceilrr reverseMappingsortedkeys_plotLocations2D_plotLocations3D ValueError) r"figr*r%ncolsrowsmodelrr#s r plotLocationsr9*s IA 99QV D 99QX D }Y' 9 %E5:3u:5F GU5''* + GE G )A,##% &D 4yA~QdDPPP Tac4MUMfM9:: Hs.C5c b|jd}tt|jt t j jjt |D]\}\} } } | |j| |j|t jdd| j|d} gg}} t| D]2}t||i| }| j||j|4|j | |fd| i|t#|j$|g|y)Norr<grr) add_subplot enumeratersupportsrrrrr set_title set_xlabelxlimr rrappendrr'r")r8axisr4r6r7r*r%r$rr rnameXsXYxys rr1r1>s ooc"G%. ENNE&)).."7"78%,G&=! !GUD     d #4  D$ [[0 121r AtQi1A HHQK HHQK   Q11&15??TFGr?rr@rrrrrrArB set_ylabelrCylimr rrrDrr'r")r8r#r4r7r6r*r%ax1ax2axis3Drr rrFrGYsrJrHrIZrKzs rr2r2SsHC __ST_ 2F%. ENNE&)).."7"78%,G&@! !GUD     T "## D$ D$ [[/ 0 [[/ 0r 8A"b!qA !33"2G<     FKK1a 7u 7 7 8r 8A"b!qA !33"2G<     FKK1a 7u 7 7 8 5??S#J?;@r(c |j|jDcgc]}|j}}|jDcgc]}|j}}t |||fi|ycc}wcc}wr ) normalizesourceslocationrFr9)docr4r%sr"r*s r plotDocumentr^wsZMMO%([[11I1 [[ )QVV )E ))S%2622 )s A&A+c  t|jdk(sJ|jd t fd|jD}t fd|jD}ddl}|j ||||z dz }g}|D])} | i} |j| |} |j| +|jd} | j||dfi|y)Nrrc3BK|]}|jdywrNr .0r&rEs r z*_plotModelFromMasters2D..?3774#?c3BK|]}|jdywrarbrcs rrez*_plotModelFromMasters2D..rfrgdr;-) r axisOrderminr"maxnumpyarangeinterpolateFromMastersrDr>r)r8 masterValuesr4r%axis_minaxis_maxnprHrIrJr&vr$rEs @r_plotModelFromMasters2Drv~s u 1 $$ $ ??1 D?u??H?u??H (Hx(':c&ABA A Qi  ( (l ;   ooc"GGLLAs%f%r(c >t|jdk(sJ|jd|jdctfd|jD}t fd|jD}tfd|jD}t fd|jD}ddl}|j ||||z dz } |j ||||z dz } |j| | \} } g} t| | D]U\} } g}| j|t| | D].\}}||i}|j||}|j|0W|j| } |jd d }|j| | | fi|y) Nrrrc3BK|]}|jdywrarbrdr&axis1s rrez*_plotModelFromMasters3D..A#CGGE1%Argc3BK|]}|jdywrarbrys rrez*_plotModelFromMasters3D..r{rgc3BK|]}|jdywrarbrdr&axis2s rrez*_plotModelFromMasters3D..r{rgc3BK|]}|jdywrarbr~s rrez*_plotModelFromMasters3D..r{rgrir;rMrN)rrkrlr"rmrnromeshgridrrDrparrayr> plot_surface)r8rqr4r% axis1_min axis1_max axis2_min axis2_maxrtrHrIrVrow_xrow_yz_rowrJrKr&rurTrzrs @@r_plotModelFromMasters3Drs u 1 $$ $??1%uq'9LE5AAAIAAAIAAAIAAAI )YY)>#(EFA )YY)>#(EFA ;;q! DAq AAq  u u% DAq!UA&C,,S,?A LLO   A __ST_ 2FF1a*6*r(c t|jdk(rt|||fi|yt|jdk(rt|||fi|yt d)zPlot a variation model and set of master values corresponding to the locations to the model into a pyplot figure. Variation model must have axisOrder of size 1 or 2.rrr+N)rrkrvrr3)r8rqr4r%s rplotModelFromMastersrsT 5??q |SCFC U__  "|SCFC9::r(c ddlm}|tjdd}|t |dkr|t dtj t dt dtj t dt dtj tjdtj}|jd t |dk(r@|djd r,t}|j|dt||ntt!d t!d dzDcgc] }t#|}}d |dvrE|Dcgc]-}t%t'|d|j)dD/}}t+||ng}g} |D]j} | j)d \} } |j-t%t'|d| j)dD| j-t/| lt1||dt |d} t3| | |tj4ycc}wcc}w)Nr) configLoggerrz/usage: fonttools varLib.plot source.designspace)filez orz4usage: fonttools varLib.plot location1 location2 ...zBusage: fonttools varLib.plot location1=value1 location2=value2 ...Tz .designspaceArV=c32K|]}t|ywr floatrdrus rrezmain..s#CE!H#C,c32K|]}t|ywr rrs rrezmain..s0Raq0Rr) fontToolsrsysargvrprintstderrexitrfigureset_tight_layoutendswithrreadr^r ordchrdictrsplitr9rDrrrshow)argsrr4r\rr#r]locsr"rqargr&rur8s rmainrs& |xx|N 4y1} ?cjjQ f  D3::V f  P   --/C 4yA~$q'**>:!# aS# %c#hC1 =>1A>> d1g OST!DT#Caggcl#CDETDT $ $IL .3Q  c$0R399S>0R&S!TU##E!H- .#9d3FS15F.GHE  c : KKM?Ts I"2I__main__) r )__doc__fontTools.varLib.modelsrrfontTools.designspaceLibr matplotlibrmpl_toolkits.mplot3dr itertoolsrr,loggingr getLogger__name__logrr'r9r1r2r^rvrrrrr(rrsAA8'  g!,";(=*!@H3&*+: ;,^ z CHHTVr(