rL i :dZddlZddlZddlZddlmZddlZddlmZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlZddlZddlZddlZddlZddlmZmZmZmZddlmZddlm Z m!Z!m"Z"m#Z#dd l$m%Z%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,dd l-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6e jne8Z9dZ:iddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dZ;d?d@dAZdDZ?dEZ@dFZAdGZBdHZCdIZDdJZEGdKdLe6jZGGdMdNeZHGdOdPe!ZIdQZJdRZKd]dSZLd]dTZMejdUd^dVZOdWZPdXZQd_dYZRe"ZSgdZZTe jGd[d\e ZVy)`zG A PostScript backend, which can produce both PostScript .ps and .eps. N)Enum)StringIO)TemporaryDirectory)_apicbook_path _text_helpers)AFM)_BackendFigureCanvasBaseFigureManagerBase RendererBase)is_writable_file_likefile_requires_unicode)get_font) LoadFlags) uni2type1)Path) TexManager)Affine2D)MixedModeRenderer)_backend_pdf_psFletter)!@ legal)rledger)ra0)Gz@@gHzgG@a1)p= c7@r"a2) ףp=0@r$a3)zGa'@r&a4) ףp= @r(a5)RQ@r*a6)Q@r,a7)HzG@r.a8)ffffff@r0a9)\(\?r2a10)gRQ?r4b0)fffffFD@g)\L@b1))\<@r7b2)QE4@r9))\,@r;)Q8$@r<)p= ף@r=))\(@r>)p= ף @r?)Gz@r@))\(?rA)g)\(?rB)b3b4b5b6b7b8b9b10 )sepc2|jd|DS)Nc3`K|]&}|djdjd(yw)1.3f0.N)rstrip).0args d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/backends/backend_ps.py z_nums_to_str..Is*Jcs4j((-44S9Js,.)join)rLargss rU _nums_to_strrYHs 88JTJ JJc t|rFt|r t|dn t|d}|5tj||dddytj ||tj y#1swYyxYw)z Move the contents of file at *src* to path-or-filelike *dst*. If *dst* is a path, the metadata of *src* are *not* copied. latin-1encodingrbN) copy_function)rropenshutil copyfileobjmovecopyfile)srcdstfhs rU_move_path_to_path_or_streamriLss S!&s+3+T?  (   r3 ' ( (  CFOO< ( (s A99Bc0 t|d |Dcgc]} j|}}dj jd jz dj t t jdj fd|Dt|dz}d}g}|D]} j|tj} j\} }|jd j|dj t t|j d g|jd zt#j$t'| d z|d d d d d gddj)dzdz|dj |z|zScc}w)a Subset *chars* from the font at *font_path* into a Type 3 font. Parameters ---------- font_path : path-like Path to the font to be subsetted. chars : str The characters to include in the subsetted font. Returns ------- str The string representation of a Type 3 font, which can be included verbatim into a PostScript file. r)hinting_factoraM%!PS-Adobe-3.0 Resource-Font %%Creator: Converted from TrueType to Type 3 by Matplotlib. 10 dict begin /FontName /{font_name} def /PaintType 0 def /FontMatrix [{inv_units_per_em} 0 0 {inv_units_per_em} 0 0] def /FontBBox [{bbox}] def /FontType 3 def /Encoding [{encoding}] def /CharStrings {num_glyphs} dict dup begin /.notdef 0 def rKc3FK|]}dj|yw)/N)get_glyph_name)rSglyph_idfonts rUrVz$_font_to_ps_type3..s,8!) !!4!4X!> ?@8s!) font_nameinv_units_per_embboxr^ num_glyphsz end readonly def /BuildGlyph { exch begin CharStrings exch 2 copy known not {pop /.notdef} if true 3 1 roll get exec end } _d /BuildChar { 1 index /Encoding get exch get 1 index /BuildGlyph get exec } _d FontName currentdict end definefont pop z/%(name)s{%(bbox)s sc r)namers@NF)mlrZcrZTasciizce} _d )rget_char_indexformatpostscript_name units_per_EMrWmapstrrslen load_glyphrNO_SCALEget_pathappendrn horiAdvancerconvert_to_stringrdecode) font_pathcharsc glyph_idspreamble postambleentriesrogvrps @rU_font_to_ps_type3r\s" Ia 0D167A$$Q'7I7  FT)) 1 11S$)),-HH8-688)nq(  * $I&G  OOHi&8&8 9}}1 %++H5S1==!*Eaff*E!FG) %%QVQtUD! -d45;F7O D   ( dii( (9 44y8sFc djd|D}tjd|| i}|jdrd|d<t j j |fi|5}tj||5}tj|j}tjd|tj|jt||jt!|||ddddddy#1swYxYw#1swYyxYw#t"$rtj%d |wxYw) a2 Subset *chars* from the font at *font_path* into a Type 42 font at *fh*. Parameters ---------- font_path : path-like Path to the font to be subsetted. chars : str The characters to include in the subsetted font. fh : file-like Where to write the font. c32K|]}t|ywN)chr)rSrs rUrVz%_font_to_ps_type42..s/AQ/zSUBSET %s characters: %sz.ttcr fontNumberzSUBSET %s %d -> %dNzIThe PostScript backend does not currently support the selected font (%s).)rW_logdebugendswith fontToolsttLibTTFontrget_glyphs_subset font_as_filegetvalueosstatst_sizerwrite_serialize_type42 RuntimeErrorwarning)rrrh subset_strkwrpsubsetfontdatas rU_font_to_ps_type42rs,///JJJ)9jA    f % B| oo$$Y5"5 @// :F @JP&33F;DDFH JJ$i1C1K1KH   HH&tVX> ? @ @ @ @ @ @  W    sB8D')DA>D>DD'D DD$ D'$D''!Ect|jd|\}}|d}|d}t|}t|||}t j d|dd|dd|d j d d |jd d |jdd|jdd|jdd|jd|jrdndd|jd|jdtt|d|d|dS)aw Output a PostScript Type-42 format representation of font Parameters ---------- font : fontTools.ttLib.ttFont.TTFont The original font object subset : fontTools.ttLib.ttFont.TTFont The subset font object fontdata : bytes The raw font data in TTF format Returns ------- str The Type-42 formatted font locapostruz %%!PS-TrueTypeFont-rrQr-headz.7fzi 10 dict begin /FontType 42 def /FontMatrix [1 0 0 1 0 0] def /FontName /z; def /FontInfo 7 dict dup begin /FullName (z) def /FamilyName (z) def /Version (z) def /ItalicAngle z def /isFixedPitch truefalsez def /UnderlinePosition z! def /UnderlineThickness zX def end readonly def /Encoding StandardEncoding def /FontBBox [z=] def /PaintType 0 def /CIDMap 0 def z z9 FontName currentdict end definefont pop )_version_and_breakpointsget_generate_charstrings_generate_sfntstextwrapdedent fontRevision getDebugName italicAngle isFixedPitchunderlinePositionunderlineThicknessrY_bounds) rprrversion breakpointsrrursfntss rUrrs_$4DHHV4DhOG[ 3hNrz>4sIII rrzglyf) structunpackranger locationssetsortedvaluesr) rrv1v2 numTablesrtablesitag_offsetglyf_breakpointsrs rUrrs6 eXbq\:BI2hG F 9 -"MM(HR!B$YrQqSRTH}4UVQ&,szz'"#- BF..QTRTBUVF6NV3VV5M6==?M-=Ms8}MNK K  WsCc|jd}tjjj |}|j D]}||j ||jxsdS)as Compute the font bounding box, as if all glyphs were written at the same start position. Helper function for _font_to_ps_type42. Parameters ---------- font : fontTools.ttLib.ttFont.TTFont The font Returns ------- tuple (xMin, yMin, xMax, yMax) of the combined bounding box of all the glyphs in the font F)rrrr) getGlyphSetrpens boundsPen BoundsPenkeysdrawbounds)rpgspenrus rUrr,sb$   % B .. " " , ,R 0C  4 c :: %%rZc|j}dt|d}t|D]\}}|d|d|dz }|dz }|S)a Transform font glyphs into CharStrings Helper function for _font_to_ps_type42. Parameters ---------- font : fontTools.ttLib.ttFont.TTFont The font Returns ------- str A definition of the CharStrings dictionary in PostScript z /CharStrings z dict dup begin rmrKz def zend readonly def) getGlyphOrderr enumerate)rpgosrrus rUrrEse    B By 12AR="4 qas& !!" A HrZc :dd}|t|krVtj||dz}||dz }||kr|d}d|||jdz |}|t|krVdz d j fd t dtd DS) a Transform font data into PostScript sfnts format. Helper function for _font_to_ps_type42. Parameters ---------- fontdata : bytes The raw data of the font font : fontTools.ttLib.ttFont.TTFont The fontTools font object breakpoints : list Sorted offsets of possible breakpoints Returns ------- str The sfnts array for the font definition, consisting of hex-encoded strings in PostScript format z/sfnts[rirrz]defr{c3.K|] }||dzyw)dN)rSrrs rUrVz"_generate_sfnts..}s?AQq3Z?sr)rbisect bisect_lefthexrWr)rrprposrnewposrs @rUrr]s* A C H    {C%K 8QqS! S= _F q#f%))+,C 00 H KA 99?q#a&#)>? ??rZcBtjfd}|S)z} Wrap `RendererPS` method *meth* to emit a PS comment with the method name, if the global flag `debugPS` is set. cztr)|jjdjd|g|i|S)Nz% r{)debugPS _pswriterr__name__)selfrXkwargsmeths rUwrapperz!_log_if_debug_on..wrappers:  NN 2dmm_B!7 8D*4*6**rZ) functoolswraps)rrs` rU_log_if_debug_onrs' __T++ NrZcZeZdZdZej dZdZdfd ZdZ d dZ d dZ e d Z d d Ze d Zd d Zd d Zd dZdZdZd!dZdZed"dZed"dZe d"dZedZedddZed!dZedZedZddddZ xZ!S)# RendererPSz The renderer handles all the drawing primitives using a graphics context instance that controls the colors/styles. z fonts/afm ps.useafmct|||||_tjdrd|_g|_||_d|_d|_ d|_ d|_ d|_ d|_ d|_i|_|dz |_i|_d|_t'j(|_t-j.t0j2|_y)N text.usetexrH)super__init__rmplrcParamstextcntpsfragimagedpicolor linewidthlinejoinlinecaplinedashfontnamefontsize_hatchesimage_magnification _clip_paths_path_collection_idrCharacterTracker_character_trackerrcacherr _logwarn_once)rwidthheightpswriterr __class__s rUr zRendererPS.__init__s '! << &DLDK         #+b= #$ "1"B"B"D&__T\\:rZcl|yt|dk(r#|ddk(ry|ddk7r|jdyy)NTrrrzlThe PostScript backend does not support transparency; partially transparent artists will be rendered opaque.F)rr)r rgb_or_rgbas rU_is_transparentzRendererPS._is_transparentsP     "1~"1~"""MNrZTc|||f|jk7rS|jj||cxk(r|k(rnnt|dnt|||d|r |||f|_yyy)Nz setgray z setrgbcolor )rrrrY)rrrbstores rU set_colorzRendererPS.set_colorss q!9 " NN $%KaK%1O#4J!?$0Aq$9#:.!I KAY  #rZct|}||jk7r2|jjt |d|r||_yyy)N setlinewidth )floatrrrrY)rrr+s rU set_linewidthzRendererPS.set_linewidthsK)$  & NN L$;# (  %rZc&ddddddd|}|ddS)Nrrr2)buttr4 projectingrrr2r6z setlinecap r)rs rU _linecap_cmdzRendererPS._linecap_cmds-qaA!L !M**rZc||jk7r5|jj|j||r||_yyyr)rrrr=)rrr+s rU set_linecapzRendererPS.set_linecaps? dll " NN !2!27!; <&  #rZc |j+|j\}}tj||r||k(ry|jj |#t |rdt |dt |dnd|r ||f|_yy)N[z] z setdash z [] 0 setdash )rnp array_equalrrrrY)rrseqr+oldooldseqs rU set_linedashzRendererPS.set_linedashs == $==LD&~~c6*tv~  #CH !s!3 4B|F7K6LJW- / #SMDM rZc||f|j|jfk7r5|jjd|d|dd|r||_||_yyy)NrmrKrO selectfont )rrrr)rrrr+s rUset_fontzRendererPS.set_fonts[ h DMM4==#A A NN 1XJam!L M ( (  BrZcd}||jvr|j|Sdt|jz}|jdz}|jj d|dd|dd|dd|dd|d d |j t j|tj|d d |d d|d||j|<|S)Nr zH%dzH << /PatternType 1 /PaintType 2 /TilingType 2 /BBox[0 0 r6rKz] /XStep z /YStep z( /PaintProc { pop rr.Fsimplifyz] gsave fill grestore stroke } bind >> matrix 0 z translate makepattern /z exch def ) rrr!rr _convert_pathrhatchrscale)rrOrsidelenru pageheights rU create_hatchzRendererPS.create_hatchs DMM !==' 's4==))[[2%  "{!GA;' QK QK  1 DJJu%xz'7'7'@5QRS^ F + . $ e rZc|jS)z Get the factor by which to magnify images passed to draw_image. Allows a backend to have images at a different resolution to other artists. )rrs rUget_image_magnificationz"RendererPS.get_image_magnifications '''rZNc |r!dd|jdz|jdzf}nd}tj||||ddgddj dS)NggR@r)rwrxrZrysclTrz)r r!rrr)rpath transformcliprMs rUrNzRendererPS._convert_path$sZ djj4/t1CDDD&& )T8T -t55;VG_ ErZc g}|j}|3|jtg|j|jd|j \}}||t |f}|jj|}|[dt|jz}|jjd|d|j||dd||j|<|j|dd j|S) N rectclip zc%drmz { FrLz clip newpath } bind def r{r)get_clip_rectanglerrYp0size get_clip_pathidrrrrrrNrW)rgcrZrectrXtrfkeycustom_clip_cmds rU _get_clip_cmdzRendererPS._get_clip_cmd-s$$&   KK<==499=>kJ K$$& c  C/C"..2237O&"'#d.>.>*?"?$$*D#./0&)8  % KK?+2. /wwt}rZc |jdd\}}d}|dddddddf} | jjdd} |!d} ||jz } ||jz } n?dj t t |jj} d } d } |jjd |j|d|d d|d d | d | d d| d d|dd|dd|dd|dd|dd|dd|d| dy)Nr2zfalse 3 colorimagerr%r{z 1 0 0 1 0 0rKg?gsave rz translate [z ] concat z scale /DataString r6z string def z 8 [ z 0 0 -z 0 z5 ] { currentfile DataString readhexstring pop } bind grestore ) shapetobytesrrrWrrfrozen to_valuesrrrg)rrbxyimrYhwimagecmddatahexdatamatrixxscaleyscales rU draw_imagezRendererPS.draw_imageCsYxx|1'$B$2A2+,,.$$T3/  "F111F111FXXc#y'7'7'9'C'C'EFGFFF "B1Qqe   !F1: qE1Qqe51VAa5Aa5)       rZc|duxr|jdu}|jxr|}|j||||}|j|||y)NrZrM)get_hatch_pathshould_simplifyrN_draw_ps)rrbrXrYrgbFacerZrMpss rU draw_pathzRendererPS.draw_pathdsY$>2#4#4#6$#>''0D   idX  N b"g&rZc|j|rdn5|d|dcxk(r|dk(rnnt|ddn t|ddd}gd}|j} |jst |j dk(r|j n|j d} | dkDxr| dkD} | rp|jd| z|j|j|j|j|j|j|j|j||d |r;| r|jd |r|j|d g| r|jd | r|jd|jd dg|j|dd|jdz|j dzfd D]2\} } t | s| dd\}}|j|dd|dd4dj#|}|j%|||d d y)Nrrr2z setgrayr%z setrgbcolor)z/o {gsavenewpath translatez%.1f setlinewidthFrLrfillgrestorestrokez } bind defr r}rrKz or{rr)r'rY get_linewidthget_forced_alpharget_rgb get_alpharr7 get_joinstyler= get_capstylerNextend iter_segmentsr r!rWr)rrb marker_path marker_transrXtransrps_colorps_cmdlwalpharverticescoderprqrs rU draw_markerszRendererPS.draw_markersls6##G, qzWQZ571:5!,-X6 '"1+./|< ;    '')S->!-Cjjl1o a%EAI  MM-2 3 MM$,,R-=-=-?@ A MM$++BOO,=> ? d((l27)9 :  g& x01 j)  MM( # z<01"00DJJrM4;;r>:1  0NHd8}}1 1Qqe2./  0YYv  b"gE% @rZct|dkDrt|djnd}|j|||||}|d|zzdz|dz|zk}|s"tj|||||||||| | | | | Sg}t |j |||D]`\}\}}d|j|fz}|j||d}|jjd|d|d |j|b|j||||||| | | | | D]'\}}}}}|d d |d d |}|j|||)|xjd z c_y) Nrr%r2zp%d_%dFrLrmz { newpath translate z } bind def rrKr)rr_iter_collection_uses_per_pathrdraw_path_collectionr_iter_collection_raw_pathsrrNrrr_iter_collectionr)rrbmaster_transformpathsall_transformsoffsets offset_trans facecolors edgecolors linewidths linestyles antialiasedsurlsoffset_positionlen_path uses_per_pathshould_do_optimization path_codesrrXrYru path_bytesxoyopath_idgc0rrs rUrzRendererPS.draw_path_collections.1Z!^3uQx(();; >7J D  q=( (1 ,1 /M M %44b*E>z:J d ! !  $-d.M.M %/9%: $ A it77;;D++D)e+LJ NN &   "    d # $.2-B-BJJ JdO.5 , )BGS'q62a&'+B MM"c7 +  ,   A% rZ)mtextc (|j|jryt|ds*|jd|j ||||||d|y|j ||d\}} } |j } d|jz} t|jdddd i} d d d jtjd dd}||z}d| d|}tj|dz}t|| tj|zz || tj|zz }|j j#d| || | dz|fz|j$j'd|d| d|xjdz c_y)NrzThe PS backend determines usetex status solely based on rcParams['text.usetex'] and does not support having usetex=True only for some elements; this element will thus be rendered as if usetex=False.FTeX)ismathz psmarker%dr%rL,z{\sffamily %s}z{\ttfamily %s})z sans-serif monospacez font.familyrz{\rmfamily %s}z \color[rgb]{z} Zz/\psfrag{%s}[bl][bl][1][%f]{\fontsize{%f}{%f}%s}g?rjz moveto (z) show grestore r)r'rhasattrr draw_textget_text_width_height_descentget_size_in_pointsrrYrr r rBradianscossinrrrr)rrbrprqrpropanglerrtrsblrthetextrfontcmdtexranglers rUdraw_texzRendererPS.draw_texs    - tX&   2 3 NN2q!QeUE B 55ae5L1b**,-bjjl2A.8C8!2 13363||M2157H4J  aK',a0EBJ'1rBFF6N22ARVVF^8K4KL  >(4-B> > ? "     rZc |j|jry|dk(r|j||||||S|r|j||||||Sg} tj dr|j |} | jjddjd} d|jz} d} d}|D]x}tjt|dt|d} | j|}| j#||}|}| || zz } | j%| | |f| || zz } zn|j'|} |j(j+| |t-j.|| D]z}|j0jjddjd} |j0j3|j4}| j%| |j6|f||j8|jt;j<| d D]{\} }|j?| |jd d jAd|D}|jBjEd|jG|d |dd|dd|dd|d }y#t$rd }| j!d }YwxYw)NrrrzreplacegMbP?runi04Xquestion?c |dS)Nrr)entrys rUz&RendererPS.draw_text..&s eAhrZFr{c38K|]\}}}|dd|ddyw)rz 0 m /rz glyphshowNr)rSrrprus rUrVz'RendererPS.draw_text..(s/ 9$.Aq$$%Q%vd1XZ @ 9srjrrK translate  rotate rk)$r'rr draw_mathtextr r  _get_font_afmr~encoderrrrordget_width_from_char_nameKeyErrorget_width_charget_kern_dist_from_namer _get_font_ttfrtrackr layout ft_objectrn glyph_idxrpr, itertoolsgroupbyrJrWrrrg)rrbrprqrrrrrstreamrpps_namerPthisx last_namerrur kernitem glyph_namegrouprs rUrzRendererPS.draw_texts    -  U?==Q1dE: : %%b!Q4? ? << $%%d+D++227IF D3355EEI ' }}SVs3q6#,-?@5 99$?E33ItD % wt45& '%%d+D  # # ) )$ 2%,,Q5 =>>99"F7I6vvg!^^::4>>J  w ;<  =  %' 68 NGU MM'4#:#:# .vw % e1QqEQiy " #+1 . 'D(CR  # # / /c :$$h/8;//9$$,,-Qxj FH1;40E""3s8,##D$7$7$<=  NN a&"Q <|- . ." BLBAq NN B4qAaS!K!@ A B \*rZc t|t|k(sJt|dk(ry|jdk(sJ|jddk(sJ|jddk(sJ|jdk(sJ|jddk(sJ|jddk(sJ|j}|j|d|dzdf}|j |}|j|d|dzdf}t j |ddz }t j|ddz} t jd| |z z } |\} } | \} }t j|d|dzgd  }d|d <||z | z|d <|ddddfd z|d<|jjdd}|jjd| dd| dd| dd|dd|d y)Nrr%rr2r)axisil))flagsu1)pointsz2>u4)colors3u1)dtyperrgo@rr{rizgsave << /ShadingType 4 /ColorSpace [/DeviceRGB] /BitsPerCoordinate 32 /BitsPerComponent 8 /BitsPerFlag 8 /AntiAlias true /Decode [ rrKz 0 1 0 1 0 1 ] /DataSource < z > >> shfill grestore )rndimrlreshaperYrBminmaxceilemptyrmrrr)rrbrrrrl flat_points flat_colors points_min points_maxfactorxminyminxmaxymaxrvrws rUdraw_gouraud_trianglesz!RendererPS.draw_gouraud_trianglesNs 6{c&k))) v;!  {{a||A!###||A!###{{a||A!###||A!### nneAhq&91%=> ook2 nneAhq&91%=> VVKa0G< VVKa0G< +*z*ABC d dxx !HuQx JLW % 2f<X$QU+e3X,,.$$T3/ "1XQtAhaQxqa1   rZrc|jj}|jdkDxr |j|j  }|sd}|j|rd}|j }|rz|j |j|j|j|j|j|j|j|s|r |j|j dd|d||j|||j|d|r5|s|r|d|j|ddddi|d|s|r|d |rS|j!||j#} |d|t%|j'dd|d | d |r|d |d y) at Emit the PostScript snippet *ps* with all the attributes from *gc* applied. *ps* must consist of PostScript commands to construct a path. The *fill* and/or *stroke* kwargs can be set to False if the *ps* string already includes filling and/or stroking, in which case `_draw_ps` is just supplying properties and clipping. rFNr%rjr{r+zfill rrKz setpattern fill grestore zstroke )rrrr'r get_hatchr0r9rr?rrG get_dashesr,rgstriprSget_hatch_linewidthrYget_hatch_color) rrrbrrrr mightstrokerO hatch_names rUrzRendererPS._draw_ps~s$$'')A-B#33BJJLAA F    (D     r//1 2   b..0 1   R__. / D  r}} / % DNNBJJL!, - i d  $% bhhj d i DNNGBQK 5u 5 (Ol# **5"2H2H2JKJ )  , 2 2 4Ra 89 : Aj\!<= >  *  lrZ)r )T)FNr)"r __module__ __qualname____doc__r_get_data_path _afm_font_dir_use_afm_rc_namer r'r,r0 staticmethodr7r9r=r?rGrJrSrVrNrgrr{rrrrrrrr __classcell__r#s@rUrrsG )E((5M";6 '+-- ) ++ ' *)@(E,@''FJ2A2Ah*&*&X:>''R88t++4--^15T11rZrc(eZdZed\ZZdZy) _Orientationr2c4|jdk(r|dddS|S)N landscaper)ru)rrls rUswap_if_landscapez_Orientation.swap_if_landscapes "ii;6uTrT{AEArZN)rr!r"rportraitr-r.rrZrUr+r+s(HiBrZr+ceZdZdZdddZdZdddddd Zdd d Zdd d Ze jed Z e jedZ fdZ xZS)FigureCanvasPSr  PostscriptzEncapsulated Postscript)repscy)NrrrUs rUget_default_filetypez#FigureCanvasPS.get_default_filetypesrZNr/)metadata papertype orientationbbox_inches_restorec |jj}d|j_i} t|ttj frCt j|j} | jddjd| d<|xsijddtjd| d<t jd} | rPtjj!t#| tj$j&j)d nt+j,| d <d j/d | j1D} |tj2d }|j5}t7j8dgt:|t7j<t>|j5}tj2dr |j@n |jB} | ||f|| |||d|y)Nr rzrTitleCreatorz Matplotlib vz, https://matplotlib.org/SOURCE_DATE_EPOCHz%a %b %d %H:%M:%S %Y CreationDater{c32K|]\}}d|d|yw)z%%z: Nr)rSkrs rUrVz+FigureCanvasPS._print_ps..s%!<"ab2aSM!r"6"6 3??++D E#G YII&9: !    + +%&!!%% ''/x0F'G ^$ yy!<&2&8&8&:!<<    ^4IOO%  H1y1YG(( k&7&7&9; ll=1))%%  W C#L'9$7 C;A CrZr9c |dk(t|ttjfst |s t dj j\sdk(r} }njt\}} d|z zd| z z} } | j jjz} | j jjz} dtjur| | | | f\} } } } d| zz cd| | | | ft_t#j |t%j || }j j'|f d }t(j*d rt-5}tj.j1|d }t3|d d5}||dddt(j*d dk(rt5t6|n*t(j*d dk(rt5t8|t;||dddyt=j>|d d5}tA|stCjDd|}||dddy#1swYxYw#1swYyxYw#1swYyxYw)a' Render the figure to a filesystem path or a file-like object. Parameters are as for `.print_figure`, except that *dsc_comments* is a string containing Document Structuring Convention comments, generated from the *metadata* parameter to `.print_figure`. r3z,outfile must be a path or a file-like objectrAgB@rr rrr]c  rtd|n/td| dk7rtd |td|tdd jd td d | tt}td |t j ds"|t jjz }td|z|td|td jt|t j ds jjjD]i\}}|s t j d}t|dkDrd}|j|dk(r|jt||]t|||ktd|td|s td|td|tdtz| rtd z|tdtdzdzd|t j j#|td|td|s td||jy)Nz%!PS-Adobe-3.0 EPSF-3.0)filez%!PS-Adobe-3.0rAz%%DocumentPaperSizes: z %%Pages: 1z%%LanguageLevel: 3 z %%Orientation: r{z %%EndComments r)endraz %%BeginPrologrz/mpldict %d dict defz mpldict beginz ps.fonttype*r%rbz %%EndPrologz %%Page: 1 1z %s translatez %d rotatez0 0 r z rectclipshowpagez%%EOF)printru_get_bbox_headerr_psDefsr r rusedrWrPflushrrrrYrr)rhNdictrrfonttypersrCr!is_epsr8r7 ps_rendererrotationrr rrs rUprint_figure_implz7FigureCanvasPS._print_figure..print_figure_impls1/b9&R0(29+>RHl, (!N#$$/$4$4#5R%d+,-$% r  #LE / +<< ,[;;@@AA (50r : / + $))G$2 .<< ,&99>>DDF A$Iu  "||M:H5zC'#%HHJ1}!29e!DE*9eR@ A %b ! -b )m"- / + .<B#77b AkH,26 DeBhr :;9EB O $..))+" 5 %b ! *2 &gB' HHJrZps.usedistillertmp.psrtr\r]N ghostscript)ptypersxpdf)#rrrrDr ValueErrorrAget_size_inchesr.rSrsr r!r+r-rrrrrr r rrXrWra _try_distill gs_distill xpdf_distillrir open_file_cmrcodecs getwriter)rrWrXrBrCr8r7r9 paper_width paper_heightllxllyurxuryrendererrptmpdirtmpfilerhrarsr!rmrnror rrs` ``` @@@@@@@@rUrVzFigureCanvasPS._print_figures7S"++$67(1KL L 335 v Y(*(-vK(3(E(E)$)& %Ku, - . /DKK$$***DKK$$+++ ,00 0!$c3!3 Cc3,&+RFBHS#s#!!M $ KK[ 35 "9 9 v <<) *$% ?'',,vx8'3;*r%b)*<< 12mC !(& N\\"34> !(& N,Wg> ? ?##GS9E (,T266++I6tc|dk(}|jj\} } d} d} | } | }| |jjjz}||jjjz}| |||f}t |_t| | |j |}t|j| | |||}|jj|t5}tj|d}|jd|dt|dtt d d j#t d t%| | d t%| d z| d zd|j j'dd|t(j*ur | | } } || ||f}|s|dk(r-|j-|jj\}}n t.|\}}t1||j2|||j4}t6j8ddk(st6j8drt;t<|||||n+t6j8ddk(rt;t>|||||tA||dddy#1swYyxYw)a( If :rc:`text.usetex` is True, a temporary pair of tex/eps files are created to allow tex to manage the text layout via the PSFrags package. These files are processed to yield the final ps or eps file. The rest of the behavior is as for `._print_figure`. r3rr_r]rrz+%!PS-Adobe-3.0 EPSF-3.0 %%LanguageLevel: 3 r{z& %%EndComments %%BeginProlog /mpldict z dict def mpldict begin rz end %%EndProlog mpldict begin z translate 0 0 r r\z end showpage r\r]rArqrsr)rtrsrotatedruN)!rArwrsr r!rrrrrrrEr write_textrgrrhrWrYrr+r-r.rS_convert_psfragsrrur r rxryrzri)rrWrXrBrCr8r7r9rmr r!rrrrrrrsrnrrtmppathr~rpsfrag_rotateds rUrUz FigureCanvasPS._print_figure_texls 335 v  DKK$$***DKK$$+++S#s#!!M $T[[%*FC9LN " !3 ;Vll684G   $  g,b"%(F2I&'(&#)  $,l444 &vS#s+ h.,7,I,IKK//1-3) \-6i,@) \-++[,  "N ./=@||M2Z$fID%35/0F:\$fID%35 )' :g3 ;3 ;3 ;s FI88Jrr3cT|jjt| Sr)rAdraw_without_renderingr r)rr#s rUrzFigureCanvasPS.draws **,w|~rZ)rr!r" fixed_dpi filetypesr5r\rVrUr partialmethodprint_ps print_epsrr(r)s@rUr1r1syI#13I Tz $(CZ!%(H!%U;n'y&&y$7H' '' 59IrZr1c Ltjdtjdtjj dztjj dztjj dzd||dzzi5t j ddj||d k(rd nd |jjd zd }dddt5}tjj|d}tjdddd|gtt!j"||dddt%|5}d|j'dv} ddd| S#1swYxYw#1swY>xYw#1swY SxYw)aj When we want to use the LaTeX backend with postscript, we write PSFrag tags to a temporary postscript file, each one marking a position for LaTeX to render some text. convert_psfrags generates a LaTeX document containing the commands to convert those tags to text. LaTeX/dvips produces the postscript file that includes the actual text. ztext.latex.preamblergraphicxrz:\geometry{papersize={%(width)sin,%(height)sin},margin=0in})r r!zt \begin{figure} \centering\leavevmode %(psfrags)s \includegraphics*[angle=%(angle)s]{%(epsfile)s} \end{figure}r{r-rr)psfragsrepsfile )rNrrdvipsz-qz-R0z-o Landscapei)r  rc_contextr  texmanager_usepackage_if_not_loadedrmake_dvirWresolveas_posixrrrXr_check_and_log_subprocessrrbrdraread) rrr~rr8dvifilerpsfilerhrs rUrrs  ! LL. / NN 4 4W = > NN 4 4Z @ A NN 4 4X > ? J#|< =  = ,''  99W-*k9q"??,557 ( .  %fh/ '' dE4 94 A FG$ % g6"$ 56 M.%%6 s&AF9AF #FF  FF#c |t|g|i|y#tj$r }tj d|Yd}~yd}~wwxYw)Nz%s. Distillation step skipped.)rr ExecutableNotFoundErrorrr)funcrrXrexcs rUrxrxsE= S\+D+F+  & &= 6<<=sA AA c|rdg}n|dk(rd|dd|dg}nd|g}|dz}tjd }tjtjd j d d d |zdg|d||t tj|tj|||rt|||yy)z Use ghostscript's pswrite or epswrite device to distill a file. This yields smaller files without illegal encapsulated postscript operators. The output is low-level, converting text to outlines. -dEPSCroprAz-dDEVICEWIDTHPOINTS=r2z-dDEVICEHEIGHTPOINTS=r%z -sPAPERSIZE=z.pszps.distiller.resrz-dBATCHz -dNOPAUSEz-r%dz-sDEVICE=ps2writez -sOutputFile=)rN) r r rr_get_executable_info executablerrremoverbrdpstoeps)rr3rtrsr paper_optionrrBs rUryrys #} ( /tAwi8/Qy9; 'ug./ u_F ,,) *C ## ! !$ ' 2 2 K#/B ;  ;'x0 ;29 ;  IIg KK   w/ rZc tjdtjd|rdg}n|dk(rd|dd|dg}nd |g}t5}tj|d }tj|d }t j d d ddddg|||tt j dddd||gttj||ddd|r t|yy#1swYxYw)a  Use ghostscript's ps2pdf and xpdf's/poppler's pdftops to distill a file. This yields smaller files without illegal encapsulated postscript operators. This distiller is preferred, generating high-level postscript output that treats text as text. rpdftopsrrAz-dDEVICEWIDTHPOINTS#r2z-dDEVICEHEIGHTPOINTS#r%z -sPAPERSIZE#ztmp.pdfrrps2pdfz-dAutoFilterColorImages#falsez-dAutoFilterGrayImages#falsez-sAutoRotatePages#Nonez-sGrayImageFilter#FlateEncodez-sColorImageFilter#FlateEncodez-papermatchz-level3N) r rrrErrrrrbrdr) rr3rtrsrrrtmppdftmppss rUrzrz*s2T"Y' #} ( /tAwi8/Qy9; 'ug./  $fi0 VX. ''  , + % , -        $ % '' '9fe Dd L E7#!$"  #$$s B C77Dz3.9c8t||r t|fSdfS)zx Return a postscript header string for the given bbox lbrt=(l, b, r, t). Optionally, return rotate command. r)rg_get_rotate_command)lbrtrs rUget_bbox_headerrSs$ D !$7$= QQb QQrZc|\}}}}dt|dt|dtj|dtj|d|dd|dd|dd|dS)zGReturn a PostScript header string for bounding box *lbrt*=(l, b, r, t).z%%BoundingBox: rKz %%HiResBoundingBox: z.6f)rJmathr rlr*r)ts rUrgrg\sqJAq!Qc!fXQs1vha ! ~Qtyy|nM##$S'1S'1S'1S' CDrZc*|\}}}}||zdddddS)uOReturn a PostScript 90° rotation command for bounding box *lbrt*=(l, b, r, t).z.2frKrz translate 90 rotaterrs rUrrcs+JAq!Qc#Ya#w3 44rZc|dz}t|d5}t|d5}|j}|D]}|jdr/|d|s|t|j ddzC|jdr7|||d |r#|t |j ddzn|r|jd r|||D]6}|jd r |d |jd r/||8 ddddddt j|tj||y#1swY=xYw#1swYAxYw)z Convert the postscript to encapsulated postscript. The bbox of the eps file will be replaced with the given *bbox* argument. If None, original bbox will be used. z.epswbr_s%!PSs%!PS-Adobe-3.0 EPSF-3.0 rz s %%EndCommentssp%%BeginProlog save countdictstack mark newpath /showpage {} def /setpagedevice {pop} def %%EndProlog %%Page 1 1 )s%%Bounds %%HiResBounds%%DocumentMedias%%Pagess%%EOFsJcleartomark countdictstack exch sub { end } repeat restore showpage %%EOF s%%PageBoundingBoxN) rar startswithrgrrrrrbrd)rrsrrepshtmphrlines rUrrisdG gt )d7D&9)T  Dw'23*4077@5HI!12d &'-d3::7CeKL$//+KLd / 6 Dx(!" !56d  =))VIIg KK!Y))))s) E-E CEEE EE$)z/_d { bind def } bind defz/m { moveto } _dz/l { lineto } _dz/r { rlineto } _dz/c { curveto } _dz/cl { closepath } _dz/ce { closepath eofill } _dz/sc { setcachedevice } _dceZdZdZeZy) _BackendPSzLevel IIN)rr!r"backend_versionr1 FigureCanvasrrZrUrrs  O!LrZr)FrNF)F)NF)Wr#rr|rHenumrriorrloggingrrrErbrtempfilerrrNrnumpyrB matplotlibr rrrr matplotlib._afmr matplotlib.backend_basesr r r rmatplotlib.cbookrrmatplotlib.font_managerrmatplotlib.ft2fontrmatplotlib._mathtext_datarmatplotlib.pathrmatplotlib.texmanagerrmatplotlib.transformsr!matplotlib.backends.backend_mixedrrr getLoggerrrrrSrYrirrrrrrrrRendererPDFPSBaserr+r1rrxryrz deprecatedrrgrrFigureManagerPSrhexportrrrZrUrsa   ' 88AAI,(/ ,*?w"  "Xy " i " x "> ">  " >  " >  "= "< "< "< "< "< "L "> "> " >! """!  1 " 6 K = N5b!H- `( V&2 0 @F a22aHB4BO%Od.b=$0N&RRRD5 4"n$ . """rZ