
    jke                     2    d dl mZmZmZ d Z G d d      Zy)    )VariationModelnormalizeValuepiecewiseLinearMapc                 F    t        t        | j                                     S N)tuplesorteditems)locs    A/usr/lib/python3/dist-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y)VariableScalarzFA scalar with different values at different points in the designspace.c                 t    i | _         i | _        |j                         D ]  \  }}| j                  ||        y r   )valuesaxesr
   	add_value)selflocation_valuelocationvalues       r   __init__zVariableScalar.__init__   s:    	-335 	,OHeNN8U+	,r   c           
         g }| j                   j                         D ]D  \  }}dj                  |D cg c]  \  }}d||fz   c}}      }|j                  d||fz         F ddj                  |      z   dz   S c c}}w )N,z%s=%iz%s:%i( ))r   r
   joinappend)r   r
   r   r   axr   s         r   __repr__zVariableScalar.__repr__   s    #{{002 	1OHe((xHGBGr3i/HICLLC</0	1 chhuo&,, Is   A;c                 x    t        | j                  j                               t        fddd  D              S )Nc              3   .   K   | ]  }|d    k7    yw)r   N ).0vr   s     r   	<genexpr>z+VariableScalar.does_vary.<locals>.<genexpr>   s     6a1q	>6s      )listr   any)r   r   s    @r   	does_varyzVariableScalar.does_vary   s1    dkk((*+66!":666r   c                     | j                   st        d      | j                   D ci c]  }|j                  | c}S c c}w )Nz=.axes must be defined on variable scalar before interpolating)r   
ValueErroraxisTag)r   r!   s     r   	axes_dictzVariableScalar.axes_dict   s;    yyO  *.32

B333s   =c                 *   | j                  |      }i }|j                         D ]c  }|| j                  vrt        d|d|      | j                  |   }t	        ||   |j
                  |j                  |j                  f      ||<   e t        |      S )NzUnknown axis z in )	fix_locationkeysr0   r.   r   minValuedefaultValuemaxValuer   )r   r   normalized_locationaxtagaxiss        r   _normalized_locationz#VariableScalar._normalized_location%   s    $$X. ]]_ 	EDNN* E8!LMM>>%(D)7$--1B1BDMM!R*&		 +,,r   c                     t        |      }| j                  j                         D ]  \  }}||vs|j                  ||<    |S r   )dictr0   r
   r5   )r   r   tagr9   s       r   r2   zVariableScalar.fix_location2   sI    >--/ 	2IC(" $ 1 1	2 r   c                 n    | j                   r| j                  |      }|| j                  t        |      <   y r   )r   r2   r   r   )r   r   r   s      r   r   zVariableScalar.add_value9   s,    99((2H*/HX&'r   c           	          | j                   j                         D ci c]   \  }}t        | j                  |            |" c}}| _         y c c}}w r   )r   r
   r   r2   )r   lr'   s      r   fix_all_locationsz VariableScalar.fix_all_locations?   sD    :>++:K:K:M
26!QHT&&q)*A-
 
s   %Ac                     | j                          t        | j                  D ci c]  }|j                  |j                   c}      }|| j
                  vrt        d      | j
                  |   S c c}w )Nz Default value could not be found)rA   r   r   r/   r5   r   r.   )r   r!   keys      r   defaultzVariableScalar.defaultD   sa     diiH

BOO3HIdkk!?@@{{3	 Is   A1Nc                     |}|| j                   j                         v r| j                   |   S t        | j                   j                               }| j                  ||      j	                  ||      S r   )r   r3   r*   modelinterpolateFromMasters)r   r   model_cacheavarr   r   s         r   value_at_locationz VariableScalar.value_at_locationM   s`    $++""$$;;s##dkk((*+zz+t,CCCPPr   c                    |,t        | j                  j                               }||v r||   S | j                  j                         D cg c]  }t        | j	                  |             }}|T|j
                  }|D cg c]9  }|j                         D ci c]  \  }}|||v rt        |||         n| c}}; }}}}t        |      }	||	|<   |	S c c}w c c}}w c c}}}w r   )	r   r   r3   r<   r:   segmentsr
   r   r   )
r   rH   rI   rC   k	locationsmappingr   r'   ms
             r   rF   zVariableScalar.modelT   s    "((*+Ck!"3''AEAQAQASTAT$33A67T	TmmG !* 
  !) 01 AL)!WQZ8aOI  9%" K Us   !CC# C:C#C#c                     t        | j                  j                               }| j                  ||      j                  |      S r   )r*   r   rF   getDeltasAndSupports)r   rH   rI   r   s       r   get_deltas_and_supportsz&VariableScalar.get_deltas_and_supportsh   s5    dkk((*+zz+t,AA&IIr   c                     | j                  ||      \  }}|j                  |       |j                  |      }t        | j                        |fS r   )rS   setSupportsstoreDeltasintrD   )r   store_builderrH   rI   deltassupportsindexs          r   add_to_variation_storez%VariableScalar.add_to_variation_storel   sK    77TJ!!(+))&14<< %''r   )NN)__name__
__module____qualname____doc__r   r"   propertyr,   r0   r:   r2   r   rA   rD   rJ   rF   rS   r\   r%   r   r   r   r      sx    P&( ,- 7 7 4 4-0

    Q(J(r   r   N)fontTools.varLib.modelsr   r   r   r   r   r%   r   r   <module>rc      s    V V&h( h(r   