Ë
    ^ãj3   ã                   ób   — d Z ddlmZ ddlmZmZ ddlmZ ddl	m
Z
mZmZ ddlmZ d„ Zd„ Zd	„ Zy
)z?Instantiate COLRv1 paint values and their item variation store.é    )ÚotTables)ÚBaseFixedValueÚAngle©ÚotRound)ÚceilÚfloorÚgcd)Úcopyc           
      óf	  ‡— | j                   t        j                  j                  k7  ry | j                  | j
                  }}|dk\  r|dk\  ry | j                  }||k(  s|j                  sI| j                  j                  «        t        j                  j                  | _         d\  | _        | _        y ||z
  }t        |j                  d„ ¬«      }|d   j                  }|d   j                  }t        d| j                   | j"                  z
  | j$                  | j&                  z
  |«      }t)        d«      D �]`  }	d|	z  }
|dkD  rt+        | |z  «      nt-        || z  «      |
z
  }|dkD  rt+        | |z  |z  «      |z  nt-        || z  |z  «      |z  |
z
  }||fD �]ø  }| j"                  || j                   | j"                  z
  z  z   | j&                  || j$                  | j&                  z
  z  z   |||z  z   | j"                  ||
z   | j                   | j"                  z
  z  z   | j&                  ||
z   | j$                  | j&                  z
  z  z   |||
z   |z  z   fŠt/        ˆfd	„d
D «       «      st/        ˆfd„dD «       «      rŒæ|}|D �cg c]  }|j                  |z
  |
z  ‘Œ }}‰d    |
|z  z  }|j0                  t        j2                  j4                  k(  r.|dkD  r|d   |k  r
|d   gdg}}nÝ|dk  rØ|d   |kD  rÐ|d   gdg}}nÆ||z
  |
z  }|j0                  t        j2                  j6                  k(  r|dz  }|dk  rK| j                  j                  «        t        j                  j                  | _         d\  | _        | _          y t+        d|d   z
  |z  «      }|t-        d|d   z
  |z  «      kD  r�Œ|D �cg c]
  }|||z  z   ‘Œ }}t/        d„ |D «       «      r�ŒBt9        t:        ‰«      \  | _        | _        | _        | _        | _        | _        t=        |«      | _        |D �cg c]  }t=        |«      ‘Œ c}| j                  _        t?        |«      | j                  _         tC        | j                  j                  |«      D ]  \  }}||_        Œ   y  �Œc tE        d«      ‚c c}w c c}w c c}w )Nr   )éÿÿ  r   c                 ó   — | j                   S ©N)Ú
StopOffset)Ústops    úa/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/fontTools/varLib/instancer/colr.pyú<lambda>z,_instantiateRadialGradient.<locals>.<lambda>   s
   € °d·o±o€ ó    )Úkeyéÿÿÿÿé @  é   é   c              3   óF   •K  — | ]  }d ‰|   cxk  xr dk  nc  –— Œ y­w)é €ÿÿéÿ  N© ©Ú.0ÚiÚgeometrys     €r   ú	<genexpr>z-_instantiateRadialGradient.<locals>.<genexpr>/   s"   øè ø€ ÒL¸!�v ¨!¡Ö5°Ô5Ô5ÑLùó   ƒ!)r   r   é   é   c              3   óF   •K  — | ]  }d ‰|   cxk  xr dk  nc  –— Œ y­w)r   r   Nr   r   s     €r   r"   z-_instantiateRadialGradient.<locals>.<genexpr>/   s)   øè ø€ ò TØ23�A˜ !™Ö-¨Ô-Ô-ñTùr#   )é   é   r'   éþÿÿÿg    Àÿÿ?c              3   óp   K  — | ].  }d |dz  cxk  xr dk  nc  xs |dz  t        |dz  «      k7  –— Œ0 y­w)r   r   r   Nr   )r   Úoffsets     r   r"   z-_instantiateRadialGradient.<locals>.<genexpr>I   sJ   è ø€ ò ð ð ˜f u™nÖ5°Ô5Ð5ò =Ø˜E‘>¤W¨V°e©^Ó%<Ñ<ó=ñùs   ‚46zOCOLR radial gradient with negative radii cannot be represented without rounding)#ÚFormatÚotÚPaintFormatÚPaintVarRadialGradientÚr0Úr1Ú	ColorLineÚ	ColorStopÚ__dict__ÚclearÚ
PaintSolidÚPaletteIndexÚAlphaÚsortedr   r
   Úx1Úx0Úy1Úy0Úranger   r	   ÚanyÚExtendÚ
ExtendModeÚPADÚREFLECTÚmapÚintr   ÚlenÚ	StopCountÚzipÚ
ValueError)Úpaintr0   r1   ÚlineÚdrÚorderedÚfirstÚlastÚlatticeÚshiftÚbÚcoarseÚfineÚaÚstopsr   ÚoffsetsÚtipÚperiodÚnr+   r!   s                        @r   Ú_instantiateRadialGradientr[   
   su  ø€ Ø‡|�|”r—~‘~×<Ñ<Ò<ØØ�X‰X�u—x‘xˆ€BØ	ˆQ‚w�2˜’7ØØ�?‰?€DØ	ˆR‚x�t—~’~à�‰×ÑÔÜ—~‘~×0Ñ0ˆŒØ*3Ñ'ˆÔ˜EœKØØ	ˆb‰€BÜ�T—^‘^Ñ)EÔF€GØ�A‰J×!Ñ!€EØ�2‰;×!Ñ!€Dä�%˜Ÿ™ E§H¡HÑ,¨e¯h©h¸¿¹Ñ.AÀ2ÓF€GÜ�r“ó ;ˆØ�‰JˆØ#%¨¢6”�r�c˜B‘h”¬u°R¸2¸#±X«ÀÑ/Bˆð �AŠvô �"��r‘˜GÑ#Ó$ wÒ.ä�r˜R˜C‘x 'Ñ)Ó*¨WÑ4°qÑ8ð 	ð
 ˜$�ó 3	ˆAð —‘˜1 §¡¨5¯8©8Ñ 3Ñ4Ñ4Ø—‘˜1 §¡¨5¯8©8Ñ 3Ñ4Ñ4Ø�Q˜‘V‘Ø—‘˜A ™E e§h¡h°·±Ñ&9Ñ:Ñ:Ø—‘˜A ™E e§h¡h°·±Ñ&9Ñ:Ñ:Ø�a˜!‘e˜r‘\Ñ!ðˆHô ÓL¸|ÔLÔLÔPSó TØ7=ôTô Qð ØˆEØ=BÖC°T˜Ÿ™¨!Ñ+¨qÓ0ÐCˆGÐCØ˜A‘;�, ! b¡&Ñ)ˆCØ�{‰{œbŸm™m×/Ñ/Ò/Ø˜’6˜g b™k¨SÒ0Ø&+¨B¡i [°1°#˜7‘EØ˜!’V ¨¡
¨SÒ 0Ø&+¨A¡h Z°!°˜7‘Eà ™,¨!Ñ+�Ø—;‘;¤"§-¡-×"7Ñ"7Ò7Ø˜a‘K�FØ˜Q’;Ø—N‘N×(Ñ(Ô*Ü#%§>¡>×#<Ñ#<�E”LØ6?Ñ3�EÔ&¨¬Úä˜"˜w q™z™/¨VÑ3Ó4�Ø”u˜}°¸±Ñ;¸vÑEÓFÒFÙØ=DÖE°6˜6 A¨¡JÓ.ÐE�ÐEÜñ ð &ôô ñ
 ÜILÜ�XóJÑFˆEŒH�e”h ¤¨%¬(°E´H¸e¼hô # 4›jˆEŒOØ@EÖ(F¸¬¨d­Ò(FˆE�O‰OÔ%Ü(+¨E«
ˆE�O‰OÔ%Ü # E§O¡O×$=Ñ$=¸wÓ Gò )‘��fØ"(�•ð)âòg3	ð;ôx ØYóð ùòK Dùò( Fùò )Gs   ÊR$Î7R)Ð%R.c                 óà  — | j                   t        j                  j                  t        j                  j                  t        j                  j
                  t        j                  j                  fvryt        | d«      r| j                  x}}n| j                  | j                  }}d|cxk  rdk  rn nd|cxk  rdk  ry t        | dd«      t        | dd«      }}t        j                  «       }|dc|_        |_        d|c|_        |_        |d|z
  z  |d|z
  z  c|_        |_        d	D ]  }t        | |«      sŒt'        | |«       Œ t        j                  j(                  | _         || _        y)
zCUse an affine transform when a static scale no longer fits F2Dot14.NÚscaler)   r'   ÚcenterXr   ÚcenterYr   )r]   ÚscaleXÚscaleYr^   r_   )r,   r-   r.   ÚPaintVarScaleÚPaintVarScaleAroundCenterÚPaintVarScaleUniformÚ PaintVarScaleUniformAroundCenterÚhasattrr]   r`   ra   ÚgetattrÚ	Affine2x3ÚxxÚyxÚxyÚyyÚdxÚdyÚdelattrÚPaintTransformÚ	Transform)rJ   ÚsxÚsyÚcxÚcyÚ	transformÚnames          r   Ú_instantiateScalerx   ^   s5  € à‡|�|Ü
�‰×$Ñ$Ü
�‰×0Ñ0Ü
�‰×+Ñ+Ü
�‰×7Ñ7ð	ñ ð 	Üˆu�gÔØ—+‘+Ðˆ‰Rà—‘˜uŸ|™|ˆBˆØ	ˆR„|�!…|˜˜bœ 1šØð %ä�U˜I qÓ)¬7°5¸)ÀQÓ+Gˆ€BÜ—‘“€IØ!# QÐ€I„L�)”,Ø!" BÐ€I„L�)”,Ø!# q¨2¡v¡°°a¸"±f±Ð€I„L�)”,ØCò !ˆÜ�5˜$ÕÜ�E˜4Õ ð!ô —>‘>×0Ñ0€E„LØ€E…Or   c                 ór  ‡	‡
‡‡‡— ddl m} d| vs| d   j                  dk  ry | d   j                  }|j                  €y  ||j                  | d   j
                  |«      Š	t        d„ |j                  j                  D «       «       Š|j                  �|j                  j                  ng Š
