Ë
    £eh´  ã                   óx   — d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZ de
z  Zde
z  Zd„ Z G d„ de«      Zy	)
zùConvert SVG Path's elliptical arcs to Bezier curves.

The code is mostly adapted from Blink's SVGPathNormalizer::DecomposeArcToCubic
https://github.com/chromium/chromium/blob/93831f2/third_party/
blink/renderer/core/svg/svg_path_parser.cc#L169-L278
é    )ÚIdentityÚScale)
Úatan2ÚceilÚcosÚfabsÚisfiniteÚpiÚradiansÚsinÚsqrtÚtané   ç      à?c                 ól   — | j                  |j                  |j                  f«      }|d   |d   dz  z   S )Nr   é   y              ð?)ÚtransformPointÚrealÚimag)ÚmatrixÚptÚrs      úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/svgLib/path/arc.pyÚ
_map_pointr      s6   € à×Ñ˜rŸw™w¨¯©Ð0Ó1€AØˆQ‰4�!�A‘$˜‘)ÑÐó    c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚEllipticalArcc                 ó¾   — || _         || _        || _        || _        || _        || _        || _        t        |«      | _        d x| _	        x| _
        x| _        | _        y ©N)Úcurrent_pointÚrxÚryÚrotationÚlargeÚsweepÚtarget_pointr   ÚangleÚcenter_pointÚtheta1Útheta2Ú	theta_arc)Úselfr    r!   r"   r#   r$   r%   r&   s           r   Ú__init__zEllipticalArc.__init__   sd   € Ø*ˆÔØˆŒØˆŒØ ˆŒØˆŒ
ØˆŒ
Ø(ˆÔô ˜XÓ&ˆŒ
ð JNÐMˆÔÐM˜DœKÐM¨$¬+¸½r   c                 óN  — t        | j                  «      }t        | j                  «      }|r|sy| j                  | j                  k(  ry| j                  | j                  z
  dz  }t        j                  | j                   «      }t        ||«      }||z  }||z  }|j                  |j                  z  }|j                  |j                  z  }	||z  |	|z  z   }
|
dkD  r+|t        |
«      z  }|t        |
«      z  }||c| _        | _        t        d|z  d|z  «      j                  | j                   «      }t        || j                  «      }t        || j                  «      }||z
  }|j                  |j                  z  |j                  |j                  z  z   }t        d|z  dz
  d«      }t        |«      }| j                  | j                  k(  r| }||z  }||z   dz  }|t!        |j                   |j                  «      z  }||z  }||z  }t#        |j                  |j                  «      }t#        |j                  |j                  «      }||z
  }|dk  r| j                  r
|t$        z  }n|dkD  r| j                  s	|t$        z  }|| _        ||z   | _        || _        || _        y)NFr   r   ç      Ð?g        r   T)r   r!   r"   r&   r    r   Úrotater'   r   r   r   r   r   Úmaxr%   r$   Úcomplexr   ÚTWO_PIr)   r*   r+   r(   )r,   r!   r"   Úmid_point_distanceÚpoint_transformÚtransformed_mid_pointÚ	square_rxÚ	square_ryÚsquare_xÚsquare_yÚradii_scaleÚpoint1Úpoint2ÚdeltaÚdÚscale_factor_squaredÚscale_factorr(   r)   r*   r+   s                        r   Ú_parametrizezEllipticalArc._parametrize'   s€  € ô �$—'‘'‹]ˆÜ�$—'‘'‹]ˆÙ‘rØð ×Ñ × 2Ñ 2Ò2Øà"×0Ñ0°4×3DÑ3DÑDÈÑKÐä"Ÿ/™/¨4¯:©:¨+Ó6ˆä *¨?Ð<NÓ OÐØ˜‘Gˆ	Ø˜‘Gˆ	Ø(×-Ñ-Ð0E×0JÑ0JÑJˆØ(×-Ñ-Ð0E×0JÑ0JÑJˆð  Ñ*¨X¸	Ñ-AÑAˆØ˜Š?Ø”$�{Ó#Ñ#ˆBØ”$�{Ó#Ñ#ˆBØ! 2ÐˆDŒG�T”Wä  B¡¨¨B©Ó/×6Ñ6¸¿
¹
°{ÓCˆä˜O¨T×-?Ñ-?Ó@ˆÜ˜O¨T×->Ñ->Ó?ˆØ˜‘ˆà�J‰J˜Ÿ™Ñ# e§j¡j°5·:±:Ñ&=Ñ=ˆÜ" 1 q¡5¨4¡<°Ó5ÐäÐ0Ó1ˆØ�:‰:˜Ÿ™Ò#Ø(˜=ˆLà�ÑˆØ ™¨3Ñ.ˆØœ §¡ ¨U¯Z©ZÓ8Ñ8ˆØ�,ÑˆØ�,Ñˆä�v—{‘{ F§K¡KÓ0ˆÜ�v—{‘{ F§K¡KÓ0ˆà˜V‘Oˆ	Ø�qŠ=˜TŸZšZØœÑ‰IØ˜Š] 4§:¢:ØœÑˆIàˆŒØ˜yÑ(ˆŒØ"ˆŒØ(ˆÔàr   c           	   #   óx  K  — | j                   €| j                  «       sy t        j                  | j                  «      j                  | j                  | j                  «      }t        t        t        | j                  t        dz   z  «      «      «      }t        |«      D �]  }| j                  || j                  z  |z  z   }| j                  |dz   | j                  z  |z  z   }dt        d||z
  z  «      z  }t!        |«      s y t#        |«      }t%        |«      }t#        |«      }	t%        |«      }
