
    (?ee                     R   d dl 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mZmZmZmZmZ  G d d	e
j        e          Z G d
 dee
j        e          Z G d de
j        e          Z G d de
j        e          Zej         G d de                      ZdS )    N)_apicbook)Gcf   )_macosx)FigureCanvasAgg)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2ResizeEvent	TimerBasec                       e Zd ZdZdS )TimerMacz6Subclass of `.TimerBase` using CFRunLoop timer events.N)__name__
__module____qualname____doc__     Blib/python3.11/site-packages/matplotlib/backends/backend_macosx.pyr   r      s        @@@@r   r   c                   v     e Zd ZdZeZ ej        d           Z fdZ	 fdZ
d Zd Zd Zd fd		Zd
 Z xZS )FigureCanvasMacmacosxc                     t           S N)FigureManagerMac)clss    r   <lambda>zFigureCanvasMac.<lambda>$   s    3C r   c                     t                                          |           d| _        d| _        t	                      | _        d S )N)figureF)super__init___draw_pending_is_drawingset_timers)selfr!   	__class__s     r   r#   zFigureCanvasMac.__init__&   s=    '''" uur   c                     | j         rdS t          j        | d          5  t                                                       ddd           n# 1 swxY w Y   |                                  dS )z/Render the figure and update the macosx canvas.NT)r%   )r%   r   _setattr_cmr"   drawupdate)r(   r)   s    r   r,   zFigureCanvasMac.draw-   s      	Ft666 	 	GGLLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !AAAc                     t          | dd          s4t          | dd          s%d| _        |                     | j                   d S d S d S )Nr$   Fr%   T)getattrr$   _single_shot_timer
_draw_idler(   s    r   	draw_idlezFigureCanvasMac.draw_idle7   sd    ou55 	5mU33	5!%D ##DO44444	5 	5 	5 	5r   c                       fd}                      d          }d|_        |                    |||            j                            |           |                                 dS )z/Add a single shot timer with the given callbackc                 x     |              j                             |           |                                 d S r   )r'   removestop)callbacktimerr(   s     r   callback_funcz9FigureCanvasMac._single_shot_timer.<locals>.callback_funcE   s5    HJJJL&&&JJLLLLLr   r   )intervalTN)	new_timersingle_shotadd_callbackr'   addstart)r(   r8   r:   r9   s   `   r   r0   z"FigureCanvasMac._single_shot_timer@   sx    
	 	 	 	 	 ** =(E:::r   c                     |                                  5  | j        s	 ddd           dS d| _        |                                  ddd           dS # 1 swxY w Y   dS )a	  
        Draw method for singleshot timer

        This draw method can be added to a singleshot timer, which can
        accumulate draws while the eventloop is spinning. This method will
        then only draw the first time and short-circuit the others.
        NF)_idle_draw_cntxr$   r,   r2   s    r   r1   zFigureCanvasMac._draw_idleO   s     !!## 	 	%  		 	 	 	 	 	 	 	
 "'DIIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	AAAANc                 r    t                                          |           |                                  d S r   )r"   blitr-   )r(   bboxr)   s     r   rD   zFigureCanvasMac.blit_   s*    Tr   c                     | j         j        | j        z  }||z  }||z  }| j                             ||d           t	          d|                                            |                                  d S )NF)forwardresize_event)r!   dpidevice_pixel_ratioset_size_inchesr   _processr3   )r(   widthheightscales       r   resizezFigureCanvasMac.resized   st    $"99%##E65#AAAND))22444r   r   )r   r   r   required_interactive_frameworkr   
_timer_clsr   classpropertymanager_classr#   r,   r3   r0   r1   rD   rP   __classcell__r)   s   @r   r   r      s         &."J&D&'C'CDDM        5 5 5          
      r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )NavigationToolbar2Macc           	      .   t          j        d          t          t          j         \  }}}}t
          j                            | |t          fd|D                       t          d |D                                  t          j        | |           d S )Nimagesc              3   F   K   | ]}|t          |z            dz   V  d S )Nz.pdf)str).0
