o
    j                     @   s   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mZ G dd	 d	ejeZd
d ZG dd de
ejeZG dd dejeZG dd dejeZejG dd deZdS )    N)_apicbook)Gcf   )_macosx)FigureCanvasAgg)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2ResizeEvent	TimerBase_allow_interruptc                   @   s   e Zd ZdZdS )TimerMacz6Subclass of `.TimerBase` using CFRunLoop timer events.N)__name__
__module____qualname____doc__ r   r   c/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/backends/backend_macosx.pyr      s    r   c                   C   s   t dd tjS )zEA context manager that allows terminating a plot by sending a SIGINT.c                 S   s   t |  S N)r   Zwake_on_fd_writefileno)Zrsockr   r   r   <lambda>   s    z(_allow_interrupt_macos.<locals>.<lambda>)r   r   stopr   r   r   r   _allow_interrupt_macos   s   
r   c                       sv   e Zd ZdZeZedd Z fddZ	 fddZ
dd	 Zd
d Zdd Zd fdd	Zdd ZdddZ  ZS )FigureCanvasMacmacosxc                 C   s   t S r   )FigureManagerMacclsr   r   r   r   (   s    zFigureCanvasMac.<lambda>c                    s&   t  j|d d| _d| _t | _d S )N)figureF)super__init___draw_pending_is_drawingset_timers)selfr    	__class__r   r   r"   *   s   zFigureCanvasMac.__init__c                    sN   | j rdS tj| dd t   W d   n1 sw   Y  |   dS )z/Render the figure and update the macosx canvas.NT)r$   )r$   r   Z_setattr_cmr!   drawupdater'   r(   r   r   r*   1   s   zFigureCanvasMac.drawc                 C   s6   t | ddst | ddsd| _| | j d S d S d S )Nr#   Fr$   T)getattrr#   _single_shot_timer
_draw_idler,   r   r   r   	draw_idle;   s   
zFigureCanvasMac.draw_idlec                    sD    fdd} j dd}d|_||||  j| |  dS )z/Add a single shot timer with the given callbackc                    s   |    j | d S r   )r&   remove)callbacktimerr,   r   r   callback_funcF   s   z9FigureCanvasMac._single_shot_timer.<locals>.callback_funcr   )intervalTN)Z	new_timerZsingle_shotZadd_callbackr&   addstart)r'   r2   r4   r3   r   r,   r   r.   D   s   z"FigureCanvasMac._single_shot_timerc                 C   sT   |    | js	 W d   dS d| _|   W d   dS 1 s#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)Z_idle_draw_cntxr#   r*   r,   r   r   r   r/   O   s   

"zFigureCanvasMac._draw_idleNc                    s   t  | |   d S r   )r!   blitr+   )r'   Zbboxr(   r   r   r8   _   s   zFigureCanvasMac.blitc                 C   sJ   | j j| j }|| }|| }| j j||dd td|   |   d S )NF)forwardZresize_event)r    ZdpiZdevice_pixel_ratioZset_size_inchesr   Z_processr0   )r'   widthheightscaler   r   r   resized   s   zFigureCanvasMac.resizer   c                 C   s8   t   | j|d W d    d S 1 sw   Y  d S )N)timeout)r   Z_start_event_loop)r'   r>   r   r   r   start_event_loopm   s   "z FigureCanvasMac.start_event_loopr   )r   )r   r   r   Zrequired_interactive_frameworkr   Z
_timer_clsr   ZclasspropertyZmanager_classr"   r*   r0   r.   r/   r8   r=   r?   __classcell__r   r   r(   r   r      s    
		r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
NavigationToolbar2Macc                    s^   t d ttj \}}}}tj| |t fdd|D tdd |D  t| | d S )NZimagesc                 3   s(    | ]}|d urt  | d V  qd S )Nz.pdf)str).0Z
image_nameZ	data_pathr   r   	<genexpr>{   s    
z1NavigationToolbar2Mac.__init__.<locals>.<genexpr>c                 s   s    | ]	}|d ur|V  qd S r   r   )rC   Ztooltipr   r   r   rE   }   s    )r   _get_data_pathzipr   Z	toolitemsr   r"   tuple)r'   canvas_ZtooltipsZimage_namesr   rD   r   r"   v   s   
zNavigationToolbar2Mac.__init__c                 C   s&   | j t|t|t|t| d S r   )rI   Zset_rubberbandint)r'   eventZx0Zy0x1y1r   r   r   draw_rubberband   s   &z%NavigationToolbar2Mac.draw_rubberbandc                 C   s   | j   d S r   )rI   remove_rubberbandr,   r   r   r   rP      s   z'NavigationToolbar2Mac.remove_rubberbandc                 G   s`   t jtjd }td|| j }|d u rd S tjd r't j	|tjd< | jj
| |S )Nzsavefig.directoryzSave the figure)ospath
expandusermplrcParamsr   Zchoose_save_filerI   Zget_default_filenamedirnamer    Zsavefig)r'   args	directoryfilenamer   r   r   save_figure   s   
z!NavigationToolbar2Mac.save_figureN)r   r   r   r"   rO   rP   rZ   r   r   r   r   rA   t   s
    
rA   c                       sD   e Zd ZeZdd Zdd Z fddZedd Z	d	d
 Z
  ZS )r   c                 C   s   d| _ tj| | ttd}tj| t| || | 	t
jd  | jd ur0| j  t
 r?|   | j  d S d S )NFzimages/matplotlib.pdfzmacosx.window_mode)_shownr   FigureManagerr"   rB   r   rF   Zset_iconr
   Z_set_window_moderT   rU   Ztoolbarr+   is_interactiveshowrI   r0   )r'   rI   numZ	icon_pathr   r   r   r"      s   

zFigureManagerMac.__init__c                 C   s   t |  | j  d S r   )r   destroyrI   Zflush_eventsr,   r   r   r   _close_button_pressed   s   
z&FigureManagerMac._close_button_pressedc                    s2   | j jr| j j }|  | j jst   d S r   )rI   r&   popr   r!   r`   )r'   r3   r(   r   r   r`      s
   zFigureManagerMac.destroyc                 C   s4   t   t  W d    d S 1 sw   Y  d S r   )r   r   r^   r   r   r   r   start_main_loop   s   
"z FigureManagerMac.start_main_loopc                 C   sB   | j jjr
| j   | js|   d| _tjd r|   d S d S )NTzfigure.raise_window)	rI   r    staler0   r[   Z_showrT   rU   _raiser,   r   r   r   r^      s   


zFigureManagerMac.show)r   r   r   rA   Z_toolbar2_classr"   ra   r`   classmethodrc   r^   r@   r   r   r(   r   r      s    
r   c                   @   s   e Zd ZeZeZejZdS )_BackendMacN)	r   r   r   r   FigureCanvasr   r\   rc   Zmainloopr   r   r   r   rg      s    
rg   )rQ   Z
matplotlibrT   r   r   Zmatplotlib._pylab_helpersr    r   Zbackend_aggr   Zmatplotlib.backend_basesr   r	   r
   r   r   r   r   Timerr   r   rh   r   rA   r\   r   Zexportrg   r   r   r   r   <module>   s    $\ ,