rL iXDddlZddlmZddlmZddlmZGddZy)N)cbook) RendererAgg)process_figure_for_rasterizingc.eZdZdZ ddZdZdZdZy)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|_||_ ||_ y)a& Parameters ---------- figure : `~matplotlib.figure.Figure` The figure instance. width : float The width of the canvas in logical units height : float 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_heightdpi_vector_renderer_raster_rendererfigure_figdpi_bbox_inches_restore _renderer)selfrwidthheightr vector_rendererraster_renderer_classbbox_inches_restores g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/backends/backend_mixed.py__init__zMixedModeRenderer.__init__s`0 ! ($/ !&;#   / $  zz $7!(c.t|j|S)N)getattrr)rattrs r __getattr__zMixedModeRenderer.__getattr__>st~~t,,rcb|j|j_|jr't|j|j}||_|j |j |jz|j |jz|j|_|j|_y)z Enter "raster" mode. All subsequent drawing commands (until `stop_rasterizing` is called) will be drawn with the raster backend. N) r rrrr r r rr)rrs rstart_rasterizingz#MixedModeRenderer.start_rasterizingGs ((   $ $.t{{/3/H/HJA()D % $ ; ; KK $,,txx"7!C..rc |j|_|j|jz}t j |j j}tj|d\}}|||f}|jr|jj}|jj||j|jz|jz ||jz |jz|jz |dddd|_|j|j _|j"r3t%|j |j"|j}||_yy)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)rrr r npasarrayr buffer_rgbar_get_nonzero_slicessizenew_gc draw_imagestartrstoprrr)rrimgslice_yslice_x cropped_imggcr"s rstop_rasterizingz"MixedModeRenderer.stop_rasterizingWs0..(jj..::<= 44S[A'7*+   &&(B NN % %  ,txx7',,&$,,6ADbD!  # !%,,   $ $.t{{/3/H/H/3||=A)*D % %r)NN)__name__ __module__ __qualname____doc__rr r#r5rrrrs$(,%),)\-/ *rr) numpyr' matplotlibr backend_aggrmatplotlib._tight_bboxrrr:rrr?s$Ao*o*r