B
    ]”t\¥  ã               @   s   d Z ddl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mZ dd	lmZ G d
d„ deeƒZejG dd„ deƒƒZdS )z
Render to qt from agg
é    N)ÚBboxé   )Úcbooké   )ÚFigureCanvasAgg)ÚQtCoreÚQtGuiÚ	QtWidgetsÚ_BackendQT5ÚFigureCanvasQTÚFigureManagerQTÚNavigationToolbar2QTÚbackend_version)ÚQT_APIc                   s:   e Zd Z‡ fdd„Zdd„ Zd
dd„Z‡ fdd	„Z‡  ZS )ÚFigureCanvasQTAggc                s   t ƒ j|d d S )N)Úfigure)ÚsuperÚ__init__)Úselfr   )Ú	__class__© úAlib/python3.7/site-packages/matplotlib/backends/backend_qt5agg.pyr      s    zFigureCanvasQTAgg.__init__c             C   sD  |   ¡ rdS |  ¡  t| dƒs"dS t | ¡}| jrF| |  ¡ ¡ d| _| ¡ }| ¡ }| 	¡ }| 
¡ }| ¡ }t|| jj||| j   g||| j  | jj| ggƒ}|  |¡}	t t|	ƒ¡}
t |
|
jd |
jd tjj¡}t|dƒrô| | j¡ t ||¡}| || j |¡ tdkr.dtj t|
ƒ¡_|   |¡ | !¡  dS )z¢Copy the image from the Agg canvas to the qt.drawable.

        In Qt, all drawing should be done inside of here when a widget is
        shown onscreen.
        NÚrendererFr   r   ÚsetDevicePixelRatio)ZPySideZPySide2)"Z_update_dpiZ
_draw_idleÚhasattrr   ZQPainterZ_erase_before_paintZ	eraseRectÚrectÚleftÚtopÚwidthÚheightr   r   Ú
_dpi_ratioZcopy_from_bboxr   Z._unmultiplied_rgba8888_to_premultiplied_argb32Ú
memoryviewZQImageÚshapeZFormat_ARGB32_Premultipliedr   r   ZQPointZ	drawImager   ÚctypesZc_longZfrom_addressÚidÚvalueZ_draw_rect_callbackÚend)r   ZeventZpainterr   r   r   r   r   ÚbboxZregZbufZqimageÚoriginr   r   r   Ú
paintEvent   s<    







zFigureCanvasQTAgg.paintEventNc                s\   |dkrˆ j rˆ j j}‡ fdd„|jD ƒ\}}}}|| }ˆ  |ˆ jjˆ j | ||¡ dS )z!Blit the region in bbox.
        Nc                s   g | ]}|ˆ j  ‘qS r   )r    )Ú.0Zpt)r   r   r   ú
<listcomp>S   s    z*FigureCanvasQTAgg.blit.<locals>.<listcomp>)r   r'   ZboundsZrepaintr   r   r    )r   r'   ÚlÚbÚwÚhÚtr   )r   r   ÚblitJ   s
    zFigureCanvasQTAgg.blitc                s   t ƒ j||Ž |  ¡  d S )N)r   Úprint_figureZdraw)r   ÚargsÚkwargs)r   r   r   r2   W   s    zFigureCanvasQTAgg.print_figure)N)Ú__name__Ú
__module__Ú__qualname__r   r)   r1   r2   Ú__classcell__r   r   )r   r   r      s   3
r   c               @   s   e Zd ZeZdS )Ú_BackendQT5AggN)r5   r6   r7   r   ZFigureCanvasr   r   r   r   r9   \   s   r9   )Ú__doc__r#   Zmatplotlib.transformsr   Ú r   Zbackend_aggr   Zbackend_qt5r   r   r	   r
   r   r   r   r   Z	qt_compatr   r   Zexportr9   r   r   r   r   Ú<module>   s   (K