ó
a#nSc           @   sW   d  Z  d d l m Z d e f d „  ƒ  YZ e ƒ  Z d „  Z d d d d d „ Z	 d S(	   sH    functionality for drawing hierarchical catalogs on sping
    canvases

iÿÿÿÿ(   t   pidt   VisOptsc           B   s×   e  Z d  Z d Z d Z e j d d d ƒ Z e j d d d ƒ Z e j d d d ƒ Z	 e j d d d ƒ Z
 e j Z e j d d d ƒ Z d Z d	 Z d
 Z d Z e j d d d d  ƒ Z e j d d d ƒ Z d Z RS(   i
   i   i   g333333ã?gÍÌÌÌÌÌì?gš™™™™™é?gš™™™™™É?i    i   i   iK   i   t   facet	   helveticat   sizeg      ð?gš™™™™™Ù?i   (   t   __name__t
   __module__t   circRadt
   minCircRadt
   maxCircRadt   piddlet   Colort	   circColort   terminalEmptyColort   terminalOnColort   terminalOffColort   transparentt   outlineColort	   lineColort	   lineWidtht   horizOffsett
   vertOffsett	   topMargint   Fontt	   labelFontt   highlightColort   highlightWidth(    (    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/HierarchyVis.pyR      s    	c         C   s~   d } x3 | j  ƒ  D]% } t | | ƒ } t | | ƒ } q Wt | j  ƒ  ƒ } | t j d t j t j | t j f } | S(   Niÿÿÿÿi   (   t   keyst   lent   maxt   visOptsR   R   R   R   (   t   adjListt	   levelListt	   maxAcrosst   kt   nHeret   nLevst   minSize(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/HierarchyVis.pyt   GetMinCanvasSize%   s    g    „×—Ac      
   C   sU  | d
 k r g  } n  | d
 k r* i  } n  | j ƒ  } | j ƒ  t | | d ƒ } t | | d ƒ } | j } i  }	 xát | | d d ƒ D]É}
 |
 | } d t j | t j	 g } | j
 |
 g  ƒ } t | ƒ } t j | _ | rŒ t | d ƒ | } | t j 8} t | d t j ƒ } t | t j ƒ } | d t j } | d d | d <| d rs| d c | d 8<n  | d c | d d | 8<xÃ | D]¸ } | s¯| | k r–|
 | k r%xg |  | D]X } |	 j | ƒ rÆ|	 | d } | j | d | d | d | d t j t j ƒ qÆqÆWn  t | ƒ | f |	 | <| d c | 7<q–q–WqŒ qŒ Wxõ |	 j ƒ  D]ç } |	 | \ } } | d | | d | } } | d | | d | } } | j
 | t j ƒ } | j | | | | t j d | ƒ t | ƒ } | d | j ƒ  d | d | j | ƒ d f } | j | | d | d d d	 ƒqfW|	 S(   s•   

  Arguments:

   - adjList: adjacency list representation of the hierarchy to be drawn

   - levelList: dictionary mapping level -> list of ids

  i    iÿÿÿÿi   i   g       @g      à?i   t   angleiZ   N(   t   NoneR   t   sortR   t   minR   t   rangeR   R   R   t   getR   R   t   defaultFontt   floatR   R   R	   t   has_keyt   drawLineR   R   t   tupleR   t   drawEllipseR   t   strt
   fontHeightt   stringWidtht
   drawString(   R   R    t   canvast   entryColorst   bitIdst   minLevelt   maxLevelt   levelLengthst   dimst   drawLocst   levelLent   nLevelsDownt   post   idsR#   t   spacePerNodet   nodeRadt   idt   neighbort   p2t   x1t   y1t   x2t   y2t	   drawColort   labelt   txtLoc(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/HierarchyVis.pyt   DrawHierarchy/   s`    		
	

"
%N(
   t   __doc__t   spingR    R
   t   objectR   R   R&   R(   RO   (    (    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/HierarchyVis.pyt   <module>   s   		
