§
    |Øj3   ã                   ód   — 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d
S )z?Instantiate COLRv1 paint values and their item variation store.é    )ÚotTables)ÚBaseFixedValueÚAngle©ÚotRound)ÚceilÚfloorÚgcd©Úcopyc           
      ól  ‡‡‡‡‡— | j         t          j        j        k    rd S | j        | j        }}|dk    r|dk    rd S | j        }||k    s|j        s@| j         	                    ¦   «          t          j        j
        | _         d\  | _        | _        d S ||z
  }t          |j        d„ ¬¦  «        }|d         j        }|d         j        }t          d| j        | j        z
  | j        | j        z
  |¦  «        }t)          d¦  «        D �]"}	d|	z  Š|dk    rt+          | |z  ¦  «        nt-          || z  ¦  «        ‰z
  }
|dk    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Œ·|}ˆˆfd„|D ¦   «         }‰d          ‰|z  z  }|j        t          j        j        k    r>|dk    r|d         |k    r|d         gdg}}nÙ|dk     r|d         |k    r|d         gdg}}nº||z
  ‰z  Š|j        t          j        j        k    r‰dz  Š‰dk    rB| j         	                    ¦   «          t          j        j
        | _         d\  | _        | _          d S t+          d|d         z
  ‰z  ¦  «        Š‰t-          d|d         z
  ‰z  ¦  «        k    r�ŒÚˆˆfd„|D ¦   «         }t/          d„ |D ¦   «         ¦  «        r�Œt9          t:          ‰¦  «        \  | _        | _        | _        | _        | _        | _        t=          |¦  «        | _        d„ |D ¦   «         | j        _        t?          |¦  «        | j        _         tC          | j        j        |¦  «        D ]\  }}||_        Œ  d S �Œ$tE          d¦  «        ‚)Nr   )éÿÿ  r   c                 ó   — | j         S ©N©Ú
StopOffset)Ústops    ú”/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/fontTools/varLib/instancer/colr.pyú<lambda>z,_instantiateRadialGradient.<locals>.<lambda>   s   € °d´o€ ó    )Úkeyéÿÿÿÿé @  é   é   c              3   óF   •K  — | ]}d ‰|         cxk    odk    nc  V — ŒdS )é €ÿÿéÿ  N© ©Ú.0ÚiÚgeometrys     €r   ú	<genexpr>z-_instantiateRadialGradient.<locals>.<genexpr>/   sF   øè è € ÐLÐL¸!�v ¨!¤Ð5Ð5Ò5Ð5°Ò5Ð5Ð5Ð5Ð5ÐLÐLÐLÐLÐLÐLr   )r   r   é   é   c              3   óF   •K  — | ]}d ‰|         cxk    odk    nc  V — ŒdS )r   r   Nr   r    s     €r   r$   z-_instantiateRadialGradient.<locals>.<genexpr>/   s_   øè è € ð Tð TØ23�A˜ !œÐ-Ð-Ò-Ð-¨Ò-Ð-Ð-Ð-Ð-ðTð Tð Tð Tð Tð Tr   )é   é   c                 ó*   •— g | ]}|j         ‰z
  ‰z  ‘ŒS r   r   )r!   r   ÚaÚbs     €€r   ú
