)Uc@ sdZddlmZddlZddlZddlZddlZddlj Z ddl j Z ddl j Z ddljZddlmZddlmZddlmZddl mZmZmZddlZddljZddljZddlmZiZd Z d e!fd YZ"d fd YZ#dfdYZ$de!fdYZ%dfdYZ&de&fdYZ'de&fdYZ(de&fdYZ)de&fdYZ*de&fdYZ+de+fdYZ,d e&fd!YZ-d"e+fd#YZ.d$fd%YZ/d&fd'YZ0d(fd)YZ1e1Z2d*fd+YZ3dS(,s Abstract base classes define the primitives that renderers and graphics contexts must implement to serve as a matplotlib backend :class:`RendererBase` An abstract base class to handle drawing/rendering operations. :class:`FigureCanvasBase` The abstraction layer that separates the :class:`matplotlib.figure.Figure` from the backend specific details like a user interface drawing area :class:`GraphicsContextBase` An abstract base class that provides color, line styles, etc... :class:`Event` The base class for all of the matplotlib event handling. Derived classes suh as :class:`KeyEvent` and :class:`MouseEvent` store the meta data like keys and buttons pressed, x and y locations in pixel and :class:`~matplotlib.axes.Axes` coordinates. :class:`ShowBase` The base class for the Show class of each interactive backend; the 'show' callable is then set to Show.__call__, inherited from ShowBase. i(tdivisionN(trcParams(tis_interactive(tGcf(tBboxtTransformedBboxtAffine2D(tPathcC s|t|tNpathst NtransformstNR'tiR&((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR8s    c  c st|} t|} t| | } t|}t|}t|}t|}t| }t| }|dkr|dks| dkrdS| r|j|}n|j}|j||dkrd}n|dkr|jdnd\}}xt| D]v}||| }| rC||| \}}n|rZ|||}n|r|||}|dkrt|dkr|j|dn|j ||r|j|||n|r|j |||qn|dk rAt|dkrA|ddkr#d}qA|j|d|d }n|j | |||rt|j | ||n|||||fVqW|j dS(s This is a helper method (along with :meth:`_iter_collection_raw_paths`) to make it easier to write a space-efficent :meth:`draw_path_collection` implementation in a backend. This method yields all of the path, offset and graphics context combinations to draw the path collection. The caller should already have looped over the results of :meth:`_iter_collection_raw_paths` to draw this collection. The arguments should be the same as that passed into :meth:`draw_path_collection`, with the exception of *path_ids*, which is a list of arbitrary objects that the backend will use to reference one of the paths created in the :meth:`_iter_collection_raw_paths` stage. Each yielded result is of the form:: xo, yo, path_id, gc, rgbFace where *xo*, *yo* is an offset; *path_id* is one of the elements of *path_ids*; *gc* is a graphics context and *rgbFace* is a color to use for filling the path. iNgii(ii(R-RdR'tnew_gctcopy_propertiesRt set_linewidthRft set_alphatset_foregroundt set_dashestset_antialiasedtset_urltrestore(RR%RGR?R@RARBRCRDRERFRgtNoffsetsRit Nfacecolorst Nedgecolorst Nlinewidthst NlinestylestNaatNurlsttoffsetsRKR(RHRIRjRJtfg((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR:sZ        $         cC sdS(s Get the factor by which to magnify images passed to :meth:`draw_image`. Allows a backend to have images at a different resolution to other artists. g?((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_image_magnificationiscC s tdS(s Draw the image instance into the current axes; *gc* a GraphicsContext containing clipping information *x* is the distance in pixels from the left hand side of the canvas. *y* the distance from the origin. That is, if origin is upper, y is the distance from top. If origin is lower, y is the distance from bottom *im* the :class:`matplotlib._image.Image` instance N(R$(RR%R5R6tim((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt draw_imageqscC stS(s override this method for renderers that do not necessarily want to rescale and composite raster images. (like SVG) (R,(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytoption_image_nocompositescC stS(s override this method for renderers that support arbitrary scaling of image (most of the vector backend). (R,(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytoption_scale_imagessTeX!c C s&|j||||||dddS(s tismathtTeXN(t_draw_text_as_path(RR%R5R6R tproptangleR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytdraw_texscC s#|j|||||||dS(sT Draw the text instance *gc* the :class:`GraphicsContextBase` instance *x* the x location of the text in display coords *y* the y location of the text in display coords *s* a :class:`matplotlib.text.Text` instance *prop* a :class:`matplotlib.font_manager.FontProperties` instance *angle* the rotation angle in degrees **backend implementers note** When you are trying to determine if you have gotten your bounding box right (which is what enables the text layout/alignment to work properly), it helps to change the line in text.py:: if 0: bbox_artist(self, renderer) to if 1, and then the actual bounding box will be blotted along with your text. N(R(RR%R5R6R RRR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt draw_texts"c C s"|j}|j|j}|dkrQ|j||dtdt\} } n$|j||d|dt\} } t| | } |dd}|jrtj ||j ||j j |j ||j |} n8tj ||j ||j j |j ||} | | fS(s  return the text path and transform *prop* font property *s* text to be converted *usetex* If True, use matplotlib usetex mode. *ismath* If True, use mathtext parser. If "TeX", use *usetex* mode. RRtusetexgf@gz! @(Rtpoints_to_pixelstget_size_in_pointst get_text_pathR,tTrueRtflipyRtscalet FONT_SCALEtrotateR/theight( RR5R6R RRRt text2pathtfontsizetvertsR4R&R'((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt_get_text_path_transforms  '$ c C s^|j||||||\}} |jd } |jd|j||| d| dS(s> draw the text by converting them to paths using textpath module. *prop* font property *s* text to be converted *usetex* If True, use matplotlib usetex mode. *ismath* If True, use mathtext parser. If "TeX", use *usetex* mode. igR(N(Rtget_rgbRmR)( RR%R5R6R RRRR&R'tcolor((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs$ cC sU|dkra|j}|jj}|j}|j||d|\}}} ||| fS|jd} |jj} |r|jjj|| |\} } }}}| | |fS|jj}|jj |}|j}|j || |j |dd||j \}}|j } |d}|d}| d} ||| fS(s get the width and height, and the offset from the bottom to the baseline (descent), in display coords of the string s with :class:`~matplotlib.font_manager.FontProperties` prop RtrendereriHgtflagsgP@(RRtget_texmanagertget_text_width_height_descentRRtmathtext_parsertparset_get_hinting_flagt _get_fonttset_sizetset_texttget_width_heightt get_descent(RR RRtsizet texmanagerRtwthtdtdpit fontscaletwidthRtdescenttglyphstrectsRtfont((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs.     *      cC stS(s Return true if y small numbers are top for renderer Is used for drawing text (:mod:`matplotlib.text`) and images (:mod:`matplotlib.image`) only (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRscC sdS(s4return the canvas width and height in display coordsi(ii((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_canvas_width_height&scC s5|jdkr.ddlm}||_n|jS(sO return the :class:`matplotlib.texmanager.TexManager` instance i(t TexManagerN(RRtmatplotlib.texmanagerR(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR*scC stS(sF Return an instance of a :class:`GraphicsContextBase` (tGraphicsContextBase(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRk4scC s|S(s Convert points to display units *points* a float or a numpy array of float return points converted to pixels You need to override this function (unless your backend doesn't have a dpi, eg, postscript or svg). Some imaging systems assume some value for pixels per inch:: points to pixels = points * pixels_per_inch/72.0 * dpi/72.0 ((RRZ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR:scC s tj|S(N(tcbookt strip_math(RR ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRKscC sdS(sK Used in MixedModeRenderer. Switch to the raster renderer. N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytstart_rasterizingNscC sdS(s Used in MixedModeRenderer. Switch back to the vector renderer and draw the contents of the raster renderer as an image on the vector renderer. N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytstop_rasterizingTscC sdS(sj Used in AggRenderer. Switch to a temporary renderer for image filtering effects. N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt start_filter\scC sdS(s Used in AggRenderer. Switch back to the original renderer. The contents of the temporary renderer is processed with the *filter_func* and is drawn on the original renderer as an image. N((Rt filter_func((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt stop_filtercsN(#RRRRRR"R#R)R7RLRYR\RcR8R:R}RRRRR,RRRRRRRRkRRRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRZs>      #    Q      $ '  #        RcB s_eZdZid*d6dd+fd6dd,fd6dd-fd 6Zd Zd Zd Zd ZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZdZdZdZdZedZd Zd!Zd"Zd#Zd$Z d%Z!d&Z"d'Z#dd(Z$RS(.sI An abstract base class that provides color, line styles, etc... tsolidig@tdashedg@g@g?tdashdottdottedcC syd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS( Ng?itbutttroundRg(NN(ggg(t_alphat _antialiasedt _capstyleRt _cliprectt _clippatht_dashest _joinstylet _linestylet _linewidtht_rgbt_hatcht_urlt_snap(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRzs            cC s|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j |_ |j |_ |j |_ |j |_ dS(sCopy properties from gc to selfN( RRRRRRRRRRRRR(RR%((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRls            cC sdS(s Restore the graphics context from the stack - needed only for backends that save graphics contexts on a stack N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRsscC s|jS(sb Return the alpha value used for blending - not supported on all backends (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_alphascC s|jS(s@Return true if the object should try to do antialiased rendering(R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_antialiasedscC s|jS(sT Return the capstyle as a string in ('butt', 'round', 'projecting') (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_capstylescC s|jS(s^ Return the clip rectangle as a :class:`~matplotlib.transforms.Bbox` instance (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_clip_rectanglescC s |jdk r|jjSdS(s Return the clip path in the form (path, transform), where path is a :class:`~matplotlib.path.Path` instance, and transform is an affine transform to apply to the path before clipping. N(NN(RRtget_transformed_path_and_affine(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_clip_paths cC s|jS(sN Return the dash information as an offset dashlist tuple. The dash list is a even size list that gives the ink on, ink off in pixels. See p107 of to PostScript `BLUEBOOK `_ for more info. Default value is None (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_dashess cC s|jS(sR Return the line join style as one of ('miter', 'round', 'bevel') (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_joinstylescC s|jS(s` Return the linestyle: one of ('solid', 'dashed', 'dashdot', 'dotted'). (R(Rtstyle((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_linestylescC s|jS(s= Return the line width in points as a scalar (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRSscC s|jS(s returns a tuple of three floats from 0-1. color can be a MATLAB format string, a html hex color string, or a rgb tuple (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRscC s|jS(s= returns a url if one is set, None otherwise (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_urlscC s|jS(s returns the snap setting which may be: * True: snap vertices to the nearest pixel center * False: leave vertices as-is * None: (auto) If the path contains only rectilinear line segments, round to the nearest pixel center (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_snaps cC s"|dkrd}n||_dS(s_ Set the alpha value used for blending - not supported on all backends g?N(RR(Rtalpha((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRns  cC s|rd|_n d|_dS(sK True if object should be drawn with antialiased rendering iiN(R(Rtb((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRqs cC s,|dkr||_ntd|dS(sQ Set the capstyle as a string in ('butt', 'round', 'projecting') RRt projectings!Unrecognized cap style. Found %sN(sbuttsroundR(Rt ValueError(Rtcs((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_capstyles  cC s ||_dS(sT Set the clip rectangle with sequence (left, bottom, width, height) N(R(Rt rectangle((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytset_clip_rectanglescC s ||_dS(s Set the clip path and transformation. Path should be a :class:`~matplotlib.transforms.TransformedPath` instance. N(R(RR&((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_clip_pathscC s||f|_dS(s Set the dash style for the gc. *dash_offset* is the offset (usually 0). *dash_list* specifies the on-off sequence as points. ``(None, None)`` specifies a solid line N(R(Rt dash_offsett dash_list((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRp&s cC s+|r||_ntjj||_dS(s Set the foreground color. fg can be a MATLAB format string, a html hex color string, an rgb unit tuple, or a float between 0 and 1. In the latter case, grayscale is used. The :class:`GraphicsContextBase` converts colors to rgb internally. If you know the color is rgb already, you can set ``isRGB=True`` to avoid the performace hit of the conversion N(RR[tcolorConvertertto_rgba(RR|tisRGB((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRo3s  cC s|||f|_dS(sI Set the foreground color to be a gray level with *frac* N(R(Rtfrac((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_graylevelBscC s,|dkr||_ntd|dS(sM Set the join style to be one of ('miter', 'round', 'bevel') tmiterRtbevels"Unrecognized join style. Found %sN(RsroundR(RR(Rtjs((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_joinstyleHs  cC s ||_dS(s- Set the linewidth in points N(R(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRmQscC sNy|j|\}}Wntd|nX||_|j||dS(sb Set the linestyle to be one of ('solid', 'dashed', 'dashdot', 'dotted'). sUnrecognized linestyle: %sN(tdashdRRRp(RRtoffsettdashes((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_linestyleWs  cC s ||_dS(s? Sets the url for links in compatible backends N(R(Rturl((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRrcscC s ||_dS(s Sets the snap setting which may be: * True: snap vertices to the nearest pixel center * False: leave vertices as-is * None: (auto) If the path contains only rectilinear line segments, round to the nearest pixel center N(R(Rtsnap((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytset_snapis cC s ||_dS(s2 Sets the hatch style for filling N(R(Rthatch((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_hatchvscC s|jS(s. Gets the current hatch style (R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt get_hatch|scC s&|jdkrdStj|j|S(s7 Returns a Path for the current hatch. N(RRRR(Rtdensity((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytget_hatch_pathsN(NN(g@g@(g@g@g?g@(g?g@(%RRRRRRRlRsRRRRRRRRRSRRRRnRqRRRRpR,RoRRRmRRrRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRmsJ                       t TimerBasecB seZdZdddZdZddZdZdZdZ dZ dZ e e e Z d Zed Ze eeZd Zd Zd ZdZdZRS(s A base class for providing timer events, useful for things animations. Backends need to implement a few specific methods in order to use their own timing mechanisms so that the timer events are integrated into their event loops. Mandatory functions that must be implemented: * _timer_start: Contains backend-specific code for starting the timer * _timer_stop: Contains backend-specific code for stopping the timer Optional overrides: * _timer_set_single_shot: Code for setting the timer to single shot operating mode, if supported by the timer object. If not, the Timer class itself will store the flag and the _on_timer method should be overridden to support such behavior. * _timer_set_interval: Code for setting the interval on the timer, if there is a method for doing so on the timer object. * _on_timer: This is the internal function that any timer object should call, which will handle the task of running all callbacks that have been set. Attributes: * interval: The time between timer events in milliseconds. Default is 1000 ms. * single_shot: Boolean flag indicating whether this timer should operate as single shot (run once and then stop). Defaults to False. * callbacks: Stores list of (func, args) tuples that will be called upon timer events. This list can be manipulated directly, or the functions add_callback and remove_callback can be used. cC sY|dkrg|_n ||_|dkr:d|_n ||_t|_d|_dS(Ni(Rt callbackst _intervalR,t_singlet_timer(RtintervalR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs       cC s|jdS(s1Need to stop timer and possibly disconnect timer.N(t _timer_stop(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt__del__scC s*|dk r|j|n|jdS(s Start the timer object. `interval` is optional and will be used to reset the timer interval first if provided. N(Rt set_intervalt _timer_start(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytstarts cC s|jdS(s! Stop the timer. N(R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytstopscC sdS(N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRscC sdS(N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRscC s|jS(N(R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt _get_intervalscC s#t|}||_|jdS(N(tintRt_timer_set_interval(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt _set_intervals  cC s|jS(N(R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt_get_single_shotscC s||_|jdS(N(Rt_timer_set_single_shot(Rtss((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt_set_single_shots cO s|jj|||fdS(s Register `func` to be called by timer when the event fires. Any additional arguments provided will be passed to `func`. N(RR9(Rtfunctargstkwargs((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt add_callbackscO st|s |r(|jj|||fnHg|jD]}|d^q2}||krp|jj|j|ndS(s Remove `func` from list of callbacks. `args` and `kwargs` are optional and used to distinguish between copies of the same function registered to be called with different arguments. iN(Rtremovetpoptindex(RRRRtctfuncs((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytremove_callbacks    cC sdS(s0Used to set interval on underlying timer object.N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR scC sdS(s3Used to set single shot on underlying timer object.N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR scC szxQ|jD]F\}}}|||}|tkr |jj|||fq q Wt|jdkrv|jndS(s Runs all function that have been registered as callbacks. Functions can return False if they should not be called any more. If there are no callbacks, the timer is automatically stopped. iN(RR,RR-R(RRRRtret((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt _on_timers   N(RRRRRRRRRRRR tpropertyRR RRt single_shotRRR R R(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs$           tEventcB seZdZddZRS(su A matplotlib event. Attach additional attributes as defined in :meth:`FigureCanvasBase.mpl_connect`. The following attributes are defined and shown with their default values *name* the event name *canvas* the FigureCanvas instance generating the event *guiEvent* the GUI event that triggered the matplotlib event cC s||_||_||_dS(N(tnametcanvastguiEvent(RRRR ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR%s  N(RRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRst IdleEventcB seZdZRS(sc An event triggered by the GUI backend when it is idle -- useful for passive animation (RRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR!*st DrawEventcB seZdZdZRS(s An event triggered by a draw operation on the canvas In addition to the :class:`Event` attributes, the following event attributes are defined: *renderer* the :class:`RendererBase` instance for the draw event cC s tj|||||_dS(N(RRR(RRRR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR;s(RRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR"1s t ResizeEventcB seZdZdZRS(s An event triggered by a canvas resize In addition to the :class:`Event` attributes, the following event attributes are defined: *width* width of the canvas in pixels *height* height of the canvas in pixels cC s/tj||||j\|_|_dS(N(RRRRR(RRR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRLs(RRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR#?s t CloseEventcB seZdZddZRS(s An event triggered by a figure being closed In addition to the :class:`Event` attributes, the following event attributes are defined: cC stj||||dS(N(RR(RRRR ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRVsN(RRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR$Pst LocationEventcB sGeZdZdZdZdZdZdZdZ ddZ dZ RS(s% An event that has a screen location The following additional attributes are defined and shown with their default values. In addition to the :class:`Event` attributes, the following event attributes are defined: *x* x position - pixels from left of canvas *y* y position - pixels from bottom of canvas *inaxes* the :class:`~matplotlib.axes.Axes` instance if mouse is over axes *xdata* x coord of mouse in data coords *ydata* y coord of mouse in data coords c C stj|||d|||_||_|dksC|dkrZd|_|jdS|jjdkrg|jj j D]}|j |r|^q}n|jjg}t |dkrd|_|jdSt |dkrd}|j ||d|_n |d|_y+|jjjj||f\} } Wn#tk rpd|_d|_nX| |_| |_|jdS(s? *x*, *y* in figure coords, 0,0 = bottom, left R NiicS st|j|jS(N(tcmptzorder(t_xt_y((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytsi(RRR5R6Rtinaxest_update_enter_leaveRt mouse_grabbertfiguretget_axestin_axesR-tsortt transDatatinvertedttransform_pointRtxdatatydata( RRRR5R6R tat axes_listtaxCmpR5R6((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR|s6    7     +     cC stjdk rtj}|j|jkry,|jdk rU|jjjd|nWnnX|jdk r|jjjd|qqn(|jdk r|jjjd|n|t_dS(s*process the figure/axes enter leave eventstaxes_leave_eventtaxes_enter_eventN(R%t lasteventRR+RRtprocess(Rtlast((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR,s N( RRRRR5R6R+R5R6R<RR,(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR%Ys ,t MouseEventcB sMeZdZdZdZdZdZdZdZ dZ dddddZ RS(s A mouse event ('button_press_event', 'button_release_event', 'scroll_event', 'motion_notify_event'). In addition to the :class:`Event` and :class:`LocationEvent` attributes, the following attributes are defined: *button* button pressed None, 1, 2, 3, 'up', 'down' (up and down are used for scroll events) *key* the key pressed: None, chr(range(255), 'shift', 'win', or 'control' *step* number of scroll steps (positive for 'up', negative for 'down') Example usage:: def on_press(event): print 'you pressed', event.button, event.xdata, event.ydata cid = fig.canvas.mpl_connect('button_press_event', on_press) ic C s>tj|||||d|||_||_||_dS(sn x, y in figure coords, 0,0 = bottom, left button pressed None, 1, 2, 3, 'up', 'down' R N(R%Rtbuttontkeytstep( RRRR5R6R@RARBR ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs  N( RRRRR5R6R@R+R5R6RBR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR?st PickEventcB seZdZddZRS(sw a pick event, fired when the user picks a location on the canvas sufficiently close to an artist. Attrs: all the :class:`Event` attributes plus *mouseevent* the :class:`MouseEvent` that generated the pick *artist* the :class:`~matplotlib.artist.Artist` picked other extra class dependent attrs -- eg a :class:`~matplotlib.lines.Line2D` pick may define different extra attributes than a :class:`~matplotlib.collections.PatchCollection` pick event Example usage:: line, = ax.plot(rand(100), 'o', picker=5) # 5 points tolerance def on_pick(event): thisline = event.artist xdata, ydata = thisline.get_data() ind = event.ind print 'on pick line:', zip(xdata[ind], ydata[ind]) cid = fig.canvas.mpl_connect('pick_event', on_pick) cK s<tj||||||_||_|jj|dS(N(RRt mouseeventtartistt__dict__tupdate(RRRRDRER R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs  N(RRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRCs tKeyEventcB s eZdZddddZRS(sj A key event (key press, key release). Attach additional attributes as defined in :meth:`FigureCanvasBase.mpl_connect`. In addition to the :class:`Event` and :class:`LocationEvent` attributes, the following attributes are defined: *key* the key pressed: None, chr(range(255), shift, win, or control This interface may change slightly when better support for modifier keys is included. Example usage:: def on_key(event): print 'you pressed', event.key, event.xdata, event.ydata cid = fig.canvas.mpl_connect('key_press_event', on_key) icC s,tj|||||d|||_dS(NR (R%RRA(RRRRAR5R6R ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR4sN(RRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRHstFigureCanvasBasecB sseZdZddddddddd d d d d ddgZdZdZdZdZdSdZ dZ dZ dZ dSdZ dSdZdSdZdZdSdZdSdZdSdZdSdZdSd ZdSd!ZdSd"Zd#Zd$Zd%Zd&Zd'Zd(Zi d)d*6d+d,6d-d.6d/d06d1d26d3d46d3d56d6d76d6d86Zd9Zd:Z d;Z!d<Z"d=Z#d>Z$e$Z%Z&d?Z'd@Z(dAZ)dBZ*dCZ+dSdDdDdEdSdFZ,dGZ-dHZ.dIZ/dJZ0dKZ1dLZ2dMZ3dNZ4dOZ5dPdQZ6dRZ7RS(Ts The canvas the figure renders into. Public attributes *figure* A :class:`matplotlib.figure.Figure` instance t resize_eventt draw_eventtkey_press_eventtkey_release_eventtbutton_press_eventtbutton_release_eventt scroll_eventtmotion_notify_eventt pick_eventt idle_eventtfigure_enter_eventtfigure_leave_eventR;R:t close_eventcC s|j|||_tj|j|_tj|_d|_ d|_ d\|_ |_ |jd|j|_|jd|j|_d|_tr|jd|jndS(NRNRPRQ(NN(t set_canvasR.RtCallbackRegistryteventsRtwidgetstLockDrawt widgetlockRt_buttont_keyt_lastxt_lastyt mpl_connecttpicktbutton_pick_idtscroll_pick_idR-R,tonHilite(RR.((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRWs     cC sd}||jj|}d}|r:|d}nxf|rdG|GH|jrf|jPnd}x*|D]"}||jkrs|}PqsqsW|}q=WdS(s Mouse event processor which removes the top artist under the cursor. Connect this to the 'mouse_press_event' using:: canvas.mpl_connect('mouse_press_event',canvas.onRemove) cS sIg|D]}|j|f^q}|jg|D]\}}|^q3S(N(R'R1(tartistsRtLR'((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt sort_artistsss" itRemovingN(R.thitlistRRt draw_idlet get_children(RtevRhtunderRtparenttp((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytonRemoveks        cC st|dst|_n|jj|}g|D]}||jkr7|^q7}g|jD]}||krb|^qb}x|D]x}t|dr|j|j|nBt|dr|j|j|d|j|j|dn|j|=qWxq|D]i}t|dr5|j|j||jr|||kr|jtj ||d7}qPWdS(s' Start an event loop. This is used to start a blocking event loop so that interactive functions, such as ginput and waitforbuttonpress, can wait for events. This should not be confused with the main GUI event loop, which is always running and has nothing to do with this. This function provides default event loop functionality based on time.sleep that is meant to be used until event loop functions for each of the GUI backends can be written. As such, it throws a deprecated warning. Call signature:: start_event_loop_default(self,timeout=0) This call blocks until a callback function triggers stop_event_loop() or *timeout* is reached. If *timeout* is <=0, never timeout. s0Using default event loop until function specifics to this GUI is implementedig{Gz?iN( twarningstwarntDeprecationWarningRPtinfRt_loopingRttimetsleep(RRtstrttimesteptcounter((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytstart_event_loop_defaults     cC s t|_dS(s Stop an event loop. This is used to stop a blocking event loop so that interactive functions, such as ginput and waitforbuttonpress, can wait for events. Call signature:: stop_event_loop_default(self) N(R,R(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytstop_event_loop_default3s N(8RRRRYRRqReRbRRRRKRJRVRLRMRRRPRNRORQRRRSRRRRkRRRRRRRRRt print_bmpt print_rgbRRRRRRRRRRaRRRRRRR(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRI:s    " +                              /   "tFigureManagerBasecB sMeZdZdZdZdZdZdZdZdZ RS(s Helper class for pyplot mode, wraps everything up into a neat bundle Public attibutes: *canvas* A :class:`FigureCanvasBase` instance *num* The figure nuamber cC s5||_||_||_|jjd|jdS(NRL(RRtnumRat key_press(RRR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRMs   cC sdS(N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytdestroyTscC sdS(N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytfull_screen_toggleWscC sdS(s)For gui backends: resize window in pixelsN((RRR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRZscC s|jdkrdStd}td}td}td}td}td}td}td} td } td } td } |j|kr|jn|j|kr|jjjn|j|kr|jjjn|j|kr|jjjnf|j|kr%|jjj nD|j|krG|jjj n"|j|kri|jjj n|j dkr|dS|j| kr|j j |jjn|j| kr'|j } | j}|d kr| jd | jjjq|d kr| jd | jjjqn_|j| kr|j } | j}|d krw| jd | jjjq|d kr| jd | jjjqn|jjr|jdks|j| kr|j| krt|jd}nxt|jjjD]n\}}|jdk r|jdk r|j|r|j| kri|jtq|j||kqqWndS(Nskeymap.fullscreens keymap.homes keymap.backskeymap.forwards keymap.pans keymap.zooms keymap.saves keymap.grids keymap.yscales keymap.xscaleskeymap.all_axestlogtlineart0i(RARRRRttoolbarthometbacktforwardtpantzoomt save_figureR+tgridRt get_yscalet set_yscaleR.t get_xscalet set_xscaletisdigitRt enumerateR/R5R6R0t set_navigateR(RRtfullscreen_keyst home_keyst back_keyst forward_keystpan_keyst zoom_keyst save_keyst grid_keysttoggle_yscale_keysttoggle_xscale_keystallRRtscalextnRjR7((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR^sv                         -%cC sdS(s8 Display message in a popup -- GUI only N((Rtmsg((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt show_popupscC sdS(s Set the title text of the window containing the figure. Note that this has no effect if there is no window (eg, a PS backend). N((RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs( RRRRRRRRR$R(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRAs      ] tCursorscB s eZed\ZZZZRS(i(RRtrangetHANDtPOINTERt SELECT_REGIONtMOVE(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR%stNavigationToolbar2cB s eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZRS(s Base class for the navigation cursor, version 2 backends must implement a canvas that handles connections for 'button_press_event' and 'button_release_event'. See :meth:`FigureCanvasBase.mpl_connect` for more information They must also define :meth:`save_figure` save the current figure :meth:`set_cursor` if you want the pointer icon to change :meth:`_init_toolbar` create your toolbar widget :meth:`draw_rubberband` (optional) draw the zoom to rect "rubberband" rectangle :meth:`press` (optional) whenever a mouse button is pressed, you'll be notified with the event :meth:`release` (optional) whenever a mouse button is released, you'll be notified with the event :meth:`dynamic_update` (optional) dynamically update the window while navigating :meth:`set_message` (optional) display message :meth:`set_history_buttons` (optional) you can change the history back / forward buttons to indicate disabled / enabled state. That's it, we'll do the rest! cC s||_||_tj|_tj|_d|_d|_d|_ d|_ d|_ |j |jj d|j|_g|_d|_d|_d|_|jdS(NRQR(RRRtStackt_viewst _positionsRt_xypresst_idPresst _idReleaseRrt _lastCursort _init_toolbarRat mouse_movet_idDragt _ids_zoomt _zoom_modet_button_pressedtmodetset_history_buttons(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRs             cC sdS(s-display a message on toolbar or in status barN((RR ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt set_message scG s2|jj|jj|j|jdS(smove back up the view lim stackN(R-R R.R:t _update_view(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR  s   cC sdS(N((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytdynamic_update scC sdS(s3draw a rectangle rubberband to indicate zoom limitsN((RRtx0ty0tx1ty1((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytdraw_rubberband scG s2|jj|jj|j|jdS(s"move forward in the view lim stackN(R-R R.R:R<(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR # s   cG s2|jj|jj|j|jdS(srestore the original viewN(R-RR.R:R<(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR* s   cC s tdS(s This is where you actually build the GUI widgets (called by __init__). The icons ``home.xpm``, ``back.xpm``, ``forward.xpm``, ``hand.xpm``, ``zoom_to_rect.xpm`` and ``filesave.xpm`` are standard across backends (there are ppm versions in CVS also). You just need to set the callbacks home : self.home back : self.back forward : self.forward hand : self.pan zoom_to_rect : self.zoom filesave : self.save_figure You only need to define the last one - the others are in the base class implementation. N(R$(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR31 scC sv|j s|j rH|jtjkr|jtjtj|_qn|jdkr|jtjkr|jtjtj|_qn@|jdkr|jtjkr|jtjtj|_n|jrb|jjrby|jj |j |j }Wn!t k rqrt k r%qrXt|jrR|jd|j|fqr|j|n|j|jdS(NtZOOMtPANs%s, %s(R+RrR2tcursorsR(t set_cursorR)R*t get_navigatet format_coordR5R6Rt OverflowErrorR-R9R;(RRR ((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR4G s.  cG s9|jdkrd|_n d|_|jdk rW|jj|j|_d|_n|jdk r|jj|j|_d|_n|jr|jjd|j|_|jjd|j |_d|_|jj |n|jj j |x*|jj j D]}|j|jq W|j|jdS(sAActivate the pan/zoom tool. pan with left button, zoom with rightRDRRNROspan/zoomN(RrRR0RRR9R1Rat press_pant release_panR\treleaseR.R/tset_navigate_modeR;(RRR7((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR e s(        cC sdS(s5this will be called whenver a mouse button is pressedN((RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytpress scC sE|jdkrd|_n(|jdkr6d|_n d|_dS|j|j}}|jjrr|jng|_xt |j j j D]\}}|dk r|dk r|j |r|jr|j|||j|jj||f|j j|j|j jd|j|_qqW|j|dS(s0the press mouse button in pan/zoom mode callbackiiNRQ(R@R8RR5R6R-temptyt push_currentR/RRR.R/R0RGt start_panR9RR5Ratdrag_panRN(RRR5R6RjR7((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRJ s"     %3"c C s|jdkrd|_n(|jdkr6d|_n d|_dS|j|j}}|jjrr|jng|_xt |j j j D]\}}|dk r|dk r|j |r|jr|jr|jj|||||jj|jjfqqW|j jd|j}|j jd|j}|j jd|j}|||f|_|j|_|j|dS(s4the press mouse button in zoom to rect mode callbackiiNRQRLRM(R@R8RR5R6R-RORPR/RRR.R/R0RGtcan_zoomR9tviewLimR]R2Rat drag_zoomt_switch_on_zoom_modet_switch_off_zoom_modeR6RAR7RN( RRR5R6RjR7tid1tid2tid3((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt press_zoom s,     %';     cC s|j|_|j|dS(N(RAR7R4(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRV s cC sd|_|j|dS(N(RR7R4(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRW s cC sg}g}x|jjjD]q}|j\}}|j\}}|j||||f|j|jtj|jjfqW|j j ||j j ||j dS(s8push the current view limits and position onto the stackN( RR.R/tget_xlimtget_ylimR9t get_positionRR]R-tpushR.R:(RtlimstposR7txmintxmaxtymintymax((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRP scC sdS(s5this will be called whenever mouse button is releasedN((RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRL scC s|jdkrdS|jj|j|jjd|j|_x!|jD]\}}|jqKW|jsrdSg|_d|_|j |j ||j dS(s2the release mouse button callback in pan/zoom modeNRQ( R8RRRR5RaR4R/tend_panRPRLR(RRR7tind((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRK s     cC sJx9|jD].\}}|j|j|j|j|jq W|jdS(s"the drag callback in pan/zoom modeN(R/RRR8RAR5R6R=(RRR7Rg((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRR s&cC sC|jr?|j|j}}|jd\}}}}}} |jj\} } } } tt||| tt||| }}tt||| tt||| }}|jdkr|jj\} } } } | | }}n7|jdkr#|jj\} } } } | | }}n|j|||||ndS(sthe drag callback in zoom modeiR5R6N( R/R5R6RtextentsRdtminR7RB(RRR5R6tlastxtlastyR7RgtlimR2R@RAtx2ty2((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRU s 11cC sx!|jD]}|jj|q Wg|_|js:dSg}xT|jD]I}|j|j}}|\}}} } } } t||dkst||dkrd|_|j||j dS| j \} }}}| j j }|j ||f\}}|j ||f\}}| j\}}| j\}}tt}}|rxS|D]H}| jj| |rt}n| jj| |rct}qcqcWn|j| |r||} }n||kr7||kr||} }n ||} }| |kr|} n||kr|}qnS||krS||} }n ||} }| |kru|} n||kr|}n|r||}}n||kr||kr||}}n ||}}||kr|}n||krU|}qUnS||kr||}}n ||}}||kr@|}n||krU|}n|jdkr|jdkr| j| |fq|jdkr| j||fq| j| |f| j||fqJ|jdkrJ| jdkrMtj||tj|| }t|| ||}t|| ||}n6|||| }||| |}||| |}| jdkrtj||tj||}t||||}t||||}n6||||}||||}||||}|jdkrE| j||fq|jdkrj| j||fq| j||f| j||fqJqJW|j d|_d|_d|_|j|j|dS(s6the release mouse button callback in zoom to rect modeNiiR5R6iR( R6RRR/R5R6tabsRRLRRhR2R3R4R\R]R,tget_shared_x_axestjoinedRtget_shared_y_axesR9R8R7tset_xlimtset_ylimRRPRtpowRRP(RRtzoom_idtlast_at cur_xypressR5R6RjRkR7RgRlR2R>R?R@RAtinversetXmintXmaxtYmintYmaxttwinxttwinytlaRtrx1trx2try1try2((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyt release_zoom s  ,                         $$     cC sx|jjjD]}t|dd}t|dd}g}|dk rx|j|j|j|jn|dk r|j|j|j|jnx|D]}|jqWqW|jj dS(s(redraw the canvases, update the locatorstxaxistyaxisN( RR.R/RRR9tget_major_locatortget_minor_locatortrefreshR(RR7RRtlocatorstloc((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR} s   c C s|j}|dkrdS|j}|dkr8dSxt|jjjD]x\}}||\}}}}|j||f|j||f|j ||dd|j ||ddqQW|j dS(s_update the viewlim and position from the view and position stack for each axes Nitoriginalitactive( R-RR.RRR.R/RsRtt set_positionR( RR`RaRjR7RbRcRdRe((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR< s    %cG s tdS(ssave the current figureN(R$(RR((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR  scC sdS(s\ Set the current cursor to one of the :class:`Cursors` enums values N((Rtcursor((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRF scC s(|jj|jj|jdS(sreset the axes stackN(R-tclearR.R:(R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyRG s  cG s9|jdkrd|_n d|_|jdk rW|jj|j|_d|_n|jdk r|jj|j|_d|_n|jr|jjd|j|_|jjd|j |_d|_|jj |n|jj j |x*|jj j D]}|j|jq W|j|jdS(sactivate zoom to rect modeRCRRNROs zoom rectN(RrRR0RRR9R1RaR[RR\RLR.R/RMR;(RRR7((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR  s$      cC sdS(s%enable or disable back/forward buttonN((R((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR: s(RRRRR;R R=RBR RR3R4R RNRJR[RVRWRPRLRKRRRURRR<R RFRGR R:(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pyR+s:*            #       l      (4Rt __future__RRRRtnumpyRPtmatplotlib.cbookRtmatplotlib.colorsR[tmatplotlib.transformsR.tmatplotlib.widgetsRZt matplotlibRRtmatplotlib._pylab_helpersRRRRRtmatplotlib.tight_bboxRtmatplotlib.textpathRtmatplotlib.pathRRR tobjectR RRRRR!R"R#R$R%R?RCRHRIRR%RER+(((sK/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/backend_bases.pytsR$    m-(