o
    ¹iô
  ã                
   @   sÂ   d dl ZddlmZ zddlmZ W n ey# Z zedƒe‚dZ[ww ddlmZmZ ddlm	Z	 dd	lm
Z
mZ d d
lmZ G dd„ dejejƒZG dd„ dejƒZejG dd„ deƒƒZdS )é    Né   )Úcbooké   )Úbackend_cairozbackend Gtk3Agg requires cairo)Úbackend_aggÚbackend_gtk3)Úcairo)ÚGtkÚ_BackendGTK3)Ú
transformsc                       s>   e Zd Zdd„ Zdd„ Zddd„Z‡ fdd	„Zd
d„ Z‡  ZS )ÚFigureCanvasGTK3Aggc                 C   s   t j | |¡ g | _d S ©N)r   ÚFigureCanvasGTK3Ú__init__Ú_bbox_queue)ÚselfÚfigure© r   ú^/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/backends/backend_gtk3agg.pyr      s   
zFigureCanvasGTK3Agg.__init__c                 C   s  |   ¡ }|j|j}}t| jƒs-t |  ¡ ||j|j	|j|j¡ t
 ddg||gg¡g}n| j}t |¡}|D ]E}t|jƒ}|t|jƒ }	t|jƒt|jƒ }
t|jƒt|jƒ }t t |  |¡¡¡}tj | ¡ jtj|
|¡}| |||	¡ | ¡  q7t| jƒr…g | _dS )z5GtkDrawable draw event, like expose_event in GTK 2.X.r   F) Úget_allocationÚwidthÚheightÚlenr   r	   Úrender_backgroundÚget_style_contextÚxÚyr   ÚBboxr   Ú_to_contextÚintÚx0Úy1Úx1Úy0r   Ú._unmultiplied_rgba8888_to_premultiplied_argb32ÚnpÚasarrayÚcopy_from_bboxr   ÚImageSurfaceÚcreate_for_dataÚravelÚdataÚFORMAT_ARGB32Úset_source_surfaceÚpaint)r   ÚwidgetÚctxÚ
allocationÚwÚhÚ
bbox_queueÚbboxr   r   r   r   ÚbufÚimager   r   r   Úon_draw_event   s6   
ý

ÿÿ

z!FigureCanvasGTK3Agg.on_draw_eventNc                 C   sz   |d u r| j j}|  ¡ }t|jƒ}|jt|jƒ }t|jƒt|jƒ }t|jƒt|jƒ }| j	 
|¡ |  ||||¡ d S r   )r   r5   r   r   r    r   r!   r"   r#   r   ÚappendÚqueue_draw_area)r   r5   r1   r   r   r   r   r   r   r   Úblit6   s   
zFigureCanvasGTK3Agg.blitc                    s   t j | ¡ tƒ  ¡  d S r   )r   ÚFigureCanvasAggÚdrawÚsuper)r   ©Ú	__class__r   r   r=   E   s   zFigureCanvasGTK3Agg.drawc                 O   s$   |   tj¡}|j|g|¢R i |¤ŽS r   )Úswitch_backendsr   r<   Ú	print_png)r   ÚfilenameÚargsÚkwargsÚaggr   r   r   rB   I   s   zFigureCanvasGTK3Agg.print_pngr   )	Ú__name__Ú
__module__Ú__qualname__r   r8   r;   r=   rB   Ú__classcell__r   r   r?   r   r      s    
"r   c                   @   s   e Zd ZdS )ÚFigureManagerGTK3AggN)rG   rH   rI   r   r   r   r   rK   O   s    rK   c                   @   s   e Zd ZeZeZdS )Ú_BackendGTK3CairoN)rG   rH   rI   r   ÚFigureCanvasrK   ÚFigureManagerr   r   r   r   rL   S   s    rL   )Únumpyr%   Ú r   r   ÚImportErrorÚer   r   r   r	   r
   Ú
matplotlibr   r   r<   r   ÚFigureManagerGTK3rK   ÚexportrL   r   r   r   r   Ú<module>   s$    
€ÿÿA