t        «       Šˆ	ˆ
ˆˆˆfd„Š|j                  �-|j                  j                  D ]  } ‰|j                  «       Œ |j                  �#|j                  j                  D ]
  } ‰|«       Œ |j                  �1|j                  j                   j#                  «       D ]
  } ‰|«       Œ ‰rd |_        d |_        y ‰
r=|j                  j%                  «       }‰
D �cg c]  }||   ‘Œ	 c}|j                  _	        y y c c}w )Nr   )ÚinstantiateItemVariationStoreÚCOLRÚfvarc              3   óT   K  — | ]   }|j                   D ]  }t        |«      –— Œ Œ" y ­wr   )ÚItemr?   )r   ÚdataÚrows      r   r"   z"instantiateCOLR.<locals>.<genexpr>„   s$   è ø€ ÒU $È4Ï9É9ÒUÀC”S˜—XÐU�XÑUùs   ‚&(c                 ó   •— t        | «      ‰v ry ‰j                  t        | «      «       | j                  «        | j                  «       D ]  } ‰|j                  «       Œ | j                  «       D �]›  }| j                  |«      }| j                  }|t        j                  k(  rd}n5||j                  «       z   }‰
r‰
t        |t        ‰
«      dz
  «         }‰	|   }t        | |«      }t        |t        «      r©t!        |j#                  |«      |z   «      }|dk(  r‰rt        dt%        d|«      «      }n\t        |t&        «      rLt        | t        j(                  «      r2| j*                  t        j,                  j.                  fvr|dz   dz  dz
  }|j1                  |«      }n^t        | t        j2                  «      r|dv rt5        |«      n
