`3Lc@ sdZddlmZddlZddlZddlZddlZddlZdZ yddl Z Wne k re dnXdZ e j e kre d e j e ne jZ[ dd lmZmZmZmZdd lmZdd lmZdd lmZddlmZddlmZmZddl m!Z!ddl"m#Z#e$Z%ej&dkr|dZ'ndZ'defdYZ(defdYZ)dZ*defdYZ+dS(s A Cairo backend for matplotlib Author: Steve Chaplin Cairo is a vector graphics library with cross-device output support. Features of Cairo: * anti-aliasing * alpha channel * saves image files as PNG, PostScript, PDF http://cairographics.org Requires (in order, all available from Cairo website): cairo, pycairo Naming Conventions * classes MixedUpperCase * varables lowerUpper * functions underscore_separated i(tdivisionNcC stjdjjS(Ni(tsyst _getframetf_codetco_name(((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt_fn_namess1Cairo backend requires that pycairo is installed.iiisCPycairo %d.%d.%d is installed Pycairo %d.%d.%d or later is required(t RendererBasetGraphicsContextBasetFigureManagerBasetFigureCanvasBase(tis_string_like(tFigure(tMathTextParser(tPath(tBboxtAffine2D(tttfFontProperty(trcParamstlittlet RendererCairocB speZiejd6ejd6ejd6ejd6ejd6ejd6ejd6ejd6ejd6ejd 6ejd 6ejd 6ejd 6ejd 6ejd6ejd6ejd6ejd6Ziejd6ejd 6ejd6Z dZ dZ dZ dZ edZd"dZdZedZdZdZdZdZd Zd!ZRS(#idii,iiiXii it ultralighttlighttnormaltmediumtsemiboldtboldtheavyt ultraboldtblacktitalictobliquecC str!d|jjtfGHn||_td||_tjtj tj dd|_ t d|_ tj|dS(s s%s.%s()trendereritCairoN(t_debugt __class__t__name__RtdpitGraphicsContextCairotgctcairotContextt ImageSurfacet FORMAT_ARGB32ttext_ctxR tmathtext_parserRt__init__(tselfR$((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyR-Ys cC stj||j_dS(N(R'R(R&tctx(R.tsurface((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytset_ctx_from_surfaceescC s4||_||_tjddd|j|_dS(Ntyyity0(twidththeightR'tMatrixt matrix_flipy(R.R4R5((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytset_width_heightis  cC s|dk r|jt|dkrM|j|d|d|d|n*|j|d|d|d||d|j|jn|jdS(Niiii(tNonetsavetlentset_source_rgbat fill_preservetrestoretstroke(R.R/tfill_ctalpha((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt_fill_and_strokers  %*  c C sx|j|D]\}}|tjkr;|j|q|tjkrZ|j|q|tjkr|j|d|d|d|d|d|dq|tjkr|j|q|tj kr|j qqWdS(Niiii( t iter_segmentsR tMOVETOtmove_totLINETOtline_totCURVE3tcurve_totCURVE4t CLOSEPOLYt close_path(R/tpatht transformtpointstcode((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt convert_path}scC st|jdkr$tdn|j}|tjddjd|j}|j|j ||||j |||j dS(Ni$Js>The Cairo backend can not draw paths longer than 18980 points.g?gi( R;tverticest ValueErrorR/Rtscalet translateR5tnew_pathRQRBt get_alpha(R.R&RMRNtrgbFaceR/((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt draw_paths % c C s tr!d|jjtfGHn|j\}}|j|jt\}}} tj j | tj |||d} |j j } | j|dk r| jtj| ||| jn|j||}| j| ||| j| j|jdS(Ns%s.%s()i(R!R"R#Rt get_clip_patht flipud_outt color_convt BYTE_FORMATR'R)tcreate_for_dataR*R&R/R:R9RVRRQtclipR5tset_source_surfacetpaintR>( R.R&txtytimtclippathtclippath_transtrowstcolstbufR0R/((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt draw_images$         c C str!d|jjtfGHn|rF|j||||||n|j}|j|j|||j|j |j |j |j |j |j|jd} |j|r|j| tjdn|j| |j|jd|jdS(Ns%s.%s()gR@isutf-8(R!R"R#Rt_draw_mathtextR/RVREtselect_font_facetget_namet fontanglest get_stylet fontweightst get_weighttget_size_in_pointsR$R:trotatetnptpit set_font_sizet show_texttencodeR>( R.R&RbRctstproptangletismathR/tsize((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt draw_texts"    cC str!d|jjtfGHn|j}|jj||j|\}} } } } |j|j |||r|j | t j dnx| D]\} }}}}|j |j||t| }|j|j|j|j|j|j|j||jd}|j||j|jd|jqWxW| D]O\}}}}|j |j|||||jddd|jqOW|jdS(Ns%s.%s()igR@sutf-8i(R!R"R#RR/R,tparseR$R:RURsRtRuRVRERRltnameRntstyleRptweightRvRwRxR>t rectangletset_source_rgbR=(R.R&RbRcRyRzR{R/R4R5tdescenttglyphstrectstfonttfontsizetoxtoytfontPropR}twth((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyRks6  !        cC s%tr!d|jjtfGHntS(Ns%s.%s()(R!R"R#RtTrue(R.((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytflipyscC s1tr!d|jjtfGHn|j|jfS(Ns%s.%s()(R!R"R#RR4R5(R.((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytget_canvas_width_heightscC str!d|jjtfGHn|r^|jj||j|\}}}}}|||fS|j} | j| j |j |j |j |j |j|j|jd} | j| | j|dd!\} } } | j| | | | fS(Ns%s.%s()gR@ii(R!R"R#RR,RR$R+R:RlRmRnRoRpRqRrRvt text_extentsR>(R.RyRzR|R4R5Rtfontstused_charactersR/R}t y_bearingRR((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytget_text_width_height_descents  !     cC s8tr!d|jjtfGHn|jjj|jS(Ns%s.%s()(R!R"R#RR&R/R:(R.((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytnew_gcscC s0tr!d|jjtfGHn|d|jS(Ns%s.%s()gR@(R!R"R#RR$(R.RO((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytpoints_to_pixels!sN(R#t __module__R'tFONT_WEIGHT_NORMALtFONT_WEIGHT_BOLDRptFONT_SLANT_ITALICtFONT_SLANT_NORMALtFONT_SLANT_OBLIQUERnR-R1R8RBt staticmethodRQR9RYRjtFalseR~RkRRRRR(((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyR=sJ                           $    R%cB seZiejd6ejd6ejd6Ziejd6ejd6ej d6Z dZ dZ dZ dZd Zd Zd Zdd Zd ZdZdZRS(tbeveltmitertroundtbuttt projectingcC stj|||_dS(N(RR-R(R.R((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyR-4s cC s|jjdS(N(R/R>(R.((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyR>9scC sNtj|||j}|j}|jj|d|d|d|dS(Niii(Rt set_alphaRWt_rgbR/R<(R.RAt_alphatrgb((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyR=s  cC sC|dkr/||_|jj|j|ntd|dS(NRRRs!Unrecognized cap style. Found %s(RsroundR(t _capstyleR/t set_line_capt_capdRS(R.tcs((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt set_capstyleHs  cC s|s dS|j\}}}}t|t|t|t|f\}}}}|j}|j|j||jj|||||jdS(N(tboundsRR/RVRRR5R_(R.RRbRcRRR/((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytset_clip_rectanglePs6  $cC s{|s dS|j\}}|j}|j|tjddjd|jj}tj ||||j dS(Ng?gg( tget_transformed_path_and_affineR/RVRRTRURR5RRQR_(R.RMttpathtaffineR/((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt set_clip_pathZs  +cC s]||f|_|dkr1|jjgdn(|jj|jjtj||dS(Ni(t_dashesR9R/tset_dashRRRttasarray(R.toffsettdashes((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt set_dashescs   cC sUtj|||t|jdkr>|jj|jn|jj|jdS(Ni(Rtset_foregroundR;RR/RR<(R.tfgtisRGB((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyRlscC sRtj||t|jdkr;|jj|jn|jj|jdS(Ni(Rt set_graylevelR;RR/RR<(R.tfrac((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyRsscC sC|dkr/||_|jj|j|ntd|dS(NRRRs"Unrecognized join style. Found %s(RsroundR(t _joinstyleR/t set_line_joint_joindRS(R.tjs((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt set_joinstyle{s  cC s)||_|jj|jj|dS(N(t _linewidthR/tset_line_widthRR(R.R((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt set_linewidths N(R#RR'tLINE_JOIN_BEVELtLINE_JOIN_MITERtLINE_JOIN_ROUNDRt LINE_CAP_BUTTtLINE_CAP_SQUAREtLINE_CAP_ROUNDRR-R>RRRRRR9RRRR(((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyR%&s&            cO satr!dtjjtfGHn|jdt}|||}t|}t||}|S(s. Create a new figure manager instance s%s.%s()t FigureClass( R!R.R"R#RtpopR tFigureCanvasCairoR(tnumtargstkwargsRtthisFigtcanvastmanager((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytnew_figure_managers RcB sGeZdZdZdZdZdZdZdZRS(cO sz|j\}}t|jj}|j||tjtj||}|j||jj ||j |dS(N( tget_width_heightRtfigureR$R8R'R)R*R1tdrawt write_to_png(R.tfobjRRR4R5RR0((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt print_pngs cO s|j|d||S(Ntpdf(t_save(R.RRR((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt print_pdfscO s|j|d||S(Ntps(R(R.RRR((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytprint_psscO s|j|d||S(Ntsvg(R(R.RRR((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt print_svgscO s|j|d||S(Ntsvgz(R(R.RRR((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyt print_svgzscC stdS(Ns cairo.format(R(R.((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pytget_default_filetypescK s|jdd}d}||j_|jj\}}||||}} |dkrj| |}} n|dkrtjstdntj||| } n|dkrtjstdntj ||| } n|dkritj std n|d krQ|} t |r6t |d }nt jdd d |}ntj||| } ntjd|dSt|jj} | j|| | j| | jj} |dkr| jtjd| jd| n|jj| t}|r| j| jdd|| | j d| j!ddd| j"| j#dd| j$d| j%d| j&dn| j'| j(dS(Nt orientationtportraitiHt landscapeRs3cairo has not been compiled with PS support enabledRs4cairo has not been compiled with PDF support enabledRRs4cairo has not been compiled with SVG support enabledtwbtfileobjsunknown format: %siig@iis sans-serifis Origin corner(ssvgssvgz()tgetRR$tget_size_inchesR'tHAS_PS_SURFACEt RuntimeErrort PSSurfacetHAS_PDF_SURFACEt PDFSurfacetHAS_SVG_SURFACER topentgziptGzipFileR9t SVGSurfacetwarningstwarnRR8R1R&R/RsRtRuRURRRVRRRR?RERlRvRwt show_pagetfinish(R.tfotformatRRR$tw_inth_intwidth_in_pointstheight_in_pointsR0tfilenameRR/tshow_fig_border((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyRs`                    ( R#RRRRRRRR(((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyRs     (iii(,t__doc__t __future__RtosRRRtnumpyRtRR't ImportErrort_version_requiredt version_infotversiontbackend_versiontmatplotlib.backend_basesRRRR tmatplotlib.cbookR tmatplotlib.figureR tmatplotlib.mathtextR tmatplotlib.pathR tmatplotlib.transformsRRtmatplotlib.font_managerRt matplotlibRRR!t byteorderR]RR%RR(((sT/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backends/backend_cairo.pyts<0    " b