<listcomp>z._instantiateRadialGradient.<locals>.<listcomp>4   s%   ø€ ÐCÐCÐC°T˜œ¨!Ñ+¨qÑ0ÐCÐCÐCr   r(   éþÿÿÿg    Àÿÿ?c                 ó    •— g | ]
}|‰‰z  z   ‘ŒS r   r   )r!   ÚoffsetÚnÚperiods     €€r   r-   z._instantiateRadialGradient.<locals>.<listcomp>H   s"   ø€ ÐEÐEÐE°6˜6 A¨¡JÑ.ÐEÐEÐEr   c              3   óp   K  — | ]1}d |dz  cxk    odk    nc  p|dz  t          |dz  ¦  «        k    V — Œ2dS )r   r   r   Nr   )r!   r0   s     r   r$   z-_instantiateRadialGradient.<locals>.<genexpr>I   sx   è è € ð ð ð ð ˜f u™nÐ5Ð5Ò5Ð5°Ò5Ð5Ð5Ð5Ð5ð =Ø˜E‘>¥W¨V°e©^Ñ%<Ô%<Ò<ðð ð ð ð ð r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r   )r!   r   s     r   r-   z._instantiateRadialGradient.<locals>.<listcomp>T   s   € Ð(FÐ(FÐ(F¸­¨d©¬Ð(FÐ(FÐ(Fr   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)Úpaintr9   r:   ÚlineÚdrÚorderedÚfirstÚlastÚlatticeÚshiftÚcoarseÚfineÚstopsÚoffsetsÚtipr   r0   r+   r,   r#   r1   r2   s                    @@@@@r   Ú_instantiateRadialGradientr`   
   sÞ  øøøøø€ Ø„|•r”~Ô<Ò<Ð<ØˆØŒX�u”xˆ€BØ	ˆQ‚w€w�2˜’7�7ØˆØŒ?€DØ	ˆR‚x€x�t”~€xàŒ×ÒÑÔÐÝ”~Ô0ˆŒØ*3Ñ'ˆÔ˜EœKØˆØ	ˆb‰€BÝ�T”^Ð)EÐ)EÐFÑFÔF€GØ�AŒJÔ!€EØ�2Œ;Ô!€Då�%˜œ E¤HÑ,¨e¬h¸¼Ñ.AÀ2ÑFÔF€GÝ�r‘”ð ;ñ ;ˆØ�‰JˆØ#%¨¢6 6•�r�c˜B‘h‘”�­u°R¸2¸#±X©¬ÀÑ/Bˆð �AŠvˆvõ �"��r‘˜GÑ#Ñ$Ô$ wÑ.Ð.å�r˜R˜C‘x 'Ñ)Ñ*Ô*¨WÑ4°qÑ8ð 	ð
 ˜$�ð 3	ñ 3	ˆAð ”˜1 ¤¨5¬8Ñ 3Ñ4Ñ4Ø”˜1 ¤¨5¬8Ñ 3Ñ4Ñ4Ø�Q˜‘V‘Ø”˜A ™E e¤h°´Ñ&9Ñ:Ñ:Ø”˜A ™E e¤h°´Ñ&9Ñ:Ñ:Ø�a˜!‘e˜r‘\Ñ!ðˆHõ ÐLÐLÐLÐL¸|ÐLÑLÔLÑLÔLð ÕPSð Tð Tð Tð TØ7=ðTñ Tô Tñ Qô Qð ð ØˆEØCÐCÐCÐCÐC¸UÐCÑCÔCˆGØ˜A”;�, ! b¡&Ñ)ˆCØŒ{�bœmÔ/Ò/Ð/Ø˜’6�6˜g bœk¨SÒ0Ð0Ø&+¨B¤i [°1°#˜7�E�EØ˜!’V�V ¨¤
¨SÒ 0Ð 0Ø&+¨A¤h Z°!°˜7�Eøà ™,¨!Ñ+�Ø”;¥"¤-Ô"7Ò7Ð7Ø˜a‘K�FØ˜Q’;�;Ø”N×(Ò(Ñ*Ô*Ð*Ý#%¤>Ô#<�E”LØ6?Ñ3�EÔ&¨¬Ø�F�F�Få˜"˜w qœz™/¨VÑ3Ñ4Ô4�Ø•u˜}°¸´Ñ;¸vÑEÑFÔFÒFÐFÙØEÐEÐEÐEÐE¸WÐEÑEÔE�Ýð ð ð &ðñ ô ñ ô ð ñ
 ÝILÝ�XñJô JÑFˆEŒH�e”h ¤¨%¬(°E´H¸e¼hõ # 4™jœjˆEŒOØ(FÐ(FÀÐ(FÑ(FÔ(FˆEŒOÔ%Ý(+¨E©
¬
ˆEŒOÔ%Ý # E¤OÔ$=¸wÑ GÔ Gð )ð )‘��fØ"(�”�ØˆFˆFˆFñg3	õh ØYñô ð r   c                 ó�  — | j         t          j        j        t          j        j        t          j        j        t          j        j        fvrdS 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n ndS t          | dd¦  «        t          | dd¦  «        }}t          j        ¦   «         }|dc|_        |_        d|c|_        |_        |d|z
  z  |d|z
  z  c|_        |_        d	D ]"}t          | |¦  «        rt'          | |¦  «         Œ#t          j        j        | _         || _        dS )
zCUse an affine transform when a static scale no longer fits F2Dot14.NÚscaler.   r(   ÚcenterXr   ÚcenterYr   )rb   ÚscaleXÚscaleYrc   rd   )r5   r6   r7   ÚPaintVarScaleÚPaintVarScaleAroundCenterÚPaintVarScaleUniformÚ PaintVarScaleUniformAroundCenterÚhasattrrb   re   rf   ÚgetattrÚ	Affine2x3ÚxxÚyxÚxyÚyyÚdxÚdyÚdelattrÚPaintTransformÚ	Transform)rS   ÚsxÚsyÚcxÚcyÚ	transformÚnames          r   Ú_instantiateScaler}   ^   sU  € à„|Ý
ŒÔ$Ý
ŒÔ0Ý
ŒÔ+Ý
ŒÔ7ð	ð ð ð 	ˆÝˆu�gÑÔð ,Ø”+ÐˆˆRˆRà”˜uœ|ˆBˆØ	ˆR€|€|‚|€|�!‚|€|€|€|€|˜˜b˜˜š˜ 1š˜˜˜˜ØˆÝ�U˜I qÑ)Ô)­7°5¸)ÀQÑ+GÔ+Gˆ€BÝ”‘”€IØ!# QÐ€I„L�)”,Ø!" BÐ€I„L�)”,Ø!# q¨2¡v¡°°a¸"±f±Ð€I„L�)”,ØCð !ð !ˆÝ�5˜$ÑÔð 	!Ý�E˜4Ñ Ô Ð øÝ”>Ô0€E„LØ€E„O€O€Or   c                 óÔ  ‡‡‡	‡
‡‡— ddl m} d| vs| d         j        dk     rd S | d         j        }|j        €d S  ||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        �,|j        j                             ¦   «         D ]} ‰|¦  «         Œ‰	rd |_        d |_        d S ‰r3|j                             ¦   «         Š
ˆ
fd„‰D ¦   «         |j        _	        d S d S )Nr   )ÚinstantiateItemVariationStoreÚCOLRÚfvarc              3   óH   K  — | ]}|j         D ]}t          |¦  «        V — ŒŒd S r   )ÚItemrH   )r!   ÚdataÚrows      r   r$   z"instantiateCOLR.<locals>.<genexpr>„   s7   è è € ÐUÐU $È4Ì9ÐUÐUÀC•S˜‘X”XÐUÐUÐUÐUÐUÐUÐUr   c                 óØ  •— t          | ¦  «        ‰v rd S ‰                     t          | ¦  «        ¦  «         |                      ¦   «          |                      ¦   «         D ]} ‰|j        ¦  «         Œ|                      ¦   «         D �]Ö}|                      |¦  «        }| j        }|t          j	        k    rd}nG|| 
                    ¦   «         z   }‰