t7        |«      }|t!        |«      z  }|dv r‰st        d	t%        d|«      «      }t9        | ||«       �Œž ‰rýt        | t        j(                  «      rt;        | «       t=        | «       t?        | d
«      r| `t        | t        j(                  «      rCt        j,                  | j*                  «      jA                  «       r| xj*                  dz  c_        y t        | t        j2                  «      r| j*                  dk(  rd| _        y t?        tC        | «      d«      rtC        | «      jD                  | _#        y y y )Nr   r   r8   r   i €  i   )ÚxMinÚyMin)r0   r1   r   ÚVarIndexBaser'   Ú	NoVarType)$ÚidÚaddÚensureDecompiledÚiterSubTablesÚvalueÚgetVariableAttrsÚgetConverterByNamer„   r-   ÚNO_VARIATION_INDEXÚgetVarIndexOffsetÚminrF   rg   Ú
isinstancer   r   ÚtoIntÚmaxr   ÚPaintr,   r.   ÚPaintVarSweepGradientÚfromIntÚClipBoxr	   r   Úsetattrrx   r[   rf   Úis_variableÚtyper…   Ú	__class__)ÚtableÚentryrw   ÚconvÚbaseÚdeltaÚindexrŠ   ÚbitsÚdeltasÚmappingÚstaticÚvisitÚvisiteds            €€€€€r   r¥   zinstantiateCOLR.<locals>.visitˆ   sy  ø€ Üˆe‹9˜ÑØØ�‰”B�u“IÔØ×ÑÔ Ø×(Ñ(Ó*ò 	ˆEÙ�%—+‘+Õð	ð ×*Ñ*Ó,ó 	(ˆDØ×+Ñ+¨DÓ1ˆDØ×%Ñ%ˆDØ”r×,Ñ,Ò,Ø‘à˜t×5Ñ5Ó7Ñ7�ÙØ#¤C¨¬s°7«|¸aÑ/?Ó$@ÑA�EØ˜u™�Ü˜E 4Ó(ˆEÜ˜$¤Ô/Ü˜tŸz™z¨%Ó0°5Ñ8Ó9�Ø˜7’?¡vÜ˜w¬¨A¨t«Ó5‘DÜ ¤eÔ,´¸EÄ2Ç8Á8Ô1Là—|‘|¬B¯N©N×,PÑ,PÐ+RÑRØ $ u¡°Ñ5¸Ñ=˜ØŸ™ TÓ*‘ä˜e¤R§Z¡ZÔ0Ø,0Ð4DÑ,DœE %œLÌ$ÈuË+�EØœ ›Ñ'�Ø˜<Ñ'±Ü ¤s¨1¨e£}Ó5�EÜ�E˜4 Ö'ð5	(ñ8 Ü˜%¤§¡Ô*Ü! %Ô(Ü*¨5Ô1Ü�u˜nÔ-ØÐ&ä˜5¤"§(¡(Ô+Ü—N‘N 5§<¡<Ó0×<Ñ<Ô>à—’ Ñ!–Ü˜E¤2§:¡:Ô.°5·<±<À1Ò3DØ �•Üœ˜e› kÔ2Ü"& u£+×"7Ñ"7�•ð 3ð r   )Ú rz   Úversionr›   ÚVarStoreÚaxesr?   ÚVarDataÚVarIndexMapr£   ÚsetÚBaseGlyphListÚBaseGlyphPaintRecordr“   Ú	LayerListÚClipListÚclipsÚvaluesÚoptimize)ÚvarfontÚ
axisLimitsrz   ÚcolrÚrecordrJ   ÚclipÚvarIndexMappingr    r¢   r£   r¤   r¥   r¦   s            @@@@@r   ÚinstantiateCOLRr»   y   sŽ  ü€ Ý/à�WÑ ¨¡× 7Ñ 7¸!Ò ;ØØ�6‰?× Ñ €DØ‡}�}ÐØÙ*Ø�‰�w˜v‘×+Ñ+¨Zó€Fô ÑU¨$¯-©-×*?Ñ*?ÔUÓUÐU€FØ*.×*:Ñ*:Ð*Fˆd×Ñ×&Ò&ÈB€GÜ‹e€G÷28ð 28ðh ×ÑÐ%Ø×(Ñ(×=Ñ=ò 	 ˆFÙ�&—,‘,Õð	 à‡~�~Ð!Ø—^‘^×)Ñ)ò 	ˆEÙ�%�Lð	à‡}�}Ð Ø—M‘M×'Ñ'×.Ñ.Ó0ò 	ˆDÙ�$�Kð	áØˆŒØˆÕÙ	àŸ-™-×0Ñ0Ó2ˆØHOÖ#P¸u O°EÓ$:Ò#Pˆ×ÑÕ ð 
ùò $Qs   ÆF4N)Ú__doc__ÚfontTools.ttLib.tablesr   r-   Ú#fontTools.ttLib.tables.otConvertersr   r   ÚfontTools.misc.roundToolsr   Úmathr   r	   r
   r   r[   rx   r»   r   r   r   ú<module>rÁ      s-   ðÙ Eå 1ß EÝ -ß !Ñ !Ý òQòh ó6RQr   