Ë
    íÍ:j'  ã                   óŠ  — d Z ddlZddlZddlZddlmZmZ ddlm	Z
 ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ  G d„ dej0                  «      Z G d„ dej0                  «      Z G d„ de«      Z G d„ dej6                  «      Z G d„ d«      Z ej:                  ed«      Z e eej>                  «      «      Z e Z!y)z/
An experimental support for curvilinear grid.
é    N)Ú_apiÚcbook)ÚPath)ÚBbox)Úhost_axes_class_factoryé   )Ú	axislinesÚgrid_helper_curvelinear)Ú
AxisArtist)ÚExtremeFinderSimplec                   ó   — e Zd Zy)ÚFloatingAxisArtistHelperN)Ú__name__Ú
__module__Ú__qualname__© ó    úz/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/mpl_toolkits/axisartist/floating_axes.pyr   r      s   „ àr   r   c                   ó2   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚFixedAxisArtistHelperc           	      ó  •—  |j                   j                  dgdz  Ž \  }}}}t        j                  t	        |df|df|df|df¬«      |¬«      \  }}	t
        ‰
| �  ||	||¬«       |€|	}|| _        || _        || _	        || _
        y)z}
        nth_coord = along which coordinate value varies.
         nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
        Né   r   r   ©ÚleftÚrightÚbottomÚtop)Úside©Úaxis_direction)Úgrid_finderÚextreme_finderr   Úgetitem_checkedÚdictÚsuperÚ__init__Únth_coord_ticksÚvalueÚgrid_helperÚ_side)Úselfr)   r   r'   Úlon1Úlon2Úlat1Úlat2r(   Ú	nth_coordÚ	__class__s             €r   r&   zFixedAxisArtistHelper.__init__   s¥   ø€ ð
 "H ×!8Ñ!8×!GÑ!GÈ$ÈÐRSÉÐ!TÑˆˆd�D˜$Ü×/Ñ/Ü�t˜Q�i¨¨a y¸$À¸ÈÈqÈ	ÔRØôÑˆˆyô 	‰Ñ˜ i°ÀtÐÔLØÐ"Ø'ˆOØ.ˆÔàˆŒ
Ø&ˆÔØˆ�
r   c                 óp   — | j                   j                  |«       | j                   j                  | _        y ©N)r)   Ú
update_limÚ
_grid_info)r+   Úaxess     r   r4   z FixedAxisArtistHelper.update_lim0   s)   € Ø×Ñ×#Ñ# DÔ)Ø×*Ñ*×5Ñ5ˆ�r   c                 óÊ  ‡‡‡‡‡‡‡‡‡— | j                   j                  Š| j                  d   \  }}}||z  }| j                  d   \  }}}||z  }	 | j                   j                  j                  dgdz  Ž }
t	        |
dd «      \  }}t	        |
dd «      \  }}ˆˆfd„}| j
                  dk(  rL||k  ||k  z  }t        j                  || j                  ||   ||f||f«      \  \  ŠŠŠŠ| j                  d   ŠnZ| j
                  d	k(  rK||	k  |	|k  z  }t        j                  ||	|   | j                  ||f||f«      \  \  ŠŠŠŠ| j                  d
   Št        ‰«      D ��cg c]
  \  }}|sŒ	|‘Œ c}}Š| j                  ‰«      ‰j                  z
  Št        j                  t        j                  j                   d«      Šˆˆˆˆˆˆˆfd„} |«       t#        g «      fS c c}}w )z9tick_loc, tick_angle, tick_label, (optionally) tick_labelÚlat_infoÚlon_infoNr   é   c                 óÂ   •— ‰j                  «       ‰j                  z   }|j                  t        j                  t        j
                  | |«      «      «      j                  S r3   )Úget_transformÚ	transDataÚ	transformÚnpÚcolumn_stackÚbroadcast_arraysÚT)ÚxÚyÚtrfr6   r!   s      €€r   Útrf_xyz8FixedAxisArtistHelper.get_tick_iterators.<locals>.trf_xyC   sE   ø€ Ø×+Ñ+Ó-°·±Ñ>ˆCØ—=‘=¤§¡´×1DÑ1DÀQÈÓ1JÓ!KÓL×NÑNÐNr   r   Ú