image_name	data_paths     r   	<genexpr>z1NavigationToolbar2Mac.__init__.<locals>.<genexpr>u   sJ       K K :3I i*,--63I3I3I3IK Kr   c              3      K   | ]}||V  	d S r   r   )r]   tooltips     r   r`   z1NavigationToolbar2Mac.__init__.<locals>.<genexpr>w   s'      IIgW5H'5H5H5H5HIIr   )r   _get_data_pathzipr   	toolitemsr   r#   tuple)r(   canvas_tooltipsimage_namesr_   s        @r   r#   zNavigationToolbar2Mac.__init__p   s    (22	&)+=+G&H#8[!"++& K K K K$/K K K K KIIIIIII		K 	K 	K
 	#D&11111r   c                     | j                             t          |          t          |          t          |          t          |                     d S r   )rg   set_rubberbandint)r(   eventx0y0x1y1s         r   draw_rubberbandz%NavigationToolbar2Mac.draw_rubberbandz   s<    ""3r77CGGSWWc"ggFFFFFr   c                 8    | j                                          d S r   )rg   remove_rubberbandr2   s    r   ru   z'NavigationToolbar2Mac.remove_rubberband}   s    %%'''''r   c                    t           j                            t          j        d                   }t          j        d|| j                                                  }|d S t          j        d         r,t           j        	                    |          t          j        d<   | j        j
                            |           d S )Nzsavefig.directoryzSave the figure)ospath
expandusermplrcParamsr   choose_save_filerg   get_default_filenamedirnamer!   savefig)r(   args	directoryfilenames       r   save_figurez!NavigationToolbar2Mac.save_figure   s    G&&s|4G'HII	+,=,5,0K,L,L,N,NP P F<+, 	J020I0ICL,-""8,,,,,r   N)r   r   r   r#   rs   ru   r   r   r   r   rX   rX   n   sS        2 2 2G G G( ( (
- 
- 
- 
- 
-r   rX   c                   J     e Zd ZeZd Zd Z fdZed             Z	d Z
 xZS )r   c                 *   d| _         t          j                            | |           t	          t          j        d                    }t          j                            |           t          j        | ||           | 	                    t          j                            dd                     | j        | j                                         t          j                    r/|                                  | j                                         d S d S )NFzimages/matplotlib.pdfzmacosx.window_modesystem)_shownr   FigureManagerr#   r\   r   rc   set_iconr   _set_window_moderz   r{   gettoolbarr-   is_interactiveshowrg   r3   )r(   rg   num	icon_paths       r   r#   zFigureManagerMac.__init__   s    &&tV444,-DEEFF	&&y111"4555cl../CXNNOOO<#L!!! 	$IIKKKK!!#####	$ 	$r   c                 `    t          j        |            | j                                         d S r   )r   destroyrg   flush_eventsr2   s    r   _close_button_pressedz&FigureManagerMac._close_button_pressed   s,    D  """""r   c                     | j         j        r>| j         j                                        }|                                 | j         j        >t	                                                       d S r   )rg   r'   popr7   r"   r   )r(   r9   r)   s     r   r   zFigureManagerMac.destroy   s`     k! 	K'++--EJJLLL k! 	 	r   c                    t          j        t           j                  }|d t           j        t           j        fv rt          j                     d S d t          j                    \  }}|	                    d           |	                    d           t          j
        |                                          }t          j        |                                           fd}t          j         t           j        |           	 t          j                     |                                 |                                 t          j
        |           t          j         t           j        |            |  d S d S # |                                 |                                 t          j
        |           t          j         t           j        |            |  w w xY w)NFc                  2    | t          j                     d S r   )r   r7   )r   handler_argss    r   handlez0FigureManagerMac.start_main_loop.<locals>.handle   s    LLNNNNNr   )signal	getsignalSIGINTSIG_IGNSIG_DFLr   r   socket
socketpairsetblockingset_wakeup_fdfilenowake_on_fd_writeclose)r   old_sigint_handlerwsockrsockold_wakeup_fdr   r   s         @r   start_main_loopz FigureManagerMac.start_main_loop   s    $-fm<<$!GGGLNNNF(**u%   %   ,U\\^^<< 000	 	 	 	 	
 	fmV,,,	2LNNNKKMMMKKMMM ///M&-);<<<'""L1111 ('	 KKMMMKKMMM ///M&-);<<<'""L111 (s   E< <A%G!c                     | j         s|                                  d| _         t          j        d         r|                                  d S d S )NTzfigure.raise_window)r   _showrz   r{   _raiser2   s    r   r   zFigureManagerMac.show   sK    { 	JJLLLDK<-. 	KKMMMMM	 	r   )r   r   r   rX   _toolbar2_classr#   r   r   classmethodr   r   rU   rV   s   @r   r   r      s        +O$ $ $# # #     2 2 [2B      r   r   c                   $    e Zd ZeZeZej        ZdS )_BackendMacN)	r   r   r   r   FigureCanvasr   r   r   mainloopr   r   r   r   r      s         "L$M/HHHr   r   )rw   r   r   
matplotlibrz   r   r   matplotlib._pylab_helpersr    r   backend_aggr   matplotlib.backend_basesr	   r
   r   r   r   r   Timerr   r   r   rX   r   r   exportr   r   r   r   <module>r      s   				       " " " " " " " " ) ) ) ) ) )       ( ( ( ( ( (               
A A A A Aw}i A A A
W W W W Wow';=M W W Wt- - - - -G68J - - ->C C C C Cw,.? C C CL 
0 0 0 0 0( 0 0 0 0 0r   