rL iHdZddlZddlZddlZddlZ ddlZejdkredejd ddl m Z m Z mZdd lmZmZmZmZmZdd lmZdd lmZdd lmZd ZddZdZGddeZGddeZGddZ GddeZ!ejDGddeZ#y#e$r ddl Zn#e$rZ ede dZ [ wwxYwYwxYw)z A Cairo backend for Matplotlib ============================== :Author: Steve Chaplin and others This backend depends on cairocffi or pycairo. N)rz/Cairo backend requires cairo>=1.14.0, but only z is availablezEcairo backend requires that pycairo>=1.14.0 or cairocffi is installed)_apicbook font_manager)_BackendFigureCanvasBaseFigureManagerBaseGraphicsContextBase RendererBase)ttfFontProperty)Path)Affine2Dcrt|dk(s|r|jg|dd|y|j|yN)lenset_source_rgba)ctxcoloralpha forced_alphas g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/backends/backend_cairo.py _set_rgbar%s= 5zQ,.U2AY..U#c8|j|d|D]\}}|tjk(r|j|*|tjk(r|j N|tj k(r|j|q|tjk(r\tj|j}|dd}|dd}|jg|dz |dzdz z|dzdz |dz z||tjk(s|j|y)NT) remove_nanscliprr) iter_segmentsrMOVETOmove_to CLOSEPOLY close_pathLINETOline_toCURVE3npasarrayget_current_pointcurve_toCURVE4) rpath transformrpointscodecurabs r _append_pathr5,s** 4d+4"  4;;  CKK T^^ # NN  T[[ CKK T[[ **S2245Cr Ars A CLL J37QUQY. J1q519q1u3D J J T[[ CLL& !"rc fd}|d}ttd|dj}|d}tjj ||dkrtj ntj}|||fS)z{ Convert a `.FontProperties` or a `.FontEntry` to arguments that can be passed to `.Context.select_font_face`. cd td|S#t$rt|cYSwxYw)Nget_)getattrAttributeError)fieldprops rattrz-_cairo_font_args_from_font_prop..attrCs< (0744w02 2 (4' ' (s //name FONT_SLANT_styleweighti&)r9cairoupperr weight_dictgetFONT_WEIGHT_NORMALFONT_WEIGHT_BOLD)r<r=r>slantrAs` r_cairo_font_args_from_font_proprI>s ( (?@ AE (^F))--ff=C&&))   rcveZdZfdZdZedZd dZ d dZdZ ddZ dZ d Z fd Z d Zd ZxZS) RendererCairoc||_t||_d|_d|_t j t jt jdd|_ t|-y)N)rendererr) dpiGraphicsContextCairogcwidthheightrBContext ImageSurface FORMAT_ARGB32text_ctxsuper__init__)selfrN __class__s rrXzRendererCairo.__init__SsW&5     e111a 8:  rc|j}t|dr-t|dr!|j|jf}nt|dr)|j }|j |j f}nT|j|j|j^}}|r td|^}}}|j||j_ |\|_|_y)N get_width get_height get_extentszCannot infer surface size) get_targethasattrr\r]r^rQrRsave reset_clipcopy_clip_rectangle_list TypeErrorrestorerPr)rYrsurfacesizeextrectrest_s r set_contextzRendererCairo.set_context\s.." 7K (WWl-K$$&(:(:(<|jt|||||j|j|j yN)rar fill_preserverestroke)rfill_cralpha_overridess r_fill_and_strokezRendererCairo._fill_and_strokens=   HHJ c65/ :     KKM rc|j}| |j|jnd}|tj ddj d|j z}|jt|||||Z|jt|||j|j|j|j|j}|rt!|j"}|j%j't(j*j,||} t)j.| } t| |tj || j d|d| j1|j3|j5| j6|j9| j| j;t)j<| } | j?t(j@jB|j|jE| |j|j|j;yNrr)#r get_hatch clip_extentsrscale translaterRnew_pathr5rar get_alphaget_forced_alpharoreget_hatch_pathintrNr_create_similarrBContent COLOR_ALPHArSset_line_widthpoints_to_pixelsget_hatch_linewidthrget_hatch_colorrpSurfacePattern set_extendExtendREPEAT set_source) rYrPr.r/rgbFacerr hatch_pathrN hatch_surface hatch_ctx hatch_patterns r draw_pathzRendererCairo.draw_pathwsff?r||~'=  " z''2.88DKKHI  S$ 40   HHJ c7BLLNB4G4G4I J     KKM&&( dhh-CNN,;; ))35M m4I J!))#t4>>q#F   $ $T%:%:2;Q;Q;S%T U %I % %r'9'9'; <  # # %    !00?M  $ $U\\%8%8 9 HHJ NN= )     KKM rc r|j}|jt|||tj ddz|j }|j \}} } } |dk(r| dk(r| dk(r | dk(rd} d}nd} |tj ddjd|jz}|jt|j|dD]\} \}}t|s|dd\}}|j|j|||j||j| s | dzdk(sk|j|||j!|j#| s1|j|||j!|j#yy) NrrvrFT)simplifyr i)rr{r5rrycopy_path_flat fill_extentsrzrR enumerater!rra append_pathrersr|r})rYrP marker_path marker_transr.r/rrx1y1x2y2fillediverticescodesxys r draw_markerszRendererCairo.draw_markerssff S+|hj6F6Fq"6M'MN((* ))+BB 7rQw27rQwFGFz''2.88DKKHI  $-""9u"=%? M A %8}}1  a# , QX]))Wbllnb6I6I6KM# M*  ! !Wbllnb.A.A.C Erc tj|ddd}tjj |j j tj|jd|jd|jddz}|j}|j|z |jdz }|j|j|t|t||j|jy)Nrvrr)r._unmultiplied_rgba8888_to_premultiplied_argb32rBrTcreate_for_dataraveldatarUshaperrRraset_source_surfacefloatpaintre)rYrPrrimrfrs r draw_imagezRendererCairo.draw_images  A A"TrT( K$$44 HHJOOU00 HHQK!bhhqkAo7ff KK!Obhhqk )   wa%(;  rc V|r|j||||||y|j} | j| j||| j | j t || j|j|jtj} | j|j| j| |r%| jt!j"| | j%|| j'yrn)_draw_mathtextrr{r#raselect_font_facerI set_font_sizerget_size_in_pointsrB FontOptions set_antialiasget_antialiasedset_font_optionsrotater)deg2rad show_textre) rYrPrrsr<angleismathmtextroptss r draw_textzRendererCairo.draw_texts    Aq!T5 9&&C LLN KK1  HHJ C "A$"G H   d33D4K4K4MN O$$&D   r113 4   & 2::uf-. MM!  KKMrc|j}|jjj||j|\}} } } } |j |j |||r%|jtj| | D]\} }}}}|j|j|| |jtt| |j|j!||j#t%|| D]P\}}}}|j|j'|| || |j)ddd|j+R|j-yNr)r _text2pathmathtext_parserparserNrarzrr)rr{r#rrIrrrrchr rectangleset_source_rgbrore)rYrPrrrr<rrrQrRdescentglyphsrectsfontfontsizeidxoxoywhs rrzRendererCairo._draw_mathtextsHff OO + + 1 1!TXXt D .vw   a  JJrzz5&) *+1 $ 'D(CR LLN KKRC C 01FG I   d33H= > MM#c( #  $" LBAq LLN MM"rc1qb )   q!Q '      rc2|j|jfSrn)rQrRrYs rget_canvas_width_heightz%RendererCairo.get_canvas_width_height szz4;;&&rc|dk(rt ||||S|r:|jjj ||j |^}}}}|||fS|j }|j|jt||j|j|j|j|dd\} } } |j| | | | zfS)NTeXrr)rWget_text_width_height_descentrrrrNrVrarrIrrr text_extentsre) rYrr<rrQrRrrkr y_bearingrrrZs rrz+RendererCairo.get_text_width_height_descents U?78D&I I //55a4H 'E67Q&') )mm  =dCD $//0G0G0IJK**1-a2 1a !Q]""rc|jjjd|j_d|j_d|j_|jS)NrF)rPrra_alpha _forced_alpha_hatchrs rnew_gczRendererCairo.new_gc'sC    %wwrc&|dz |jzS)NH)rN)rYr0s rrzRendererCairo.points_to_pixels3s{TXX%%rrn)FN)__name__ __module__ __qualname__rXrl staticmethodrsrrrrrrrrr __classcell__rZs@rrKrKRsV'$#L".E` 04'#0 &rrKceZdZejej ej dZejejejdZ fdZ dZ fdZdZdZdZd Zd Zd Zdfd Zd ZdZdZxZS)rO)bevelmiterround)butt projectingrc0t|||_yrn)rWrXrM)rYrMrZs rrXzGraphicsContextCairo.__init__Es   rc8|jjyrn)rrers rrezGraphicsContextCairo.restoreIs rct||t|j|j|j |j yrn)rW set_alpharr_rgbr|r})rYrrZs rrzGraphicsContextCairo.set_alphaLs: %  HHdii!143H3H3J Lrc|jj|rtjytjyrn)rrrBANTIALIAS_DEFAULTANTIALIAS_NONE)rYr4s rset_antialiasedz$GraphicsContextCairo.set_antialiasedQs/ '(E # # D.3.B.B Drc6|jjSrn)r get_antialiasrs rrz$GraphicsContextCairo.get_antialiasedUsxx%%''rc|jjtj|j|||_y)N)capstyle)r set_line_capr check_getitem_capd _capstyle)rYcss r set_capstylez!GraphicsContextCairo.set_capstyleXs, d00bIJrc|sytj|j\}}}}|j}|j |j ||j j|z |z |||jyrn) r)rboundsrr{rrMrRr)rYrrrrrrs rset_clip_rectanglez'GraphicsContextCairo.set_clip_rectangle\se XXi../ 1ahh  a--1A5q!<  rc$|sy|j\}}|j}|j|tj ddj d|j jz}t||||jyru) get_transformed_path_and_affinerr{rryrzrMrRr5r)rYr.tpathaffiners r set_clip_pathz"GraphicsContextCairo.set_clip_pathesu <<> vhh J$$Q+55a9M9MNOS%(  rc ||f|_||jjgdy|jjt|jj t j||yr)_dashesrset_dashlistrMrr)r*)rYoffsetdashess r set_dasheszGraphicsContextCairo.set_dashesps[v~ > HH  b! $ HH  T]]33BJJv4FGH rct|||t|jdk(r$|jj |jy|jj |jyr)rWset_foregroundrrrrr)rYfgisRGBArZs rrz#GraphicsContextCairo.set_foregroundysR r6* tyy>Q  #DHH # #TYY / $DHH $ $dii 0rcX|jjjddSr)r get_sourceget_rgbars rget_rgbzGraphicsContextCairo.get_rgbs%xx""$--/33rc|jjtj|j|||_y)N) joinstyle)r set_line_joinrr_joind _joinstyle)rYjss r set_joinstylez"GraphicsContextCairo.set_joinstyles, t11$++LMrct||_|jj|jj |yrn)r _linewidthrrrMr)rYrs r set_linewidthz"GraphicsContextCairo.set_linewidths.(  > >q ABrrn)rrrrBLINE_JOIN_BEVELLINE_JOIN_MITERLINE_JOIN_ROUNDr LINE_CAP_BUTTLINE_CAP_SQUARELINE_CAP_ROUNDrrXrerrrrrr rrrr r#rrs@rrOrO8s''''''F**,,++ E !L D( 14CrrOceZdZdZy) _CairoRegionc ||_||_yrn)_slices_data)rYslicesrs rrXz_CairoRegion.__init__s  rN)rrrrXrrr+r+srr+ceZdZedZdZdZdZdZdZ e Z dZ dd d Z e je d Ze je d Ze je d Ze je dZy)FigureCanvasCairoczt|ds$t|jj|_|jS)N_cached_renderer)r`rKfigurerNr4rs r _rendererzFigureCanvasCairo._renderers0 t/0$1$++//$BD !$$$rc|jSrn)r6rs r get_rendererzFigureCanvasCairo.get_renderers ~~rc |jjjj}t |t j s td|j}|j}tj|j}tj|j}tj||jz }tj||j z }d|krA||kr<|j|jkr#d|kr||kr|j |jks t#dt%||t'||z dzt%||t'||z dzf} t)j*|j-t(j.j1||f| j3} t5| | S)Nz;copy_from_bbox only works when rendering to an ImageSurfacerz Invalid bbox)r6rPrr_ isinstancerBrT RuntimeErrorr\r]mathceilx0floorrry0 ValueErrorslicemaxr) frombufferget_datauint32reshapecopyr+) rYbboxrfswshr>rr@rslsrs rcopy_from_bboxz FigureCanvasCairo.copy_from_bboxsp..##''224'5#5#56MO O        ! YYtww  ZZ  YYrDGG| $ ZZTWW %RB"HDGG);GbTWW-?^, ,BSb!_,-uRc"r'1o9M/NN g..0"))<"b"3((, C&&rcx|jjjj}t |t j s td|j|j}|j}|j\}}|jtj|jtj j#||f||f<|j%|j&|j&|j(|j&z |j(|j&z y)Nz;restore_region only works when rendering to an ImageSurface)r6rPrr_r:rBrTr;flushr\r]r-r.r)rDrErFrGmark_dirty_rectanglestartstop)rYregionrfrJrKslyslxs rrestore_regionz FigureCanvasCairo.restore_regions..##''224'5#5#56MO O         !>>S)/ w'')299 5 '2r( CH &$$ IIsyy#((SYY"63998L NrcB|jj|yrn)_get_printed_image_surface write_to_png)rYfobjs r print_pngzFigureCanvasCairo.print_pngs '')66tNOG O #5,/"$566f}dC(==t4D==tTBD&&t_>NOG/w78 8![[__ ""5==#9:nn## + % JJruuqy ! MM!.. / (  &= JJL rrjrhrlrmN)rrrpropertyr6r8rMrVr[ra print_rawrXr~ functools partialmethod print_pdfprint_ps print_svg print_svgzr0rrr2r2s %%'& N=: I/91f( ''u5I&y&&ud3H' ''u5I(((7Jrr2c,eZdZejZeZeZ y) _BackendCairoN) rrrrBversionbackend_versionr2 FigureCanvasr FigureManagerr0rrrr smmO$L%Mrrrn)$__doc__rrsr<numpyr)rB version_info ImportError cairocffierrrrrmatplotlib.backend_basesr r r r r matplotlib.font_managerrmatplotlib.pathrmatplotlib.transformsrrr5rIrKrOr+r2exportrr0rrrs%  % J&&&+&8&8%9HI I')(4 *$"$(c&Lc&LQC.QCh x8(x8v &H&&u%%! % !$ %% "%s5)B88C>CCC CCCC