t'        |||z  z
  |||z  z   «      }|| j                   z  }t'        |
|	«      }|| j                   z  }|}|t'        ||	z  | |
z  «      z  }t)        ||«      }t)        ||«      }t)        ||«      }|||f–— �Œ y ­w)Ngü©ñÒMbP?r   gUUUUUUõ?r/   )r(   rB   r   r0   r'   Úscaler!   r"   Úintr   r   r+   ÚPI_OVER_TWOÚranger)   r   r	   r   r   r2   r   )r,   r5   Únum_segmentsÚiÚstart_thetaÚ	end_thetaÚtÚsin_start_thetaÚcos_start_thetaÚsin_end_thetaÚcos_end_thetar<   r&   r=   s                 r   Ú_decompose_to_cubic_curvesz(EllipticalArc._decompose_to_cubic_curvesm   s©  è ø€ Ø×ÑÐ$¨T×->Ñ->Ô-@Øä"Ÿ/™/¨$¯*©*Ó5×;Ñ;¸D¿G¹GÀTÇWÁWÓMˆô
 œ4¤ T§^¡^´{ÀUÑ7JÑ%KÓ LÓMÓNˆÜ�|Ó$ó 	/ˆAØŸ+™+¨¨D¯N©NÑ(:¸\Ñ(IÑIˆKØŸ™ q¨1¡u°·±Ñ&>ÀÑ&MÑMˆIàœ#˜d i°+Ñ&=Ñ>Ó?Ñ?ˆAÜ˜A”;Ùä! +Ó.ˆOÜ! +Ó.ˆOÜ 	›NˆMÜ 	›NˆMäØ ! oÑ"5Ñ5Ø ! oÑ"5Ñ5óˆFð �d×'Ñ'Ñ'ˆFÜ" =°-Ó@ˆLØ˜D×-Ñ-Ñ-ˆLØ!ˆFØ”g˜a -Ñ/°!°°mÑ1CÓDÑDˆFä °Ó8ˆFÜ °Ó8ˆFÜ% o°|ÓDˆLà˜& ,Ð.Ô.ñ7	/ùs   ‚F8F:c                 óà   — | j                  «       D ][  \  }}}|j                  |j                  |j                  f|j                  |j                  f|j                  |j                  f«       Œ] y r   )rQ   ÚcurveTor   r   )r,   Úpenr<   r=   r&   s        r   ÚdrawzEllipticalArc.draw”   sa   € Ø,0×,KÑ,KÓ,Mò 	Ñ(ˆF�F˜LØ�K‰KØ—‘˜fŸk™kÐ*Ø—‘˜fŸk™kÐ*Ø×"Ñ" L×$5Ñ$5Ð6õñ	r   N)Ú__name__Ú
__module__Ú__qualname__r-   rB   rQ   rU   © r   r   r   r      s   „ òNò DòL%/óNr   r   N)Ú__doc__ÚfontTools.misc.transformr   r   Úmathr   r   r   r   r	   r
   r   r   r   r   r3   rF   r   Úobjectr   rY   r   r   ú<module>r^      s?   ðñ÷ 5ß N× N× Nð 
ˆR‰€Ø�B‰h€òôD�Fõ Dr   