/usr/lib64/python2.6/site-packages/matplotlib
NameSizeModeActions
backends/-0755rm
delaunay/-0755rm
mpl-data/-0755rm
numerix/-0755rm
projections/-0755rm
sphinxext/-0755rm
afm.py150890644editdlrm
afm.pyc169590644editdlrm
afm.pyo169590644editdlrm
artist.py356230644editdlrm
artist.pyc403260644editdlrm
artist.pyo403260644editdlrm
axes.py2800890644editdlrm
axes.pyc2493960644editdlrm
axes.pyo2482840644editdlrm
axis.py573540644editdlrm
axis.pyc589730644editdlrm
axis.pyo586660644editdlrm
backend_bases.py723180644editdlrm
backend_bases.pyc779670644editdlrm
backend_bases.pyo778770644editdlrm
bezier.py149170644editdlrm
bezier.pyc135260644editdlrm
bezier.pyo135260644editdlrm
blocking_input.py136900644editdlrm
blocking_input.pyc143460644editdlrm
blocking_input.pyo140280644editdlrm
cbook.py427560644editdlrm
cbook.pyc567550644editdlrm
cbook.pyo565290644editdlrm
cm.py80980644editdlrm
cm.pyc97720644editdlrm
cm.pyo97720644editdlrm
collections.py407840644editdlrm
collections.pyc440060644editdlrm
collections.pyo440060644editdlrm
colorbar.py274560644editdlrm
colorbar.pyc254970644editdlrm
colorbar.pyo254970644editdlrm
colors.py391100644editdlrm
colors.pyc400790644editdlrm
colors.pyo400790644editdlrm
contour.py428950644editdlrm
contour.pyc360990644editdlrm
contour.pyo359370644editdlrm
dates.py360070755editdlrm
dates.pyc400170644editdlrm
dates.pyo399530644editdlrm
dviread.py320330644editdlrm
dviread.pyc346820644editdlrm
dviread.pyo345390644editdlrm
figure.py412640644editdlrm
figure.pyc429390644editdlrm
figure.pyo428080644editdlrm
finance.py205820644editdlrm
finance.pyc185190644editdlrm
finance.pyo183590644editdlrm
fontconfig_pattern.py64290644editdlrm
fontconfig_pattern.pyc65190644editdlrm
fontconfig_pattern.pyo65190644editdlrm
font_manager.py426530644editdlrm
font_manager.pyc404560644editdlrm
font_manager.pyo404560644editdlrm
ft2font.so3061680775editdlrm
hatch.py65640644editdlrm
hatch.pyc91200644editdlrm
hatch.pyo91200644editdlrm
image.py315400644editdlrm
image.pyc330420644editdlrm
image.pyo329960644editdlrm
legend.py323020644editdlrm
legend.pyc235510644editdlrm
legend.pyo233780644editdlrm
lines.py546850644editdlrm
lines.pyc564310644editdlrm
lines.pyo563260644editdlrm
mathtext.py1020090644editdlrm
mathtext.pyc1030670644editdlrm
mathtext.pyo1026790644editdlrm
mlab.py942940644editdlrm
mlab.pyc1000040644editdlrm
mlab.pyo998240644editdlrm
mpl.py7850644editdlrm
mpl.pyc11760644editdlrm
mpl.pyo11760644editdlrm
nxutils.so95120775editdlrm
offsetbox.py298070644editdlrm
offsetbox.pyc338890644editdlrm
offsetbox.pyo338340644editdlrm
patches.py1284850644editdlrm
patches.pyc1301480644editdlrm
patches.pyo1300100644editdlrm
path.py217650644editdlrm
path.pyc211740644editdlrm
path.pyo209540644editdlrm
pylab.py109810644editdlrm
pylab.pyc123990644editdlrm
pylab.pyo123990644editdlrm
pyparsing.py1439240644editdlrm
pyparsing.pyc1467370644editdlrm
pyparsing.pyo1467370644editdlrm
pyplot.py824680644editdlrm
pyplot.pyc802790644editdlrm
pyplot.pyo802790644editdlrm
quiver.py375400644editdlrm
quiver.pyc337880644editdlrm
quiver.pyo337880644editdlrm
rcsetup.py234340644editdlrm
rcsetup.pyc211190644editdlrm
rcsetup.pyo209490644editdlrm
scale.py142330644editdlrm
scale.pyc194740644editdlrm
scale.pyo194740644editdlrm
spines.py126840644editdlrm
spines.pyc116360644editdlrm
spines.pyo112090644editdlrm
table.py168280644editdlrm
table.pyc169310644editdlrm
table.pyo167800644editdlrm
texmanager.py224640644editdlrm
texmanager.pyc199620644editdlrm
texmanager.pyo199620644editdlrm
text.py598220644editdlrm
text.pyc592400644editdlrm
text.pyo592400644editdlrm
ticker.py404280644editdlrm
ticker.pyc504610644editdlrm
ticker.pyo503250644editdlrm
tight_bbox.py36550644editdlrm
tight_bbox.pyc40660644editdlrm
tight_bbox.pyo40660644editdlrm
transforms.py753870644editdlrm
transforms.pyc896110644editdlrm
transforms.pyo887020644editdlrm
ttconv.so653600775editdlrm
type1font.py115370644editdlrm
type1font.pyc112560644editdlrm
type1font.pyo112560644editdlrm
units.py49760644editdlrm
units.pyc57750644editdlrm
units.pyo57750644editdlrm
widgets.py408330644editdlrm
widgets.pyc425680644editdlrm
widgets.pyo423820644editdlrm
windowing.py4540644editdlrm
windowing.pyc12830644editdlrm
windowing.pyo12830644editdlrm
_cm.py3704140644editdlrm
_cm.pyc1030420644editdlrm
_cm.pyo1030420644editdlrm
_cntr.so211840775editdlrm
_delaunay.so611200775editdlrm
_image.so2822480775editdlrm
_mathtext_data.py579900644editdlrm
_mathtext_data.pyc637870644editdlrm
_mathtext_data.pyo637870644editdlrm
_path.so2799920775editdlrm
_png.so1564720775editdlrm
_pylab_helpers.py27150644editdlrm
_pylab_helpers.pyc37080644editdlrm
_pylab_helpers.pyo37080644editdlrm
__init__.py289720644editdlrm
__init__.pyc289800644editdlrm
__init__.pyo289260644editdlrm
Edit: /usr/lib64/python2.6/site-packages/matplotlib/transforms.pyc (89611B)
Jc@sdZddkZddklZddklZddklZddkl Z ddk Z ye Wn#e j oddk lZ nXddkZddklZdd klZlZeZeoddk Z neiZd efd YZd efd YZdefdYZdefdYZdefdYZdefdYZdefdYZdefdYZ de fdYZ!de fdYZ"defdYZ#d e fd!YZ$d"Z%d#efd$YZ&d%e fd&YZ'd'Z(d(e fd)YZ)d*e fd+YZ*d,e fd-YZ+d.e fd/YZ,d0efd1YZ-d2d3e.d4Z/d5Z0d6Z1d7d7d8d9Z2dS(:s matplotlib includes a framework for arbitrary geometric transformations that is used determine the final position of all elements drawn on the canvas. Transforms are composed into trees of :class:`TransformNode` objects whose actual value depends on their children. When the contents of children change, their parents are automatically invalidated. The next time an invalidated transform is accessed, it is recomputed to reflect those changes. This invalidation/caching approach prevents unnecessary recomputations of transforms, and contributes to better interactive performance. For example, here is a graph of the transform tree used to plot data to the graph: .. image:: ../_static/transforms.png The framework can be used for both affine and non-affine transformations. However, for speed, we want use the backend renderers to perform affine transformations whenever possible. Therefore, it is possible to perform just the affine or non-affine part of a transformation on a set of data. The affine is always assumed to occur after the non-affine. For any transform:: full transform == non-affine part + affine part The backends are not expected to handle non-affine transformations themselves. iN(tma(taffine_transform(tinv(tWeakKeyDictionary(tSet(tPath(tcount_bboxes_overlapping_bboxtupdate_path_extentst TransformNodecBseZdZdZdZdZeeBZeZeZ eZ dZ dZ e Z dZdZeoeZdZeie_nd Zeogd Zn gd ZRS( sE :class:`TransformNode` is the base class for anything that participates in the transform tree and needs to invalidate its parents or be invalidated. This includes classes that are not really transforms, such as bounding boxes, since some transforms depend on bounding boxes to compute their values. iiicCst|_d|_dS(s7 Creates a new :class:`TransformNode`. iN(Rt_parentst_invalid(tself((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt__init__Ps cGstdddS(Ns+TransformNode instances can not be copied. s Consider using frozen() instead.(tNotImplementedError(R targs((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt__copy__]scCs|io |ip|i}|i|jodSt|ip||_dS|g}x^t|oP|i}|i|jp |io&|i|_|i|ii q\q\WdS(s Invalidate this :class:`TransformNode` and all of its ancestors. Should be called any time the transform changes. N( t is_affinetINVALID_AFFINEtINVALIDR tlenR tpopt pass_throughtextendtkeys(R tvaluetstacktroot((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt invalidatecs     cGs"x|D]}d|i| %s [label="%s", fontsize=10]; ( taddt __class__t__name__R tjointitemstwritethashthasattrR!t__dict__(RtpropsR't_[1]tkeytvalRtname(trecursetfobjtseent highlight(s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR8s8      @         s digraph G { s} N(tsetR/(R R9R;((R8R9R;R:s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytwrite_graphvizs   cCsdS(N((R R9R;((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR=s(R,t __module__t__doc__t_gidtINVALID_NON_AFFINERRtFalseRtis_bboxRR Rt __deepcopy__RRtDEBUGR R"R=(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR6s*      1tBboxBasecBseZdZeZeZeodZeeZndZ e ie _dZ dZ dZ ee dOdOdZdZeedOdOdZd ZeedOdOd Zd ZeedOdOd Zd ZeedOdOdZdZeedOdOdZdZeedOdOdZdZeedOdOdZdZeedOdOdZ dZ!ee!dOdOdZ"dZ#ee#dOdOdZ$dZ%ee%dOdOdZ&dZ'ee'dOdOdZ(dZ)ee)dOdOd Z*d!Z+ee+dOdOd"Z,d#Z-ee-dOdOd$Z.d%Z/ee/dOdOd&Z0d'Z1ee1dOdOd(Z2d)Z3ee3dOdOd*Z4d+Z5d,Z6d-Z7d.Z8d/Z9d0Z:d1Z;d2Z<d3Z=d4Z>d5Z?h dPd76dQd96dRd:6dSd<6dTd=6dUd>6dVd?6dWd@6dXdA6Z@dOdBZAdCZBdOd;dDZCdEZDdFZEdGZFdHZGdIZHdJZIdKZJdLZKdMZLedNZMRS(Ys This is the base class of all bounding boxes, and provides read-only access to its data. A mutable bounding box is provided by the :class:`Bbox` class. The canonical representation is as two points, with no restrictions on their ordering. Convenience properties are provided to get the left, bottom, right and top edges and width and height, but these are not stored explicity. cCswti|otidnti|}|d|ddjp|d|ddjotidndS( NsBbox bounds are a masked array.iisSingular Bbox.(ii(ii(ii(ii(Rt isMaskedArraytwarningstwarntnptasarray(tpoints((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_checks cCst|iiS(N(tBboxt get_pointstcopy(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"scOs |iS(N(RO(R Rtkwargs((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt __array__scCs(t|iiddddgjS(sk Returns True if the :class:`Bbox` is the unit bounding box from (0, 0) to (1, 1). gg?(tlistROtflatten(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytis_unitscCs|idS(Ni(ii(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_x0ss (property) :attr:`x0` is the first of the pair of *x* coordinates that define the bounding box. :attr:`x0` is not guaranteed to be less than :attr:`x1`. If you require that, use :attr:`xmin`.cCs|idS(Nii(ii(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_y0ss (property) :attr:`y0` is the first of the pair of *y* coordinates that define the bounding box. :attr:`y0` is not guaranteed to be less than :attr:`y1`. If you require that, use :attr:`ymin`.cCs|idS(Nii(ii(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_x1ss (property) :attr:`x1` is the second of the pair of *x* coordinates that define the bounding box. :attr:`x1` is not guaranteed to be greater than :attr:`x0`. If you require that, use :attr:`xmax`.cCs|idS(Ni(ii(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_y1ss (property) :attr:`y1` is the second of the pair of *y* coordinates that define the bounding box. :attr:`y1` is not guaranteed to be greater than :attr:`y0`. If you require that, use :attr:`ymax`.cCs|idS(Ni(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_p0ss (property) :attr:`p0` is the first pair of (*x*, *y*) coordinates that define the bounding box. It is not guaranteed to be the bottom-left corner. For that, use :attr:`min`.cCs|idS(Ni(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_p1ss (property) :attr:`p1` is the second pair of (*x*, *y*) coordinates that define the bounding box. It is not guaranteed to be the top-right corner. For that, use :attr:`max`.cCs t|idddfS(Ni(tminRO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_xmin#ssF (property) :attr:`xmin` is the left edge of the bounding box.cCs t|idddfS(Ni(R\RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_ymin(ssH (property) :attr:`ymin` is the bottom edge of the bounding box.cCs t|idddfS(Ni(tmaxRO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_xmax-ssG (property) :attr:`xmax` is the right edge of the bounding box.cCs t|idddfS(Ni(R_RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_ymax2ssE (property) :attr:`ymax` is the top edge of the bounding box.cCsBt|idddft|idddfgS(Nii(R\RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_min7ssV (property) :attr:`min` is the bottom-left corner of the bounding box.cCsBt|idddft|idddfgS(Nii(R_RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_max>ssL (property) :attr:`max` is the top-right corner of the bounding box.cCs|idddfS(Ni(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_intervalxDss (property) :attr:`intervalx` is the pair of *x* coordinates that define the bounding box. It is not guaranteed to be sorted from left to right.cCs|idddfS(Ni(RO(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_intervalyKss (property) :attr:`intervaly` is the pair of *y* coordinates that define the bounding box. It is not guaranteed to be sorted from bottom to top.cCs|i}|d|dS(Nii(ii(ii(RO(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_widthRs sj (property) The width of the bounding box. It may be negative if :attr:`x1` < :attr:`x0`.cCs|i}|d|dS(Nii(ii(ii(RO(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_heightYs sk (property) The height of the bounding box. It may be negative if :attr:`y1` < :attr:`y0`.cCs|i}|d|dS(Nii(RO(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_size`s s (property) The width and height of the bounding box. May be negative, in the same way as :attr:`width` and :attr:`height`.cCs6|ii\}}}}||||||fS(N(RORT(R tx0ty0tx1ty1((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_boundsgss\ (property) Returns (:attr:`x0`, :attr:`y0`, :attr:`width`, :attr:`height`).cCs|iiiS(N(RORTRP(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _get_extentsnssM (property) Returns (:attr:`x0`, :attr:`y0`, :attr:`x1`, :attr:`y1`).cCstS(N(R (R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyROsscCsM|i\}}||jo||jo ||jp||jo ||jS(s_ Returns True if *x* is between or equal to :attr:`x0` and :attr:`x1`. (t intervalx(R txRiRk((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt containsxvs cCsM|i\}}||jo||jo ||jp||jo ||jS(s_ Returns True if *y* is between or equal to :attr:`y0` and :attr:`y1`. (t intervaly(R tyRjRl((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt containsys cCs|i|o |i|S(sn Returns *True* if (*x*, *y*) is a coordinate inside the bounding box or on its edge. (RqRt(R RpRs((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytcontainssc Cs|i\}}}}|i\}}}} ||jo||}}n||jo||}}n||jo||}}n| |jo|| } }n||jp$| |jp||jp ||j S(si Returns True if this bounding box overlaps with the given bounding box *other*. (Rn( R tothertax1tay1tax2tay2tbx1tby1tbx2tby2((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytoverlapss       cCsM|i\}}||jo||jo ||jp||jo ||jS(sd Returns True if *x* is between but not equal to :attr:`x0` and :attr:`x1`. (Ro(R RpRiRk((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytfully_containsxs cCsM|i\}}||jot|jo t|jpt|jo t|jS(sd Returns True if *y* is between but not equal to :attr:`y0` and :attr:`y1`. (RrRp(R RsRjRl((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytfully_containsys cCs|i|o |i|S(sr Returns True if (*x*, *y*) is a coordinate inside the bounding box, but not on its edge. (RR(R RpRs((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytfully_containssc Cs|i\}}}}|i\}}}} ||jo||}}n||jo||}}n||jo||}}n| |jo|| } }n||jp$| |jp||jp ||j S(s Returns True if this bounding box overlaps with the given bounding box *other*, but not on its edge alone. (Rn( R RvRwRxRyRzR{R|R}R~((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytfully_overlapss       cCst|i|iS(sk Return a new :class:`Bbox` object, statically transformed by the given transform. (RNt transformRO(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt transformedscCst|ii|iS(sz Return a new :class:`Bbox` object, statically transformed by the inverse of the given transform. (RNtinvertedRRO(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytinverse_transformedsg?tCitSWtSg?tSEtEtNEtNtNWtWc Cs|djo |}n|i\}}}}t|to|i|\}}n |\}}|i\} } } } t|i|||| | |||| | gS(sS Return a copy of the :class:`Bbox`, shifted to position *c* within a container. *c*: may be either: * a sequence (*cx*, *cy*) where *cx* and *cy* range from 0 to 1, where 0 is left or bottom and 1 is right or top * a string: - 'C' for centered - 'S' for bottom-center - 'SE' for bottom-left - 'E' for left - etc. Optional argument *container* is the box within which the :class:`Bbox` is positioned; it defaults to the initial :class:`Bbox`. N(Rtboundst isinstancetstrtcoefsRNt_points( R tct containertltbtwthtcxtcytLtBRtH((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytanchoreds    cCs?|i\}}t|id|id||||ggS(s! Return a copy of the :class:`Bbox`, shrunk by the factor *mx* in the *x* direction and the factor *my* in the *y* direction. The lower left corner of the box remains unchanged. Normally *mx* and *my* will be less than 1, but this is not enforced. i(tsizeRNR(R tmxtmyRR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytshrunks cCs|djo |djpt|djo |}n|i\}}|||}||jo |}n|||}|}t|id|id||fgS(s Return a copy of the :class:`Bbox`, shrunk so that it is as large as it can be while having the desired aspect ratio, *box_aspect*. If the box coordinates are relative---that is, fractions of a larger box such as a figure---then the physical aspect ratio of that figure is specified with *fig_aspect*, so that *box_aspect* can also be given as a ratio of the absolute dimensions, not the relative dimensions. iN(tAssertionErrorRRRNR(R t box_aspectRt fig_aspectRRRR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytshrunk_to_aspects !     c Gsg}dgt|dg}|i\}}}}||}xZt|d |dD]A\} } |it|| ||g|| ||ggqZW|S(s e.g., ``bbox.splitx(f1, f2, ...)`` Returns a list of new :class:`Bbox` objects formed by splitting the original one with vertical lines at fractional positions *f1*, *f2*, ... iii(RSRntziptappendRN( R RtboxestxfRiRjRkRlRtxf0txf1((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytsplitx3s  9c Gsg}dgt|dg}|i\}}}}||}xZt|d |dD]A\} } |it||| |g||| |ggqZW|S(s e.g., ``bbox.splitx(f1, f2, ...)`` Returns a list of new :class:`Bbox` objects formed by splitting the original one with horizontal lines at fractional positions *f1*, *f2*, ... iii(RSRnRRRN( R RRtyfRiRjRkRlRtyf0tyf1((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytsplityCs  9c Cst|djodSti|}|i\}}}}ti|dddf|}ti|dddf|}ti|dddf|}ti|dddf|} t||t|| dj} ti| S(sx Count the number of vertices contained in the :class:`Bbox`. *vertices* is a Nx2 Numpy array. iNii(RRJRKRntsigntabstsum( R tverticesRiRjRkRltdx0tdy0tdx1tdy1tinside((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytcount_containsSs####$cCs t||S(s Count the number of bounding boxes that overlap this one. bboxes is a sequence of :class:`BboxBase` objects (R(R tbboxes((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytcount_overlapsdscCsj|i}|i}|||d}|||d}ti| | g||gg}t|i|S(s Return a new :class:`Bbox` which is this :class:`Bbox` expanded around its center by the given factors *sw* and *sh*. g@(twidththeightRJtarrayRNR(R tswtshRRtdeltawtdeltahta((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytexpandedls   #cCs.|i}t|| | g||ggS(si Return a new :class:`Bbox` that is padded on all four sides by the given value. (RORN(R tpRL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytpaddedys cCst|i||fS(se Return a copy of the :class:`Bbox`, statically translated by *tx* and *ty*. (RNR(R ttxtty((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt translatedscCsO|ii\}}}}ti||g||g||g||ggS(s Return an array of points which are the four corners of this rectangle. For example, if this :class:`Bbox` is defined by the points (*a*, *b*) and (*c*, *d*), :meth:`corners` returns (*a*, *b*), (*a*, *d*), (*c*, *b*) and (*c*, *d*). (RORTRJR(R RRtrtt((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytcornersscCsJ|i}ti|i|}ti}|i|dt|S(s Return a new bounding box that bounds a rotated version of this bounding box by the given radians. The new bounding box is still aligned with the axes, of course. tignore(RtAffine2DtrotateRRNtunittupdate_from_data_xytTrue(R tradiansRtcorners_rotatedtbbox((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytrotateds   c Cst|ptt|djo |dSti}ti}ti }ti }x|D]}|i}|dddf}|dddf}t|ti|}t|ti|}t|ti|}t|ti|}q]Wti||||S(sO Return a :class:`Bbox` that contains all of the given bboxes. iiN( RRRJtinfROR\R_RNt from_extents( RRiRjRkRlRRLtxstys((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytunions"      N(g?g?(ii(g?i(g?i(g?g?(g?g?(g?g?(ig?(ig?(NR,R>R?RRCRRERMt staticmethodR"RRRRURVtpropertyRRiRWRjRXRkRYRlRZtp0R[tp1R]txminR^tyminR`txmaxRatymaxRbR\RcR_RdRoReRrRfRRgRRhRRmRRntextentsRORqRtRuRRRRRRRRRRRRRRRRRRRRR(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRFs                                                                         !        RNcBs#eZdZdZeoeZdZdZneiddgddggei Z e dZ e dZ e dZd ZeZd Zdd Zdeed Zdeed ZdZeeieZdZeeieZdZeei eZ!dZ"eei#e"Z$dZ%eei&e%Z'dZ(eei)e(Z*dZ+eei,e+Z-dZ.eei/e.Z0dZ1eei2e1Z3dZ4ee4Z5dZ6ee6Z7dZ8ee8Z9dZ:dZ;dZ<RS(s! A mutable bounding box. cCsJti|ti|ti|_tiddg|_t|_ dS(s *points*: a 2x2 numpy array of the form [[x0, y0], [x1, y1]] If you need to create a :class:`Bbox` object from another form of data, consider the static methods :meth:`unit`, :meth:`from_bounds` and :meth:`from_extents`. gHz>N( RFR RJRKtfloat_RRt_minposRt_ignore(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s cCs|i||i|dS(N(RMt ___init__(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s cCs!|i|iti|dS(N(RMRRR(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRsgg?cCsttiiS(s_ (staticmethod) Create a new unit :class:`Bbox` from (0, 0) to (1, 1). (RNt _unit_valuesRP(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCsti||||||S(s (staticmethod) Create a new :class:`Bbox` from *x0*, *y0*, *width* and *height*. *width* and *height* may be negative. (RNR(RiRjRR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt from_boundsscGs.ti|dtiidd}t|S(s (staticmethod) Create a new Bbox from *left*, *bottom*, *right* and *top*. The *y*-axis increases upwards. tdtypei(RJRRtreshapeRN(RRL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs$cCsdt|iS(NsBbox(%s)(treprR(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt__repr__scCs ||_dS(s Set whether the existing bounds of the box should be ignored by subsequent calls to :meth:`update_from_data` or :meth:`update_from_data_xy`. *value*: - When True, subsequent calls to :meth:`update_from_data` will ignore the existing bounds of the :class:`Bbox`. - When False, subsequent calls to :meth:`update_from_data` will include the existing bounds of the :class:`Bbox`. N(R(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs\tidti|it|df|it|dff}|i||S(s Update the bounds of the :class:`Bbox` based on the passed in data. After updating, the bounds will have positive *width* and *height*; *x0* and *y0* will be the minimal values. *x*: a numpy array of *x*-values *y*: a numpy array of *y*-values *ignore*: - when True, ignore the existing bounds of the :class:`Bbox`. - when False, include the existing bounds of the :class:`Bbox`. - when None, use the last value passed to :meth:`ignore`. sRupdate_from_data requires a memory copy -- please replace with update_from_data_xyi(RHRIRJthstackRRR(R RpRsRtxy((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytupdate_from_datas?cCs|djo |i}n|iidjodSt|d|i|i|\}}}|o|i|o>|dddf|idddf<|d|id|dddf|idddf<|d|idR?R RERRRJRRRRRRRRt__str__RRRRRRRRRFRVRiRRWRjRRXRkRRYRlRRZRRR[RRRdRoRReRrRRmRRRR tminposxR tminposyROR R<(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRNsV   '    $                 tTransformedBboxcBsXeZdZdZdZeZdZeiie_eoeZ dZnRS(s A :class:`Bbox` that is automatically transformed by a given transform. When either the child bounding box or transform changes, the bounds of this bbox will update accordingly. cCs|iptt|tpt|idjpt|idjptti|||_||_ |i ||d|_ dS(s] *bbox*: a child :class:`Bbox` *transform*: a 2D :class:`Transform` iN( RCRRt Transformt input_dimst output_dimsRFR t_bboxt _transformRRR(R RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s   cCsd|i|ifS(NsTransformedBbox(%s, %s)(RR(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCsW|ioF|ii|ii}tii|d}||_d|_n|iS(Ngi( R RRRRORJRtfilledR(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyROs    cCs|i}|i||S(N(t _get_pointsRM(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyROs  ( R,R>R?R RR RORNRER(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs   RcBseZdZdZdZeZeZdZ dZ dZ dZ dZ dZdZdZd Zd Zd Zed d ZdZRS(s The base class of all :class:`TransformNode` instances that actually perform a transformation. All non-affine transformations should be subclasses of this class. New affine transformations should be subclasses of :class:`Affine2D`. Subclasses of this class should override the following members (at minimum): - :attr:`input_dims` - :attr:`output_dims` - :meth:`transform` - :attr:`is_separable` - :attr:`has_inverse` - :meth:`inverted` (if :meth:`has_inverse` can return True) If the transform needs to do something non-standard with :class:`mathplotlib.path.Path` objects, such as adding curves where there were once line segments, it should override: - :meth:`transform_path` cCs8t|tot||Stdt|dS(sc Composes two transforms together such that *self* is followed by *other*. s,Can not add Transform to object of type '%s'N(RRtcomposite_transform_factoryt TypeErrorttype(R Rv((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt__add__scCs8t|tot||Stdt|dS(sc Composes two transforms together such that *self* is followed by *other*. s,Can not add Transform to object of type '%s'N(RRRRR(R Rv((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt__radd__ scOs|iiS(sP Used by C/C++ -based backends to get at the array matrix data. (R"RR(R RRQ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRRscCs tdS(s Performs the transformation on the given array of values. Accepts a numpy array of shape (N x :attr:`input_dims`) and returns a numpy array of shape (N x :attr:`output_dims`). N(R (R tvalues((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs|S(s Performs only the affine part of this transformation on the given array of values. ``transform(values)`` is always equivalent to ``transform_affine(transform_non_affine(values))``. In non-affine transformations, this is generally a no-op. In affine transformations, this is equivalent to ``transform(values)``. Accepts a numpy array of shape (N x :attr:`input_dims`) and returns a numpy array of shape (N x :attr:`output_dims`). ((R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_affine&scCs |i|S(s Performs only the non-affine part of the transformation. ``transform(values)`` is always equivalent to ``transform_affine(transform_non_affine(values))``. In non-affine transformations, this is generally equivalent to ``transform(values)``. In affine transformations, this is always a no-op. Accepts a numpy array of shape (N x :attr:`input_dims`) and returns a numpy array of shape (N x :attr:`output_dims`). (R(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_non_affine7scCstS(s8 Get the affine part of this transform. (tIdentityTransform(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt get_affineGscCs:t||ijpt|iti|gdS(s  A convenience function that returns the transformed copy of a single point. The point is given as a sequence of length :attr:`input_dims`. The transformed point is returned as a sequence of length :attr:`output_dims`. i(RRRRRJRK(R tpoint((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_pointMs cCs"t|i|i|i|iS(s Returns a transformed copy of path. *path*: a :class:`~matplotlib.path.Path` instance. In some cases, this transform may insert curves into the path that began as line segments. (RRRtcodest_interpolation_steps(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_pathYs cCs|S(s Returns a copy of path, transformed only by the affine part of this transform. *path*: a :class:`~matplotlib.path.Path` instance. ``transform_path(path)`` is equivalent to ``transform_path_affine(transform_path_non_affine(values))``. ((R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_path_affinees cCs"t|i|i|i|iS(s! Returns a copy of path, transformed only by the non-affine part of this transform. *path*: a :class:`~matplotlib.path.Path` instance. ``transform_path(path)`` is equivalent to ``transform_path_affine(transform_path_non_affine(values))``. (RRRR#R$(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_path_non_affineqs gh㈵>c CsM|idjp|idjotdn|iddjptti|i|idjo|idjnpt|p|dti}n||titi |ti |f}|i |}|i |}||}ti |dddf|dddf} |p| dti} n| S(s Performs transformation on a set of angles anchored at specific locations. The *angles* must be a column vector (i.e., numpy array). The *pts* must be a two-column numpy array of x,y positions (angle transforms currently only work in 2D). This array must have the same number of rows as *angles*. *radians* indicates whether or not input angles are given in radians (True) or degrees (False; the default). *pushoff* is the distance to move away from *pts* for determining transformed angles (see discussion of method below). The transformed angles are returned in an array with the same size as *angles*. The generic version of this method uses a very generic algorithm that transforms *pts*, as well as locations very close to *pts*, to find the angle in the transformed system. isOnly defined in 2Diigf@N( RRR R&RRJtprodtpitc_tcostsinRtarctan2( R tanglestptsRtpushofftpts2ttptsttpts2tdR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyttransform_angles~s ?- 2cCs tdS(s, Return the corresponding inverse transformation. The return value of this method should be treated as temporary. An update to *self* does not cause a corresponding update to its inverted copy. ``x === self.inverted().transform(self.transform(x))`` N(R (R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs N(R,R>R?RRRRBt has_inverset is_separableRRRRRRRR R"R%R&R'R5R(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs$     9tTransformWrappercBseZdZeZeZdZdZeZ dZ e i ie _dZ dZ dZeeZdZeeZRS(s A helper class that holds a single child transform and acts equivalently to it. This is useful if a node of the transform tree must be replaced at run time with a transform of a different type. This class allows that replacement to correctly trigger invalidation. Note that :class:`TransformWrapper` instances must have the same input and output dimensions during their entire lifetime, so the child transform may only be replaced with another child transform of the same dimensions. cCsVt|tptti||i|_|i|_|i|d|_dS(st *child*: A class:`Transform` instance. This child may later be replaced with :meth:`set`. iN(RRRR RRt_setR (R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s     cCs d|iS(NsTransformWrapper(%r)(t_child(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs |iiS(N(R:R"(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"scCsz||_|i||i|_|i|_|i|_|i|_|i|_|i|_|i|_|i |_ dS(N( R:RRRRR%R&R'R R(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR9s         cCsa|i|ijpt|i|ijpt|i|d|_|id|_dS(s Replace the current child of this transform with another one. The new child must have the same number of input and output dimensions as the current child. iN(RRRR9R R(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR<s    cCs |iiS(N(R:R7(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_is_separablescCs |iiS(N(R:R6(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_has_inverse s(R,R>R?RRRBRR RR R"RR9R<R;RR7R<R6(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR8s       t AffineBasecBseZdZeZdZdZedZdZ dZ e i ie _dZ e i ie _dZ e i ie _dZe iie_RS( sW The base class of all affine transformations of any number of dimensions. cCsti|d|_dS(N(RR Rt _inverted(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s cOs |iS(N(t get_matrix(R RRQ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRRscCsti||S(sj Concatenates two transformation matrices (represented as numpy arrays) together. (RJtdot(RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_concatscCs tdS(sL Get the underlying transformation matrix as a numpy array. N(R (R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?&scCs|S(N((R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR,scCs |i|S(N(R%(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR&0scCs|S(N((R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR'4scCs|S(N((R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR 8s(R,R>R?RRR RRRRAR?RRR&R'R (((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR=s       t Affine2DBasecBseZdZdZdZdZeiie_dZeeZ dZ dZ e dZ dZdZeiie_eoeZd Zneiie_eZeiie_d Zeiie_RS( s The base class of all 2D affine transformations. 2D affine transformations are performed using a 3x3 numpy array:: a c e b d f 0 0 1 This class provides the read-only interface. For a mutable 2D affine transformation, use :class:`Affine2D`. Subclasses of this class will generally only need to override a constructor and :meth:`get_matrix` that generates a custom 3x3 matrix. icCst|iiS(N(RR?RP(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"VscCs+|i}|ddjo|ddjS(Niig(ii(ii(R?(R tmtx((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR;Zs cOs |iS(N(R?(R RRQ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRR_scCs,|i}t|d iddiS(sM Return the values of the matrix as a sequence (a,b,c,d,e,f) iii(R?ttupletswapaxesRT(R RC((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt to_valuesbs cCs7ti|||g|||gdddggtiS(s (staticmethod) Create a new transformation matrix as a 3x3 numpy array of the form:: a c e b d f 0 0 1 gg?(RJRR(RRRR4tetf((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytmatrix_from_valuesis cCsX|i}t|to/t|i|}ti|dti|St||S(Ntmask(R?Rt MaskedArrayRtdataRtgetmask(R RLRCttpoints((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRus  cCs|i}t||S(N(R?R(R R!RC((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"|s cCsQti| o3t|ti otiddttn|i |S(Ns/A non-numpy array of type %s was passed in for s%transformation. Please correct this.( RRGRRJtndarrayRHRIRRR(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCsO|idjp |io.|i}tt||_d|_n|iS(Ni(R>RR R?RR(R RC((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs   (R,R>R?RRR"R=R;RR7RRRFRRIRR"RERRR(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRB=s*         RcBseZdZddZdZeZdZedZ dZ dZ dZ edZ d Zd Zd Zd Zd ZdZddZdZeeZRS(s- A mutable 2D affine transformation. cCszti||djotid}n8to0ti|ti}|idjpt n||_ d|_ dS(s Initialize an Affine transform from a 3x3 numpy float array:: a c e b d f 0 0 1 If *matrix* is None, initialize with the identity transform. iiN(ii( RBR RRJtidentityRERKRR&Rt_mtxR (R tmatrix((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s   cCsdt|iS(Ns Affine2D(%s)(RRQ(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs8t|to$|i|ijiodSdS(Nii(RRR?tall(R Rv((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt__cmp__sc Cs=tti||||||dddg tiidS(s (staticmethod) Create a new Affine2D instance from the given values:: a c e b d f 0 0 1 gg?i(ii(RRJRRR(RRRR4RGRH((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt from_valuess 0cCsd|_|iS(s Get the underlying transformation matrix as a 3x3 numpy array:: a c e b d f 0 0 1 i(R RQ(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?s cCs||_|idS(s Set the underlying transformation matrix from a 3x3 numpy array:: a c e b d f 0 0 1 N(RQR(R RC((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt set_matrixs cCs4t|tpt|i|_|idS(so Set this transformation from the frozen copy of another :class:`Affine2DBase` object. N(RRBRR?RQR(R Rv((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR<scCsttidS(s (staticmethod) Return a new :class:`Affine2D` object that is the identity transform. Unless this transform will be mutated later on, consider using the faster :class:`IdentityTransform` class instead. i(RRJRP(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRPs cCs tid|_|i|S(sH Reset the underlying matrix to the identity transform. i(RJRPRQR(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytclears cCs~ti|}ti|}ti|| dg||dgdddggti}ti||i|_|i|S(s Add a rotation (in radians) to this transform in place. Returns *self*, so this method can easily be chained with more calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate` and :meth:`scale`. gg?(RJR+R,RRR@RQR(R tthetaRRt rotate_mtx((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs(  cCs|i|tidS(s Add a rotation (in degrees) to this transform in place. Returns *self*, so this method can easily be chained with more calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate` and :meth:`scale`. gf@(RRJR)(R tdegrees((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt rotate_degscCs'|i| | i|i||S(s Add a rotation (in radians) around the point (x, y) in place. Returns *self*, so this method can easily be chained with more calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate` and :meth:`scale`. (t translateR(R RpRsRX((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt rotate_aroundscCs'|i| | i|i||S(s Add a rotation (in degrees) around the point (x, y) in place. Returns *self*, so this method can easily be chained with more calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate` and :meth:`scale`. (R\R[(R RpRsRZ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytrotate_deg_around#scCs_tidd|gdd|gdddggti}ti||i|_|i|S(s Adds a translation in place. Returns *self*, so this method can easily be chained with more calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate` and :meth:`scale`. g?g(RJRRR@RQR(R RRt translate_mtx((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR\-s '  cCsv|djo |}nti|ddgd|dgdddggti}ti||i|_|i|S(s3 Adds a scale in place. If *sy* is None, the same scale is applied in both the *x*- and *y*-directions. Returns *self*, so this method can easily be chained with more calls to :meth:`rotate`, :meth:`rotate_deg`, :meth:`translate` and :meth:`scale`. gg?N(RRJRRR@RQR(R tsxtsyt scale_mtx((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytscale<s  '  cCs+|i}|ddjo|ddjS(Niig(ii(ii(R?(R RC((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR;Ps N(R,R>R?RR RR RTRRUR?RVR<RPRWRR[R]R^R\RcR;RR7(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs&         RcBs eZdZeidZdZeiie_dZeZ dZ ei ie _dZ ei ie _e Z ei ie _e Z ei ie _dZeiie_eZeiie_eZeiie_dZeiie_eZeiie_RS(sX A special class that does on thing, the identity transform, in a fast way. icCs|S(N((R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"]scCsdS(NsIdentityTransform()((R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRascCs|iS(N(RQ(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?escCs|S(N((R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRiscCs|S(N((R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR%sscCs|S(N((R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR }s(R,R>R?RJRPRQR"RBRR R?RRRR%R&R'R R(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRVs0      tBlendedGenericTransformcBseZdZdZdZeZeZdZdZ e e Z dZ e i ie _dZeZdZe iie_dZe iie_dZe iie_d Ze iie_d Ze iie_RS( s A "blended" transform uses one transform for the *x*-direction, and another transform for the *y*-direction. This "generic" version can handle any given child transform in the *x*- and *y*-directions. icCs<ti|||_||_|i||d|_dS(s Create a new "blended" transform using *x_transform* to transform the *x*-axis and *y_transform* to transform the *y*-axis. You will generally not call this constructor directly but use the :func:`blended_transform_factory` function instead, which can determine automatically which kind of blended transform to create. N(RR t_xt_yRRt_affine(R t x_transformt y_transform((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s   cCs|iio |iiS(N(ReRRf(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt_get_is_affinescCst|ii|iiS(N(tblended_transform_factoryReR"Rf(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"scCsd|i|ifS(NsBlendedGenericTransform(%s,%s)(ReRf(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCst|i}|i}||jo|idjo|i|S|idjo)|i|ddddf}n;|i|dddf}|it|df}|idjo)|i|ddddf}n;|i|dddf}|it|df}t|tpt|toti ||fdSt i ||fdSdS(Niii( ReRfRRRRRRKRt concatenateRJ(R RLRpRstx_pointsty_points((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs  )) cCs|ii|S(N(R R(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs,|iio|iio|S|i|S(N(ReRRfR(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCst|ii|iiS(N(RdReRRf(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs|ip|idjo|iio|iio|i|ijo|ii|_q|iii}|iii}ti |d|ddddgf}t ||_n t |_d|_n|iS(Niigg?( R RgRReRRfR R?RJtvstackRR(R tx_mtxty_mtxRC((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s)  (R,R>R?RRRR7RR RjRRR"RRR RRRRR (((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRds,          tBlendedAffine2DcBsDeZdZeZdZdZeZdZe iie_RS(s A "blended" transform uses one transform for the *x*-direction, and another transform for the *y*-direction. This version is an optimization for the case where both child transforms are of type :class:`Affine2DBase`. cCs|ipt|ipt|ipt|iptti|||_||_|i||ti|d|_ dS(s Create a new "blended" transform using *x_transform* to transform the *x*-axis and *y_transform* to transform the *y*-axis. Both *x_transform* and *y_transform* must be 2D affine transforms. You will generally not call this constructor directly but use the :func:`blended_transform_factory` function instead, which can determine automatically which kind of blended transform to create. N( RRR7RR ReRfRRBRRQ(R RhRi((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s    cCsd|i|ifS(NsBlendedAffine2D(%s,%s)(ReRf(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs|io|i|ijo|ii|_nK|ii}|ii}ti|d|ddddgf|_d|_d|_n|iS(Niigg?( R ReRfR?RQRJRoRR>(R RpRq((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?s ,  ( R,R>R?RR7R RR R?RB(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRrs   cCs;t|tot|tot||St||S(s Create a new "blended" transform using *x_transform* to transform the *x*-axis and *y_transform* to transform the *y*-axis. A faster version of the blended transform is returned for the case where both child transforms are affine. (RRBRrRd(RhRi((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRk&stCompositeGenericTransformcBs.eZdZeZdZdZeiie_dZe eZ dZ e e Z dZ e ZdZeiie_dZeiie_dZeiie_d Zeiie_d Zeiie_d Zeiie_d Zeiie_d Zeiie_RS(s A composite transform formed by applying transform *a* then transform *b*. This "generic" version can handle any two arbitrary transformations. cCse|i|ijpt|i|_|i|_ti|||_||_|i||dS(sl Create a new composite transform that is the result of applying transform *a* then transform *b*. You will generally not call this constructor directly but use the :func:`composite_transform_factory` function instead, which can automatically choose the best kind of composite transform instance to create. N(RRRRR t_at_bR(R RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR >s      cCsId|_t|ii|ii}t|tp |iS|S(Ni(R RRtR"RuRRs(R R"((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR"Qs  ! cCs|iio |iiS(N(RtRRu(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRjYscCs|iio |iiS(N(RtR7Ru(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR;]scCsd|i|ifS(Ns!CompositeGenericTransform(%s, %s)(RtRu(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRascCs|ii|ii|S(N(RuRRt(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRes cCs|ii|S(N(R R(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRjscCs;|iio|iio|S|ii|ii|S(N(RtRRuRR(R RL((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRns cCs|ii|ii|S(N(RuR%Rt(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR%us cCs|ii|ii|S(N(RuR&RtR%(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR&zs cCs;|iio|iio|S|ii|ii|S(N(RtRRuR'R%(R R((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR's cCs`|iioB|iio5tti|iii|iiiS|iiSdS(N(RtRRuRRJR@R R?(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR scCst|ii|iiS(N(RsRuRRt(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs(R,R>R?RRR R"RRjRRR;R7RR RRRR%R&R'R R(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs4s6               tCompositeAffine2DcBs>eZdZdZdZeZdZeiie_RS(s A composite transform formed by applying transform *a* then transform *b*. This version is an optimization that handles the case where both *a* and *b* are 2D affines. cCs|i|ijpt|i|_|i|_|ipt|iptti|||_||_|i||d|_ dS(s Create a new composite transform that is the result of applying transform *a* then transform *b*. Both *a* and *b* must be instances of :class:`Affine2DBase`. You will generally not call this constructor directly but use the :func:`composite_transform_factory` function instead, which can automatically choose the best kind of composite transform instance to create. N( RRRRRBR RtRuRRRQ(R RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s      cCsd|i|ifS(NsCompositeAffine2D(%s, %s)(RtRu(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCsN|io=ti|ii|ii|_d|_d|_n|iS(Ni( R RJR@RuR?RtRQRR>(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?s    (R,R>R?R RR R?RB(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRvs    cCset|to|St|to|St|tot|tot||St||S(sv Create a new composite transform that is the result of applying transform a then transform b. Shortcut versions of the blended transform are provided for the case where both child transforms are affine, or one or the other is the identity transform. Composite transforms may also be created using the '+' operator, e.g.:: c = a + b (RRR=RvRs(RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs t BboxTransformcBsDeZdZeZdZdZeZdZe iie_RS(sp :class:`BboxTransform` linearly transforms points from one :class:`Bbox` to another :class:`Bbox`. cCsg|ipt|iptti|||_||_|i||d|_d|_ dS(sw Create a new :class:`BboxTransform` that linearly transforms points from *boxin* to *boxout*. N( RCRRBR t_boxint_boxoutRRRQR>(R tboxintboxout((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s    cCsd|i|ifS(NsBboxTransform(%s, %s)(RxRy(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRsc Cs|io|ii\}}}}|ii\}}}}||} ||} to*| djp | djotdnti| d| | |gd| | | |gdddggti|_ d|_ d|_n|i S(Nis0Transforming from or to a singular bounding box.gg?( R RxRRyREt ValueErrorRJRRRQRR>( R tinltinbtinwtinhtoutltoutbtoutwtouthtx_scalety_scale((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?s   !  ( R,R>R?RR7R RR R?RB(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRws   tBboxTransformTocBsDeZdZeZdZdZeZdZe iie_RS(s :class:`BboxTransformTo` is a transformation that linearly transforms points from the unit bounding box to a given :class:`Bbox`. cCsJ|iptti|||_|i|d|_d|_dS(s Create a new :class:`BboxTransformTo` that linearly transforms points from the unit bounding box to *boxout*. N( RCRRBR RyRRRQR>(R R{((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s     cCs d|iS(NsBboxTransformTo(%s)(Ry(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRscCs|io|ii\}}}}to*|djp |djotdnti|d|gd||gdddggti|_d|_ d|_n|iS(Nis(Transforming to a singular bounding box.gg?( R RyRRER|RJRRRQRR>(R RRRR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?s !   ( R,R>R?RR7R RR R?RB(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRs  tBboxTransformFromcBsDeZdZeZdZdZeZdZe iie_RS(sx :class:`BboxTransformFrom` linearly transforms points from a given :class:`Bbox` to the unit bounding box. cCsJ|iptti|||_|i|d|_d|_dS(N( RCRRBR RxRRRQR>(R Rz((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR 3s     cCs d|iS(NsBboxTransformFrom(%s)(Rx(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR<scCs|io|ii\}}}}to*|djp |djotdnd|}d|}ti|d| |gd|| |gdddggti|_d|_ d|_n|iS(Nis*Transforming from a singular bounding box.g?g( R RxRRER|RJRRRQRR>(R R}R~RRRR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?@s !    ( R,R>R?RR7R RR R?RB(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR,s  tScaledTranslationcBs>eZdZdZdZeZdZeiie_RS(s A transformation that translates by *xt* and *yt*, after *xt* and *yt* have been transformad by the given transform *scale_trans*. cCsHti|||f|_||_|i|d|_d|_dS(N(RBR t_tt _scale_transRRRQR>(R txttytt scale_trans((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR Vs     cCsd|ifS(NsScaledTranslation(%s)(R(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR^scCs~|iom|ii|i\}}tidd|gdd|gdddggti|_d|_d|_ n|iS(Ng?gi( R RR"RRJRRRQRR>(R RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR?bs    (R,R>R?R RR R?RB(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRQs    tTransformedPathcBsDeZdZdZdZdZdZdZdZRS(s A :class:`TransformedPath` caches a non-affine transformed copy of the :class:`~matplotlib.path.Path`. This cached copy is automatically updated when the non-affine part of the transform changes. cCsYt|tptti|||_||_|i|d|_ d|_ dS(s Create a new :class:`TransformedPath` from the given :class:`~matplotlib.path.Path` and :class:`Transform`. N( RRRRR t_pathRRRt_transformed_patht_transformed_points(R RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR vs     cCs|i|i@|ijp|idjoI|ii|i|_t|ii|ii d|ii |_ nd|_dS(Ni( R RARRRR'RRRRR$R(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt _revalidates cCs|i|i|ifS(s3 Return a copy of the child path, with the non-affine part of the transform already applied, along with the affine part of the path necessary to complete the transformation. Unlike :meth:`get_transformed_path_and_affine`, no interpolation will be performed. (RRR (R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt!get_transformed_points_and_affines cCs|i|i|ifS(s Return a copy of the child path, with the non-affine part of the transform already applied, along with the affine part of the path necessary to complete the transformation. (RRR (R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytget_transformed_path_and_affines cCsb|i|i@|ijp|idjo|ii|i|_nd|_|ii|iS(sD Return a fully-transformed copy of the child path. iN(R RARRRR'RR&(R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytget_fully_transformed_paths  cCs |iiS(N(RR (R ((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyR s( R,R>R?R RRRRR (((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyRos  gMbP?gV瞯 vmax, they will be swapped, regardless of whether they are too close. If either is inf or -inf or nan, return - expander, expander. g(RJtisfiniteRBRR_R(tvmintvmaxtexpanderttinyt increasingtswapped((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt nonsingulars "    *  cCsJ|\}}||jo||jo ||jp||jo ||jS(N((RR6RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytinterval_containss 'cCsJ|\}}||jo||jo ||jp||jo ||jS(N((RR6RR((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytinterval_contains_opens 'gtinchescCs|djo|ti||S|djotdn|djo|d:}|d:}n|djptdn|t|||iS(s Return a new transform with an added offset. args: trans is any transform kwargs: fig is the current figure; it can be None if units are 'dots' x, y give the offset units is 'inches', 'points' or 'dots' tdotss3For units of inches or points a fig kwarg is neededRLgR@Rs%units must be dots, points, or inchesN(RR\RR|Rtdpi_scale_trans(ttranstfigRpRstunits((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pyt offset_copys     (3R?tnumpyRJRtmatplotlib._pathRt numpy.linalgRtweakrefRRHR<t NameErrortsetsRtcbookRRRRRRBRERKtobjectRRFRNRRR8R=RBRRRdRrRkRsRvRRwRRRRRRRRR(((s;/usr/lib64/python2.6/site-packages/matplotlib/transforms.pytsV    +L-_/g: _. ,(%B