
    ]MhF                        d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlZddlZddlZ ej        e          Zdd	Zd
 ZddZd Zd Zd Zd Zd Zd ZddZedk    rddlZ ej         e                       dS dS )z;Visualize DesignSpaceDocument and resulting VariationModel.    )VariationModelsupportScalar)DesignSpaceDocument)pyplot)axes3d)cycleN
   c                     | \  fdt                    D             fdt                    D             z   gz   S )Nc                 ,    g | ]}z
  |z  z  z   S  r   ).0iabcounts     U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/varLib/plot.py
<listcomp>zstops.<locals>.<listcomp>   s+    777Qa!eq[5 	 777    c                 ,    g | ]}z
  |z  z  z   S r   r   )r   r   r   cr   s     r   r   zstops.<locals>.<listcomp>   s+    
9
9
9q1A{U""
9
9
9r   )range)supportr   r   r   r   s    `@@@r   stopsr      sm    GAq! 	877777%,,777
9
9
9
9
9
9E%LL
9
9
9	:#	r   c                    t          | t          t          j        j        j                            D ]\  }}t          |          dk    r/ |j        |                    |d         d          gdgdfd|i| Gt          |          dk    rK |j        |                    |d         d          g|                    |d         d          gdgdfd|i| t          t          |                    d S )N   r         ?ocolor   )
zipr   r   cmSet1colorslenplotgetAssertionError)	locationsaxessubplotkwargslocr   s         r   _plotLocationsDotsr-      s   )U69>+@%A%ABB , ,
Ut99>>GL#''$q'1--.sRR%R6RRRRYY!^^GLa!$$%a!$$%	 
      !T+++, ,r   c                 2   t          |           }t          j        |dz            }t          j        ||z            }d gt          |           z  t          |           fdt	          t                              D             t          | d                                                   }t          |          dk    rt          |d         |||fdi| d S t          |          dk    rt          ||||fdi| d S t          d          )Ng      ?c                 6    g | ]}j         |                  S r   )reverseMapping)r   r   modelnamess     r   r   z!plotLocations.<locals>.<listcomp>3   s&    GGGU5'*+GGGr   r   r   r2   r   Only 1 or 2 axes are supported)
r$   mathceilr   r   sortedkeys_plotLocations2D_plotLocations3D
ValueError)	r(   figr2   r+   ncolsrowsr)   r1   s	     `     @r   plotLocationsr?   *   s#   IA9QVD9QXD}Y'9%%EGGGGGU3u::5F5FGGGE)A,##%%&&D
4yyA~~QdDPPPPPPPP	Tac4MMUMfMMMMM9:::r   c           	         |                     d          }t          t          | j        t	          t
          j        j        j                  t	          |                              D ]\  }\  }	}
}||	                    |           |
                    |           t          j        dd           |	                    |d          }g g }}t          |          D ]>}t          ||i|	          }|                    |           |                    |           ? |j        ||fd|
i| t#          | j        |g|           d S )No         r   rB   g        r   r   )add_subplot	enumerater    supportsr   r   r!   r"   r#   	set_title
set_xlabelxlimr&   r   r   appendr%   r-   r(   )r1   axisr;   r=   r>   r2   r+   r*   r   r   r   nameXsXYxys                    r   r8   r8   >   sI   ooc""G%.ENE&)."788%,,GG& & = =!!GUD d###4   D$[[01121r 	 	AtQi11AHHQKKKHHQKKKKQ111&1115?TFG<<<<!= =r   c           	      ^   |\  }}|                     dd          }	t          t          | j        t	          t
          j        j        j                  t	          |                              D ]\  }
\  }}}||		                    |           |	
                    |           |	                    |           t          j        dd           t          j        dd           |                    |d          }|                    |d          }t          |          D ]r}g g g }}}|D ]U}t!          ||||i|          }|                    |           |                    |           |                    |           V |	j        |||fd|i| st          |          D ]r}g g g }}}|D ]U}t!          ||||i|          }|                    |           |                    |           |                    |           V |	j        |||fd|i| st'          | j        ||g|	           d S )NrA   3d
