
 m[c           @` s  d  d l  m Z m Z m Z m Z d  d l Z d  d l 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 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# d d d d d d g  Z$ d Z% d e f d     YZ& d e f d     YZ' d e f d     YZ( e j) d e f d     Y Z* d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsNi   u?   PyGTK %d.%d.%d is installed
PyGTK %d.%d.%d or later is required(   t   rcParams(   t   Gcf(   t   _Backendt   FigureCanvasBaset   FigureManagerBaset   GraphicsContextBaset   RendererBase(   t   warn_deprecated(   t   MathTextParser(   t   Affine2D(   t   pixbuf_get_pixels_arrayu   %d.%d.%du   bmpu   epsu   jpgu   pngu   psu   svgt   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  u
   ultralightu   lightu   normalu   mediumu   semiboldu   boldu   heavyu	   ultraboldu   blackc         C` s4   | |  _  | |  _ | j   |  _ t d  |  _ d  S(   Nu   Agg(   t   gtkDAt   dpit   get_colormapt   _cmapR   t   mathtext_parser(   t   selfR   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   __init__@   s    		c         C` s   | |  _  d  S(   N(   t   gdkDrawable(   R   t   pixmap(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt
   set_pixmapI   s    c         C` s   | | |  _  |  _ d S(   u1   w,h is the figure w,h not the pixmap w,h
        N(   t   widtht   height(   R   R   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   set_width_heightL   s    c   
      C` s  | t    j d d  j d |  j  } | j | |  j |  j  } x | D] } g  | D]6 \ } } t t j |   t t j |   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   npt   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(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt	   draw_pathQ   s    Cc         C` sj  | j    } | d  k r0 | j \ } } } }	 n  | j d  \ }
 } t j j t j j d t d d d | d |
 } t	 |  } | d  d  d  | d  d   d  d   d  d   f <|  j
   } |  j | |
 } yD |  j j | j | d d t |  t |  | |
 t j d d  WnQ t k
 re| j |  j | j d d t |  t |  | |
 t j d d  n Xd  S(	   Ni   t	   has_alphat   bits_per_samplei   R   R   ii    (   t   get_clip_rectangleR#   t   boundst   shapet   gtkt   gdkt   Pixbuft   COLORSPACE_RGBR(   R   t   new_gcR   R   t   draw_pixbufR$   R    t   RGB_DITHER_NONEt   AttributeErrort   render_to_drawable(   R   R+   R1   R2   t   imt   bboxt   lt   bt   wt   ht   rowst   colst   pixbuft   array(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt
   draw_imagea   s&    2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   u+   backend_gdk: unable to draw text at angles u   other than 0 or 90(   i    iZ   (   R    t   warningst   warnt   _draw_mathtextt   _draw_rotated_textt   _get_pango_layoutR   R   R   t   draw_layoutR$   (   R   R+   R1   R2   t   st   propt   anglet   ismatht   mtextt   layoutt   inkRectt   logicalRectRE   RF   RG   RH   (    (    s>   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 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 <t j | j   t j  j | | f  | d  d   d  d   d f <|  j j | j | d d t |  t |  | | t j d d  d  S(   NiZ   R5   R6   i   R   R   i    i   i   i   i   (   R   t   parseR   t	   get_widtht
   get_heightR:   R;   R<   R=   R(   R   t   get_rgbR    R!   t
   fromstringt   as_strt   uint8t   reshapeR   R?   R$   R@   (   R   R+   R1   R2   RT   RU   RV   t   oxt   oyR   R   t   descentt
   font_imaget   used_characterst   imwt   imhRK   RL   t   rgb(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRP      s$    0
---C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(	   uR   
        Draw the text rotated 90 degrees, other angles are not supported
        i    Nt   typet   visualR   R   u    Could not renderer vertical texti   (   R   R$   RR   R    R   R   t   hasht   rotatedt   getR#   RM   t	   get_imageR:   R;   t   Imaget   IMAGE_FASTESTt
   get_visualRN   RO   t   set_colormapR   t   ranget	   put_pixelt	   get_pixelRS   (   R   R+   R1   R2   RT   RU   RV   t	   gdrawablet   ggcRY   RZ   R[   RE   RF   RG   RH   t   keyt	   imageVertt	   imageBackt	   imageFlipt   it   jt   imageIn(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRQ      sF    			&"$/"/""c         C` s   |  j  | t |  f } |  j j |  } | d k r: | S| j   |  j  d } t j |  } d | j   | j	   | f } t
 j |  } | j |  j | j    |  j j |  } | j |  | j   \ }	 }
 | |	 |
 f |  j | <| |	 |
 f S(   u  
        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@u	   %s, %s %iN(   R   Ro   t   layoutdRq   R#   t   get_size_in_pointsR!   R"   t   get_namet	   get_stylet   pangot   FontDescriptiont
   set_weightt   fontweightst
   get_weightR   t   create_pango_layoutt   set_font_descriptiont   get_pixel_extents(   R   RT   RU   R|   t   valuet   sizet   font_strt   fontRY   RZ   R[   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyRR      s    c         C` s   t  S(   N(   R(   (   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   flipy  s    c         C` s   |  j  |  j f S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   get_canvas_width_height  s    c         C` s   | rC |  j  j | |  j |  \ } } } } } }	 }
 | | | f S|  j | |  \ } } } | \ } } } } | \ } } } } | | d | | f S(   Ni   (   R   R]   R   RR   (   R   RT   RU   RW   Re   Rf   R   R   Rg   Rh   Ri   RY   RZ   R[   RE   RF   RG   RH   t   llt   lbt   lwt   lh(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   get_text_width_height_descent  s    0c         C` s   t  d |   S(   Nt   renderer(   t   GraphicsContextGDK(   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR>     s    c         C` s   | d |  j  S(   Ng      R@(   R   (   R   t   points(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   points_to_pixels!  s    N(   t   __name__t
   __module__R   t   WEIGHT_ULTRALIGHTt   WEIGHT_LIGHTt   WEIGHT_NORMALt   WEIGHT_BOLDt   WEIGHT_HEAVYt   WEIGHT_ULTRABOLDR   R   Rp   R   R   R   R#   R4   RM   t   FalseR\   RP   RQ   RR   R   R   R   R>   R   (    (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   &   sF   
















					"		4	!				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 RS(   u   bevelu   miteru   roundu   buttu
   projectingc         C` s>   t  j |   | |  _ t j j | j  |  _ | j |  _ d  S(   N(	   R	   R   R   R:   R;   t   GCR   R$   R   (   R   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   6  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(   ue   
        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_colorR    (   R   Rl   t   color(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR&   =  s    	Jc         C` s*   t  j |  |  |  j |  j |  j _ d  S(   N(   R	   t   set_capstylet   _capdt	   _capstyleR$   t	   cap_style(   R   t   cs(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   N  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_rectangleR#   R8   R    R   R   R$   (   R   t	   rectangleRE   RF   RG   RH   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   S  s    $c         C` s   t  j |  | |  | d  k r1 t j |  j _ nn |  j j t	 j
 |   } g  | D]$ } t d t t	 j |    ^ qS } |  j j | |  t j |  j _ d  S(   Ni   (   R	   t
   set_dashesR#   R;   t
   LINE_SOLIDR$   t
   line_styleR   R   R!   t   asarrayt   maxR    R"   t   LINE_ON_OFF_DASH(   R   t   dash_offsett	   dash_listt   pixelst   valt   dl(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   ^  s    1c         C` s2   t  j |  | |  |  j |  j    |  j _ d  S(   N(   R	   t   set_foregroundR&   R`   R$   R%   (   R   t   fgt   isRGBA(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   j  s    c         C` s*   t  j |  |  |  j |  j |  j _ d  S(   N(   R	   t   set_joinstylet   _joindt
   _joinstyleR$   t
   join_style(   R   t   js(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   o  s    c         C` se   t  j |  |  | d k r+ d |  j _ n6 |  j j |  } t d t t j	 |    |  j _ d  S(   Ni    i   (
   R	   t   set_linewidthR$   R)   R   R   R   R    R!   R"   (   R   RG   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   t  s
    (   R   R   R   R;   t
   JOIN_BEVELt
   JOIN_MITERt
   JOIN_ROUNDR   t   CAP_BUTTt   CAP_PROJECTINGt	   CAP_ROUNDR   R   R&   R   R   R   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   %  s"   



						t   FigureCanvasGDKc           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` sO   t  j |  |  |  j t j j j k rA t d d d d d n  |  j   d  S(   Nu   2.0t   messageu   The GDK backend is deprecated. It is untested, known to be broken and will be removed in Matplotlib 3.0. Use the Agg backend instead. See Matplotlib usage FAQ for more info on backends.t   alternativeu   Agg(	   R   R   t	   __class__t
   matplotlibt   backendst   backend_gdkR   R   t   _renderer_init(   R   t   figure(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   ~  s
    
c         C` s"   t  t j   |  j j  |  _ d  S(   N(   R   R:   t   DrawingAreaR   R   t	   _renderer(   R   (    (    s>   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   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   _render_figure  s    u   JPEGu   jpgu   jpegc         O` s   |  j  | d  S(   Nu   jpeg(   t   _print_image(   R   t   filenamet   argst   kwargs(    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt
   print_jpeg  s    c         O` s   |  j  | d  S(   Nu   png(   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt	   print_png  s    c   
   	   ` s   |  j    \ } } t j j d  | | d d } |  j | | |  t j j t j j d d | |  } | j | | j	   d d d d | |    f d   d g D }	 | d k r |	 j
 d t d	  t |	 d  |	 d <n  | j | | d
 |	 d  S(   Nt   depthi   i    i   c         ` s)   i  |  ] } |   k r   | |  q S(    (    (   t   .0t   k(   R   (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pys
   <dictcomp>  s   	 u   qualityu   jpgu   jpegu   savefig.jpeg_qualityt   options(   u   jpgu   jpeg(   t   get_width_heightR:   R;   t   PixmapR#   R   R<   R=   t   get_from_drawableR   t
   setdefaultR   t   strt   save(
   R   R   t   formatR   R   R   R   R   RK   R   (    (   R   s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR     s    (   R   R   R   R   R   R   t	   filetypest   copyR   t	   print_jpgR   R   (    (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR   }  s   			

		t   _BackendGDKc           B` s   e  Z e Z e Z RS(    (   R   R   R   t   FigureCanvasR   t   FigureManager(    (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyR     s   (+   t
   __future__R    R   R   R   t   sixRN   t   gobjectR:   R;   R   t   pygtk_version_requiredt   pygtk_versiont   ImportErrort   numpyR!   R   R   t   matplotlib._pylab_helpersR   t   matplotlib.backend_basesR   R   R   R	   R
   t   matplotlib.cbookR   t   matplotlib.mathtextR   t   matplotlib.transformsR   t    matplotlib.backends._backend_gdkR   t   backend_versiont   sortedt   IMAGE_FORMATt   IMAGE_FORMAT_DEFAULTR   R   R   t   exportR   (    (    (    s>   lib/python2.7/site-packages/matplotlib/backends/backend_gdk.pyt   <module>   s8   " 	(X6	