
    hq                      P   S SK JrJr  S SKJr  S SKJr  S SKJr	  S SK
Jr  S SKrS SKJrJrJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  \	R:                  r\\	R<                  l        S r " S S\ 5      r!\"S.S jr#\#\	RH                  l%        S r&\&\	RN                  l(        S r)\)\	R<                  l*         " S S\ 5      r+S r,S r-\-\	R<                  l.        \,\	R<                  l/        S r0\0\	R<                  l1        S r2S r3\2\	Rh                  l5        \3\	Rh                  l6        g)    )noRoundotRound)	bit_count)Vector)otTables)supportScalarN)buildVarRegionListbuildSparseVarRegionListbuildSparseVarRegionbuildMultiVarStorebuildMultiVarData)batched)partial)defaultdict)heappushheappopc                 F    [        [        U R                  5       S S95      $ )Nc                     U S   $ Nr    )kvs    P/var/www/html/env/lib/python3.13/site-packages/fontTools/varLib/multiVarStore.py<lambda>!_getLocationKey.<locals>.<lambda>   s    BqE    )key)tuplesorteditems)locs    r   _getLocationKeyr!      s    		)9:;;r   c                   N    \ rS rSrS rS rS rS rS r\	S.S jr
\	S.S	 jrS
rg)OnlineMultiVarStoreBuilder   c                     Xl         0 U l        [        / U5      U l        [	        U R                  / 5      U l        S U l        S U l        S U l        0 U l	        0 U l
        S U l        g N)	_axisTags
_regionMapr
   _regionListr   _store_data_model	_supports_varDataIndices_varDataCaches_cache)selfaxisTagss     r   __init__#OnlineMultiVarStoreBuilder.__init__   s]    !3BA()9)92>