lat_labelsr   Ú
lon_labels)r   r   c               3   óÚ   •K  — t        ‰‰‰‰‰	«      D ]T  \  } }}}}‰
j                  | |f«      } ‰|d   «      sŒ( ‰|d   «      sŒ4| |ggt        j                  ||g«      ¢|‘­–— ŒV y ­w)Nr   r   )Úzipr>   r?   Úrad2deg)rC   rD   ÚnormalÚtangentÚlabÚc2Úangle_normalÚangle_tangentÚin_01ÚlabelsÚtick_to_axesÚxx1Úyy1s         €€€€€€€r   Úf1z4FixedAxisArtistHelper.get_tick_iterators.<locals>.f1Z   s~   øè ø€ ä˜3  \°=À&ÓIòFÑ*��1�f˜g sà!×+Ñ+¨Q°¨FÓ3�Ù˜˜A™•<¡E¨"¨Q©%¥LØ˜a˜&ÐE¤2§:¡:¨v°wÐ.?Ó#@ÐEÀ#ÑEÓEñ	Fùs   ƒ7A+»A+Á$A+)r)   r!   r5   r"   Úsortedr0   r
   Ú_value_and_jac_angler(   rJ   Úget_tick_transformÚ	transAxesÚ	functoolsÚpartialÚmplÚ
transformsÚ_interval_contains_closeÚiter)r+   r6   Úlat_levsÚlat_nÚ
lat_factorÚyy0Úlon_levsÚlon_nÚ
lon_factorÚxx0ÚextremesÚxminÚxmaxÚyminÚymaxrF   ÚmaskÚlÚmrW   rP   rQ   r!   rR   rS   rT   rU   rV   s    `                  @@@@@@@@r   Úget_tick_iteratorsz(FixedAxisArtistHelper.get_tick_iterators4   sï  ÿø€ ð ×&Ñ&×2Ñ2ˆà&*§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà&*§o¡o°jÑ&AÑ#ˆ�%˜Ø˜Ñ#ˆà>�4×#Ñ#×/Ñ/×>Ñ>ÀÀÈÁ
ÐKˆÜ˜H R a˜LÓ)‰
ˆˆdÜ˜H Q R˜LÓ)‰
ˆˆdõ	Oð �>‰>˜QÒØ˜C‘K C¨4¡KÑ0ˆDä'×<Ñ<Ø˜DŸJ™J¨¨D©	°D¸$°<À$ÈÀóOñ 4‰JˆS�#˜ mð —_‘_ \Ñ2‰Fà�^‰^˜qÒ Ø˜C‘K C¨4¡KÑ0ˆDä'×<Ñ<Ø˜C ™I t§z¡z°D¸$°<À$ÈÀóOñ 4‰JˆS�#˜ |ð —_‘_ \Ñ2ˆFä # F¨DÓ 1×7™˜˜1²Q’!Ó7ˆØ×.Ñ.¨tÓ4°t·~±~ÑEˆÜ×!Ñ!Ü�N‰N×3Ñ3°Vó=ˆ÷	Fò 	Fñ ‹t”T˜"“Xˆ~Ðùó 8s   Å#
GÅ.Gc                 ó˜   — | j                  |«       t        dddd¬«      | j                     \  }}t        | j                  |   |   «      S )N)Ú
lon_lines0r   )rt   r   )Ú
lat_lines0r   )ru   r   r   )r4   r$   r*   r   r5   )r+   r6   ÚkÚvs       r   Úget_linezFixedAxisArtistHelper.get_linec   sQ   € Ø�‰˜ÔÜÐ*Ø+Ø,Ø)ô+ð ,0¯:©:ñ7‰ˆˆ1ô �D—O‘O AÑ& qÑ)Ó*Ð*r   r3   )r   r   r   r&   r4   rr   rx   Ú__classcell__©r1   s   @r   r   r      s   ø„ õò$6ò-ö^+r   r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚExtremeFinderFixedc                 óL   — |\  }}}}t        j                  ||||«      | _        y)zÚ
        This subclass always returns the same bounding box.

        Parameters
        ----------
        extremes : (float, float, float, float)
            The bounding box that this helper always returns.
        N)r   Úfrom_extentsÚ_tbbox)r+   rj   Úx0Úx1Úy0Úy1s         r   r&   zExtremeFinderFixed.__init__o   s)   € ð "‰ˆˆB��BÜ×'Ñ'¨¨B°°BÓ7ˆ�r   c                 ó   — | j                   S r3   )r   )r+   ÚtransÚbboxs      r   Ú_find_transformed_bboxz)ExtremeFinderFixed._find_transformed_bbox{   s   € à�{‰{Ðr   N)r   r   r   r&   r‡   r   r   r   r|   r|   l   s   „ ò
8ór   r|   c                   ó@   ‡ — e Zd Z	 	 	 	 dˆ fd„	Z	 dd„Zd„ Zdd„Zˆ xZS )ÚGridHelperCurveLinearc                 óB   •— t         ‰| �  |t        |«      ||||¬«       y )N)r"   Úgrid_locator1Úgrid_locator2Útick_formatter1Útick_formatter2)r%   r&   r|   )r+   Ú	aux_transrj   r‹   rŒ   r�   rŽ   r1   s          €r   r&   zGridHelperCurveLinear.__init__‚   s-   ø€ ô 	‰Ñ˜Ü(:¸8Ó(DØ'4Ø'4Ø)8Ø)8ð 	õ 	:r   c                 óö   — |€| j                   }|€|}t        | ||¬«      }t        |||¬«      }|j                  j	                  d«       |j                  j                  |j                   j                  «       |S )N)r'   r   T)r6   r   r   ÚlineÚset_clip_onÚset_clip_boxr†   )r+   Úlocr0   r    Úoffsetr6   ÚhelperÚaxislines           r   Únew_fixed_axisz$GridHelperCurveLinear.new_fixed_axis�   so   € àˆ<Ø—9‘9ˆDØÐ!Ø ˆNô 'Ø�# yô2ˆä˜d F¸>ÔJˆà�‰×!Ñ! $Ô'Ø�‰×"Ñ" 8§=¡=×#5Ñ#5Ô6Øˆr   c                 ó&  — | j                   €t        «       | _         | j                   }| j                  }|j                  j	                  |j                  «       j                  «       |«      }|j                  \  }}}}||d<   |j                  ||«      \  }	}
}t        j                  |	«      }	|j                  ||«      \  }}}t        j                  |«      }|	|
|f|d<   |||f|d<   |j                  dd||	«      |d<   |j                  dd||«      |d<   |	d |
 |z  }|d | |z  }|j                  |||k  ||k  z     |||k  ||k  z     |«      \  }}||d	<   ||d
<   |j                  |j                  |j                  |«      \  }}||d<   ||d<   y )Nrj   r9   r8   r   r   rH   r:   rG   Ú	lon_linesÚ	lat_linesrt   ru   )r5   r$   r!   r"   r‡   r<   ÚinvertedÚextentsr‹   r?   ÚasarrayrŒ   Ú_format_ticksÚ_get_raw_grid_linesÚ	intervalxÚ	intervaly)r+   r†   Ú	grid_infor!   ÚtbboxÚlon_minÚlat_minÚlon_maxÚlat_maxrf   rg   rh   rb   rc   rd   Ú
lon_valuesÚ
lat_valuesrš   r›   s                      r   Ú_update_gridz"GridHelperCurveLinear._update_grid­   sÚ  € Ø�?‰?Ð"Ü"›fˆDŒOà—O‘Oˆ	à×&Ñ&ˆØ×*Ñ*×AÑAØ×%Ñ%Ó'×0Ñ0Ó2°Dó:ˆð .3¯]©]Ñ*ˆ�˜' 7Ø %ˆ	�*Ñà&1×&?Ñ&?ÀÈÓ&QÑ#ˆ�%˜Ü—:‘:˜hÓ'ˆØ&1×&?Ñ&?ÀÈÓ&QÑ#ˆ�%˜Ü—:‘:˜hÓ'ˆà (¨%°Ð ;ˆ	�*ÑØ (¨%°Ð ;ˆ	�*Ñà"-×";Ñ";Øˆx˜ Xó#/ˆ	�,Ñà"-×";Ñ";Øˆx˜ Xó#/ˆ	�,Ñð ˜f˜uÐ%¨
Ñ2ˆ
Ø˜f˜uÐ%¨
Ñ2ˆ
à*×>Ñ>Ø˜ *Ñ,°¸gÑ1EÑFÑGØ˜ *Ñ,°¸gÑ1EÑFÑGØó Ñˆ	�9ð
 "+ˆ	�+ÑØ!*ˆ	�+Ñà*×>Ñ>Ø�O‰O˜UŸ_™_¨eó 5Ñˆ	�9ð #,ˆ	�,ÑØ"+ˆ	�,Òr   c                 óò   — g }|dv r6|j                  t        t        j                  | j                  d   «      «       |dv r6|j                  t        t        j                  | j                  d   «      «       |S )N)ÚbothrC   rš   )r­   rD   r›   )ÚextendÚmapr?   Ú	transposer5   )r+   ÚwhichÚaxisÚ
grid_liness       r   Úget_gridlinesz#GridHelperCurveLinear.get_gridlinesØ   sa   € Øˆ
Ø�=Ñ Ø×Ñœc¤"§,¡,°·±ÀÑ0LÓMÔNØ�=Ñ Ø×Ñœc¤"§,¡,°·±ÀÑ0LÓMÔNØÐr   )NNNN)Úmajorr­   )r   r   r   r&   r˜   r«   r´   ry   rz   s   @r   r‰   r‰   €   s-   ø„ ð  $Ø#Ø!%Ø!%õ	:ð OSóò<),÷Vr   r‰   c                   ó4   ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚFloatingAxesBasec                ó€   •— t        j                  t        |¬«       t        ‰| �  |d|i|¤Ž | j                  d«       y )N)r)   r)   g      ð?)r   Úcheck_isinstancer‰   r%   r&   Ú
set_aspect)r+   r)   ÚargsÚkwargsr1   s       €r   r&   zFloatingAxesBase.__init__ã   s7   ø€ Ü×ÑÔ3ÀÕMÜ‰Ñ˜$ÐB¨KÐB¸6ÒBØ�‰˜Õr   c                 óÒ   —  | j                  «       j                  j                  d gdz  Ž \  }}}}t        j                  ||f||f||f||fg«      }d|j                  «       _        |S )Nr   éd   )Úget_grid_helperr!   r"   ÚmpatchesÚPolygonÚget_pathÚ_interpolation_steps)r+   r€   r�   r‚   rƒ   Úpatchs         r   Ú_gen_axes_patchz FloatingAxesBase._gen_axes_patchè   so   € àJ˜×-Ñ-Ó/×;Ñ;×JÑJÈTÈFÐUVÉJÐW‰ˆˆB��BÜ× Ñ  2 r (¨R°¨H°r¸2°hÀÀRÀÐ!IÓJˆØ03ˆ�‰ÓÔ-Øˆr   c                 óÞ  •— t         ‰| �  «        | j                  j                  | j	                  «       j
                  j                  «       | j                  z   «       t         ‰| �!  «       }|j                  | j                  d¬«      «       |j                  | j                  «       | j                  j                  |«       | j                  j                  |«       | j                  «        y )NF)Úroot)r%   ÚclearrÄ   Úset_transformr¿   r!   r<   r=   rÅ   Ú
set_figureÚ
get_figurer[   Úset_clip_pathÚ	gridlinesÚadjust_axes_lim)r+   Ú
orig_patchr1   s     €r   rÈ   zFloatingAxesBase.clearï   s¯   ø€ Ü‰‰ŒØ�
‰
× Ñ Ø× Ñ Ó"×.Ñ.×<Ñ<Ó>Ø�n‰nñô	ô
 ‘WÑ,Ó.ˆ
Ø×Ñ˜dŸo™o°5˜oÓ9Ô:Ø× Ñ  §¡Ô0Ø�
‰
× Ñ  Ô,Ø�‰×$Ñ$ ZÔ0Ø×ÑÕr   c                 ó\  — | j                   j                  «       j                  | j                   j                  «       | j                  z
  «      }|j                  dd«      }| j                  |j                  |j                  «       | j                  |j                  |j                  «       y )NgR¸…ëQð?)rÄ   rÂ   Úget_extentsr<   r=   ÚexpandedÚset_xlimrk   rl   Úset_ylimrm   rn   )r+   r†   s     r   rÎ   z FloatingAxesBase.adjust_axes_limý   sv   € Ø�z‰z×"Ñ"Ó$×0Ñ0à�J‰J×$Ñ$Ó&¨¯©Ñ7ó9ˆð �}‰}˜T 4Ó(ˆØ�‰�d—i‘i §¡Ô+Ø�‰�d—i‘i §¡Õ+r   )r   r   r   r&   rÅ   rÈ   rÎ   ry   rz   s   @r   r·   r·   á   s   ø„ ôò
ôö,r   r·   z
Floating{})"Ú__doc__r\   Únumpyr?   Ú
matplotlibr^   r   r   Úmatplotlib.patchesÚpatchesrÀ   Úmatplotlib.pathr   Úmatplotlib.transformsr   Ú%mpl_toolkits.axes_grid1.parasite_axesr   Ú r	   r
   Úaxis_artistr   r!   r   r   r   r|   r‰   r·   Ú_make_class_factoryÚfloatingaxes_class_factoryÚAxesÚFloatingAxesÚFloatingSubplotr   r   r   ú<module>rä      sµ   ðñó ã ã ß "Ý %Ý  Ý &Ý Iß 0Ý #Ý ,ô	Ø×8Ñ8ô	ô
M+Ð3×LÑLô M+ô`Ð,ô ô(^Ð3×IÑIô ^÷B",ñ ",ðJ 7˜U×6Ñ6Ð7GÈÓVÐ Ù)Ñ*AÀ)Ç.Á.Ó*QÓR€Ø�r   