§
    ¢”j´  ã                   ó€   — 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d	S )
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        f¦  «        }|d         |d         dz  z   S )Nr   é   y              ð?)ÚtransformPointÚrealÚimag)ÚmatrixÚptÚrs      úh/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/svgLib/path/arc.pyÚ
_map_pointr      s5   € à×Ò˜rœw¨¬Ð0Ñ1Ô1€AØˆQŒ4�!�A”$˜‘)ÑÐó    c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚEllipticalArcc                 óÈ   — || _         || _        || _        || _        || _        || _        || _        t          |¦  «        | _        d x| _	        x| _
        x| _        | _        d S ©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__   sk   € Ø*ˆÔØˆŒØˆŒØ ˆŒØˆŒ
ØˆŒ
Ø(ˆÔõ ˜XÑ&Ô&ˆŒ
ð JNÐMˆÔÐM˜DœKÐM¨$¬+¸¼¸¸r   c                 ó¸  — t          | j        ¦  «        }t          | j        ¦  «        }|r|sdS | j        | j        k    rdS | j        | j        z
  dz  }t          j        | j         ¦  «        }t          ||¦  «        }||z  }||z  }|j	        |j	        z  }|j
        |j
        z  }	||z  |	|z  z   }
|
dk    r3|t          |
¦  «        z  }|t          |
¦  «        z  }||c| _        | _        t          d|z  d|z  ¦  «                             | 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k    r| j        s
|t$          z  }|| _        ||z   | _        || _        || _        dS )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ð 	Ø�5ð Ô Ô 2Ò2Ð2Ø�5à"Ô0°4Ô3DÑDÈÑKÐå"œ/¨4¬:¨+Ñ6Ô6ˆå *¨?Ð<NÑ OÔ OÐØ˜‘Gˆ	Ø˜‘Gˆ	Ø(Ô-Ð0EÔ0JÑJˆØ(Ô-Ð0EÔ0JÑJˆð  Ñ*¨X¸	Ñ-AÑAˆØ˜Š?ˆ?Ø•$�{Ñ#Ô#Ñ#ˆBØ•$�{Ñ#Ô#Ñ#ˆBØ! 2ÐˆDŒG�T”Wå  B¡¨¨B©Ñ/Ô/×6Ò6¸¼
°{ÑCÔCˆå˜O¨TÔ-?Ñ@Ô@ˆÝ˜O¨TÔ->Ñ?Ô?ˆØ˜‘ˆàŒJ˜œÑ# e¤j°5´:Ñ&=Ñ=ˆÝ" 1 q¡5¨4¡<°Ñ5Ô5ÐåÐ0Ñ1Ô1ˆØŒ:˜œÒ#Ð#Ø(˜=ˆLà�ÑˆØ ™¨3Ñ.ˆØ� ¤ ¨U¬ZÑ8Ô8Ñ8ˆØ�,ÑˆØ�,Ñˆå�v”{ F¤KÑ0Ô0ˆÝ�v”{ F¤KÑ0Ô0ˆà˜V‘Oˆ	Ø�qŠ=ˆ=˜TœZˆ=Ø�ÑˆIˆIØ˜Š]ˆ] 4¤:ˆ]Ø�ÑˆIàˆŒØ˜yÑ(ˆŒØ"ˆŒØ(ˆÔàˆtr   c           	   #   ó˜  K  — | j         €|                      ¦   «         sd S t          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 d S t#          |¦  «        }t%          |¦  «        }t#          |¦  «        }	t%          |¦  «        }
t'          |||z  z
  |||z  z   ¦  «        }|| j         z  }t'          |
|	¦  «        }|| j         z  }|}|t'          ||	z  | |
z  ¦  «        z  }t)          ||¦  «        }t)          ||¦  «        }t)          ||¦  «        }|||fV — �Œ+d S )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×->Ò->Ñ-@Ô-@Ð$ØˆFå"œ/¨$¬*Ñ5Ô5×;Ò;¸D¼GÀTÄWÑMÔMˆõ
 �4¥ T¤^µ{ÀUÑ7JÑ%KÑ LÔ LÑMÔMÑNÔNˆÝ�|Ñ$Ô$ð 	/ñ 	/ˆAØœ+¨¨D¬NÑ(:¸\Ñ(IÑIˆKØœ q¨1¡u°´Ñ&>ÀÑ&MÑMˆIà�#˜d i°+Ñ&=Ñ>Ñ?Ô?Ñ?ˆAÝ˜A‘;”;ð Ø��å! +Ñ.Ô.ˆOÝ! +Ñ.Ô.ˆOÝ 	™NœNˆMÝ 	™NœNˆMåØ ! oÑ"5Ñ5Ø ! oÑ"5Ñ5ñô ˆFð �dÔ'Ñ'ˆFÝ" =°-Ñ@Ô@ˆLØ˜DÔ-Ñ-ˆLØ!ˆFØ•g˜a -Ñ/°!°°mÑ1CÑDÔDÑDˆFå °Ñ8Ô8ˆFÝ °Ñ8Ô8ˆFÝ% o°|ÑDÔDˆLà˜& ,Ð.Ð.Ð.Ð.Ñ.ð7	/ð 	/r   c                 ó²   — |                       ¦   «         D ]A\  }}}|                     |j        |j        f|j        |j        f|j        |j        f¦  «         ŒBd S r   )rQ   ÚcurveTor   r   )r,   Úpenr<   r=   r&   s        r   ÚdrawzEllipticalArc.draw”   so   € Ø,0×,KÒ,KÑ,MÔ,Mð 	ð 	Ñ(ˆF�F˜LØ�KŠKØ”˜fœkÐ*Ø”˜fœkÐ*ØÔ" LÔ$5Ð6ñô ð ð ð	ð 	r   N)Ú__name__Ú
__module__Ú__qualname__r-   rB   rQ   rU   © r   r   r   r      sX   € € € € € ðNð Nð Nð Dð Dð 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Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nð 
ˆR‰€Ø�B‰h€ðð ð ðDð Dð Dð Dð D�Fñ Dô Dð Dð Dð Dr   