)Ej4 dZddlmZmZddlmZddlmZddlm Z ddl m Z ddl Z ddl Z ddlZe jeZdd Zd Zdd Zd Zd ZdZdZdZdZddZedkrddlZejedSdS)z;Visualize DesignSpaceDocument and resulting VariationModel.)VariationModel supportScalar)DesignSpaceDocument)pyplot)axes3d)cycleN c|\fdtDfdtDzgzS)Nc,g|]}z |zz zSr ).0iabcounts GC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/varLib/plot.py zstops..s+777Qa!eq[5 777c,g|]}z |zz zSr r )r rrcrs rrzstops..s+ 9 9 9q1A{U" " 9 9 9r)range)supportrrrrs `@@@rstopsrsmGAq! 877777%,,777 9 9 9 9 9 9E%LL 9 9 9 : # rc t|ttjjjD]\}}t |dkr/|j||ddgdgdfd|i|Gt |dkrK|j||ddg||ddgdgdfd|i|tt |dS)Nr?ocolor) ziprrcmSet1colorslenplotgetAssertionError) locationsaxessubplotkwargslocrs r_plotLocationsDotsr-s)U69>+@%A%ABB , , U t99>> GL#''$q'1--.s R R% R6 R R R R YY!^^ GLa!$$%a!$$%            !T++ + , ,rc 2t|}tj|dz}tj||z }dgt|zt|fdt tDt |d}t|dkrt|d|||fdi|dSt|dkrt||||fdi|dStd)Ng?c6g|]}j|Sr )reverseMapping)r rmodelnamess rrz!plotLocations..3s& G G GU5'* + G G Grrrr2rOnly 1 or 2 axes are supported) r$mathceilrrsortedkeys_plotLocations2D_plotLocations3D ValueError) r(figr2r+ncolsrowsr)r1s ` @r plotLocationsr?*s# IA 9QV  D 9QX  D }Y' 9 % %E G G G G GU3u::5F5F G G GE )A,##%% & &D 4yyA~~QdDPPPPPPPP Tac4MMUMfMMMMM9:::rc |d}tt|jt t jjjt |D]\}\} } } | | | | |t j dd| |d} gg}} t| D]>}t||i| }| |||?|j| |fd| i|t#|j|g|dS)NorrBgrr) add_subplot enumerater supportsrrr!r"r# set_title set_xlabelxlimr&rrappendr%r-r()r1axisr;r=r>r2r+r*rrrnameXsXYxys rr8r8>sIooc""G%. ENE&)."788%,,GG&&==! !GUD     d # # #4    D$ [[0 1 121r  AtQi11A HHQKKK HHQKKKK Q111&1115?TFG<<<r=r2r+ax1ax2axis3DrrrrLrMYsrPrNrOZrQzs rr9r9Ss`HC __ST_ 2 2F%. ENE&)."788%,,GG&&@@! !GUD     T " " "## D$ D$ [[/ 0 0 [[/ 0 0r 8 8A"b!qA  !33"2G<<   FK1a 7 7u 7 7 7 7 7r 8 8A"b!qA  !33"2G<<   FK1a 7 7u 7 7 7 7 75?S#J????;@@rc |d|jD}d|jD}t|||fi|dS)Ncg|] }|j Sr )locationr ss rrz plotDocument..ys111111rcg|] }|j Sr )rLras rrz plotDocument..zs ) ) )QV ) ) )r) normalizesourcesr?)docr;r+r(r2s r plotDocumentrgwsYMMOOO11S[111I ) )S[ ) ) )E)S%22622222rc  t|jdksJ|jd t fd|jD}t fd|jD}ddl}|||||z dz }g}|D]1} | i} || |} || 2| d} | j ||dfi|dS)Nrrc3DK|]}|dVdSrNr&r r,rKs r z*_plotModelFromMasters2D..1??3774##??????rc3DK|]}|dVdSrjrkrls rrmz*_plotModelFromMasters2D..rnrdrA-) r$ axisOrderminr(maxnumpyarangeinterpolateFromMastersrJrDr%)r1 masterValuesr;r+axis_minaxis_maxnprNrOrPr,vr*rKs @r_plotModelFromMasters2Dr}~s u  1 $ $ $ $ ?1 D????u?????H????u?????H (Hx(':c&ABBA A Qi  ( (l ; ;  ooc""GGLAs%%f%%%%%rc t|jdksJ|jd|jdctfd|jD}t fd|jD}tfd|jD}t fd|jD}ddl}|||||z dz } |||||z dz } || | \} } g} t| | D]c\} } g}| |t| | D]6\}}||i}| ||}| |7d| | } | d d }|j | | | fi|dS) Nrrrc3DK|]}|dVdSrjrkr r,axis1s rrmz*_plotModelFromMasters3D..1AA#CGGE1%%AAAAAArc3DK|]}|dVdSrjrkrs rrmz*_plotModelFromMasters3D..rrc3DK|]}|dVdSrjrkr r,axis2s rrmz*_plotModelFromMasters3D..rrc3DK|]}|dVdSrjrkrs rrmz*_plotModelFromMasters3D..rrrprArSrT)r$rrrsr(rtrurvmeshgridr rJrwarrayrD plot_surface)r1rxr;r+ axis1_min axis1_max axis2_min axis2_maxr{rNrOr\row_xrow_yz_rowrPrQr,r|rZrrs @@r_plotModelFromMasters3Drs u  1 $ $ $ $?1%uq'9LE5AAAAAAAAAIAAAAAAAAAIAAAAAAAAAIAAAAAAAAAI )YY)>#(EFFA )YY)>#(EFFA ;;q!  DAq AAq  u u%%  DAq!UA&C,,S,??A LLOOOO   A __ST_ 2 2FF1a**6*****rc t|jdkrt|||fi|dSt|jdkrt|||fi|dSt 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.rrr3N)r$rrr}rr:)r1rxr;r+s rplotModelFromMastersrs} 5?q  |SCCFCCCCC U_   " "|SCCFCCCCC9:::rc   ddlm}|tjdd}|t |dkrt dtjt dt dtjt dt dtjtjdtj }| d t |dkrV|d d r;t}| |dt||n,d tt!d t!d dzD d|dvr fd|D}t#||ng}g}|D]}|d\}} |t)t+ d|dD|t-| t/| dt |d} t1| ||tjdS)Nr) configLoggerrz/usage: fonttools varLib.plot source.designspace)filez orz4usage: fonttools varLib.plot location1 location2 ...zBusage: fonttools varLib.plot location1=value1 location2=value2 ...Tz .designspacec,g|]}t|Sr )chr)r rs rrzmain..s>>>1A>>>rAr\=c g|]<}ttd|dD=S)c34K|]}t|VdSNfloatr r|s rrmz"main...s(#C#CE!HH#C#C#C#C#C#Cr,)dictr split)r rbr)s rrzmain..sDTTT!DT#C#Caggcll#C#C#CDDEETTTrc34K|]}t|VdSrrrs rrmzmain..s(0R0Raq0R0R0R0R0R0Rrr) fontToolsrsysargvr$printstderrexitrfigureset_tight_layoutendswithrreadrgrordr?rrJrr rrrshow) argsrr;rflocsr(rxargr,r|r1r)s @rmainrsf&&&&&& |x|LNNN 4yy1}} ?cjQQQQ f  D3:VVVV f  P      -//C 4yyA~~$q'**>::~!## aS#>>c#hhC1 = =>>> d1g  TTTTtTTTD $ $ $ $ $IL . .3Q  c$0R0R399S>>0R0R0R&S&S!T!TUUU##E!HH----"9d3FS15F5F3F.GHHE  c : : : KMMMMMr__main__)r r)__doc__fontTools.varLib.modelsrrfontTools.designspaceLibr matplotlibrmpl_toolkits.mplot3dr itertoolsrr4loggingr getLogger__name__logrr-r?r8r9rgr}rrrrr rrrs~AAAAAAAAAA888888''''''  g!!,,,";;;;(===*!@!@!@H333&&&*+++: ; ; ;,,,,^ zJJJ CHTTVVr