r&‰
t          |t          ‰
¦  «        dz
  ¦  «                 }‰	|         }t          | |¦  «        }t          |t          ¦  «        rµt!          |                     |¦  «        |z   ¦  «        }|dk    r!‰rt          dt%          d|¦  «        ¦  «        }nSt          |t&          ¦  «        r>t          | t          j        ¦  «        r$| j        t          j        j        fvr|dz   dz  dz
  }|                     |¦  «        }nrt          | t          j        ¦  «        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        ¦  «        r=t          j        | j        ¦  «                              ¦   «         r| xj        dz  c_        d S t          | t          j        ¦  «        r| j        dk    r	d| _        d S t?          tC          | ¦  «        d¦  «        rtC          | ¦  «        j"        | _#        d S d S d S )Nr   r   rA   r   i €  i   )ÚxMinÚyMin)r9   r:   r   ÚVarIndexBaser(   Ú	NoVarType)$ÚidÚaddÚensureDecompiledÚiterSubTablesÚvalueÚgetVariableAttrsÚgetConverterByNamer‰   r6   ÚNO_VARIATION_INDEXÚgetVarIndexOffsetÚminrO   rl   Ú
isinstancer   r   ÚtoIntÚmaxr   ÚPaintr5   r7   ÚPaintVarSweepGradientÚfromIntÚClipBoxr	   r   Úsetattrr}   r`   rk   Úis_variableÚtyperŠ   Ú	__class__)ÚtableÚentryr|   ÚconvÚbaseÚdeltaÚindexr�   ÚbitsÚdeltasÚmappingÚstaticÚvisitÚvisiteds            €€€€€r   rª   zinstantiateCOLR.<locals>.visitˆ   sP  ø€ Ýˆe‰9Œ9˜ÐÐØˆFØ�Š•B�u‘I”IÑÔÐØ×ÒÑ Ô Ð Ø×(Ò(Ñ*Ô*ð 	ð 	ˆEØˆE�%”+ÑÔÐÐà×*Ò*Ñ,Ô,ð 	(ñ 	(ˆDØ×+Ò+¨DÑ1Ô1ˆDØÔ%ˆDØ•rÔ,Ò,Ð,Ø��à˜t×5Ò5Ñ7Ô7Ñ7�Øð BØ#¥C¨­s°7©|¬|¸aÑ/?Ñ$@Ô$@ÔA�EØ˜uœ�Ý˜E 4Ñ(Ô(ˆEÝ˜$¥Ñ/Ô/ð 6Ý˜tŸzšz¨%Ñ0Ô0°5Ñ8Ñ9Ô9�Ø˜7’?�? v�?Ý˜w­¨A¨t©¬Ñ5Ô5�D�DÝ ¥eÑ,Ô,ð >µ¸EÅ2Ä8Ñ1LÔ1Lð >à”|­B¬NÔ,PÐ+RÐRÐRØ $ u¡°Ñ5¸Ñ=˜ØŸš TÑ*Ô*��å˜e¥R¤ZÑ0Ô0ð VØ,0Ð4DÐ,DÐ,D�E %™LœL˜LÍ$ÈuÉ+Ì+�EØ� ™œÑ'�Ø˜<Ð'Ð'°Ð'Ý ¥s¨1¨e¡}¤}Ñ5Ô5�EÝ�E˜4 Ñ'Ô'Ð'Ñ'àñ 	8Ý˜%¥¤Ñ*Ô*ð 2Ý! %Ñ(Ô(Ð(Ý*¨5Ñ1Ô1Ð1Ý�u˜nÑ-Ô-ð 'ØÐ&å˜5¥"¤(Ñ+Ô+ð8å”N 5¤<Ñ0Ô0×<Ò<Ñ>Ô>ð8ð �” Ñ!�”��Ý˜E¥2¤:Ñ.Ô.ð 8°5´<À1Ò3DÐ3DØ �”��Ý�˜e™œ kÑ2Ô2ð 8Ý"& u¡+¤+Ô"7�”��ð	8ð 	8ð8ð 8r   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   )r!   r¥   ÚvarIndexMappings     €r   r-   z#instantiateCOLR.<locals>.<listcomp>Ë   s   ø€ Ð#PÐ#PÐ#P¸u O°EÔ$:Ð#PÐ#PÐ#Pr   )Ú r   Úversionr    ÚVarStoreÚaxesrH   ÚVarDataÚVarIndexMapr¨   ÚsetÚBaseGlyphListÚBaseGlyphPaintRecordr˜   Ú	LayerListÚClipListÚclipsÚvaluesÚoptimize)ÚvarfontÚ
axisLimitsr   ÚcolrÚrecordrS   Úclipr§   r¨   r©   r­   rª   r«   s          @@@@@@r   ÚinstantiateCOLRrÁ   y   sí  øøøøøø€ Ø/Ð/Ð/Ð/Ð/Ð/à�WÐÐ ¨¤Ô 7¸!Ò ;Ð ;ØˆØ�6Œ?Ô €DØ„}ÐØˆØ*Ð*ØŒ�w˜v”Ô+¨Zñô €Fõ ÐUÐU¨$¬-Ô*?ÐUÑUÔUÑUÔUÐU€FØ*.Ô*:Ð*FˆdÔÔ&Ð&ÈB€GÝ‰eŒe€Gð28ð 28ð 28ð 28ð 28ð 28ð 28ð 28ð 28ðh ÔÐ%ØÔ(Ô=ð 	 ð 	 ˆFØˆE�&”,ÑÔÐÐØ„~Ð!Ø”^Ô)ð 	ð 	ˆEØˆE�%‰LŒLˆLˆLØ„}Ð Ø”MÔ'×.Ò.Ñ0Ô0ð 	ð 	ˆDØˆE�$‰KŒKˆKˆKØð QØˆŒØˆÔÐÐØ	ð Qàœ-×0Ò0Ñ2Ô2ˆØ#PÐ#PÐ#PÐ#PÈÐ#PÑ#PÔ#PˆÔÔ Ð Ð ðQð Qr   N)Ú__doc__ÚfontTools.ttLib.tablesr   r6   Ú#fontTools.ttLib.tables.otConvertersr   r   ÚfontTools.misc.roundToolsr   Úmathr   r	   r
   r   r`   r}   rÁ   r   r   r   ú<module>rÇ      s¼   ðØ EÐ Eà 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ -Ð -Ð -Ð -Ð -Ð -Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ðQð Qð Qðh ð  ð  ð6RQð RQð RQð RQð RQr   