o
    i(                     @   s   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 Z
dd	 ZdddZe	jfddZdddZedkrEd dl	Z	e	e  dS dS )    )VariationModel)VarStoreInstancer)fixedToFloat)productNc                 C   s4   | dkr|j | |j|j    S |j | |j |j   S )Nr   )defaultValuemaxValueminValue)vaxis r   l/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/fontTools/varLib/avar/unbuild.py_denormalize   s   r   c              	   C   sT  t | |}|j}|j}dd |D }|D ]}| |}|| }|| }	t|	 }
|	 D ]r\}\}}}||fD ]f}|dv r?q8| D ]}t|}t| }||
krTqC||vrYqC|| |kra n=qCt|d ddD ]/}|| }t| }||
kr{qj||vrqjdd | D }|| |krd |t	| <  nqjJ dq8q-qd	d
 | D S )Nc                 S   s   i | ]	}t | d qS N)tupleitems).0kr   r   r   
<dictcomp>#   s    z#_pruneLocations.<locals>.<dictcomp>r      r   r   c                 S   s   i | ]
\}\}}}||qS r   r   )r   r   _ZdefaultVr   r   r   r   C   s    FzNo pin foundc                 S      g | ]}t |qS r   dictr   tr   r   r   
<listcomp>K       z#_pruneLocations.<locals>.<listcomp>)
r   mappingZsupportsindexsetkeysr   r   ranger   )	locationspolesaxisTagsmodelZmodelMappingZmodelSupportsZpinslocationiZsupportZsupportAxesaxisTagZminVr   ZmaxVr	   ZpinZpinLocationZpinAxesZcandidateIdx	candidateZcandidateAxesr   r   r   _pruneLocations   sT   

"r,   Tc                     s(  | d j }dd |D dd |D }dd t|D  d| vr$i i fS | d }dd |j D }g }t|d	d
dkr;|jj}|jj}dd i}	t	dh}
|j
D ]g}|j}|D ]_}g }g }|| }t|jD ]7\}}|jdkrqqg|| }|||jf g }|jdkr|||jf |jdkr|||jf || qgt	t| }t|}d |	|< |
| |
| qXqQdd t|
 fdddD }
dd |	 D }	t|
t|	|}
|jj}t||}|
D ]=}|| i }t|D ](\}}|}|d ur|| }|| }|dkr||d}|t|d }|||< q|||f q|d d i ks-J |d d
 i kr;|d |r| D ]%\}vrRtd fddfdd| D |< qBt|D ]#\}\}}fdd| D }fdd| D }||f||< ql||fS )Nfvarc                 S   s   i | ]}|j |qS r   r*   r   ar   r   r   r   P   r   z&mappings_from_avar.<locals>.<dictcomp>c                 S   s   g | ]}|j qS r   r.   r/   r   r   r   r   Q   s    z&mappings_from_avar.<locals>.<listcomp>c                 S   s   i | ]\}}|j |qS r   r.   )r   r)   r0   r   r   r   r   R   s    avarc                 S   s*   i | ]\}}|r|d dddkr||qS )r   r   r   r   r   )r   tagsegr   r   r   r   V   s    ZmajorVersionr      r   r   c                 S   r   r   r   r   r   r   r   r      s    c                    s   t | t fdd| D fS )Nc                 3   s    | ]	\}} | V  qd S r   r   )r   r2   r   axisIndexesr   r   	<genexpr>   s    z7mappings_from_avar.<locals>.<lambda>.<locals>.<genexpr>)lenr   )r   r5   r   r   <lambda>       z$mappings_from_avar.<locals>.<lambda>)keyc                 S   r   r   r   r   r   r   r   r      r      zUnknown axis tag c                    s   t |   S r   r   )r	   )axisMapr2   r   r   r9      s    c                    s   i | ]\}} | |qS r   r   )r   r   r	   )denormr   r   r      r:   c                        i | ]\}}|t | | qS r   r=   r   r2   valr>   r   r   r          c                    r@   r   r=   rA   rC   r   r   r      rD   ) axes	enumeratesegmentsr   getattrtableZVarStoreZVarRegionListRegionr!   ZVarDataZVarRegionIndexZVarRegionAxisZ	PeakCoordappendZ
StartCoordZEndCoordr   r   addupdatesortedr"   r,   listZ	VarIdxMapr   ZsetLocationgetfi2flpop
ValueError) fontZdenormalizeZfvarAxesr&   r1   ZaxisMapsmappingsZvarStoreZregionsr%   ZinputLocationsZvarDataZregionIndicesZregionIndexZpeakLocationZcornersregionZ	axisIndexr
   r*   ZcornerZ	varIdxMapZ	instancerr(   ZoutputLocationZvarIdxdeltar	   r3   r)   inputLoc	outputLocr   )r6   r>   r?   r2   r   mappings_from_avarN   s   














rZ   c                    s  | d }|j }t| \}}d| v r| d   fdd|D }ndd |D }td|d td|d td	|d |D ]}||j }|j|j|jf}	d
d |	D }	||j}
|
d u r\dnd}td|j d| d|	d  d|	d  d|	d  d| |d |
d urt|
	 D ]+}|
| }|t
|krt
|n|}|t
|krt
|n|}td| d| d|d qtd|d q:|rFtd|d |D ]z\}}td|d td|d t|	 D ]!}|| }|t
|krt
|n|}td||  d| d|d qtd |d td!|d t|	 D ]#}|| }|t
|kr t
|n|}td||  d| d|d qtd"|d td#|d qtd$|d td%|d td&|d d S )'Nr-   namec                    s   i | ]
}|j  |jqS r   )r*   ZgetDebugNameZ
axisNameID)r   r
   r[   r   r   r      s    zunbuild.<locals>.<dictcomp>c                 S   s   i | ]}|j |j qS r   r.   r/   r   r   r   r      s    z&<?xml version='1.0' encoding='UTF-8'?>filez<designspace format="5.1">z  <axes>c                 S   s$   g | ]}|t |krt |n|qS r   )int)r   r	   r   r   r   r      s   $ zunbuild.<locals>.<listcomp>z/>>z    <axis tag="z" name="z" minimum="r   z" maximum="r4   z" default="r   "z      <map input="z
" output="z"/>z    </axis>z    <mappings>z      <mapping>z        <input>z          <dimension name="z
" xvalue="z        </input>z        <output>z        </output>z      </mapping>z    </mappings>z	  </axes>z</designspace>)rE   rZ   printr*   r   r   r   rP   rN   r"   r_   )rT   fr-   rE   rG   rU   Z	axisNamesr
   ZaxisNametripletr>   closingr   r	   rX   rY   r2   r   r\   r   unbuild   sl   
4
rf   c                 C   s   | du rt jdd } ddlm} ddl}|jdd d}|jddd	d
 || }||j}d|vr;t	dt j
d dS t| dS )z,Print `avar` table as a designspace snippet.Nr   r   )TTFontzfonttools varLib.avar.unbuild)descriptionrT   zvarfont.ttfzVariable-font file.)metavarhelpr-   zNot a variable font.r]   )sysargvZfontTools.ttLibrg   argparseArgumentParseradd_argument
parse_argsrT   rb   stderrrf   )argsrg   rm   parseroptionsrT   r   r   r   main   s   

ru   __main__)Tr   )ZfontTools.varLib.modelsr   ZfontTools.varLib.varStorer   ZfontTools.misc.fixedToolsr   rQ   	itertoolsr   rk   r   r,   rZ   stdoutrf   ru   __name__exitr   r   r   r   <module>   s    
?g
?