o
    tBh                     @   s*   d dl mZmZ dd ZG dd dZdS )    )VariationModelnormalizeValuec                 C   s   t t|  S N)tuplesorteditems)loc r	   v/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/fontTools/feaLib/variableScalar.pyLocation   s   r   c                   @   s   e Zd ZdZi fddZdd Zedd Zedd	 Zd
d Z	dd Z
dd Zdd Zedd Zdd Zedd Zdd Zdd ZdS )VariableScalarzFA scalar with different values at different points in the designspace.c                 C   s.   i | _ i | _| D ]
\}}| || q
d S r   )valuesaxesr   	add_value)selflocation_valuelocationvaluer	   r	   r
   __init__   s
   zVariableScalar.__init__c                 C   sP   g }| j  D ]\}}ddd |D }|d||f  qdd| d S )N,c                 S   s   g | ]
\}}d ||f qS )z%s=%ir	   ).0axr   r	   r	   r
   
<listcomp>   s    z+VariableScalar.__repr__.<locals>.<listcomp>z%s:%i( ))r   r   joinappend)r   r   r   r   r   r	   r	   r
   __repr__   s
   zVariableScalar.__repr__c                    s,   t | j  t fdd dd  D S )Nc                 3   s    | ]	}| d  kV  qdS )r   Nr	   )r   vr   r	   r
   	<genexpr>   s    z+VariableScalar.does_vary.<locals>.<genexpr>   )listr   anyr   r	   r    r
   	does_vary   s   zVariableScalar.does_varyc                 C   s   | j stddd | j D S )Nz=.axes must be defined on variable scalar before interpolatingc                 S   s   i | ]}|j |qS r	   )axisTagr   r   r	   r	   r
   
<dictcomp>#   s    z,VariableScalar.axes_dict.<locals>.<dictcomp>)r   
ValueErrorr%   r	   r	   r
   	axes_dict   s
   zVariableScalar.axes_dictc                 C   sf   |  |}i }| D ]#}|| jvrtd||f | j| }t|| |j|j|jf||< qt|S )NzUnknown axis %s in %s)	fix_locationkeysr+   r*   r   minValuedefaultValuemaxValuer   )r   r   normalized_locationaxtagaxisr	   r	   r
   _normalized_location%   s   



z#VariableScalar._normalized_locationc                 C   s2   t |}| j D ]\}}||vr|j||< q	|S r   )dictr+   r   r/   )r   r   tagr3   r	   r	   r
   r,   2   s   
zVariableScalar.fix_locationc                 C   s"   | j r| |}|| jt|< d S r   )r   r,   r   r   )r   r   r   r	   r	   r
   r   9   s   
zVariableScalar.add_valuec                    s    fdd j  D  _ d S )Nc                    s    i | ]\}}t  ||qS r	   )r   r,   )r   lr   r%   r	   r
   r)   @   s    z4VariableScalar.fix_all_locations.<locals>.<dictcomp>)r   r   r%   r	   r%   r
   fix_all_locations?   s   
z VariableScalar.fix_all_locationsc                 C   s8   |    tdd | jD }|| jvrtd| j| S )Nc                 S   s   i | ]}|j |jqS r	   )r'   r/   r(   r	   r	   r
   r)   G   s    z*VariableScalar.default.<locals>.<dictcomp>z Default value could not be found)r8   r   r   r   r*   )r   keyr	   r	   r
   defaultD   s
   

zVariableScalar.defaultc                 C   s8   |}|| j  v r| j | S t| j   }| j||S r   )r   r-   r#   modelinterpolateFromMasters)r   r   r   r   r	   r	   r
   value_at_locationM   s
   
z VariableScalar.value_at_locationc                    s     fdd j  D }t|S )Nc                    s   g | ]	}t  |qS r	   )r5   r4   )r   kr%   r	   r
   r   V   s    z(VariableScalar.model.<locals>.<listcomp>)r   r-   r   )r   	locationsr	   r%   r
   r;   T   s   zVariableScalar.modelc                 C   s   t | j }| j|S r   )r#   r   r;   getDeltasAndSupports)r   r   r	   r	   r
   get_deltas_and_supportsY   s   z&VariableScalar.get_deltas_and_supportsc                 C   s.   |   \}}|| ||}t| j|fS r   )rA   setSupportsstoreDeltasintr:   )r   store_builderdeltassupportsindexr	   r	   r
   add_to_variation_store]   s   

z%VariableScalar.add_to_variation_storeN)__name__
__module____qualname____doc__r   r   propertyr&   r+   r4   r,   r   r8   r:   r=   r;   rA   rI   r	   r	   r	   r
   r      s&    



r   N)fontTools.varLib.modelsr   r   r   r   r	   r	   r	   r
   <module>   s    