
    ]Mh                     :    d dl mZmZmZ d Z G d d          ZdS )    )VariationModelnormalizeValuepiecewiseLinearMapc                 ^    t          t          |                                                     S N)tuplesorteditems)locs    _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/feaLib/variableScalar.pyLocationr      s     		$$%%%    c                       e Zd ZdZi fdZd Zed             Zed             Zd Z	d Z
d Zd	 Zed
             ZddZddZddZddZdS )VariableScalarzFA scalar with different values at different points in the designspace.c                     i | _         i | _        |                                D ]\  }}|                     ||           d S r   )valuesaxesr
   	add_value)selflocation_valuelocationvalues       r   __init__zVariableScalar.__init__   sP    	-3355 	, 	,OHeNN8U++++	, 	,r   c                     g }| j                                         D ]>\  }}d                    d |D                       }|                    d||fz             ?dd                    |          z   dz   S )N,c                 "    g | ]\  }}d ||fz  S )z%s=%i ).0axr   s      r   
<listcomp>z+VariableScalar.__repr__.<locals>.<listcomp>   s%    HHHGBGr3i/HHHr   z%s:%i( ))r   r
   joinappend)r   r
   r   r   r   s        r   __repr__zVariableScalar.__repr__   s    #{0022 	1 	1OHe((HHxHHHIICLLC</0000chhuoo&,,r   c                     t          | j                                                  t          fddd          D                       S )Nc              3   0   K   | ]}|d          k    V  dS )r   Nr   )r   vr   s     r   	<genexpr>z+VariableScalar.does_vary.<locals>.<genexpr>   s+      66a1q	>666666r      )listr   any)r   r   s    @r   	does_varyzVariableScalar.does_vary   sI    dk((**++66666!"":666666r   c                 P    | j         st          d          d | j         D             S )Nz=.axes must be defined on variable scalar before interpolatingc                     i | ]
}|j         |S r   )axisTagr   r   s     r   
<dictcomp>z,VariableScalar.axes_dict.<locals>.<dictcomp>#   s    3332
B333r   )r   
ValueErrorr   s    r   	axes_dictzVariableScalar.axes_dict   s9    y 	O   433333r   c                 (   |                      |          }i }|                                D ]X}|| j        vrt          d|d|          | j        |         }t	          ||         |j        |j        |j        f          ||<   Yt          |          S )NzUnknown axis z in )	fix_locationkeysr6   r4   r   minValuedefaultValuemaxValuer   )r   r   normalized_locationaxtagaxiss        r   _normalized_locationz#VariableScalar._normalized_location%   s    $$X.. ]]__ 	 	EDN** jEEE88!LMMM>%(D)7$-1BDM!R* *&& +,,,r   c                 ~    t          |          }| j                                        D ]\  }}||vr
|j        ||<   |S r   )dictr6   r
   r;   )r   r   tagr?   s       r   r8   zVariableScalar.fix_location2   sK    >>--// 	2 	2IC("" $ 1r   c                 l    | j         r|                     |          }|| j        t          |          <   d S r   )r   r8   r   r   )r   r   r   s      r   r   zVariableScalar.add_value9   s9    9 	3((22H*/HX&&'''r   c                 \      fd j                                         D              _         d S )Nc                 \    i | ](\  }}t                              |                    |)S r   )r   r8   )r   lr)   r   s      r   r3   z4VariableScalar.fix_all_locations.<locals>.<dictcomp>@   sB     
 
 
26!QHT&&q))**A
 
 
r   )r   r
   r5   s   `r   fix_all_locationsz VariableScalar.fix_all_locations?   s?    
 
 
 
:>+:K:K:M:M
 
 
r   c                     |                                   t          d | j        D                       }|| j        vrt	          d          | j        |         S )Nc                 (    i | ]}|j         |j        S r   )r1   r;   r2   s     r   r3   z*VariableScalar.default.<locals>.<dictcomp>G   s    HHH
BOHHHr   z Default value could not be found)rH   r   r   r   r4   )r   keys     r   defaultzVariableScalar.defaultD   s[       HHdiHHHIIdk!!?@@@{3r   Nc                 T   t          |          }|| j                                        v r| j        |         S t          | j                                                  }t	          |                     |                    }|                     ||                              ||          S r   )r   r   r9   r,   rB   r@   modelinterpolateFromMasters)r   r   model_cacheavarr   r   s         r   value_at_locationz VariableScalar.value_at_locationM   s    x  $+""$$$$;s##dk((**++4,,S1122zz+t,,CCCPPPr   c                     |2t           j                                                  }||v r||         S  fd j                                        D             }||j        fd|D             }t	          |          }||||<   |S )Nc                 T    g | ]$}t                              |                    %S r   )rB   r@   )r   kr   s     r   r    z(VariableScalar.model.<locals>.<listcomp>Z   s/    TTTAT$33A6677TTTr   c                 P    g | ]"}fd |                                 D             #S )c                 P    i | ]"\  }}||v rt          ||                   n|#S r   )r   )r   rU   r)   mappings      r   r3   z3VariableScalar.model.<locals>.<listcomp>.<dictcomp>^   sK       1 ALL)!WQZ888a  r   )r
   )r   r   rX   s     r   r    z(VariableScalar.model.<locals>.<listcomp>]   sV       
 	    ( 0 0    r   )r   r   r9   segmentsr   )r   rP   rQ   rK   	locationsmrX   s   `     @r   rN   zVariableScalar.modelU   s    "((**++Ck!!"3''TTTTAQAQASASTTT	mG   
 !*  I 9%%" Kr   c                     t          | j                                                  }|                     ||                              |          S r   )r,   r   rN   getDeltasAndSupports)r   rP   rQ   r   s       r   get_deltas_and_supportsz&VariableScalar.get_deltas_and_supportsi   s?    dk((**++zz+t,,AA&IIIr   c                     |                      ||          \  }}|                    |           |                    |          }t          | j                  |fS r   )r^   setSupportsstoreDeltasintrL   )r   store_builderrP   rQ   deltassupportsindexs          r   add_to_variation_storez%VariableScalar.add_to_variation_storem   sX    77TJJ!!(+++))&114<  %''r   )NN)__name__
__module____qualname____doc__r   r&   propertyr.   r6   r@   r8   r   rH   rL   rR   rN   r^   rg   r   r   r   r   r      s%       PP&( , , , ,- - - 7 7 X7 4 4 X4- - -  0 0 0
 
 

     X Q Q Q Q   (J J J J( ( ( ( ( (r   r   N)fontTools.varLib.modelsr   r   r   r   r   r   r   r   <module>rn      sn    V V V V V V V V V V& & &i( i( i( i( i( i( i( i( i( i(r   