
    <`9                         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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     5lib/python3.11/site-packages/fontTools/varLib/plot.py
<listcomp>zstops.<locals>.<listcomp>   +    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>   r   r   )range)supportr   r   r   r   s    `@@@r   stopsr      sk    	1Q777777%,,777777777%,,777	8	
	 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.   y%	(=">">?? # #ZS%YY!^^7<WWT!WaD  	
     4yyA~~7<WWT!WaWWT!WaD	 
      
D			"	""'# #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>7   s&    	D	D	DQ%$Q'
(	D	D	Dr   r   r   r3   r    zOnly 1 or 2 axes are supported)
r%   mathceilr   r   sortedkeys_plotLocations2D_plotLocations3D
ValueError)	r)   figr3   r,   ncolsrowsr*   r2   s	     `     @r   plotLocationsr?   .   sM   ^^	!R%	!d(	M&3y>>
!%			"	"	D	D	D	D	D%E

2C2C	D	D	Dy|  ""##IINN$q'3d */39     
$ii1nn$T4 ',06     	3444r   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)   )r2   axisr;   r=   r>   r3   r,   r+   r   r   r   nameXsXYxys                    r   r8   r8   F   sH   ??3"+eneFIN122E%LLAA# # 7 7Q% 

T	T+c#{{4&&"	RQ!99  ad1Xw''188A;;;88A;;;;',q!++5+F+++U_tfg6666!7 7r   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)   )r2   r*   r;   r>   r=   r3   r,   ax1ax2axis3Dr   r   r   rL   rM   YsrP   rN   rO   ZrQ   zs                         r   r9   r9   [   sX   c
//#$/
/
/"+eneFIN122E%LLAA# # : :Q% 
	DCC+c#+c#{{3%%"{{3%%"99 / /aRa1  qs1c!ng..AHHQKKKHHQKKKHHQKKKK6;q!Q..e.v....99 / /aRa1  qs1c!ng..AHHQKKKHHQKKKHHQKKKK6;q!Q..e.v....U_sCj&9999;: :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>   s    ...Qaj...r   c                     g | ]	}|j         
S r   )rL   r`   s     r   r   z plotDocument.<locals>.<listcomp>   s    	&	&	&Q!&	&	&	&r   )	normalizesourcesr?   )docr;   r,   r)   r3   s        r   plotDocumentrf      sY    ..#+...	&	&#+	&	&	&y#u///////r   c                    ddl m} | t          j        dd          }  |             t	          |           dk     rYt          dt          j                   t          d           t          dt          j                   t          j        d           t          j	                    }|
                    d           t	          |           dk    rU| d                             d	          r:t                      }|                    | d                    t          ||           nUd
 t          t!          d          t!          d          dz             D             fd| D             }t#          ||           t          j                     d S )Nr   )configLoggerr   z/usage: fonttools varLib.plot source.designspace)filez  orz4usage: fonttools varLib.plot location1 location2 ...Tz.designspacec                 ,    g | ]}t          |          S r   )chr)r   r   s     r   r   zmain.<locals>.<listcomp>   s    	6	6	6Q#a&&	6	6	6r   Ar[   c                     g | ]<}t          t          d  |                    d          D                                 =S )c              3   4   K   | ]}t          |          V  d S N)float)r   vs     r   	<genexpr>z"main.<locals>.<listcomp>.<genexpr>   s(      99q%((999999r   ,)dictr!   split)r   ra   r*   s     r   r   zmain.<locals>.<listcomp>   sD    	J	J	J$s499AGGCLL999::
;
;	J	J	Jr   )	fontToolsrh   sysargvr%   printstderrexitr   figureset_tight_layoutendswithr   readrf   r   ordr?   show)argsrh   r;   re   locsr*   s        @r   mainr      sh   ######L	!""$  IIMM9
KKKK--->SZPPPP(1+++}dIINNtAw''77N#((47sC	6	6%C#c((1*55	6	6	6$	J	J	J	JT	J	J	J$cr   __main__)r	   ro   )__doc__fontTools.varLib.modelsr   r   fontTools.designspaceLibr   
matplotlibr   mpl_toolkits.mplot3dr   	itertoolsr   r4   loggingrw   	getLogger__name__logr   r.   r?   r8   r9   rf   r   r{   r   r   r   <module>r      sM   A A A A A A A A A A 8 8 8 8 8 8       ' ' ' ' ' '         



g!!   # # #.5 5 5 507 7 7*!: !: !:H0 0 0   > z	$$&& r   