ó
±éRc           @  sø  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d „  Z d  d l Z d  d l	 Z	 e	 j
 Z
 d  d l Z d d d f Z e	 j e k  r´ e d e	 j e ƒ ‚ n  [ d  d l Z d  d l Z d  d l m Z d  d l m Z d  d	 l m Z m Z m Z m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l  m! Z! d  d l" m# Z# d e	 j Z$ e% Z& d d d d d g d g Z' e' j( ƒ  d Z) d e f d „  ƒ  YZ* d e f d „  ƒ  YZ+ d „  Z, d „  Z- d e f d „  ƒ  YZ. d S(   iÿÿÿÿ(   t   divisiont   print_functionNc           C  s   t  j d ƒ j j S(   Ni   (   t   syst	   _getframet   f_codet   co_name(    (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   fn_name   s    i   i    s?   PyGTK %d.%d.%d is installed
PyGTK %d.%d.%d or later is required(   t   rcParams(   t   Gcf(   t   RendererBaset   GraphicsContextBaset   FigureManagerBaset   FigureCanvasBase(   t   is_string_like(   t   Figure(   t   MathTextParser(   t   Affine2D(   t   pixbuf_get_pixels_arrays   %d.%d.%dt   epst   jpgt   pngt   pst   svgt   bmpt   RendererGDKc           B  sU  e  Z i e j d  6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d	 6e j d
 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6e j d 6Z	 i  Z
 i  Z d „  Z d „  Z d „  Z d  d „ Z d „  Z e d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(!   id   iÈ   i,  i�  iô  iX  i¼  i   i„  t
   ultralightt   lightt   normalt   mediumt   semiboldt   boldt   heavyt	   ultraboldt   blackc         C  s4   | |  _  | |  _ | j ƒ  |  _ t d ƒ |  _ d  S(   Nt   Agg(   t   gtkDAt   dpit   get_colormapt   _cmapR   t   mathtext_parser(   t   selfR#   R$   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   __init__C   s    		c         C  s   | |  _  d  S(   N(   t   gdkDrawable(   R(   t   pixmap(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt
   set_pixmapL   s    c         C  s   | | |  _  |  _ d S(   s1   w,h is the figure w,h not the pixmap w,h
        N(   t   widtht   height(   R(   R-   R.   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   set_width_heightO   s    c   
      C  s  | t  ƒ  j d d ƒ j d |  j ƒ } | j | |  j |  j ƒ } xË | D]Ã } g  | D]0 \ } } t t | ƒ ƒ t t | ƒ ƒ f ^ qW } | d  k	 râ | j	 j
 }	 | j | ƒ | j	 _
 |  j j | j	 t | ƒ |	 | j	 _
 n  | j	 j d k rJ |  j j | j	 | ƒ qJ qJ Wd  S(   Ng      ð?g      ð¿i    (   R   t   scalet	   translateR.   t   to_polygonsR-   t   intt   roundt   Nonet   gdkGCt
   foregroundt   rgb_to_gdk_colorR*   t   draw_polygont   Truet
   line_widtht
   draw_lines(
   R(   t   gct   patht	   transformt   rgbFacet   polygonst   polygont   xt   yt	   saveColor(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt	   draw_pathT   s    =c         C  sš  | j  ƒ  } | d  k r0 | j \ } } } }	 n  | j ƒ  | j ƒ  \ }
 } } t j | t j ƒ } |
 | d f | _ t	 j
 j t	 j
 j d t d d d | d |
 ƒ} t | ƒ } | | d  d  … d  d  … d  d  … f <|  j ƒ  } |  j | |
 } yD |  j j | j | d d t | ƒ t | ƒ | |
 t
 j d d ƒ WnQ t k
 r‹| j |  j | j d d t | ƒ t | ƒ | |
 t
 j d d ƒ n X| j ƒ  d  S(   Ni   t	   has_alphat   bits_per_samplei   R-   R.   i    (   t   get_clip_rectangleR5   t   boundst
   flipud_outt   as_rgba_strt   npt
   fromstringt   uint8t   shapet   gtkt   gdkt   Pixbuft   COLORSPACE_RGBR:   R   t   new_gcR.   R*   t   draw_pixbufR6   R3   t   RGB_DITHER_NONEt   AttributeErrort   render_to_drawable(   R(   R=   RC   RD   t   imt   bboxt   lt   bt   wt   ht   rowst   colst	   image_strt   image_arrayt   pixbuft   array(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt
   draw_imaged   s.    
%c	         C  s$  t  | ƒ t  | ƒ } } | d k  s1 | d k  r5 d  S| d k rU t j d d ƒ nË | rz |  j | | | | | | ƒ n¦ | d k r¥ |  j | | | | | | ƒ n{ |  j | | ƒ \ }	 }
 } |
 \ } } } } | | |  j k sø | | |  j k rü d  S|  j j	 | j
 | | | | |	 ƒ d  S(   Ni    iZ   s+   backend_gdk: unable to draw text at angles s   other than 0 or 90(   i    iZ   (   R3   t   warningst   warnt   _draw_mathtextt   _draw_rotated_textt   _get_pango_layoutR-   R.   R*   t   draw_layoutR6   (   R(   R=   RC   RD   t   st   propt   anglet   ismatht   mtextt   layoutt   inkRectt   logicalRectR\   R]   R^   R_   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt	   draw_textŽ   s    	&c         C  s|  |  j  j | |  j | ƒ \ } } }	 }
 } } } | d k rV |
 |	 }	 }
 | |	 8} n  | |
 8} | j ƒ  } | j ƒ  } | | } t j | d f t j ƒ } | j ƒ  } t j	 | t j ƒ | d  d  … d f <t j
 | d d ƒ} | | f | _ t j j t j j d t d d d | d	 | ƒ} t | ƒ } | j ƒ  } t | d d
 ƒ | d  d  … d  d  … d f <t | d d
 ƒ | d  d  … d  d  … d f <t | d d
 ƒ | d  d  … d  d  … d f <| | d  d  … d  d  … d f <yD |  j j | j | d d t | ƒ t | ƒ | | t j d d ƒ WnQ t k
 rw| j |  j | j d d t | ƒ t | ƒ | | t j d d ƒ n Xd  S(   NiZ   i   i    t   axisRG   RH   i   R-   R.   iÿ   i   i   (   R'   t   parseR$   t	   get_widtht
   get_heightRM   t   zerosRO   t   as_strRN   t   amaxRP   RQ   RR   RS   RT   R:   R   t   get_rgbR3   R*   RV   R6   RW   RX   RY   (   R(   R=   RC   RD   Rm   Rn   Ro   t   oxt   oyR-   R.   t   descentt
   font_imaget   used_characterst   imwt   imht   Nt   XallRb   t   XsRd   Re   t   rgb(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRi   ¦   s:    0

%---c      	   C  sø  |  j  } | j } |  j | | ƒ \ }	 }
 } |
 \ } } } } t | | ƒ } t | | ƒ } | d k  s� | d k  s� | | |  j k s� | | |  j k r¡ d S| | | | t | ƒ f } |  j j | ƒ } | d k r | j
 | | d d | | | | ƒ d S| j | | | | ƒ } | j | | | | ƒ } t j j d t j d | j ƒ  d | d | ƒ } | d k s„| d k s„| d k r•t j d ƒ d S| j |  j ƒ xR t | ƒ D]D } x; t | ƒ D]- } | j | | | j | | | d ƒ ƒ qÅWq²W| j
 | | d d | | | | ƒ | j | | | | |	 ƒ | j | | | | ƒ } xR t | ƒ D]D } x; t | ƒ D]- } | j | | | j | | d | ƒ ƒ qnWq[W| j
 | | d d | | | | ƒ | j
 | | d d | | | | ƒ | |  j | <d S(	   sR   
        Draw the text rotated 90 degrees, other angles are not supported
        i    Nt   typet   visualR-   R.   s    Could not renderer vertical texti   (   R*   R6   Rk   R3   R-   R.   t   hasht   rotatedt   getR5   Rf   t	   get_imageRQ   RR   t   Imaget   IMAGE_FASTESTt
   get_visualRg   Rh   t   set_colormapR&   t   ranget	   put_pixelt	   get_pixelRl   (   R(   R=   RC   RD   Rm   Rn   Ro   t	   gdrawablet   ggcRr   Rs   Rt   R\   R]   R^   R_   t   keyt	   imageVertt	   imageBackt	   imageFlipt   it   jt   imageIn(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRj   Ö   sF    			&"$/"/""c         C  sù   |  j  | t | ƒ f } |  j j | ƒ } | d k r: | S| j ƒ  |  j  d } t | ƒ } d | j ƒ  | j ƒ  | f } t	 j
 | ƒ } | j |  j | j ƒ  ƒ |  j j | ƒ } | j | ƒ | j ƒ  \ }	 }
 | |	 |
 f |  j | <| |	 |
 f S(   s  
        Create a pango layout instance for Text 's' with properties 'prop'.
        Return - pango layout (from cache if already exists)

        Note that pango assumes a logical DPI of 96
        Ref: pango/fonts.c/pango_font_description_set_size() manual page
        g      X@s	   %s, %s %iN(   R$   R‹   t   layoutdR�   R5   t   get_size_in_pointsR4   t   get_namet	   get_stylet   pangot   FontDescriptiont
   set_weightt   fontweightst
   get_weightR#   t   create_pango_layoutt   set_font_descriptiont   get_pixel_extents(   R(   Rm   Rn   R˜   t   valuet   sizet   font_strt   fontRr   Rs   Rt   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRk     s    c         C  s   t  S(   N(   R:   (   R(   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   flipy-  s    c         C  s   |  j  |  j f S(   N(   R-   R.   (   R(   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   get_canvas_width_height0  s    c         C  s—   | rC |  j  j | |  j | ƒ \ } } } } } }	 }
 | | | f S|  j | | ƒ \ } } } | \ } } } } | \ } } } } | | d | | f S(   Ni   (   R'   Rw   R$   Rk   (   R(   Rm   Rn   Rp   R~   R   R-   R.   R€   R�   R‚   Rr   Rs   Rt   R\   R]   R^   R_   t   llt   lbt   lwt   lh(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   get_text_width_height_descent3  s    0c         C  s   t  d |  ƒ S(   Nt   renderer(   t   GraphicsContextGDK(   R(   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRU   ?  s    c         C  s   | d |  j  S(   Ng      R@(   R$   (   R(   t   points(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   points_to_pixelsC  s    N(   t   __name__t
   __module__R£   t   WEIGHT_ULTRALIGHTt   WEIGHT_LIGHTt   WEIGHT_NORMALt   WEIGHT_BOLDt   WEIGHT_HEAVYt   WEIGHT_ULTRABOLDR¦   RŸ   RŒ   R)   R,   R/   R5   RF   Rf   t   FalseRu   Ri   Rj   Rk   R¯   R°   Rµ   RU   R¹   (    (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   )   sF   
















					*	0	5	"				R·   c           B  sª   e  Z i  Z i e j d  6e j d 6e j d 6Z i e j d 6e j	 d 6e j
 d 6Z d „  Z d „  Z d „  Z d „  Z d	 „  Z e d
 „ Z d „  Z d „  Z d „  Z RS(   t   bevelt   miterR4   t   buttt
   projectingc         C  s>   t  j |  ƒ | |  _ t j j | j ƒ |  _ | j |  _ d  S(   N(	   R
   R)   R¶   RQ   RR   t   GCR*   R6   R&   (   R(   R¶   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR)   X  s    	c         C  s�   y |  j  t | ƒ SWne t k
 r| |  j j t | d d ƒ t | d d ƒ t | d d ƒ ƒ } |  j  t | ƒ <| SXd S(   se   
        rgb - an RGB tuple (three 0.0-1.0 values)
        return an allocated gtk.gdk.Color
        i    iÿÿ  i   i   N(   t   _cachedt   tuplet   KeyErrorR&   t   alloc_colorR3   (   R(   Rˆ   t   color(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR8   _  s    	Jc         C  s*   t  j |  | ƒ |  j |  j |  j _ d  S(   N(   R
   t   set_capstylet   _capdt	   _capstyleR6   t	   cap_style(   R(   t   cs(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRÍ   p  s    c         C  s…   t  j |  | ƒ | d  k r  d  S| j \ } } } } t | ƒ |  j j t | | ƒ d t | ƒ t | ƒ f } |  j j | ƒ d  S(   Ni   (   R
   t   set_clip_rectangleR5   RJ   R3   R¶   R.   R6   (   R(   t	   rectangleR\   R]   R^   R_   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRÒ   u  s    $c         C  s    t  j |  | | ƒ | d  k r1 t j |  j _ nk |  j j t	 j
 | ƒ ƒ } g  | D]! } t d t t | ƒ ƒ ƒ ^ qS } |  j j | | ƒ t j |  j _ d  S(   Ni   (   R
   t
   set_dashesR5   RR   t
   LINE_SOLIDR6   t
   line_styleR¶   R¹   RM   t   asarrayt   maxR3   R4   t   LINE_ON_OFF_DASH(   R(   t   dash_offsett	   dash_listt   pixelst   valt   dl(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRÔ   €  s    .c         C  s2   t  j |  | | ƒ |  j |  j ƒ  ƒ |  j _ d  S(   N(   R
   t   set_foregroundR8   R}   R6   R7   (   R(   t   fgt   isRGBA(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRß   Œ  s    c         C  s/   t  j |  | ƒ |  j |  j ƒ  ƒ |  j _ d  S(   N(   R
   t   set_graylevelR8   R}   R6   R7   (   R(   t   frac(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRâ   ‘  s    c         C  s*   t  j |  | ƒ |  j |  j |  j _ d  S(   N(   R
   t   set_joinstylet   _joindt
   _joinstyleR6   t
   join_style(   R(   t   js(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRä   –  s    c         C  sb   t  j |  | ƒ | d k r+ d |  j _ n3 |  j j | ƒ } t d t t | ƒ ƒ ƒ |  j _ d  S(   Ni    i   (	   R
   t   set_linewidthR6   R;   R¶   R¹   RØ   R3   R4   (   R(   R^   RÜ   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRé   ›  s
    (   Rº   R»   RÈ   RR   t
   JOIN_BEVELt
   JOIN_MITERt
   JOIN_ROUNDRå   t   CAP_BUTTt   CAP_PROJECTINGt	   CAP_ROUNDRÎ   R)   R8   RÍ   RÒ   RÔ   RÂ   Rß   Râ   Rä   Ré   (    (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR·   G  s$   



							c         O  s.   | j  d t ƒ } | | | Ž  } t |  | ƒ S(   s.   
    Create a new figure manager instance
    t   FigureClass(   t   popR   t   new_figure_manager_given_figure(   t   numt   argst   kwargsRð   t   thisFig(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   new_figure_manager¤  s    c         C  s   t  | ƒ } t | |  ƒ } | S(   sD   
    Create a new figure manager instance for the given figure.
    (   t   FigureCanvasGDKR   (   Ró   t   figuret   canvast   manager(    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRò   ­  s    Rø   c           B  sg   e  Z d  „  Z d „  Z d „  Z e j j ƒ  Z d e d <d e d <d „  Z e Z	 d „  Z
 d „  Z RS(	   c         C  s   t  j |  | ƒ |  j ƒ  d  S(   N(   R   R)   t   _renderer_init(   R(   Rù   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR)   ·  s    c         C  s"   t  t j ƒ  |  j j ƒ |  _ d  S(   N(   R   RQ   t   DrawingAreaRù   R$   t	   _renderer(   R(   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRü   ¼  s    c         C  s:   |  j  j | ƒ |  j  j | | ƒ |  j j |  j  ƒ d  S(   N(   Rþ   R,   R/   Rù   t   draw(   R(   R+   R-   R.   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   _render_figure¿  s    t   JPEGR   t   jpegc         O  s   |  j  | d ƒ S(   NR  (   t   _print_image(   R(   t   filenameRô   Rõ   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt
   print_jpegÈ  s    c         O  s   |  j  | d ƒ S(   NR   (   R  (   R(   R  Rô   Rõ   (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt	   print_pngÌ  s    c   
   	   O  sþ   |  j  ƒ  \ } } t j j d  | | d d ƒ} |  j | | | ƒ t j j t j j d d | | ƒ } | j | | j	 ƒ  d d d d | | ƒ t
 j | d g ƒ }	 | d
 k rä d |	 k rÍ t d |	 d <n  t |	 d ƒ |	 d <n  | j | | d	 |	 ƒd  S(   Nt   depthi   i    i   t   qualityR   R  s   savefig.jpeg_qualityt   options(   R   s   jpeg(   t   get_width_heightRQ   RR   t   PixmapR5   R   RS   RT   t   get_from_drawableR%   t   cbookt   restrict_dictR   t   strt   save(
   R(   R  t   formatRô   Rõ   R-   R.   R+   Rd   R	  (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR  Ï  s    (   Rº   R»   R)   Rü   R   R   t	   filetypest   copyR  t	   print_jpgR  R  (    (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRø   ¶  s   			

		(/   t
   __future__R    R   t   matht   osR   Rg   R   t   gobjectRQ   RR   R£   t   pygtk_version_requiredt   pygtk_versiont   ImportErrort   numpyRM   t
   matplotlibR   t   matplotlib._pylab_helpersR   t   matplotlib.backend_basesR	   R
   R   R   t   matplotlib.cbookR   t   matplotlib.figureR   t   matplotlib.mathtextR   t   matplotlib.transformsR   t    matplotlib.backends._backend_gdkR   t   backend_versionRÂ   t   _debugt   IMAGE_FORMATt   sortt   IMAGE_FORMAT_DEFAULTR   R·   R÷   Rò   Rø   (    (    (    sY   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   <module>   sF   	 	"
ÿ ]				