! r   c                 F    U R                  UR                  5        Xl        g r&   )setSupportssupportsr,   )r1   models     r   setModel#OnlineMultiVarStoreBuilder.setModel)   s    (r   c                     S U l         [        U5      U l        U R                  S   (       d  U R                  S	 S U l        S U l        g r   )r,   listr-   r0   r+   )r1   r7   s     r   r6   &OnlineMultiVarStoreBuilder.setSupports-   s:    h~~a q!
r   c                     [        U R                  R                  5      U R                  l        [        U R                  R
                  5      U R                  l        U R                  $ r&   )lenr)   RegionRegionCountr*   MultiVarDataMultiVarDataCountr1   s    r   finish!OnlineMultiVarStoreBuilder.finish5   sF    '*4+;+;+B+B'C$(+DKK,D,D(E%{{r   c                    U R                   nU R                  nU R                  n/ nU H|  n[        U5      nUR	                  U5      nUcI  [        XPR                  5      n[        UR                  5      =oqU'   UR                  R                  U5        UR                  U5        M~     [        U5      nU R                  R	                  U5      n	U	b]  Xl        U R                  R                  U	   U l        U R                   U   U l        [        U R                  R$                  5      S:X  a  S n	U	c  ['        U/ 5      U l        [        U R                  R                  5      U l        U R                  R                  R                  U R                  5        U R                  U R                  U'   X`R                   ;  a  0 U R                   U'   U R                   U   U l        g g )N  )r(   r)   r-   r!   getr   r'   r?   r@   appendr   r.   _outerr*   rB   r+   r/   r0   Itemr   )
r1   	regionMap
regionListregionsregionIndicesregionr   idx	varRegion
varDataIdxs
             r   _add_MultiVarData,OnlineMultiVarStoreBuilder._add_MultiVarData:   s   OO	%%
..F!&)C--$C{0H	'*:+<+<'==n!!((3  %  M"))--c2
!$K11*=DJ--c2DK4::??#v-!
*="=DJdkk667DKKK$$++DJJ7(,D  %---+-##C(--c2DK r   roundc                    U R                   R                  XS9nUR                  S5      nX@R                  U[        S94$ )NrW   r   )r,   	getDeltaspopstoreDeltasr   )r1   master_valuesrX   deltasbases        r   storeMasters'OnlineMultiVarStoreBuilder.storeMasters]   s?    &&}&Bzz!}%%fG%<<<r   c                  ^ [        U4S jU 5       5      n[        U5      (       d  [        $ [        S U 5       5      nU R                  (       d  U R	                  5         U R
                  R                  U5      nUb  U$ [        U R                  R                  5      nUS:X  a$  U R	                  5         U R                  U[        S9$ U R                  R                  U[        S9  U R                  S-  U-   nX@R
                  U'   U$ )Nc              3   4   >#    U  H  nT" U5      v   M     g 7fr&   r   .0drX   s     r   	<genexpr>9OnlineMultiVarStoreBuilder.storeDeltas.<locals>.<genexpr>c   s     0AuQxx   c              3   8   #    U  H  n[        U5      v   M     g 7fr&   )r   )re   rf   s     r   rg   rh   h   s     6v!U1XXvs   rH   rW      )r   anyNO_VARIATION_INDEXr+   rU   r0   rI   r?   rL   r\   r   addItemrK   )r1   r^   rX   deltas_tuplevarIdxinners     `   r   r\   &OnlineMultiVarStoreBuilder.storeDeltasb   s    0006{{%%6v66zz""$.MDJJOO$F?""$##F'#::

61++#u,$*L!r   )r'   r0   r+   r,   rK   r)   r(   r*   r-   r/   r.   N)__name__
__module____qualname____firstlineno__r3   r9   r6   rE   rU   rX   r`   r\   __static_attributes__r   r   r   r#   r#      s5    

!3F 49 =
 ,1  r   r#   rW   c                  ^ [        U4S jU 5       5      n[        U5      U R                  :X  d   e/ nU H  nUR                  U5        M     U R                  R                  U5        [        U R                  5      U l        g )Nc              3   4   >#    U  H  nT" U5      v   M     g 7fr&   r   rd   s     r   rg   'MultiVarData_addItem.<locals>.<genexpr>~   s     ,V588Vri   )r   r?   VarRegionCountextendrL   rJ   	ItemCount)r1   r^   rX   valuesrf   s     `  r   MultiVarData_addItemr   }   si    ,V,,Fv;$-----Fa  	IIV^DNr   c                     U R                    Vs0 s H=  nXR                     R                  UR                  UR                  UR
                  4_M?     sn$ s  snf r&   )SparseVarRegionAxis	AxisIndexaxisTag
StartCoord	PeakCoordEndCoord)r1   	fvar_axesregs      r   SparseVarRegion_get_supportr      sT     +++C 	-- ((3>>3==#,,*WW+  s   AAc                 ,    [        U R                  5      $ r&   )boolrB   rD   s    r   MultiVarStore___bool__r      s    !!""r   c                   N    \ rS rSr0 4S jrS rS rS r\S 5       r	S r
S rS	rg
)MultiVarStoreInstancer   c                     X l         Ub  UR                  S:X  d   eU(       a  UR                  O/ U l        U(       a  UR                  R
                  O/ U l        U R                  U5        g )N   )r   FormatrB   _varDataSparseVarRegionListr@   _regionssetLocation)r1   multivarstorer   locations       r   r3   MultiVarStoreInstancer.__init__   s[    "$(<(<(AAA6C228EM--442 	 	"r   c                 D    [        U5      U l        U R                  5         g r&   )dictr   _clearCaches)r1   r   s     r   r   "MultiVarStoreInstancer.setLocation   s    Xr   c                     0 U l         g r&   )_scalarsrD   s    r   r   #MultiVarStoreInstancer._clearCaches   s	    r   c                     U R                   R                  U5      nUcL  U R                  U   R                  U R                  5      n[        U R                  U5      nX R                   U'   U$ r&   )r   rI   r   get_supportr   r   r   )r1   	regionIdxscalarsupports       r   
_getScalar!MultiVarStoreInstancer._getScalar   sY    ""9->mmI.::4>>JG"4==':F'-MM)$r   c                 R   U (       d  [        / 5      $ [        U 5      [        U5      -  S:X  d   [        U 5      [        U5      45       e[        U 5      [        U5      -  n[        S/U-  5      n[        [        X5      U5       H  u  pEU(       d  M  U[        U5      U-  -  nM!     U$ r   )r   r?   zipr   )r^   scalarsmdeltarf   ss         r   interpolateFromDeltasAndScalars6MultiVarStoreInstancer.interpolateFromDeltasAndScalars   s    ":6{S\)Q.KVc'l0KK.K3w<'sQw*G4DAVAY]"E 5 r   c                     US-	  US-  p2U[         :X  a  [        / 5      $ U R                  nXB   R                   Vs/ s H  oPR	                  U5      PM     nnXB   R
                  U   nU R                  Xv5      $ s  snf )Nrk   rH   )rm   r   r   VarRegionIndexr   rL   r   )r1   varidxmajorminorvarDatarir   r^   s           r   __getitem__"MultiVarStoreInstancer.__getitem__   s{    |Vf_u''":--181N1NO1N2??2&1NO$$U+33FDD Ps   A9c                     U R                   nX1   R                   Vs/ s H  o@R                  U5      PM     nnU R                  X%5      $ s  snf r&   )r   r   r   r   )r1   varDataIndexr^   r   r   r   s         r   interpolateFromDeltas,MultiVarStoreInstancer.interpolateFromDeltas   sH    --181F1U1UV1U2??2&1UV33FDD Ws   A
)r   r   r   r   r   N)rs   rt   ru   rv   r3   r   r   r   staticmethodr   r   r   rw   r   r   r   r   r      s9    :< # 
 
