B
    ]t\/                 @   s   d dl Z d dlZddlmZ ddlmZmZmZ ddl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_aggbackend_cairobackend_gtk3)gi)cairo)Gtk_BackendGTK3)
transformsc               @   s>   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd Zd	S )FigureCanvasGTK3Aggc             C   s   t j| | g | _d S )N)r   FigureCanvasGTK3__init___bbox_queue)selffigure r   Blib/python3.7/site-packages/matplotlib/backends/backend_gtk3agg.pyr      s    zFigureCanvasGTK3Agg.__init__c             C   s   d S )Nr   )r   r   r   r   _renderer_init   s    z"FigureCanvasGTK3Agg._renderer_initc             C   s   t j|  d S )N)r   FigureCanvasAggZdraw)r   widthheightr   r   r   _render_figure   s    z"FigureCanvasGTK3Agg._render_figurec             C   s   |   }|j|j }}t| jsf| || t|  ||j	|j
|j|j tddg||ggg}n| j}t|}x|D ]}t|j}|t|j }	t|jt|j }
t|jt|j }tt| |}tj| jtj|
|}||||	 |   q|W t| jrg | _dS )z>GtkDrawable draw event, like expose_event in GTK 2.X.
        r   F)!get_allocationr   r   lenr   r   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widgetZctx
allocationwhZ
bbox_queuebboxr   r   r   r   ZbufZimager   r   r   on_draw_event   s2    



z!FigureCanvasGTK3Agg.on_draw_eventNc       	      C   s   |d kr| j j}|  }|j|j }}t|j}|t|j }t|jt|j }t|jt|j	 }| j
| | |||| d S )N)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   r   r   blit=   s    
zFigureCanvasGTK3Agg.blitc             O   s   |  tj}|j|f||S )N)Zswitch_backendsr   r   	print_png)r   filenameargskwargsZaggr   r   r   r,   M   s    zFigureCanvasGTK3Agg.print_png)N)	__name__
__module____qualname__r   r   r   r)   r+   r,   r   r   r   r   r      s   $
r   c               @   s   e Zd ZdS )FigureManagerGTK3AggN)r0   r1   r2   r   r   r   r   r3   S   s   r3   c               @   s   e Zd ZeZeZdS )_BackendGTK3CairoN)r0   r1   r2   r   ZFigureCanvasr3   ZFigureManagerr   r   r   r   r4   W   s   r4   )sysZnumpyr#    r   r   r   r   Z_gtk3_compatr   r	   r
   r   Z
matplotlibr   r   r   r   ZFigureManagerGTK3r3   Zexportr4   r   r   r   r   <module>   s   E