projectionrB   r   rC   r   )rD   rE   r    rF   r   r   r!   r"   r#   rG   rH   
set_ylabelrI   ylimr&   r   r   rJ   r%   r-   r(   )r1   r)   r;   r>   r=   r2   r+   ax1ax2axis3Dr   r   r   rL   rM   YsrP   rN   rO   ZrQ   zs                         r   r9   r9   S   s`   HC__ST_22F%.ENE&)."788%,,GG& & @ @!!GUD T"""##D$D$[[/00[[/00r 	8 	8A"b!qA  !33"2G<<FK1a77u77777r 	8 	8A"b!qA  !33"2G<<FK1a77u777775?S#J????;@ @r   c                     |                                   d | j        D             }d | j        D             }t          |||fi | d S )Nc                     g | ]	}|j         
S r   )locationr   ss     r   r   z plotDocument.<locals>.<listcomp>y   s    111111r   c                     g | ]	}|j         
S r   )rL   ra   s     r   r   z plotDocument.<locals>.<listcomp>z   s    )))QV)))r   )	normalizesourcesr?   )docr;   r+   r(   r2   s        r   plotDocumentrg   w   sY    MMOOO11S[111I))S[)))E)S%22622222r   c                    t          | j                  dk    sJ | j        d         t          fd| j        D                       }t	          fd| j        D                       }dd l}|                    ||||z
  dz            }g }|D ]1}	|	i}
|                     |
|          }|                    |           2|	                    d          } |j
        ||dfi | d S )Nr   r   c              3   D   K   | ]}|                     d           V  dS r   Nr&   r   r,   rK   s     r   	<genexpr>z*_plotModelFromMasters2D.<locals>.<genexpr>   1      ??3774##??????r   c              3   D   K   | ]}|                     d           V  dS rj   rk   rl   s     r   rm   z*_plotModelFromMasters2D.<locals>.<genexpr>   rn   r   d   rA   -)r$   	axisOrderminr(   maxnumpyarangeinterpolateFromMastersrJ   rD   r%   )r1   masterValuesr;   r+   axis_minaxis_maxnprN   rO   rP   r,   vr*   rK   s                @r   _plotModelFromMasters2Dr}   ~   s   u1$$$$?1D????u?????H????u?????H
		(Hx(':c&ABBA
A  Qi((l;;	ooc""GGLAs%%f%%%%%r   c                    t          | j                  dk    sJ | j        d         | j        d         ct          fd| j        D                       }t	          fd| j        D                       }t          fd| j        D                       }t	          fd| j        D                       }dd l}|                    ||||z
  dz            }	|                    ||||z
  dz            }
|                    |	|
          \  }	}
g }t          |	|
          D ]c\  }}g }|	                    |           t          ||          D ]6\  }}||i}| 
                    ||          }|	                    |           7d|                    |          }|                    d	d
          } |j        |	|
|fi | d S )Nr   r   r   c              3   D   K   | ]}|                     d           V  dS rj   rk   r   r,   axis1s     r   rm   z*_plotModelFromMasters3D.<locals>.<genexpr>   1      AA#CGGE1%%AAAAAAr   c              3   D   K   | ]}|                     d           V  dS rj   rk   r   s     r   rm   z*_plotModelFromMasters3D.<locals>.<genexpr>   r   r   c              3   D   K   | ]}|                     d           V  dS rj   rk   r   r,   axis2s     r   rm   z*_plotModelFromMasters3D.<locals>.<genexpr>   r   r   c              3   D   K   | ]}|                     d           V  dS rj   rk   r   s     r   rm   z*_plotModelFromMasters3D.<locals>.<genexpr>   r   r   rp   rA   rS   rT   )r$   rr   rs   r(   rt   ru   rv   meshgridr    rJ   rw   arrayrD   plot_surface)r1   rx   r;   r+   	axis1_min	axis1_max	axis2_min	axis2_maxr{   rN   rO   r\   row_xrow_yz_rowrP   rQ   r,   r|   rZ   r   r   s                       @@r   _plotModelFromMasters3Dr      s   u1$$$$?1%uq'9LE5AAAAAAAAAIAAAAAAAAAIAAAAAAAAAIAAAAAAAAAI
		)YY)>#(EFFA
		)YY)>#(EFFA;;q!DAq
AAq		  u	u%% 	 	DAq!UA&C,,S,??ALLOOOO	 	A__ST_22FF1a**6*****r   c                     t          | j                  dk    rt          | ||fi | dS t          | j                  dk    rt          | ||fi | dS t	          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.r   r   r3   N)r$   rr   r}   r   r:   )r1   rx   r;   r+   s       r   plotModelFromMastersr      s}     5?q  |SCCFCCCCC	U_			"	"|SCCFCCCCC9:::r   c                     ddl m} | t          j        dd          }  |             t	          |           dk     rt          dt          j                   t          d           t          dt          j                   t          d           t          dt          j                   t          j        d           t          j	                    }|
                    d	           t	          |           dk    rV| d                             d
          r;t                      }|                    | d                    t          ||           n,d t          t!          d          t!          d          dz             D             d| d         vrfd| D             }t#          ||           ng }g }| D ]}|                    d          \  }}	|                    t)          t+          d |                    d          D                                            |                    t-          |	                     t/          |d t	          |d                                      }
t1          |
||           t          j                     d S )Nr   )configLoggerr   z/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          |          S r   )chr)r   r   s     r   r   zmain.<locals>.<listcomp>   s    >>>1A>>>r   Ar\   =c                     g | ]<}t          t          d  |                    d          D                                 =S )c              3   4   K   | ]}t          |          V  d S Nfloatr   r|   s     r   rm   z"main.<locals>.<listcomp>.<genexpr>   s(      #C#CE!HH#C#C#C#C#C#Cr   ,)dictr    split)r   rb   r)   s     r   r   zmain.<locals>.<listcomp>   sD    TTT!DT#C#Caggcll#C#C#CDDEETTTr   c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   rm   zmain.<locals>.<genexpr>   s(      0R0Raq0R0R0R0R0R0Rr   r   )	fontToolsr   sysargvr$   printstderrexitr   figureset_tight_layoutendswithr   readrg   r   ordr?   r   rJ   r   r    r   r   r   show)argsr   r;   rf   locsr(   rx   argr,   r|   r1   r)   s              @r   mainr      sf   &&&&&&|x| LNNN 4yy1}}?cjQQQQfD3:VVVVfP	
 	
 	
 	
 	
-//C
4yyA~~$q'**>::~!##aS#>>c#hhC1 = =>>>d1gTTTTtTTTD$$$$$IL . .3Q  c$0R0R399S>>0R0R0R&S&S!T!TUUU##E!HH----"9d3FS15F5F3F.GHHE c:::
KMMMMMr   __main__)r	   r   )__doc__fontTools.varLib.modelsr   r   fontTools.designspaceLibr   
matplotlibr   mpl_toolkits.mplot3dr   	itertoolsr   r4   loggingr   	getLogger__name__logr   r-   r?   r8   r9   rg   r}   r   r   r   r   r   r   r   <module>r      s~   A A A A A A A A A A 8 8 8 8 8 8       ' ' ' ' ' '         



g!!   , , ,"; ; ; ;(= = =*!@ !@ !@H3 3 3& & &*+ + +:	; 	; 	;, , , ,^ zJJJCHTTVV r   