EEr   r   c                 >    [         R                  R                  XSS9$ )NrB   )VarData)otVarStoresubset_varidxes)r1   varIdxess     r   MultiVarStore_subset_varidxesr      s    ;;&&t~&NNr   c                 @    [         R                  R                  U SSS9$ )NrB   r   )r   VarRegionList)r   r   prune_regionsrD   s    r   MultiVarStore_prune_regionsr      s&    ;;$$n4I %  r   c                     / nU R                   U   nUR                   H>  nU R                  R                  U   nUR	                  U5      nUR                  U5        M@     U$ r&   )rB   r   r   r@   r   rJ   )r1   r   fvarAxesr7   r   r   rQ   r   s           r   MultiVarStore_get_supportsr      s`    H&G++	))00;$$X.  , Or   c                     U R                   R                   HL  nUR                   H9  nUR                  UR                  5        UR                  UR
                  5        M;     MN     g r&   )VarCompositeGlyphsVarCompositeGlyph
componentsaddaxisValuesVarIndextransformVarIndex)r1   varidxesglyph	components       r   VARC_collect_varidxesr      sL    ((::))ILL556LL445 * ;r   c                     U R                   R                   H<  nUR                   H)  nXR                     Ul        XR                     Ul        M+     M>     g r&   )r   r   r   r   r   )r1   varidxes_mapr   r   s       r   VARC_remap_varidxesr      sJ    ((::))I+78T8T+UI(*67R7R*SI' * ;r   )7fontTools.misc.roundToolsr   r   fontTools.misc.intToolsr   fontTools.misc.vectorr   fontTools.ttLib.tablesr   r   fontTools.varLib.modelsr   fontTools.varLib.varStore	fontToolsfontTools.varLib.builderr	   r
   r   r   r   fontTools.misc.iterToolsr   	functoolsr   collectionsr   heapqr   r   rm   MultiVarStorer!   objectr#   rX   r   rB   rn   r   SparseVarRegionr   r   __bool__r   r   r   r   r   r   get_supportsr   r   VARCcollect_varidxesremap_varidxesr   r   r   <module>r      s   6 - ( 1 1    -  # # ** &8   #<^ ^B 16 
$ /  "=   # 3   2EV 2EjO "=   #@     !;   6T 1 , r   