§
    ‡ÛgW  ã                   óL   — d dl Zd dlmZ ddlmZ d dlmZ  G d„ d¦  «        ZdS )é    N)Úcbooké   )ÚRendererAgg)Úprocess_figure_for_rasterizingc                   ó0   — e Zd ZdZ	 	 dd„Zd„ Zd„ Zd„ ZdS )ÚMixedModeRenderera&  
    A helper class to implement a renderer that switches between
    vector and raster drawing.  An example may be a PDF writer, where
    most things are drawn with PDF vector commands, but some very
    complex objects, such as quad meshes, are rasterised and then
    output as images.
    Nc                 ó®   — |€t           }|| _        || _        || _        || _        || _        d| _        || _        |j        | _        || _	        || _
        dS )a%  
        Parameters
        ----------
        figure : `matplotlib.figure.Figure`
            The figure instance.
        width : scalar
            The width of the canvas in logical units
        height : scalar
            The height of the canvas in logical units
        dpi : float
            The dpi of the canvas
        vector_renderer : `matplotlib.backend_bases.RendererBase`
            An instance of a subclass of
            `~matplotlib.backend_bases.RendererBase` that will be used for the
            vector drawing.
        raster_renderer_class : `matplotlib.backend_bases.RendererBase`
            The renderer class to use for the raster drawing.  If not provided,
            this will use the Agg backend (which is currently the only viable
            option anyway.)

        N)r   Ú_raster_renderer_classÚ_widthÚ_heightÚdpiÚ_vector_rendererÚ_raster_rendererÚfigureÚ_figdpiÚ_bbox_inches_restoreÚ	_renderer)Úselfr   ÚwidthÚheightr   Úvector_rendererÚraster_renderer_classÚbbox_inches_restores           úW/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/backends/backend_mixed.pyÚ__init__zMixedModeRenderer.__init__   sb   € ð0 !Ð(Ý$/Ð!à&;ˆÔ#ØˆŒØˆŒØˆŒà /ˆÔà $ˆÔð
 ˆŒØ”zˆŒà$7ˆÔ!à(ˆŒˆˆó    c                 ó,   — t          | j        |¦  «        S )N)Úgetattrr   )r   Úattrs     r   Ú__getattr__zMixedModeRenderer.__getattr__>   s   € õ �t”~ tÑ,Ô,Ð,r   c                 ó  — | j         | j        _         | j        r!t          | j        | j        ¦  «        }|| _        |                      | j        | j         z  | j        | j         z  | j         ¦  «        | _        | j        | _        dS )z›
        Enter "raster" mode.  All subsequent drawing commands (until
        `stop_rasterizing` is called) will be drawn with the raster backend.
        N)	r   r   r   r   r
   r   r   r   r   )r   Úrs     r   Ústart_rasterizingz#MixedModeRenderer.start_rasterizingG   s€   € ð œ(ˆŒŒØÔ$ð 	*Ý.¨t¬{Ø/3Ô/HñJô JˆAà()ˆDÔ%à $× ;Ò ;ØŒK˜œÑ  $¤,¨t¬xÑ"7¸¼ñ!Cô !CˆÔàÔ.ˆŒˆˆr   c           	      óV  — | j         | _        | j        | j        z  }t	          j        | j                             ¦   «         ¦  «        }t          j	        |d         ¦  «        \  }}|||f         }|j
        rl| j                             ¦   «         }| j                             ||j        | j        z  | j        z  ||j        z
  | j        z  | j        z  |ddd…         ¦  «         d| _        | j        | j        _        | j        r)t%          | j        | j        | j        ¦  «        }|| _        dS dS )z»
        Exit "raster" mode.  All of the drawing that was done since
        the last `start_rasterizing` call will be copied to the
        vector backend by calling draw_image.
        ).é   Néÿÿÿÿ)r   r   r   r   ÚnpÚasarrayr   Úbuffer_rgbar   Ú_get_nonzero_slicesÚsizeÚnew_gcÚ
draw_imageÚstartr   Ústopr   r   r   )r   r   ÚimgÚslice_yÚslice_xÚcropped_imgÚgcr"   s           r   Ústop_rasterizingz"MixedModeRenderer.stop_rasterizingW   s2  € ð Ô.ˆŒà” ¤Ñ(ˆÝŒj˜Ô.×:Ò:Ñ<Ô<Ñ=Ô=ˆÝ Ô4°S¸´[ÑAÔAÑˆ�Ø˜' 7Ð*Ô+ˆØÔð 		#Ø”×&Ò&Ñ(Ô(ˆBð ŒN×%Ò%ØØ” ¤Ñ,¨t¬xÑ7Ø˜'œ,Ñ&¨$¬,Ñ6¸¼ÑAØ˜D˜D˜b˜DÔ!ñ	#ô #ð #ð
 !%ˆÔð œ,ˆŒŒàÔ$ð 	*Ý.¨t¬{Ø/3Ô/HØ/3¬|ñ=ô =ˆAð )*ˆDÔ%Ð%Ð%ð		*ð 	*r   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r#   r5   © r   r   r   r      sh   € € € € € ðð ð (,Ø%)ð,)ð ,)ð ,)ð ,)ð\-ð -ð -ð/ð /ð /ð  *ð  *ð  *ð  *ð  *r   r   )	Únumpyr'   Ú
matplotlibr   Úbackend_aggr   Úmatplotlib._tight_bboxr   r   r:   r   r   ú<module>r?      sƒ   ðØ Ð Ð Ð à Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø AÐ AÐ AÐ AÐ AÐ Aðo*ð o*ð o*ð o*ð o*ñ o*ô o*ð o*ð o*ð o*r   