;ò
¹0sDc           @   s8  d  Z  d k Td k l Z l Z l Z d k l Z l Z d k	 l
 Z
 l Z l Z l Z d k l Z l Z d k l Z d e f d „  ƒ  YZ d	 k Z d	 k Z d	 k Z y d	 k Z Wn< e j
 o0 Z e d
 e e ƒ d j o d p d ‚ n Xd k l Z l Z e e f Z d „  Z  d „  Z! e i" d „ Z# d k l$ Z$ d e$ f d „  ƒ  YZ% d „  Z& d „  Z' e( d „ Z) d Z* d f  d „  ƒ  YZ+ d d e( e i" d „ Z, d d e( e i" d „ Z- d d e( e i" d „ Z. d  d d e( e i" d! „ Z/ d  d d e( e i" d" „ Z0 e/ Z1 d# „  Z2 e3 d$ j o e2 ƒ  n d	 S(%   s7    $Id: renderPM.py 2830 2006-04-05 15:18:32Z rgbecker $ (   s   *(   s   StateTrackers   getStateDeltas   renderScaledDrawing(   s   getFonts
   unicode2T1(   s   sins   coss   pis   ceil(   s   getStringIOs   open_and_read(   s	   rl_configs   RenderPMErrorc           B   s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    s   ./renderPM.pys   RenderPMError   s   Ns   No module named _renderPM
s   No module named _renderPMs/   it may be the wrong version or badly installed!s+   see http://www.reportlab.org/rl_addons.html(   s	   TupleTypes   ListTypec          C   s8   y d k  l }  Wn t j
 o d  k }  n X|  Sd  S(   N(   s   Image(   s   PILs   Images   ImportError(   s   Image(    (    s   ./renderPM.pys	   _getImage!   s
    c         C   sZ   |  oK d t d |  i ƒ @d >d t d |  i ƒ @d >Bd t d |  i ƒ @BSn |  Sd  S(   Niÿ   i   i   (   s   cs   ints   reds   greens   blue(   s   c(    (    s   ./renderPM.pys	   Color2Hex(   s     Kc         C   s/   t  ƒ  } | i t |  ƒ | | | d | ƒd S(   s
   As it sayss   showBoundaryN(	   s   _PMRenderers   Rs   draws   renderScaledDrawings   drawings   canvass   xs   ys   showBoundary(   s   drawings   canvass   xs   ys   showBoundarys   R(    (    s   ./renderPM.pys   draw.   s     	(   s   Renderers   _PMRendererc           B   s˜   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z RS(   s³   This draws onto a pix map image. It needs to be a class
    rather than a function, as some image-specific state tracking is
    needed outside of the state info in the SVG model.c         C   s   t  ƒ  |  _ d  S(   N(   s   StateTrackers   selfs   _tracker(   s   self(    (    s   ./renderPM.pys   __init__9   s    c         C   s   |  i i ƒ  |  i ƒ  d  S(   N(   s   selfs   _trackers   pops
   applyState(   s   self(    (    s   ./renderPM.pys   pop<   s    c         C   s*   t  | ƒ } |  i i | ƒ |  i ƒ  d  S(   N(   s   getStateDeltas   nodes   deltass   selfs   _trackers   pushs
   applyState(   s   selfs   nodes   deltas(    (    s   ./renderPM.pys   push@   s    c         C   sÊ   |  i i ƒ  } | d |  i _ | d |  i _ t | d ƒ |  i _ | d |  i _	 | d |  i _
 | d } | o
 d | f p t } | |  i _ t | d ƒ |  i _ |  i i | d	 | d
 ƒ d  S(   Ns   ctms   strokeWidths   strokeColors   strokeLineCaps   strokeLineJoins   strokeDashArrayi    s	   fillColors   fontNames   fontSize(   s   selfs   _trackers   getStates   ss   _canvass   ctms   strokeWidths	   Color2Hexs   strokeColors   lineCaps   lineJoins   das   Nones	   dashArrays	   fillColors   setFont(   s   selfs   ss   da(    (    s   ./renderPM.pys
   applyStateE   s    
c         C   sK   t  i ƒ  } |  i i d d !| | f | d <|  i i	 | ƒ |  i
 ƒ  d  S(   Ni    i   s	   transform(   s   STATE_DEFAULTSs   copys   deltass   selfs   _canvass   _baseCTMs   xs   ys   _trackers   pushs
   applyState(   s   selfs   xs   ys   deltas(    (    s   ./renderPM.pys	   initStateR   s    !c         C   s(   |  i | ƒ |  i | ƒ |  i ƒ  d S(   sE   This is the recursive method called for each node
        in the treeN(   s   selfs   pushs   nodes   drawNodeDispatchers   pop(   s   selfs   node(    (    s   ./renderPM.pys   drawNodeX   s     c         C   s…   |  i } | i | i j o
 d j n o& | i | i | i | i | i	 ƒ n/ | i
 | i | i | i | i	 | i | i ƒ d  S(   Ni    (   s   selfs   _canvass   cs   rects   rxs   rys   xs   ys   widths   heights	   roundRect(   s   selfs   rects   c(    (    s   ./renderPM.pys   drawRecte   s    	$&c         C   s)   |  i i | i | i | i | i ƒ d  S(   N(   s   selfs   _canvass   lines   x1s   y1s   x2s   y2(   s   selfs   line(    (    s   ./renderPM.pys   drawLinem   s    c      	   C   sþ   | i o t i i | i ƒ oÚ t | i ƒ t d ƒ j o" t ƒ  i | i ƒ i d ƒ } n | i i d ƒ } | i	 \ } } | i | i f \ } } | t j o
 | } n | t j o
 | } n |  i i | i | i | | | i ƒ  | | d ƒ n d  S(   Ns    s   RGBi   (   s   images   paths   oss   existss   types	   _getImages   opens   converts   ims   sizes   srcWs   srcHs   widths   heights   dstWs   dstHs   Nones   selfs   _canvass	   _aapixbufs   xs   ys   tostring(   s   selfs   images   dstWs   srcHs   ims   srcWs   dstH(    (    s   ./renderPM.pys	   drawImagep   s     " 
 
c         C   s3   |  i } | i | i | i | i ƒ | i ƒ  d  S(   N(   s   selfs   _canvass   cs   circles   cxs   cys   rs   fillstrokepath(   s   selfs   circles   c(    (    s   ./renderPM.pys
   drawCircle   s    	i    c         C   s½   | i } t | ƒ d j p
 t d ‚ |  i } | i ƒ  | i	 | d | d ƒ x< t
 d t | ƒ d ƒ D]" } | i | | | | d ƒ qj W| o | i ƒ  | i ƒ  n | i ƒ  d  S(   Ni   s#   Polyline must have 1 or more pointsi    i   (   s   polylines   pointss   Ps   lens   AssertionErrors   selfs   _canvass   cs	   pathBegins   moveTos   ranges   is   lineTos   _doCloses	   pathCloses   pathFills
   pathStroke(   s   selfs   polylines   _doCloses   cs   is   P(    (    s   ./renderPM.pys   drawPolyLine„   s    		
  
c         C   s9   |  i } | i | i | i | i | i ƒ | i ƒ  d  S(   N(	   s   selfs   _canvass   cs   ellipses   cxs   cys   rxs   rys   fillstrokepath(   s   selfs   ellipses   c(    (    s   ./renderPM.pys   drawEllipse‘   s    	"c         C   s   |  i | d d ƒd  S(   Ns   _doClosei   (   s   selfs   drawPolyLines   polygon(   s   selfs   polygon(    (    s   ./renderPM.pys   drawPolygon–   s    c      
   C   sä  |  i } | i }	 |	 t j	 oÁ|  i i ƒ  } | d } | d } | d } t | ƒ }
 | i } | i } | i } | d d g j oc t | | | ƒ } | d j o | | } qê | d j o | | d } qê t d	 t | ƒ ‚ n t |
 d
 t ƒ o: t | t ƒ o | i d ƒ } n | i | | | ƒ qà|
 } t | t ƒ o“ y | i d ƒ } Wqát j
 om } | i d d !\ } } t | i d  d | i d | | d | !| | | !| | | d !f f Œ  ‚ qáXn t" | |
 g |
 i# ƒ } t% | ƒ } | d } d | } xž t) | ƒ D] } | | \ } } | | j o | i, | i
 | ƒ | } n | i | | | ƒ | | j o0 | | t- t. | i/ i0 t. t1 | ƒ ƒ ƒ 7} q'q'W|
 | j o | i, | | ƒ qàn d  S(   Ns
   textAnchors   fontNames   fontSizes   starts	   inheriteds   ends   middlei   s   bad value for textAnchor s   _dynamicFonts   utf8i   s   %s
%s-->%s<--%si
   i   f0.001(2   s   selfs   _canvass   canvs	   fillColors   fills   Nones   _trackers   getStates   Ss   text_anchors   fontNames   fontSizes   getFonts   fonts	   stringObjs   texts   xs   ys   stringWidths   textLens
   ValueErrors   strs   getattrs
   isinstances   unicodes   encodes
   drawStrings   fcs   decodes   UnicodeDecodeErrors   es   argss   is   js
   unicode2T1s   substitutionFontss   FTs   lens   ns   nm1s   wscales   xranges   fs   ts   setFonts   sums   maps   widthss   __getitem__s   ord(   s   selfs	   stringObjs   fontNames   FTs   textLens   nm1s   text_anchors   texts   canvs   fills   fonts   fontSizes   Ss   fcs   wscales   es   fs   is   js   ns   ts   ys   x(    (    s   ./renderPM.pys
   drawString™   sX    		


			 W

 
4c         C   s  |  i } | t j o_ | i d =| i o9 | i d } | i } d | _ |  i	 | ƒ | | _ n | i
 ƒ  d  Sn | i ƒ  | i | i | i | i f } d k l } | | | ƒ } | i o | i ƒ  | i i | ƒ n  | o | i ƒ  n | i ƒ  d  S(   Niÿÿÿÿi   (   s   _renderPath(   s   selfs   _canvass   cs   paths   EmptyClipPaths
   _clipPathss   Ps
   isClipPaths   icps   drawPaths   clipPathClears	   pathBegins   moveTos   lineTos   curveTos	   pathCloses	   drawFuncss   reportlab.graphics.shapess   _renderPaths   isCloseds   clipPathSets   appends   pathFills
   pathStroke(   s   selfs   paths   cs   _renderPaths	   drawFuncss   isCloseds   Ps   icp(    (    s   ./renderPM.pys   drawPathÈ   s*    	

		



 (   s   __name__s
   __module__s   __doc__s   __init__s   pops   pushs
   applyStates	   initStates   drawNodes   drawRects   drawLines	   drawImages
   drawCircles   drawPolyLines   drawEllipses   drawPolygons
   drawStrings   drawPath(    (    (    s   ./renderPM.pys   _PMRenderer4   s     													/c         C   s  y |  i | | ƒ Wní t i j
 oÞ } | i d d j o ‚  n yk t | ƒ } t i
 d j o& t i | | i i ƒ  | i i ƒ n& t i | | i i ƒ  | i i t ƒ Wn< t t t i ƒ  d  ƒ \ } } t d | | | f ‚ n X|  i | | ƒ n Xd  S(   Ni    s   Can't find font!s   0.98i   s9   Can't setFont(%s) missing the T1 files?
Originally %s: %s(   s   gss   setFonts   fontNames   fontSizes	   _renderPMs   Errors   errMsgs   argss   getFonts   fs   _versions
   makeT1Fonts   faces
   findT1Files   encodings   vectors   open_and_reads   maps   strs   syss   exc_infos   s1s   s2s   RenderPMError(   s   gss   fontNames   fontSizes   fs   s2s   s1s   errMsg(    (    s   ./renderPM.pys   _setFontà   s     &)c         C   s,   t  ƒ  } |  i d d | i d | i ƒSd  S(   Ns   Ps   dithers   palette(   s	   _getImages   Images   ims   converts   NONEs   ADAPTIVE(   s   ims   Image(    (    s   ./renderPM.pys   _convert2pilpñ   s    	c         C   sÐ   t  |  ƒ }  |  i \ } } t i | | |  i ƒ  |  i i ƒ  ƒ } t
 | d ƒ ol t t i i | ƒ d d t i | ƒ d ƒ i | ƒ t i d j o! d k l } | | d d ƒqÌ n | i | ƒ d  S(	   Ns   writei    s   .s   wbs   mac(   s   markfilenames   exts   PICT(   s   _convert2pilps   ims   sizes   colss   rowss	   _renderPMs   pil2picts   tostrings
   getpalettes   ss   hasattrs   fns   opens   oss   paths   splitexts   strings   lowers   fmts   writes   names   reportlab.lib.utilss   markfilename(   s   ims   fns   fmts   transparents   markfilenames   rowss   colss   s(    (    s   ./renderPM.pys   _saveAsPICTõ   s    '7f0.55228474979999997s   PMCanvasc           B   s  t  Z d d e d „ Z e d „ Z d „  Z e d „ Z d d „ Z d	 „  Z e d
 „ Z	 d „  Z
 d „  Z d d d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z RS(   NiH   iÿÿÿ c         C   s´   | d } t | | d ƒ } t | | d ƒ } t i | | d | ƒ|  i	 d <| |  i	 d <| d d | d d f |  i	 d <g  |  i	 d <| |  i	 d	 <| |  i	 d
 <|  i |  _ d S(   s-   configPIL dict is passed to image save methodf72.0f0.5s   bgs   _gss   _bgi    s   _baseCTMs
   _clipPathss	   configPILs   _dpiN(   s   dpis   scales   ints   ws   hs	   _renderPMs   gstates   bgs   selfs   __dict__s	   configPILs   _baseCTMs   ctm(   s   selfs   ws   hs   dpis   bgs	   configPILs   scale(    (    s   ./renderPM.pys   __init__  s     
c   	      C   s3  | t j o |  i } n | | f \ |  i _ |  i _ h  d t <d t <d t <d t <d t <d t <d t <} |  i
 } | i | i f \ } } x' | i ƒ  D] } t | | ƒ | | <q« W~ |  `
 t i | | d | ƒ} |  i d	 <x( | i ƒ  D] } t |  | | | ƒ qW| i | | ƒ d  S(
   Ns   ctms   strokeWidths   strokeColors   lineCaps   lineJoins	   dashArrays	   fillColors   bgs   _gs(   s   bgs   Nones   selfs   _bgs   ws   hs   _drawings   widths   heights   As   _gss   gss   fontNames   fontSizes   fNs   fSs   keyss   ks   getattrs	   _renderPMs   gstates   __dict__s   setattrs   setFont(	   s   selfs   ws   hs   bgs   As   gss   fSs   ks   fN(    (    s   ./renderPM.pys   _drawTimeResize  s     E	 	# c         C   sE   t  ƒ  i d d |  i i |  i i f ƒ} | i |  i i ƒ | Sd  S(   Ns   RGBs   size(	   s	   _getImages   news   selfs   _gss   widths   heights   ims
   fromstrings   pixBuf(   s   selfs   im(    (    s   ./renderPM.pys   toPIL  s    *c         C   sS  |  i ƒ  } | t j ob t | ƒ t j	 o t d t | ƒ ‚ n t	 i
 i | ƒ d } | i d ƒ o | d } q{ n |  i p h  } t i | ƒ } | d g j o t | ƒ } n| d d g j o& t | | | d | i d t ƒ ƒSnä | d d	 d
 d d g j o | d j o
 d	 } n | d j o4 y d k l } Wq¨t j
 o d  k } q¨XqÖ| d
 j o4 y d k l } Wq¨t j
 o d  k } q¨XqÖn+ | d d f j o
 d } n t d | ‚ | d	 j o| i d t ƒ } | o² d k l } l } d d g }
 x: t d d d f | i ƒ  ƒ D] \ } } d |
 | | <q;W| i  d | i! ƒ  | i" | i# |
 ƒ i$ d ƒ i# d d g d g ƒ ƒ f ƒ } n xC d |  i% f d d f f D]" \ } } | i | | ƒ | | <qÊWn t( | i) | | f | ƒ t* | d ƒ o t	 i+ d j o! d k, l- }	 |	 | d  | ƒn d  S(!   Ns)   Invalid type '%s' for fn when fmt is Nonei   s   .s   GIFs   PCTs   PICTs   transparents   PNGs   TIFFs   BMPs   PPMs   TIF(   s   PngImagePlugin(   s   BmpImagePlugins   JPGs   JPEGs   Unknown image kind %s(   s
   ImageChopss   Imagei   i    i   i   iÿ   s   RGBAs   Ls
   resolutions   resolution units   inchs   writes   mac(   s   markfilenames   ext(.   s   selfs   toPILs   ims   fmts   Nones   types   fns
   StringTypes
   ValueErrors   oss   paths   splitexts
   startswiths	   configPILs   strings   uppers   _convert2pilps   _saveAsPICTs   gets   PILs   PngImagePlugins   ImportErrors   BmpImagePlugins   RenderPMErrors   tcs
   ImageChopss   Images   Ts   zips
   bitmap_rgbs   os   cs   merges   splits   inverts   points   converts   _dpis   as   ds   applys   saves   hasattrs   names   reportlab.lib.utilss   markfilename(   s   selfs   fns   fmts   PngImagePlugins   ims
   ImageChopss	   configPILs   BmpImagePlugins   tcs   markfilenames   Ts   as   cs   ds   Images   o(    (    s   ./renderPM.pys
   saveToFile$  sZ     & 

 U !s   GIFc         C   s*   t  ƒ  } |  i | d | ƒ| i ƒ  Sd  S(   Ns   fmt(   s   getStringIOs   ss   selfs
   saveToFiles   fmts   getvalue(   s   selfs   fmts   s(    (    s   ./renderPM.pys   saveToStringR  s    	c   	      C   sÉ   d k  } |  i } | i | i | i f \ } } } | i	 | i
 d d t | ƒ d d d d | | d d ƒ
 ƒ | d	 } x9 t t | ƒ d | ƒ D] } | i	 | | | | !ƒ q’ W| i	 d
 d ƒ d S(   s¬   
        Niki Spahiev, <niki@vintech.bg>, asserts that this is a respectable way to get BMP without PIL
        f is a file like object to which the BMP is written
        Ns   =2sLLLLLLhh24xs   BMi6   i    i(   i   i   i   s    i   (   s   structs   selfs   _gss   gss   pixBufs   widths   heights   pixs   fs   writes   packs   lens   rowbs   ranges   o(	   s   selfs   fs   gss   structs   heights   pixs   widths   rowbs   o(    (    s   ./renderPM.pys
   _saveToBMPW  s     		!;
 c         C   s   t  |  i | | ƒ d  S(   N(   s   _setFonts   selfs   _gss   fontNames   fontSize(   s   selfs   fontNames   fontSizes   leading(    (    s   ./renderPM.pys   setFonte  s    c         C   s   t  |  i | | ƒ d  S(   N(   s   setattrs   selfs   _gss   names   value(   s   selfs   names   value(    (    s   ./renderPM.pys   __setattr__h  s    c         C   s   t  |  i | ƒ Sd  S(   N(   s   getattrs   selfs   _gss   name(   s   selfs   name(    (    s   ./renderPM.pys   __getattr__k  s    i   c         C   s.   | o |  i ƒ  n | o |  i ƒ  n d  S(   N(   s   fills   selfs   pathFills   strokes
   pathStroke(   s   selfs   strokes   fill(    (    s   ./renderPM.pys   fillstrokepathn  s      c         C   su  t  | | ƒ d j p t ‚ t t | d ƒ } t t | d ƒ } | | | } | | | } t t | d ƒ } t t | d ƒ }	 | | | } | | |	 } | | } | | } t | | d d } t  d d d t | ƒ t | ƒ ƒ } | | | } | | | }
 | |	 } | | } | | | } | | | } | | f | |
 f | | f | | f f f Sd S(   s-  compute the control points for a bezier arc with theta1-theta0 <= 90.
        Points are computed for an arc with angle theta increasing in the
        counter-clockwise (CCW) direction.  returns a tuple with starting point
        and 3 control points of a cubic bezier curve for the curvto opertatoriZ   f180.0f2.0f4.0f3.0f1.0N(   s   abss   theta1s   theta0s   AssertionErrors   coss   pis   cos0s   sins   sin0s   cxs   rxs   x0s   cys   rys   y0s   cos1s   sin1s   x3s   y3s   dx1s   dy1s   halfAngs   ks   x1s   y1s   dx2s   dy2s   x2s   y2(   s   selfs   cxs   cys   rxs   rys   theta0s   theta1s   dy1s   sin0s   sin1s   y1s   y0s   y3s   y2s   dx2s   dx1s   dy2s   cos1s   cos0s   x2s   x3s   x0s   x1s   ks   halfAng(    (    s   ./renderPM.pys   _bezierArcSegmentCCWr  s*     
(
c         C   sO  | | } t | ƒ d j o | | f g } nu t t t | ƒ d ƒ ƒ } t | ƒ | } g  } x? t
 | ƒ D]1 } | | | } | | } | i | | f ƒ qo Wg  } xŽ | D]† \ } } | o; |  i | | | | | | ƒ \ \ } }	 }
 | i |
 ƒ q± |  i | | | | | | ƒ \ \ } } }
 | i |
 ƒ q± W| |	 f | f Sd S(   sÓ   return a set of control points for Bezier approximation to an arc
        with angle increasing counter clockwise. No requirement on |theta1-theta0| <= 90
        However, it must be true that theta1-theta0 > 0.f90.0N(   s   theta1s   theta0s   angularExtents   abss	   angleLists   ints   ceils   Nfrags   floats	   fragAngles   ranges   iis   as   bs   appends   ctrlptss   selfs   _bezierArcSegmentCCWs   cxs   cys   rxs   rys   x0s   y0s   ptss   tmpxs   tmpy(   s   selfs   cxs   cys   rxs   rys   theta0s   theta1s   Nfrags   iis   y0s   ptss	   angleLists   angularExtents   tmpys   tmpxs   x0s   as   bs	   fragAngles   ctrlpts(    (    s   ./renderPM.pys   bezierArcCCW•  s*     
 
 **c         C   s†   |  i | | | | | | ƒ \ \ } } } |  i | | ƒ xE | D]= \ \ } } \ }	 } \ }
 } |  i | | |	 | |
 | ƒ qA Wd S(   sÏ   adds an ellisesoidal arc segment to a path, with an ellipse centered
        on cx,cy and with radii (major & minor axes) rx and ry.  The arc is
        drawn in the CCW direction.  Requires: (ang2-ang1) > 0N(   s   selfs   bezierArcCCWs   cxs   cys   rxs   rys   ang1s   ang2s   x0s   y0s   ctrlptss   lineTos   x1s   y1s   x2s   y2s   x3s   y3s   curveTo(   s   selfs   cxs   cys   rxs   rys   ang1s   ang2s   y2s   ctrlptss   x2s   x3s   y1s   y0s   x0s   x1s   y3(    (    s   ./renderPM.pys   addEllipsoidalArc³  s     * !s   middlec         C   s}   |  i t j	 oi t | |  i |  i ƒ } | d j o | | 8} n  | d j o | | d 8} n |  i
 | | | ƒ n d  S(   Ns   ends   middlef2.0(   s   selfs	   fillColors   Nones   stringWidths   texts   fontNames   fontSizes   textLens   text_anchors   xs
   drawStrings   y(   s   selfs   xs   ys   texts   text_anchors   textLen(    (    s   ./renderPM.pys   drawCentredString¾  s    c         C   s   |  i | | | d d ƒd  S(   Ns   text_anchors   end(   s   selfs   drawCentredStrings   texts   xs   y(   s   selfs   texts   xs   y(    (    s   ./renderPM.pys   drawRightStringÇ  s    c         C   sL   |  i t j	 o8 |  i ƒ  |  i | | ƒ |  i | | ƒ |  i
 ƒ  n d  S(   N(   s   selfs   strokeColors   Nones	   pathBegins   moveTos   x1s   y1s   lineTos   x2s   y2s
   pathStroke(   s   selfs   x1s   y1s   x2s   y2(    (    s   ./renderPM.pys   lineÊ  s
    
c         C   s~   |  i ƒ  |  i | | ƒ |  i | | | ƒ |  i | | | | ƒ |  i | | | ƒ |  i ƒ  |  i	 d | d | ƒ d  S(   Ns   strokes   fill(   s   selfs	   pathBegins   moveTos   xs   ys   lineTos   widths   heights	   pathCloses   fillstrokepaths   strokes   fill(   s   selfs   xs   ys   widths   heights   strokes   fill(    (    s   ./renderPM.pys   rectÑ  s    

c   	      C   s  | d j o
 | } n | d j o
 | } n | | } | | } |  i	 ƒ  |  i
 | | | ƒ |  i | | | | | | d d ƒ |  i | | | | | | d d ƒ |  i | | | | | | d d ƒ |  i | | | | | | d d ƒ |  i ƒ  |  i ƒ  d S(   sâ   rect(self, x, y, width, height, rx,ry):
        Draw a rectangle if rx or rx and ry are specified the corners are
        rounded with ellipsoidal arcs determined by rx and ry
        (drawn in the counter-clockwise direction)i    i  ih  iZ   i´   N(   s   rxs   rys   xs   widths   x2s   ys   heights   y2s   selfs	   pathBegins   moveTos   addEllipsoidalArcs	   pathCloses   fillstrokepath(	   s   selfs   xs   ys   widths   heights   rxs   rys   x2s   y2(    (    s   ./renderPM.pys	   roundRectÚ  s      
 



$$$$
c         C   s   |  i | | | | ƒ d S(   sR   add closed path circle with center cx,cy and axes r: counter-clockwise orientationN(   s   selfs   ellipses   cxs   cys   r(   s   selfs   cxs   cys   r(    (    s   ./renderPM.pys   circleì  s     c         C   sÄ  |  i ƒ  | | }
 | }	 | } | | } | | } | | t } | | t } | } |  i |
 |	 ƒ |  i | | | | | | ƒ | }
 | }	 | | } | } | | t } | | } | } | | t } |  i | | | | | | ƒ | }
 | }	 | } | | } | | } | | t } | | t } | | } |  i | | | | | | ƒ | }
 | }	 | | } | } | | t } | | } | | } | | t } |  i | | | | | | ƒ |  i ƒ  d S(   s…   add closed path ellipse with center cx,cy and axes rx,ry: counter-clockwise orientation
        (remember y-axis increases downward) N(   s   selfs	   pathBegins   cxs   rxs   x0s   cys   y0s   x3s   rys   y3s   x1s   BEZIER_ARC_MAGICs   y1s   x2s   y2s   moveTos   curveTos	   pathClose(   s   selfs   cxs   cys   rxs   rys   y2s   x2s   x3s   y1s   y0s   x0s   x1s   y3(    (    s   ./renderPM.pys   ellipseð  sP     











c         C   s   d S(   s   do nothing for compatibilityN(    (   s   self(    (    s   ./renderPM.pys	   saveState+  s     c         C   s   t  | ƒ |  _ d  S(   N(   s	   Color2Hexs   aColors   selfs	   fillColor(   s   selfs   aColor(    (    s   ./renderPM.pys   setFillColor/  s    c         C   s   t  | ƒ |  _ d  S(   N(   s	   Color2Hexs   aColors   selfs   strokeColor(   s   selfs   aColor(    (    s   ./renderPM.pys   setStrokeColor2  s    c         C   s   | |  _ d  S(   N(   s   caps   selfs   lineCap(   s   selfs   cap(    (    s   ./renderPM.pys
   setLineCap8  s    c         C   s   | |  _ d  S(   N(   s   widths   selfs   strokeWidth(   s   selfs   width(    (    s   ./renderPM.pys   setLineWidth;  s    (   s   __name__s
   __module__s   Nones   __init__s   _drawTimeResizes   toPILs
   saveToFiles   saveToStrings
   _saveToBMPs   setFonts   __setattr__s   __getattr__s   fillstrokepaths   _bezierArcSegmentCCWs   bezierArcCCWs   addEllipsoidalArcs   drawCentredStrings   drawRightStrings   lines   rects	   roundRects   circles   ellipses	   saveStates   setFillColors   setStrokeColors   restoreStates
   setLineCaps   setLineWidth(    (    (    s   ./renderPM.pys   PMCanvas  s4   	.				#									;				iH   iÿÿÿ c      	   C   sT   t  |  ƒ }  t |  i |  i d | d | d | ƒ} t	 |  | d d d | ƒ| Sd  S(   Ns   dpis   bgs	   configPILi    s   showBoundary(   s   renderScaledDrawings   ds   PMCanvass   widths   heights   dpis   bgs	   configPILs   cs   draws   showBoundary(   s   ds   dpis   bgs	   configPILs   showBoundarys   c(    (    s   ./renderPM.pys   drawToPMCanvas>  s    'c      
   C   s,   t  |  d | d | d | d | ƒi ƒ  Sd  S(   Ns   dpis   bgs	   configPILs   showBoundary(   s   drawToPMCanvass   ds   dpis   bgs	   configPILs   showBoundarys   toPIL(   s   ds   dpis   bgs	   configPILs   showBoundary(    (    s   ./renderPM.pys	   drawToPILD  s    c      
   C   sP   t  ƒ  } t |  d | d | d | d | ƒ} | i	 d d | i
 d | i ƒSd  S(   Ns   dpis   bgs	   configPILs   showBoundarys   Ps   dithers   palette(   s	   _getImages   Images	   drawToPILs   ds   dpis   bgs	   configPILs   showBoundarys   ims   converts   NONEs   ADAPTIVE(   s   ds   dpis   bgs	   configPILs   showBoundarys   Images   im(    (    s   ./renderPM.pys
   drawToPILPG  s    	$s   GIFc      
   C   s8   t  |  d | d | d | d | ƒ} | i | | ƒ d S(   so   create a pixmap and draw drawing, d to it then save as a file
    configPIL dict is passed to image save methods   dpis   bgs	   configPILs   showBoundaryN(
   s   drawToPMCanvass   ds   dpis   bgs	   configPILs   showBoundarys   cs
   saveToFiles   fns   fmt(   s   ds   fns   fmts   dpis   bgs	   configPILs   showBoundarys   c(    (    s   ./renderPM.pys
   drawToFileL  s     $c         C   s<   t  ƒ  } t |  | d | d | d | d | ƒ| i ƒ  Sd  S(   Ns   fmts   dpis   bgs	   configPIL(	   s   getStringIOs   ss
   drawToFiles   ds   fmts   dpis   bgs	   configPILs   getvalue(   s   ds   fmts   dpis   bgs	   configPILs   showBoundarys   s(    (    s   ./renderPM.pys   drawToStringR  s    	%c          C   s  d „  } d  k } d k l } | i } g  }  | i i d ƒ o | i d ƒ n d } d } | g } d } x/| d t t d ƒ ƒ D]\ } } } d	 | } d
 p
 | d j ot | i ƒ } t | i ƒ } | i d | | | f ƒ xTd d d d d g D]9} | d d d d g j o | i d t i | ƒ ƒ n yÚ d | | | ƒ f } | i i d | ƒ } | i i | ƒ o | i  | ƒ n | d j o3 d k! l" }	 t# | | d | d h  d |	 <ƒn t# | | d | ƒ| d d d g j o | i d | ƒ n d G| GHWqt$ j
 o d | GH‚  qXqWn | i% i& d d ƒ d j o d | i' d <n | i( d d  d! g d" d d# | ƒ | d
 } q‡ W| i | ƒ | i i d d$ ƒ } t* | d% ƒ i+ | ƒ t, i- d& j o! d' k. l/ }
 |
 | d( d) ƒn d* | GHd  S(+   Nc         C   s   |  d j o
 d }  n |  Sd  S(   Ns   tiffs   tif(   s   x(   s   x(    (    s   ./renderPM.pys   extZ  s     
(   s
   testshapess   pmoutsq   <html><head><title>renderPM output results</title></head>
    <body>
    <h1>renderPM results of output</h1>
    s   </body>
    </html>
    i    s   doTTFs   ft_get_faces
   renderPM%di   i
   s(   <hr><h2>Drawing %s %d</h2>
<pre>%s</pre>s   gifs   tiffs   pngs   jpgs   pcts   <p>%s format</p>
s   %s.%s(   s   whites   fmts	   configPILs   transparents   <img src="%s" border="1"><br>
s   wrotes   Problem drawing %s files   RL_NOEPSPREVIEWs   0s   1s   previews   formatss   epss   pdfs   outDirs   fnRoots
   index.htmls   ws   mac(   s   markfilenames   exts   HTMLs   wrote %s(0   s   exts   oss   reportlab.graphicss
   testshapess   getAllTestDrawingss   drawingss   paths   isdirs   mkdirs   htmlTops
   htmlBottoms   htmls   is   hasattrs	   _renderPMs   drawings	   docstrings   names   fnRoots   ints   widths   ws   heights   hs   appends   ks   strings   uppers   filenames   joins   fullpaths   isfiles   removes   reportlab.lib.colorss   whites
   drawToFiles   AttributeErrors   environs   gets   __dict__s   saves   htmlFileNames   opens
   writeliness   syss   platforms   reportlab.lib.utilss   markfilename(   s   drawingss
   testshapess   filenames   htmls   fnRoots   htmlTops
   htmlBottoms	   docstrings   getAllTestDrawingss   whites   markfilenames   names   is   hs   ks   exts   htmlFileNames   ws   fullpaths   oss   drawing(    (    s   ./renderPM.pys   testY  s`    				 
 &	 "s   __main__(4   s   __version__s   reportlab.graphics.shapess   reportlab.graphics.renderbases   StateTrackers   getStateDeltas   renderScaledDrawings   reportlab.pdfbase.pdfmetricss   getFonts
   unicode2T1s   maths   sins   coss   pis   ceils   reportlab.lib.utilss   getStringIOs   open_and_reads	   reportlabs	   rl_configs	   Exceptions   RenderPMErrors   strings   oss   syss	   _renderPMs   ImportErrors   errMsgs   strs   typess	   TupleTypes   ListTypes	   _SeqTypess	   _getImages	   Color2Hexs   _unset_s   draws   Renderers   _PMRenderers   _setFonts   _convert2pilps   Nones   _saveAsPICTs   BEZIER_ARC_MAGICs   PMCanvass   drawToPMCanvass	   drawToPILs
   drawToPILPs
   drawToFiles   drawToStrings   saves   tests   __name__('   s   RenderPMErrors   getStateDeltas   draws   _saveAsPICTs   _convert2pilps   drawToStrings   errMsgs   saves   drawToPMCanvass	   TupleTypes	   _SeqTypess	   drawToPILs   getStringIOs   _setFonts   _PMRenderers
   drawToPILPs	   rl_configs   tests   PMCanvass   pis   sins   getFonts   strings   renderScaledDrawings   ceils   syss	   Color2Hexs   BEZIER_ARC_MAGICs   ListTypes	   _renderPMs	   _getImages   coss   __version__s   StateTrackers
   drawToFiles   open_and_reads   Renderers   oss
   unicode2T1(    (    s   ./renderPM.pys   ?   sF    ,		¬		ÿ <	=