ó
±éRc           @   sÞ   d  d l  Z  d  d l Z d  d l m Z m Z m Z d  d l	 Z	 d  d l
 Z
 d  d l Z d „  Z e e e f d „ Z d „  Z d e j f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   linest   axist   patchesc         C   s(   |  | | | k r | | S| | Sd  S(   N(    (   t   coordt   indext   minst   maxs(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   get_flip_min_max   s    c         C   sy   t  j  |  ƒ }  xc t d ƒ D]U } | | s2 q n  |  | | | k  r] |  | c | | 8<q |  | c | | 7<q W|  S(   sC   Return a coordinate that is moved by "deltas" away from the center.i   (   t   copyt   range(   R   t   centerst   deltast   axmaskt   i(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   move_from_center   s    
c         C   s¨   xH |  j  |  j f |  j |  j f f D]" \ } } | r% | j | ƒ q% q% Wt t |  _ |  _ |  j	 j
 d ƒ |  j	 j d ƒ |  j	 j | | ƒ |  j j d d ƒ d S(   s.   Update tick line and label position and style.t   -t    i    N(   t   label1t   label1Ont   label2t   label2Ont   set_positiont   Truet   Falset   tick1Ont   tick2Ont	   tick1linet   set_linestylet
   set_markert   set_datat   gridline(   t   tickt   tickxst   tickyst   labelpost   labelt   on(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   tick_update_position#   s    t   Axisc        	   B   s  e  Z d! d" d# d$ d% d& f Z i i d  d 6d d	 6d' d
 6d( d 6d 6i d d 6d  d	 6d) d
 6d* d 6d 6i d d 6d  d	 6d+ d
 6d, d 6d 6Z d „  Z d „  Z d „  Z d- d „ Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z d  „  Z RS(.   i    i   i   i   i   i   i   i   R   t   tickdirt   juggledgffffffî?g      à?t   colort   xgÍÌÌÌÌÌì?t   ygš™™™™™í?t   zc         O   sà   | |  _  | |  _ | |  _ |  j | j ƒ  |  _ |  j j i i d d 6d d 6d d 6d 6i d d 6d	 d
 6d 6i d d 6d 6i d d 6d d 6d 6i d d 6d d 6d 6ƒ t j j	 |  | | | Ž |  j
 | j d d  ƒ ƒ d  S(   Ngš™™™™™ù?t   space_factort   centert   vat   haR#   gš™™™™™É?t   inward_factorgš™™™™™¹?t   outward_factorR   gffffffæ?t	   ticklabelg      è?t	   linewidthi    i   R)   t   axislinegÍÌÌÌÌÌì?g      ð?t   gridt   rotate_label(   i    i    i    i   (   gÍÌÌÌÌÌì?gÍÌÌÌÌÌì?gÍÌÌÌÌÌì?i   (   t   adirt
   d_intervalt
   v_intervalt   _AXINFOR   t   _axinfot   updatet   maxist   XAxist   __init__t   set_rotate_labelt   gett   None(   t   selfR8   t   v_intervalxt   d_intervalxt   axest   argst   kwargs(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyR@   D   s     			


c         C   sG  t  j d d d d d |  j d d d |  j d d d t ƒ |  _ t j t j d d g d d g d d g d d g g ƒ d	 t	 d
 d d d d d ƒ|  _
 |  j |  j d ƒ |  j j |  j ƒ |  j j |  j
 ƒ t j g  ƒ |  _ |  j j |  j ƒ |  j j |  j ƒ |  j j |  j ƒ |  j j |  j _ |  j j |  j _ d  S(   Nt   xdatai    t   ydataR4   R5   R)   t   antialiasedi   t   closedt   alphagš™™™™™é?t	   facecolort	   edgecolor(   i    i    (   i    i    (   i   i   i   i    (   i   i   i   i    (   t   mlinest   Line2DR<   R   t   linet   mpatchest   Polygont   npt   arrayR   t   panet   set_pane_colorRG   t   _set_artist_propst   art3dt   Line3DCollectiont	   gridlinesR#   t
   offsetTextt	   transDatat
   _transform(   RD   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   init3d`   s$    9c         C   s`   |  j  j ƒ  } |  j  j j | ƒ g  t | ƒ D]! \ } } |  j  j | | ƒ ^ q/ } | | f S(   N(   t   majort   locatort	   formattert   set_locst	   enumerate(   RD   t	   majorLocsR   t   valt   majorLabels(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   get_tick_positionsy   s    4c         C   s˜   t  j j |  | ƒ } x| | D]t } | j j |  j j ƒ | j j |  j j ƒ | j j |  j j ƒ | j	 j |  j j ƒ | j
 j |  j j ƒ q W| S(   N(   R>   R?   t   get_major_ticksR   t   set_transformRG   R_   t	   tick2lineR   R   R   (   RD   t   numtickst   tickst   t(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRk      s    c         C   s;   t  j | ƒ } | d  d  … d  d … f } | |  j _ d  S(   Ni   (   RV   t   asarrayRX   t   xy(   RD   t   xys(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   set_pane_pos‰   s    c         C   sE   | |  j  d <|  j j | ƒ |  j j | ƒ |  j j | d ƒ d S(   s   Set pane color to a RGBA tupleR)   iÿÿÿÿN(   R<   RX   t   set_edgecolort   set_facecolort	   set_alpha(   RD   R)   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRY   Ž   s    c         C   s   | |  _  d S(   s‘   
        Whether to rotate the axis label: True, False or None.
        If set to None the label will be rotated if longer than 4 chars.
        N(   t   _rotate_label(   RD   Rh   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRA   •   s    c         C   s*   |  j  d  k	 r |  j  St | ƒ d k Sd  S(   Ni   (   Rx   RC   t   len(   RD   t   text(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   get_rotate_labelœ   s    c         C   sÑ  |  j  j ƒ  \ } } } } } } | | k r= | | } } n  | | k rY | | } } n  | | k ru | | } } n  t j | | | f ƒ } t j | | | f ƒ }	 |	 | d }
 |	 | d } | | d } |	 | d }	 | d |	 d | d |	 d | d |	 d f } |  j  j | | j ƒ } g  |  j D]D \ } } } } | | d | | d | | d | | d ^ q/} t j g  t d ƒ D]& } | d | | d | d k  ^ qŒƒ } | |	 |
 | | | f S(   Ng       @g      (@g      @i    i   i   i   (   RG   t
   get_w_limsRV   RW   t
   tunit_cubet   Mt   _PLANESR	   (   RD   t   renderert   minxt   maxxt   minyt   maxyt   minzt   maxzR   R   R
   R   t   valst   tct   p1t   p2t   p3t   p4t   avgzR   t   highs(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   _get_coord_info¢   s&    !0QBc         C   s¿   | j  d ƒ |  j | ƒ \ } } } } } } |  j } | d }	 | |	 s_ |  j d |	 }
 n |  j d |	 d }
 g  |
 D] } | | ^ q{ } |  j | ƒ |  j j | ƒ | j d ƒ d  S(   Nt   pane3dR   i   i   (   t
   open_groupR�   R<   R   Rt   RX   t   drawt   close_group(   RD   R€   R   R   R
   R   Rˆ   RŽ   t   infoR   t   planet   pRs   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt	   draw_pane¹   s    !	

c   ?      C   sP	  |  j  j |  j _ | j d ƒ |  j ƒ  } |  j j ƒ  } |  j } | d } |  j	 ƒ  \ } } | | k r{ | | } } n  g  | D]( } | | k oŸ | k n r‚ | ^ q‚ } |  j j
 j | ƒ g  t | ƒ D]! \ }	 }
 |  j j
 |
 |	 ƒ ^ qÐ } |  j | ƒ \ } } } } } } t j | | | ƒ } | d } | j ƒ  } t | | d | | ƒ | | d <| j ƒ  } t | | d | | ƒ | | d <t j | | g | j ƒ } t j | d | d | d | j ƒ } |  j j | d d | d d f | d d | d d f ƒ |  j j | ƒ g  } x1 | D]) }
 | j ƒ  } |
 | | <| j | ƒ q/Wt j | ƒ } |  j  j j | d d … d f ƒ |  j  j j | d d … d f ƒ \ } } d | | } | d d	 | } t t t g } t | | <t | | | | ƒ } t j | d | d | d | j ƒ \ }  }! }" |  j j  |  |! f ƒ |  j! |  j j" ƒ  ƒ rœt# j$ t% j& t% j' | | ƒ ƒ ƒ }# |  j j( |# ƒ n  |  j j) | d d
 ƒ |  j j* | d d ƒ |  j j | ƒ | d d k rû| }$ d }% n | }$ d }% t j |$ ƒ }& t |& | | | ƒ }& t j |& d |& d |& d | j ƒ \ }' }( }) |  j+ j, |  j j
 j- ƒ  ƒ |  j+ j  |' |( f ƒ t# j$ t% j& t% j' | | ƒ ƒ ƒ }# |  j+ j( |# ƒ |  j+ j. d ƒ | | d | | d |% f k ro| | | | |% f k rft/ | j0 ƒ  d ƒ d d k rf| j1 ƒ  t t t g k r]| d k r]d }* qld }* qÍd }* n^ | | | | |% f k rÇt/ | j0 ƒ  d ƒ d d k rÇ| d k r¾d }* qÍd }* n d }* |  j+ j) d ƒ |  j+ j* |* ƒ |  j+ j | ƒ t/ | ƒ d k r@t j2 | ƒ }+ | d d }, t |+ d |, | | ƒ }- x( t3 t/ | ƒ ƒ D] }	 |- |+ |	 |, <qXWt j2 | ƒ }. | d d }, t |. d |, | | ƒ }- x( t3 t/ | ƒ ƒ D] }	 |- |. |	 |, <q¹Wt4 |+ | |. ƒ }/ |  j  j5 r@|  j6 j7 |/ ƒ |  j6 j8 | d d g t/ |/ ƒ ƒ |  j6 j | d t ƒq@n  | d }0 | |0 }1 | |0 rgd }2 n d }2 xÏt4 | | | ƒ D]»\ }3 } }4 |3 d  k r¡q€n  t j | ƒ }& | |& | <| |0 | d d |2 |1 |& |0 <t j |& d |& d |& d | j ƒ \ }5 }6 }7 | |0 | d d |2 |1 |& |0 <t j |& d |& d |& d | j ƒ \ }8 }9 }: g  | D] }; | d d	 |; ^ qe} t t t g } t | | <| |0 |& |0 <t |& | | | ƒ }& t j |& d |& d |& d | j ƒ \ }< }= }> t: |3 |5 |8 f |6 |9 f |< |= f ƒ |3 j; |4 ƒ |3 j< |4 ƒ |3 j | ƒ q€W| j= d ƒ d  S(   Nt   axis3dR   R(   i    i   i   g      à?R#   R-   R/   R0   t   anchorR'   t   leftt   rightR.   i   R6   R)   t   projectiÿÿÿÿR   R2   R1   R3   (   i   i   (>   RG   R_   R#   R`   R‘   Rk   Rb   Rc   R<   t   get_view_intervalRd   Re   Rf   R�   RV   t   whereR   R   t   proj3dt   proj_trans_pointsR~   t   proj_transformRS   R   R’   t   appendt
   asanyarrayt	   transAxest	   transformR   R   R   R   R{   t   get_textR[   t   norm_text_anglet   matht   degreest   atan2t   set_rotationt   set_vat   set_haR^   t   set_textt
   get_offsett   set_rotation_modeRy   t   nonzerot   tolistt   deepcopyR	   t   zipt
   _draw_gridR]   t   set_segmentst	   set_colorRC   R%   t
   set_label1t
   set_label2R“   (?   RD   R€   t
   majorTicksRg   R”   R   t   locmint   locmaxt   locR   Rh   Ri   R   R   R
   R   Rˆ   RŽ   t   minmaxR(   t   edgep1t   edgep2t   pept   centptt   xyz0R   t   peparrayt   dxt   dyt   lxyzt   labeldeltasR   t   tlxt   tlyt   tlzt   anglet
   outeredgept
   outerindext   post   olxt   olyt   olzt   alignt   xyz1t   newindext   newvalt   xyz2R    R'   t	   tickdeltat   ticksignR   R#   t   x1t   y1t   z1t   x2t   y2t   z2R*   t   lxt   lyt   lz(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyR’   Ê   sö    	
(1!
!!'?
",
$	0$" '			 		%


	"
"
%c         C   s   |  j  S(   s9   return the Interval instance for this 3d axis view limits(   R:   (   RD   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyR�   ˜  s    c         C   sO   | r | | f |  _  n3 |  j ƒ  \ } } t | | ƒ t | | ƒ f |  _  d  S(   N(   R:   R�   t   mint   max(   RD   t   vmint   vmaxt   ignoret   Vmint   Vmax(    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   set_view_intervalœ  s    c         C   s   d  S(   N(   RC   (   RD   R€   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   get_tightbbox¥  s    (   i    i   i   i   (   i   i   i   i   (   i    i   i   i   (   i   i   i   i   (   i    i   i   i   (   i   i   i   i   (   i   i    i   (   gffffffî?gffffffî?gffffffî?g      à?(   i    i   i   (   gÍÌÌÌÌÌì?gÍÌÌÌÌÌì?gÍÌÌÌÌÌì?g      à?(   i    i   i   (   gš™™™™™í?gš™™™™™í?gš™™™™™í?g      à?N(   t   __name__t
   __module__R   R;   R@   Ra   Rj   RC   Rk   Rt   RY   RA   R{   R�   R—   R’   R�   R   Rê   Rë   (    (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyR&   1   s0   			
							Î		R?   c           B   s   e  Z d  „  Z RS(   c         C   s   |  j  j j S(   s6   return the Interval instance for this axis data limits(   RG   t
   xy_dataLimt	   intervalx(   RD   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   get_data_interval­  s    (   Rì   Rí   Rð   (    (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyR?   ¬  s   t   YAxisc           B   s   e  Z d  „  Z RS(   c         C   s   |  j  j j S(   s6   return the Interval instance for this axis data limits(   RG   Rî   t	   intervaly(   RD   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRð   ²  s    (   Rì   Rí   Rð   (    (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRñ   ±  s   t   ZAxisc           B   s   e  Z d  „  Z RS(   c         C   s   |  j  j j S(   s6   return the Interval instance for this axis data limits(   RG   t
   zz_dataLimRï   (   RD   (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRð   ·  s    (   Rì   Rí   Rð   (    (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyRó   ¶  s   (   R¨   R   t
   matplotlibR    RQ   R   R>   R   RT   R[   RŸ   t   numpyRV   R   R   R   R%   R?   R&   Rñ   Ró   (    (    (    sU   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axis3d.pyt   <module>   s   		ÿ |