/opt/alt/python27/lib64/python2.7/site-packages/matplotlib
NameSizeModeActions
backends/-0755rm
delaunay/-0755rm
mpl-data/-0755rm
numerix/-0755rm
projections/-0755rm
sphinxext/-0755rm
afm.py150890644editdlrm
afm.pyc173880644editdlrm
afm.pyo173880644editdlrm
artist.py356230644editdlrm
artist.pyc414310644editdlrm
artist.pyo414310644editdlrm
axes.py2800890644editdlrm
axes.pyc2525680644editdlrm
axes.pyo2514560644editdlrm
axis.py573540644editdlrm
axis.pyc608580644editdlrm
axis.pyo605510644editdlrm
backend_bases.py723180644editdlrm
backend_bases.pyc799690644editdlrm
backend_bases.pyo798790644editdlrm
bezier.py149170644editdlrm
bezier.pyc138120644editdlrm
bezier.pyo138120644editdlrm
blocking_input.py136900644editdlrm
blocking_input.pyc147620644editdlrm
blocking_input.pyo144440644editdlrm
cbook.py427560644editdlrm
cbook.pyc586920644editdlrm
cbook.pyo584660644editdlrm
cm.py80980644editdlrm
cm.pyc100320644editdlrm
cm.pyo100320644editdlrm
collections.py407840644editdlrm
collections.pyc451110644editdlrm
collections.pyo451110644editdlrm
colorbar.py274560644editdlrm
colorbar.pyc258350644editdlrm
colorbar.pyo258350644editdlrm
colors.py391100644editdlrm
colors.pyc406900644editdlrm
colors.pyo406900644editdlrm
contour.py428950644editdlrm
contour.pyc364630644editdlrm
contour.pyo363010644editdlrm
dates.py360070755editdlrm
dates.pyc411350644editdlrm
dates.pyo410710644editdlrm
dviread.py320330644editdlrm
dviread.pyc354880644editdlrm
dviread.pyo353450644editdlrm
figure.py412640644editdlrm
figure.pyc437060644editdlrm
figure.pyo435750644editdlrm
finance.py205820644editdlrm
finance.pyc186750644editdlrm
finance.pyo185150644editdlrm
fontconfig_pattern.py64290644editdlrm
fontconfig_pattern.pyc67100644editdlrm
fontconfig_pattern.pyo67100644editdlrm
font_manager.py426530644editdlrm
font_manager.pyc412750644editdlrm
font_manager.pyo412750644editdlrm
ft2font.so3061680755editdlrm
hatch.py65640644editdlrm
hatch.pyc94840644editdlrm
hatch.pyo94840644editdlrm
image.py315400644editdlrm
image.pyc337830644editdlrm
image.pyo337370644editdlrm
legend.py323020644editdlrm
legend.pyc238760644editdlrm
legend.pyo237030644editdlrm
lines.py546850644editdlrm
lines.pyc579910644editdlrm
lines.pyo578860644editdlrm
mathtext.py1020090644editdlrm
mathtext.pyc1060700644editdlrm
mathtext.pyo1056820644editdlrm
mlab.py942940644editdlrm
mlab.pyc1019150644editdlrm
mlab.pyo1017350644editdlrm
mpl.py7850644editdlrm
mpl.pyc11890644editdlrm
mpl.pyo11890644editdlrm
nxutils.so97040755editdlrm
offsetbox.py298070644editdlrm
offsetbox.pyc348250644editdlrm
offsetbox.pyo347700644editdlrm
patches.py1284850644editdlrm
patches.pyc1337360644editdlrm
patches.pyo1335980644editdlrm
path.py217650644editdlrm
path.pyc214990644editdlrm
path.pyo212790644editdlrm
pylab.py109810644editdlrm
pylab.pyc124380644editdlrm
pylab.pyo124380644editdlrm
pyparsing.py1439240644editdlrm
pyparsing.pyc1511830644editdlrm
pyparsing.pyo1511830644editdlrm
pyplot.py824680644editdlrm
pyplot.pyc819820644editdlrm
pyplot.pyo819820644editdlrm
quiver.py375400644editdlrm
quiver.pyc341520644editdlrm
quiver.pyo341520644editdlrm
rcsetup.py234340644editdlrm
rcsetup.pyc215220644editdlrm
rcsetup.pyo213520644editdlrm
scale.py142330644editdlrm
scale.pyc202540644editdlrm
scale.pyo202540644editdlrm
spines.py126840644editdlrm
spines.pyc118830644editdlrm
spines.pyo114560644editdlrm
table.py168280644editdlrm
table.pyc173730644editdlrm
table.pyo172220644editdlrm
texmanager.py224640644editdlrm
texmanager.pyc202090644editdlrm
texmanager.pyo202090644editdlrm
text.py598220644editdlrm
text.pyc606960644editdlrm
text.pyo606960644editdlrm
ticker.py404280644editdlrm
ticker.pyc521640644editdlrm
ticker.pyo520280644editdlrm
tight_bbox.py36550644editdlrm
tight_bbox.pyc41570644editdlrm
tight_bbox.pyo41570644editdlrm
transforms.py753870644editdlrm
transforms.pyc924320644editdlrm
transforms.pyo915230644editdlrm
ttconv.so654880755editdlrm
type1font.py115370644editdlrm
type1font.pyc114900644editdlrm
type1font.pyo114900644editdlrm
units.py49760644editdlrm
units.pyc59180644editdlrm
units.pyo59180644editdlrm
widgets.py408330644editdlrm
widgets.pyc436080644editdlrm
widgets.pyo434220644editdlrm
windowing.py4540644editdlrm
windowing.pyc13610644editdlrm
windowing.pyo13610644editdlrm
_cm.py3704140644editdlrm
_cm.pyc1030550644editdlrm
_cm.pyo1030550644editdlrm
_cntr.so209600755editdlrm
_delaunay.so611840755editdlrm
_image.so2828560755editdlrm
_mathtext_data.py579900644editdlrm
_mathtext_data.pyc638000644editdlrm
_mathtext_data.pyo638000644editdlrm
_path.so2803120755editdlrm
_png.so1565040755editdlrm
_pylab_helpers.py27150644editdlrm
_pylab_helpers.pyc38380644editdlrm
_pylab_helpers.pyo38380644editdlrm
__init__.py289720644editdlrm
__init__.pyc294350644editdlrm
__init__.pyo293810644editdlrm
Edit: /opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyc (92432B)
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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt__init__Ps cGstdddS(Ns+TransformNode instances can not be copied. s Consider using frozen() instead.(tNotImplementedError(R targs((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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(sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR8s8      @         s digraph G { s} N(tsetR/(R R9R;((R8R9R;R:sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytwrite_graphvizs   cCsdS(N((R R9R;((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR=s(R,t __module__t__doc__t_gidtINVALID_NON_AFFINERRtFalseRtis_bboxRR Rt __deepcopy__RRtDEBUGR R"R=(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt_checks cCst|iiS(N(tBboxt get_pointstcopy(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR"scOs |iS(N(RO(R Rtkwargs((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytis_unitscCs|idS(Ni(ii(RO(R ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt _get_boundsgss\ (property) Returns (:attr:`x0`, :attr:`y0`, :attr:`width`, :attr:`height`).cCs|iiiS(N(RORTRP(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt _get_extentsnssM (property) Returns (:attr:`x0`, :attr:`y0`, :attr:`x1`, :attr:`y1`).cCstS(N(R (R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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~((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s cCs|i||i|dS(N(RMt ___init__(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s cCs!|i|iti|dS(N(RMRRR(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRsgg?cCsttiiS(s_ (staticmethod) Create a new unit :class:`Bbox` from (0, 0) to (1, 1). (RNt _unit_valuesRP(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRs$cCsdt|iS(NsBbox(%s)(treprR(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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<(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s   cCsd|i|ifS(NsTransformedBbox(%s, %s)(RR(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCsW|ioF|ii|ii}tii|d}||_d|_n|iS(Ngi( R RRRRORJRtfilledR(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyROs    cCs|i}|i||S(N(t _get_pointsRM(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyROs  ( R,R>R?R RR RORNRER(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyttransform_non_affine7scCstS(s8 Get the affine part of this transform. (tIdentityTransform(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRs N(R,R>R?RRRRBt has_inverset is_separableRRRRRRRR R"R%R&R'R5R(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s     cCs d|iS(NsTransformWrapper(%r)(t_child(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCs |iiS(N(R:R"(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR<s    cCs |iiS(N(R:R7(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt_get_is_separablescCs |iiS(N(R:R6(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt_get_has_inverse s(R,R>R?RRRBRR RR R"RR9R<R;RR7R<R6(((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s cOs |iS(N(t get_matrix(R RRQ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRRscCsti||S(sj Concatenates two transformation matrices (represented as numpy arrays) together. (RJtdot(RR((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt_concatscCs tdS(sL Get the underlying transformation matrix as a numpy array. N(R (R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?&scCs|S(N((R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR,scCs |i|S(N(R%(R R((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR&0scCs|S(N((R R((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR'4scCs|S(N((R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR 8s(R,R>R?RRR RRRRAR?RRR&R'R (((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR"VscCs+|i}|ddjo|ddjS(Niig(ii(ii(R?(R tmtx((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR;Zs cOs |iS(N(R?(R RRQ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytmatrix_from_valuesis cCsX|i}t|to/t|i|}ti|dti|St||S(Ntmask(R?Rt MaskedArrayRtdataRtgetmask(R RLRCttpoints((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRus  cCs|i}t||S(N(R?R(R R!RC((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCsO|idjp |io.|i}tt||_d|_n|iS(Ni(R>RR R?RR(R RC((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRs   (R,R>R?RRR"R=R;RR7RRRFRRIRR"RERRR(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s   cCsdt|iS(Ns Affine2D(%s)(RRQ(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCs8t|to$|i|ijiodSdS(Nii(RRR?tall(R Rv((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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(((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRPs cCs tid|_|i|S(sH Reset the underlying matrix to the identity transform. i(RJRPRQR(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytscale<s  '  cCs+|i}|ddjo|ddjS(Niig(ii(ii(R?(R RC((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR;Ps N(R,R>R?RR RR RTRRUR?RVR<RPRWRR[R]R^R\RcR;RR7(((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR"]scCsdS(NsIdentityTransform()((R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRascCs|iS(N(RQ(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?escCs|S(N((R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRiscCs|S(N((R R((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR%sscCs|S(N((R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR }s(R,R>R?RJRPRQR"RBRR R?RRRR%R&R'R R(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s   cCs|iio |iiS(N(ReRRf(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt_get_is_affinescCst|ii|iiS(N(tblended_transform_factoryReR"Rf(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR"scCsd|i|ifS(NsBlendedGenericTransform(%s,%s)(ReRf(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRs  )) cCs|ii|S(N(R R(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCs,|iio|iio|S|i|S(N(ReRRfR(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCst|ii|iiS(N(RdReRRf(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s)  (R,R>R?RRRR7RR RjRRR"RRR RRRRR (((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s    cCsd|i|ifS(NsBlendedAffine2D(%s,%s)(ReRf(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?s ,  ( R,R>R?RR7R RR R?RB(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR >s      cCsId|_t|ii|ii}t|tp |iS|S(Ni(R RRtR"RuRRs(R R"((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR"Qs  ! cCs|iio |iiS(N(RtRRu(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRjYscCs|iio |iiS(N(RtR7Ru(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR;]scCsd|i|ifS(Ns!CompositeGenericTransform(%s, %s)(RtRu(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRascCs|ii|ii|S(N(RuRRt(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRes cCs|ii|S(N(R R(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRjscCs;|iio|iio|S|ii|ii|S(N(RtRRuRR(R RL((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRns cCs|ii|ii|S(N(RuR%Rt(R R((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR%us cCs|ii|ii|S(N(RuR&RtR%(R R((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR&zs cCs;|iio|iio|S|ii|ii|S(N(RtRRuR'R%(R R((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR's cCs`|iioB|iio5tti|iii|iiiS|iiSdS(N(RtRRuRRJR@R R?(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR scCst|ii|iiS(N(RsRuRRt(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRs(R,R>R?RRR R"RRjRRR;R7RR RRRR%R&R'R R(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s      cCsd|i|ifS(NsCompositeAffine2D(%s, %s)(RtRu(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyRscCsN|io=ti|ii|ii|_d|_d|_n|iS(Ni( R RJR@RuR?RtRQRR>(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?s    (R,R>R?R RR R?RB(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s    cCsd|i|ifS(NsBboxTransform(%s, %s)(RxRy(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?s   !  ( R,R>R?RR7R RR R?RB(((sH/opt/alt/python27/lib64/python2.7/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{((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s     cCs d|iS(NsBboxTransformTo(%s)(Ry(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?s !   ( R,R>R?RR7R RR R?RB(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR 3s     cCs d|iS(NsBboxTransformFrom(%s)(Rx(R ((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?@s !    ( R,R>R?RR7R RR R?RB(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR Vs     cCsd|ifS(NsScaledTranslation(%s)(R(R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR^scCs~|iom|ii|i\}}tidd|gdd|gdddggti|_d|_d|_ n|iS(Ng?gi( R RR"RRJRRRQRR>(R RR((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR?bs    (R,R>R?R RR R?RB(((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/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 ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytget_fully_transformed_paths  cCs |iiS(N(RR (R ((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyR s( R,R>R?R RRRRR (((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt nonsingulars "    *  cCsJ|\}}||jo||jo ||jp||jo ||jS(N((RR6RR((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytinterval_containss 'cCsJ|\}}||jo||jo ||jp||jo ||jS(N((RR6RR((sH/opt/alt/python27/lib64/python2.7/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((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pyt offset_copys     (3R?tnumpyRJRtmatplotlib._pathRt numpy.linalgRtweakrefRRHR<t NameErrortsetsRtcbookRRRRRRBRERKtobjectRRFRNRRR8R=RBRRRdRrRkRsRvRRwRRRRRRRRR(((sH/opt/alt/python27/lib64/python2.7/site-packages/matplotlib/transforms.pytsV    +L-_/g: _. ,(%B