U
    \	a
                  
   @   s   d dl ZddlmZ zddlmZ W n, ek
rP Z zedeW 5 dZ[X Y nX 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   G/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/backends/backend_gtk3agg.pyr      s    zFigureCanvasGTK3Agg.__init__c                 C   s  |   }|j|j }}t| jsZt|  ||j|j	|j|j t
ddg||ggg}n| j}t|}|D ]}t|j}|t|j }	t|jt|j }
t|jt|j }tt| |}tj| jtj|
|}||||	 |  qnt| jrg | _dS )z5GtkDrawable draw event, like expose_event in GTK 2.X.r   F) get_allocationwidthheightlenr   r	   Zrender_backgroundZget_style_contextxyr   ZBboxr   Z_to_contextintx0y1x1y0r   Z._unmultiplied_rgba8888_to_premultiplied_argb32npZasarrayZcopy_from_bboxr   ZImageSurfaceZcreate_for_dataZraveldataZFORMAT_ARGB32Zset_source_surfaceZpaint)r   Zwidgetctx
allocationwhZ
bbox_queuebboxr   r   r   r   bufimager   r   r   on_draw_event   sB    
   

   
z!FigureCanvasGTK3Agg.on_draw_eventNc                 C   sz   |d kr| j j}|  }t|j}|jt|j }t|jt|j }t|jt|j }| j	
| | |||| d S r   )r   r&   r   r   r   r   r   r   r   r   appendZqueue_draw_area)r   r&   r#   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|f||S r   )Zswitch_backendsr   r,   	print_png)r   filenameargskwargsZaggr   r   r   r1   I   s    zFigureCanvasGTK3Agg.print_png)N)	__name__
__module____qualname__r   r)   r+   r-   r1   __classcell__r   r   r/   r   r      s
   "
r   c                   @   s   e Zd ZdS )FigureManagerGTK3AggN)r5   r6   r7   r   r   r   r   r9   O   s   r9   c                   @   s   e Zd ZeZeZdS )_BackendGTK3CairoN)r5   r6   r7   r   ZFigureCanvasr9   ZFigureManagerr   r   r   r   r:   S   s   r:   )Znumpyr     r   r   ImportErrorer   r   r   r	   r
   Z
matplotlibr   r   r,   r   ZFigureManagerGTK3r9   exportr:   r   r   r   r   <module>   s   A