;
0sDc        	   @   s  d  Z  d Z d k Z d k Z d k Z d k l Z l Z l Z l	 Z	 d k
 l Z l Z l Z l Z l Z l Z d k l Z d k l Z d k l Z l Z l Z l Z d k l Z d	 k l Z d
 k Td
 k Td k l Z d k  l! Z! d e" f d     YZ# d Z$ d Z% h  d d d d d d d f <d e i& <d d <d d <d d <d d <d e' <d d <d e i& <d d <d  e <d! d" <Z( d#   Z) d$   Z* d%   Z+ d&   Z, d'   Z- d(   Z. d)   Z/ d*   Z0 d+   Z1 d,   Z2 d-   Z3 d.   Z4 d/   Z5 d0   Z6 d1 f  d2     YZ7 d3 f  d4     YZ8 d5   Z9 d6   Z: d7   Z; d8 e8 e7 f d9     YZ< d: e< f d;     YZ= e' d<  Z> e' d=  Z? d d> d?  Z@ d@   ZA dA e= e f dB     YZB dC f  dD     YZC dE e< f dF     YZD dG eD f dH     YZE dI eD f dJ     YZF eG dK  \ ZH ZI ZJ ZK dL dL dM d f ZL dN dO dP dQ g ZM dR   ZN dS eF f dT     YZO eO   ZP e' e' e' dU  ZQ dV eO f dW     YZR g  d d d dX  ZS dY eF f dZ     YZT d[ eF f d\     YZU d] eF f d^     YZV d_ eF f d`     YZW da eF f db     YZX dc eF f dd     YZY de eD f df     YZZ dg e< f dh     YZ[ di e7 f dj     YZ\ dk   Z] e^ dl j o e]   n d S(m   s;   
core of the graphics library - defines Drawing and Shapes
s5    $Id: shapes.py 2845 2006-05-03 12:24:35Z rgbecker $ N(   s   pis   coss   sins   tan(   s	   FloatTypes   IntTypes   ListTypes	   TupleTypes
   StringTypes   InstanceType(   s   pprint(   s   Flowable(   s   shapeCheckings   verboses   defaultGraphicsFontNames   _unset_(   s   logger(   s   colors(   s   *(   s   fp_str(   s   stringWidths   NotImplementedErrorc           B   s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   NotImplementedError   s   s   Non-Zero Windings   Even-Odds	   transformi   i    s   strokeColors   strokeWidths   strokeLineCaps   strokeLineJoins   strokeMiterLimits   TBAs   strokeDashArrays   strokeOpacityf1.0s	   fillColors   fontSizei
   s   fontNames
   textAnchors   startc           C   s   d d d d d d f Sd  S(   Ni   i    (    (    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   nullTransformA   s    c         C   s   d d d d |  | f Sd  S(   Ni   i    (   s   dxs   dy(   s   dxs   dy(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   translateD   s    c         C   s   |  d d | d d f Sd  S(   Ni    (   s   sxs   sy(   s   sxs   sy(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   scaleG   s    c         C   sA   |  t d } t |  t |  t |  t |  d d f Sd  S(   Ni   i    (   s   angles   pis   as   coss   sin(   s   angles   a(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   rotateJ   s    c         C   s.   |  t d } d d t |  d d d f Sd  S(   Ni   i   i    (   s   angles   pis   as   tan(   s   angles   a(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   skewXN   s    c         C   s.   |  t d } d t |  d d d d f Sd  S(   Ni   i   i    (   s   angles   pis   as   tan(   s   angles   a(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   skewYR   s    c      	   C   s   |  d | d |  d | d |  d | d |  d | d |  d | d |  d | d |  d | d |  d | d |  d | d |  d | d |  d |  d | d |  d | d |  d f Sd S(   s   A postmultiplied by Bi    i   i   i   i   i   N(   s   As   B(   s   As   B(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   mmultV   s     c         C   s   t  |  d |  d |  d |  d  } |  d | |  d | |  d | |  d | g } t | | d |  d | d |  d | d |  d | d |  d g  Sd S(   sB   For A affine 2D represented as 6vec return 6vec version of A**(-1)i    i   i   i   i   i   N(   s   floats   As   dets   Rs   tuple(   s   As   Rs   det(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   inversed   s     (4c         C   sF   |  d | d |  d | d |  d | d |  d | d f Sd S(   sB   Apply the homogenous part of atransformation a to vector v --> A*vi    i   i   i   N(   s   As   v(   s   As   v(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   zTransformPointk   s     c         C   sV   |  d | d |  d | d |  d |  d | d |  d | d |  d f Sd S(   s*   Apply transformation a to vector v --> A*vi    i   i   i   i   i   N(   s   As   v(   s   As   v(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   transformPointo   s     c         C   s   t  t |  Sd  S(   N(   s   maps   transformPoints   V(   s   matrixs   V(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   transformPointss   s    c         C   s   t  |  d  |  Sd  S(   Nc         C   s   t  | |   S(   N(   s   zTransformPoints   matrixs   x(   s   xs   matrix(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>w   s    (   s   maps   matrixs   V(   s   matrixs   V(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   zTransformPointsv   s    c         C   s  d }
 x) |  D]! }	 t |
 t |	 | |   }
 q Wt |   | } | } | d d j o | } | | } n1 | d d j o
 d } n | d } | | } | d d j oE |
 } | d j o
 d } q| d j o |
 } q|
 d } n | d d	 j oB d } | d j o
 |
 } q| d j o
 d } q|
 d } nA |
 d } | d j o | } n | d j o
 | } n d } | | |
 | | | f Sd  S(
   Ni    s   ss   nf2.0is   es   ends   starts   w(   s   ws   texts   ts   maxs   stringWidths   fonts   fontSizes   lens   leadings   hs   yts	   boxAnchors   ybs   xbs
   textAnchors   xt(   s   texts   fonts   fontSizes   leadings
   textAnchors	   boxAnchors   xbs   ybs   hs   ts   ws   yts   xt(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _textBoxLimitsy   sD     

 
  
 
  
c         C   s   t  t |  |  | f |  | | f |  | | | f |  | | f f  } t d   |  } t d   |  } t |  t |  t |  t |  | f Sd S(   s   
    Find the corner points of the rotated w x h sized box at x,y
    return the corner points and the min max points in the original space
    c         C   s   |  d S(   Ni    (   s   x(   s   x(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>   s    c         C   s   |  d S(   Ni   (   s   x(   s   x(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>   s    N(   s   zTransformPointss   rotates   angles   xs   ys   ws   hs   Cs   maps   Xs   Ys   mins   max(   s   xs   ys   ws   hs   angles   Cs   Ys   X(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _rotatedBoxLimits   s
     Is   _DrawTimeResizeablec           B   s   t  Z d  Z d   Z RS(   s:   Addin class to provide the horribleness of _drawTimeResizec         C   sf   t  |  d  oR |  i } | i } | | f \ | _ | _	 t  | d  o | i
 | |  qb n d  S(   Ns   _canvass   _drawTimeResize(   s   hasattrs   selfs   _canvass   canvass   _drawings   drawings   ws   hs   widths   heights   _drawTimeResize(   s   selfs   ws   hs   canvass   drawing(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _drawTimeResize   s    		(   s   __name__s
   __module__s   __doc__s   _drawTimeResize(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _DrawTimeResizeable   s    s   _SetKeyWordArgsc           B   s   t  Z h  d  Z RS(   Nc         C   s1   x* | i   D] \ } } t |  | |  q Wd S(   s9   In general properties may be supplied to the constructor.N(   s   keywordss   itemss   keys   values   setattrs   self(   s   selfs   keywordss   values   key(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__   s      (   s   __name__s
   __module__s   __init__(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _SetKeyWordArgs   s   c   
      C   s   t  d   |   } | o t Sn | d \ } }	 } } xz | d D]n \ } } } } | | j  o
 | } n | | j o
 | } n | |	 j  o
 | }	 n | | j o
 | } qC qC W| |	 | | f Sd  S(   Nc         C   s
   |  t j	 S(   N(   s   xs   None(   s   x(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>   s    i    i   (   s   filters   rectLists   Ls   Nones   xMins   yMins   xMaxs   yMaxs   x1s   y1s   x2s   y2(
   s   rectLists   y2s   x1s   yMaxs   Ls   x2s   y1s   xMaxs   xMins   yMin(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getRectsBounds   s      


c         C   sz   t  |   } |  d  } t | t d | d   } t | t d | d   } t |  t |  t	 |  t	 |  f Sd  S(   Nc         C   s   | |  S(   N(   s   ps   i(   s   is   p(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>   s    i    i   i   (
   s   lens   pointss   ns   fs   maps   xranges   xss   yss   mins   max(   s   pointss   fs   ns   xss   ys(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getPathBounds   s
    c         C   s   |  d } t |  t t f j oP t d   |   } t d   |   } t |  t |  t	 |  t	 |  f Sn t
 |   Sd S(   s"   Helper function for list of pointsi    c         C   s   |  d S(   Ni    (   s   xy(   s   xy(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>   s    c         C   s   |  d S(   Ni   (   s   xy(   s   xy(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   <lambda>   s    N(   s	   pointLists   firsts   types   ListTypes	   TupleTypes   maps   xss   yss   mins   maxs   getPathBounds(   s	   pointLists   xss   yss   first(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getPointsBounds   s     
,s   Shapec           B   sg   t  Z d  Z e   Z d   Z d d  Z d   Z d d  Z d   Z	 e
 o d   Z n d	   Z RS(
   s1  Base class for all nodes in the tree. Nodes are simply
    packets of data to be created, stored, and ultimately
    rendered - they don't do anything active.  They provide
    convenience methods for verification but do not
    check attribiute assignments or use any clever setattr
    tricks this time.c         C   s   t  d |  i i  d S(   s   Return a clone of this shape.s!   No copy method implemented for %sN(   s   NotImplementedErrors   selfs	   __class__s   __name__(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy   s     i   c         C   sP   h  } x? |  i i   D]. \ } } | d d !d j o | | | <q q W| Sd S(   sD   Interface to make it easy to extract automatic
        documentationi    i   s   _N(   s   propss   selfs   __dict__s   itemss   keys   value(   s   selfs   recurs   values   keys   props(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getProperties   s      c         C   s   |  i i |  d S(   sf   Supports the bulk setting if properties from,
        for example, a GUI application or a config file.N(   s   selfs   __dict__s   updates   props(   s   selfs   props(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   setProperties   s     s    c         C   s^   |  i   i   } | i   | o | d } n x& | D] \ } } d | | | f GHq8 Wd S(   s   Convenience. Lists them on standard output.  You
        may provide a prefix - mostly helps to generate code
        samples for documentation.s   .s	   %s%s = %sN(   s   selfs   getPropertiess   itemss   propLists   sorts   prefixs   names   value(   s   selfs   prefixs   values   names   propList(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   dumpProperties  s     
 c         C   s   |  i t j	 o xS |  i i   D]B } | d d j o+ |  i i |  p t d | |  f  q  q  Wx |  i i   D]l \ } } t |  |  p t d | |  f  t |  |  } | i |  p t d | | |  i i f  qv Wn d S(   s.  If the programmer has provided the optional
        _attrMap attribute, this checks all expected
        attributes are present; no unwanted attributes
        are present; and (if a checking function is found)
        checks each attribute.  Either succeeds or raises
        an informative exception.i    s   _s#   Unexpected attribute %s found in %ss   Missing attribute %s from %ss-   Invalid value %s for attribute %s in class %sN(   s   selfs   _attrMaps   Nones   __dict__s   keyss   keys   has_keys   AssertionErrors   itemss   attrs	   metavalues   hasattrs   getattrs   values   validates	   __class__s   __name__(   s   selfs   attrs	   metavalues   values   key(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   verify  s      / $c         C   s   t  |  | |  d S(   sS   By default we verify.  This could be off
            in some parallel base classes.N(   s   validateSetattrs   selfs   attrs   value(   s   selfs   attrs   value(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __setattr__(  s     c         C   s   t  d   d S(   s5   Returns bounding rectangle of object as (x1,y1,x2,y2)s+   Shapes and widgets must implement getBoundsN(   s   NotImplementedError(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds-  s     (   s   __name__s
   __module__s   __doc__s   AttrMaps   _attrMaps   copys   getPropertiess   setPropertiess   dumpPropertiess   verifys   shapeCheckings   __setattr__s	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Shape   s    				 s   Groupc           B   s   t  Z d  Z e d e e d d d e e d d  Z d   Z d   Z	 e
 d  Z d	   Z e
 d
  Z d   Z d   Z d   Z e
 d f d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s  Groups elements together.  May apply a transform
    to its contents.  Has a publicly accessible property
    'contents' which may be used to iterate over contents.
    In addition, child nodes may be given a name in which
    case they are subsequently accessible as properties.s	   transforms   descs"   Coordinate transformation to applys   contentss   Contained drawable elementsc         O   sh   |  i i   |  _ g  |  _ d d d d d d f |  _ x | D] } |  i |  q= Wt i	 |  |  d S(   s   Initial lists of elements may be provided to allow
        compact definitions in literal Python code.  May or
        may not be useful.i   i    N(   s   selfs   _attrMaps   clones   contentss	   transforms   elementss   elts   adds   _SetKeyWordArgss   __init__s   keywords(   s   selfs   elementss   keywordss   elt(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__=  s     	 c         C   sL   | oA | |  i i   j o t t  |  i | <n t |  | |  n d S(   sL   if name is not None add an attribute pointing to node and add to the attrMapN(   s   names   selfs   _attrMaps   keyss   AttrMapValues   isValidChilds   setattrs   node(   s   selfs   names   node(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _addNamedNodeM  s
     c         C   sL   | t j	 o; t |  p
 t d  |  i i |  |  i | |  n d S(   s   Appends non-None child node to the 'contents' attribute. In addition,
        if a name is provided, it is subsequently accessible by name
        s1   Can only add Shape or UserNode objects to a GroupN(	   s   nodes   Nones   isValidChilds   AssertionErrors   selfs   contentss   appends   _addNamedNodes   name(   s   selfs   nodes   name(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   addT  s
     c         C   s   |  i |  |  i d Sd  S(   Ni(   s   selfs   adds   nodes   contents(   s   selfs   node(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _nn^  s    c         C   ss   | t j	 ob t |  p
 t d  | d j  o | g |  i | | +n |  i i | |  |  i | |  n d S(   s4   Inserts sub-node n in contents at specified locations4   Can only insert Shape or UserNode objects in a Groupi    N(
   s   ns   Nones   isValidChilds   AssertionErrors   is   selfs   contentss   inserts   _addNamedNodes   name(   s   selfs   is   ns   name(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   insertb  s     c         C   s   t  |  t  o t |  i |  i  p t   } |  i i   | _ t	 | d  o |  i
 | _
 n |  i } | i i } xd | D]\ } t  | t  o | i   } n- t  | t  o | i   } n | i   } | |  q~ W|  i |  | Sd S(   s9   Return a new object which only contains primitive shapes.s	   transformN(   s
   isinstances   selfs   Drawings   widths   heights   Groups   objs   _attrMaps   clones   hasattrs	   transforms   contentss   self_contentss   appends   as   childs   UserNodes   provideNodes   newChilds   expandUserNodess   copys   _copyNamedContents(   s   selfs   as   self_contentss   newChilds   childs   obj(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   expandUserNodesl  s"     / 	 c         C   s  d k  l } t   } t | d  o |  i | _ n |  i } x | o | i	 d  } t | t  o | i | i    qD t | t  oV | i   } | i d d d d d d f j o | i i | i  q | i |  qD | i |  qD W| Sd S(   s    return a fully expanded object(   s   Widgets	   transformi    i   N(   s   reportlab.graphics.widgetbases   Widgets   Groups   objs   hasattrs   selfs	   transforms   contentss   Ps   pops   ns
   isinstances   UserNodes   appends   provideNodes   _explodes   extends   add(   s   selfs   Widgets   ns   Ps   obj(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _explode  s$     	 
 "c         C   s(   x! |  i D] } | i i |  q
 Wd  S(   N(   s   selfs   contentss   childs   objs   append(   s   selfs   objs   child(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _copyContents  s    
 c   	      C   s   d k  l  } |  i } | o |  i i   } n x |  i i   D]w \ } } | | j o* | i |  } t | | | i |  qA | | j o
 | | j o t | | | |   qA qA Wd  S(   N(   s   copy(   s   copys   selfs   contentss   self_contentss   aKeyss   _attrMaps   keyss   __dict__s   itemss   ks   vs   indexs   poss   setattrs   objs   noCopy(	   s   selfs   objs   aKeyss   noCopys   self_contentss   poss   vs   copys   k(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _copyNamedContents  s    	  c         C   s4   |  i i   | _ |  i |  |  i |  | Sd S(   s   copies to objN(   s   selfs   _attrMaps   clones   objs   _copyContentss   _copyNamedContents(   s   selfs   obj(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _copy  s
     c         C   s   |  i |  i    Sd S(   s   returns a copyN(   s   selfs   _copys	   __class__(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s     c         C   s   t  |  i t |   |  _ d S(   s&   Convenience to help you set transformsN(   s   mmults   selfs	   transforms   rotates   theta(   s   selfs   theta(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   rotate  s     c         C   s"   t  |  i t | |   |  _ d S(   s&   Convenience to help you set transformsN(   s   mmults   selfs	   transforms	   translates   dxs   dy(   s   selfs   dxs   dy(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   translate  s     c         C   s"   t  |  i t | |   |  _ d S(   s&   Convenience to help you set transformsN(   s   mmults   selfs	   transforms   scales   sxs   sy(   s   selfs   sxs   sy(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   scale  s     c         C   s.   t  t  |  i t |   t |   |  _ d S(   s&   Convenience to help you set transformsN(   s   mmults   selfs	   transforms   skewXs   kxs   skewYs   ky(   s   selfs   kxs   ky(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   skew  s     c         C   s   |  i d  | | f |  _ d S(   s2   Convenience function to set the origin arbitrarilyiN(   s   selfs	   transforms   xs   y(   s   selfs   xs   y(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   shift  s     c         C   s2   t  |  _ |  i i |  i  | |  _ | |  _ d S(   s|    Convenience function to make a drawing from a group
            After calling this the instance will be a drawing!
        N(   s   Drawings   selfs	   __class__s   _attrMaps   updates   _xtraAttrMaps   widths   height(   s   selfs   widths   height(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   asDrawing  s
     		c         C   sH   t  |  d t  } |  i } | o
 | | j o | g | } n | Sd S(   s[   Return the list of things to be rendered
        override to get more complicated behaviours
   backgroundN(   s   getattrs   selfs   Nones   bs   contentss   C(   s   selfs   Cs   b(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getContents  s     	 c         C   s   |  i o g  } x$ |  i D] } | i | i    q Wt |  }	 |	 t j o t Sn |	 \ }	 } } } |  i } |	 | g |	 | g | | g | | g g } g  }
 x$ | D] } |
 i t | |   q Wt |
  Sn t Sd  S(   N(   s   selfs   contentss   bs   elems   appends	   getBoundss   getRectsBoundss   x1s   Nones   y1s   x2s   y2s	   transforms   transs   cornerss
   newCornerss   corners   transformPoints   getPointsBounds(   s   selfs   y2s   bs   cornerss   elems   x2s   transs   y1s   corners   x1s
   newCorners(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s"    

  	* (   s   __name__s
   __module__s   __doc__s   AttrMaps   AttrMapValues   isTransforms   isListOfShapess   _attrMaps   __init__s   _addNamedNodes   Nones   adds   _nns   inserts   expandUserNodess   _explodes   _copyContentss   _copyNamedContentss   _copys   copys   rotates	   translates   scales   skews   shifts	   asDrawings   getContentss	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Group1  s,    		
	
													c         C   s   d k  l } |  i } | |  i } | p | i } | i	 |  o | g | | <n' | | | j o | | i
 |  n d S(   s7   add an import of obj's class to a dictionary of imports(   s	   getmoduleN(   s   inspects	   getmodules   objs	   __class__s   cs   __name__s   ms   ns   Is   has_keys   append(   s   objs   Is   ns   cs   ms	   getmodule(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _addObjImport  s     	c   
      C   s  t  |   t j o3|  t j o t |  | d  d Sn | o t |  |  n t |  t  o d k l	 } | |  i
 i i  \ } } } |  i   } |  i i d } x: | d D]. } | | }	 | | =| d t |	 |  } q WxA | i   D]3 \ } }	 | | }	 | d | t |	 |  f } q W| d  d Sqt |   Sn t  |   t j o t |   Sn t  |   t t f j o d	 } x% |  D] }	 | d t |	 |  } qWt  |   t j o d
 | d  Sqd | d  t |   d j o d p d	 f Sn t |   Sd S(   sE   return a repr style string with named fixed args first, then keywordss   EmptyClipPath(   s   getargss   (i   s   %s,s   %s=%s,is   )s    s   [%s]s   (%s%s)s   ,N(   s   types   selfs   InstanceTypes   EmptyClipPaths   _addObjImports   Is
   isinstances   Shapes   inspects   getargss   __init__s   im_funcs	   func_codes   argss   varargss   varkws   getPropertiess   Ps	   __class__s   __name__s   ss   ns   vs   _reprs   itemss   reprs	   FloatTypes   fp_strs   ListTypes	   TupleTypes   len(
   s   selfs   Is   ns   varkws   argss   Ps   varargss   getargss   ss   v(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _repr  sD       
 
! 0s   		c   	      C   s   d } t |  d t  } | o! | d | | t |  f } n |  i } x | D] } t
 | t  oU d | } | d } | d | | | f } | t | | | | |  } | d } qP | d | | t | |  f } qP W| Sd  S(   Ns    s	   transforms   %s%s.transform = %s
s   v%di   s   %s%s=%s._nn(Group())
s   %s%s.add(%s)
(   s   ss   getattrs   Gs   Nones   Cs   indents   pfxs   _reprs   contentss   ns
   isinstances   Groups   is   npfxs   _renderGroupPys   I(	   s   Gs   pfxs   Is   is   indents   Cs   npfxs   ss   n(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _renderGroupPy  s     !	 

$c         K   sg   | i |  i  h  } t |  } x: | i   D], } | i
 |  o | | | | | <q/ q/ W| Sd  S(   N(   s   kws   updates   selfs   __dict__s   Rs   lens   pfxs   ns   keyss   ks
   startswith(   s   selfs   pfxs   kws   ns   Rs   k(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _extraKW)  s     s   Drawingc           B   s8  t  Z d  Z e d e e d d d e e d d d e e  d e e d d d	 e e d
 d d d  d d d e e d d d d  d d d e e d d  Z	 e d e
  Z e i e	  d d d  Z d   Z e d  Z d   Z d   Z d   Z d   Z e e e e d d   Z e d! d"  Z RS(#   s   Outermost container; the thing a renderer works on.
    This has no properties except a height, width and list
    of contents.s   widths   descs   Drawing width in points.s   heights   Drawing height in points.s   canvs
   backgrounds!   Background widget for the drawings   hAligns   LEFTs   RIGHTs   CENTERs   CENTREs+   Horizontal alignment within parent documents   vAligns   TOPs   BOTTOMs)   Vertical alignment within parent documents   renderScales   Global scaling for renderings   BASEi  i   c         O   sT   t  |  _ t t i |  f | |  | |  _ | |  _	 d |  _
 d |  _ d |  _ d  S(   Ns   LEFTs   BOTTOMf1.0(   s   Nones   selfs
   backgrounds   applys   Groups   __init__s   nodess   keywordss   widths   heights   hAligns   vAligns   renderScale(   s   selfs   widths   heights   nodess   keywords(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__F  s    					c         C   s   h  d d d d g <} t |  i   d |  } d |  i i } d } xJ | i	   D]< \ } } | d | t i t |  d	 d
 !d d  f } qS W| d | } | d |  i |  i f } | d } | | } | d | } | Sd  S(   Ns   reportlab.graphics.shapess   _DrawingEditorMixins   Drawings   Groups   selfs   ExplodedDrawing_s0   #Autogenerated by ReportLab guiedit do not edit
s   from %s import %s
i   is   's    s(   
class %s(_DrawingEditorMixin,Drawing):
s3   	def __init__(self,width=%s,height=%s,*args,**kw):
s6   		apply(Drawing.__init__,(self,width,height)+args,kw)
sZ   

if __name__=="__main__": #NORUNTESTS
	%s().save(formats=['pdf'],outDir='.',fnRoot=None)
(   s   Is   _renderGroupPys   selfs   _explodes   Gs	   __class__s   __name__s   ns   ss   itemss   ms   os   strings   replaces   strs   widths   height(   s   selfs   Gs   Is   ms   os   ns   s(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   _renderPyO  s     4

c         C   s,   d k  } | i |  |  i d d d | d S(   s   This is used by the Platypus framework to let the document
        draw itself in a story.  It is specific to PDF and should not
        be used directly.Ni    s   showBoundary(   s	   renderPDFs   draws   selfs   canvs   showBoundary(   s   selfs   showBoundarys	   renderPDF(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   draw]  s     	c         C   sN   |  i } |  i } |  i } | d j o | | 9} | | 9} n | | f Sd  S(   Nf1.0(   s   selfs   widths   heights   renderScale(   s   selfs
   availWidths   availHeights   widths   renderScales   height(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   wrapd  s    			
c         C   s/   t  i |   } |  i | _ |  i | _ | Sd S(   s:   Return a new drawing which only contains primitive shapes.N(   s   Groups   expandUserNodess   selfs   objs   widths   height(   s   selfs   obj(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   expandUserNodesm  s
     c         C   s#   |  i |  i |  i |  i   Sd S(   s   Returns a copyN(   s   selfs   _copys	   __class__s   widths   height(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copyt  s     c         O   s   |  i t t | |   Sd  S(   N(   s   selfs   _copys   applys   Groups   argss   kw(   s   selfs   argss   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   asGroupx  s    s    c         K   s  d k  l } d } | o t |  d |  i i d  } t |  d d  } t	 |  o | |  } q y | t |  d d  } Wq t
 j
 o, } t |  i d  d j  o   q q Xn t i i |  o t i i |  \ } } n | p t |  d d	  } | i   i t i  } | o
 d	 } n t i i |  o8 t i i t |  d
 t i i t i d   |  } n t i i |  o t i |  n t i i t i i | |   } t i i |  } t i  | d d  d d d d d d d d d d d d d d g j o | d } n | p t |  d d g  | t# j	 o | f p t |  d |  f d f \ } } t$ i% i& t$ i' i& f }	 | t$ i% _& t$ i' _& d | j o d k) l* } | d } | o d | GHn | i, |  | | d t |  d  | i.  t/ |  d! |  | d" } t i1 d# j o< d$ k2 } d$ k3 } | i4 |  i5 d% d&  | i6 |  qtn x d d d d d d d d g D] } | | j o d' k) l8 } d( | | f } | o d) | | f GHn | i, |  | d* | d t |  d  | i.  t/ |  d+ |  | d, | } qqWd | j o d- k9 l: } | d. } | o d/ | GHn | i, |  | d0 | d1 t |  d2 d3 g  d d4 t |  d2 d d5 g  d d6 t |  d6 d  d t |  d  | i.  t/ |  d7 |  | d8 } n d | j om d9 k) l; } | d: } | o d/ | GHn | i, |  | d t |  d  | i.  t/ |  d; |  | d< } n d | j om d= k) l< }
 | d> } | o d/ | GHn |
 i, |  | d t |  d  | i.  t/ |  d7 |  | d? } n d | j oH | d@ } | o dA | GHn t= | dB  i> |  i?    | dC } n |	 \ t$ i% _& t$ i' _& t@ |  dD  o |  iA | |  n | o | | d p d Sd$ S(E   s   Saves copies of self in desired location and formats.
        Multiple formats can be supported in one call

        the extra keywords can be of the form
        _renderPM_dpi=96 (which passes dpi=96 to renderPM)
        (   s	   rl_configs    s   fileNamePatterns   %03ds   chartIdi    s   not all arguments converteds   outDirs   .s   _override_CWDi   s   pdfs   pss   epss   gifs   pngs   jpgs   jpegs   pcts   picts   tiffs   tifs   pys   bmps   svgs   formatss   verbose(   s	   renderPDFs   .pdfs   generating PDF file %ss   showBoundarys
   showBorders   _renderPDF_s   /.pdfs   macNs   CAROs   PDF (   s   renderPMs   %s.%ss   generating %s file %ss   fmts
   _renderPM_s   /.(   s   renderPS_SEPs   .epss   generating EPS file %ss   titles   depts   EPS_infos   Testings   companys	   ReportLabs   previews
   _renderPS_s   /.eps(   s	   renderSVGs   .svgs   _renderSVG_s   /.svg(   s   renderPSs   .pss   /.pss   .pys   generating py file %ss   ws   /.pys
   saveLogger(B   s	   reportlabs	   rl_configs   exts   fnRoots   getattrs   selfs	   __class__s   __name__s   chartIds   callables	   TypeErrors   errs   strs   finds   oss   paths   isabss   splits   outDirs   rstrips   seps   joins   dirnames   syss   argvs   isdirs   makedirss   normpaths   fnroots   splitexts   plotModes   strings   lowers   formatss   verboses   Nones   loggers   warnOnces   enableds   infoOnces   _saveds   reportlab.graphicss	   renderPDFs   filenames
   drawToFiles   titles   showBoundarys   _extraKWs   kws   platforms   macfss
   macostoolss   FSSpecs   SetCreatorTypes   toucheds   bmFmts   renderPMs   rlextra.graphicss   renderPS_SEPs	   renderSVGs   renderPSs   opens   writes	   _renderPys   hasattrs
   saveLogger(   s   selfs   formatss   verboses   fnRoots   outDirs   titles   kws   chartIds   renderPS_SEPs   _saveds   renderPSs	   rl_configs   filenames   renderPMs   bmFmts	   renderSVGs   macfss   plotModes	   renderPDFs   fnroots   errs   exts
   macostools(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   save{  s       
 8 !HR
 7
  :
 	(
 	(
 4
 i    c   	      C   sk  | d d d d d d d d d	 d
 d d d d g j p t d |  d k l } | d j o d k l } | i |   Sn | d d d d d d d d	 g j o$ d k l } | i |  d | Sn | d j o9 d k	 l
 } | i |  d | d t |  d | i  Sn\ | d j o3 d k l } | i |  d t |  d | i  Sn | d j o |  i   Sn d S(   s,   Converts to an 8 bit string in given format.s   pdfs   pss   epss   gifs   pngs   jpgs   jpegs   bmps   ppms   tiffs   tifs   pys   picts   pcts   Unknown file format "%s"(   s	   rl_config(   s	   renderPDF(   s   renderPMs   fmt(   s   renderPS_SEPs   previews   showBoundarys
   showBorder(   s   renderPSN(   s   formats   AssertionErrors	   reportlabs	   rl_configs   reportlab.graphicss	   renderPDFs   drawToStrings   selfs   renderPMs   rlextra.graphicss   renderPS_SEPs   previews   getattrs   showBoundarys   renderPSs	   _renderPy(	   s   selfs   formats   verboses   previews   renderPSs	   rl_configs	   renderPDFs   renderPMs   renderPS_SEP(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   asString  s&     E%	&(   s   __name__s
   __module__s   __doc__s   AttrMaps   AttrMapValues   isNumbers   Nones   isValidChildOrNones   OneOfs   _xtraAttrMaps   Groups   _attrMaps   updates   __init__s	   _renderPys   _unset_s   draws   wraps   expandUserNodess   copys   asGroups   saves   asString(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Drawing2  s&    !!							bs   _DrawingEditorMixinc           B   s#   t  Z d  Z e e e e d  Z RS(   s<   This is a mixin to provide functionality for edited drawingsc         C   s   t  |  } | o t | d  ob | i i d  o | i i	   | _ n | o
 | t j o
 t  } n t | |  | i | <n t | d  o | o2 | o | i | | |  q | i | |  n% | o t | | |  n
 t d  d S(   sb   
        effectively setattr(obj,name,value), but takes care of things with _attrMaps etc
        s   _attrMaps   adds   Can't add, need nameN(   s   isValidChilds   values   ivcs   names   hasattrs   objs   __dict__s   has_keys   _attrMaps   clones   validates   Nones   AttrMapValues   descs   poss   inserts   adds   setattrs
   ValueError(   s   selfs   objs   values   names   validates   descs   poss   ivc(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _add  s      
(   s   __name__s
   __module__s   __doc__s   Nones   _add(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _DrawingEditorMixin  s    s	   LineShapec           B   sb   t  Z e d e e  d e e  d e e  d e e  d e e  d e e   Z d   Z	 RS(   Ns   strokeColors   strokeWidths   strokeLineCaps   strokeLineJoins   strokeMiterLimits   strokeDashArrayc         C   sK   t  d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ |  i	 |  d  S(   Ns   strokeColori   i    (   s   STATE_DEFAULTSs   selfs   strokeColors   strokeWidths   strokeLineCaps   strokeLineJoins   strokeMiterLimits   Nones   strokeDashArrays   setPropertiess   kw(   s   selfs   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s    					(
   s   __name__s
   __module__s   AttrMaps   AttrMapValues   isColorOrNones   isNumbers   Nones   isListOfNumbersOrNones   _attrMaps   __init__(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   LineShape	  s   s   Linec           B   sY   t  Z e d e d e e  d e e  d e e  d e e   Z d   Z d   Z RS(   Ns   BASEs   x1s   y1s   x2s   y2c         K   s8   t  i |  |  | |  _ | |  _ | |  _ | |  _ d  S(   N(   s	   LineShapes   __init__s   selfs   kws   x1s   y1s   x2s   y2(   s   selfs   x1s   y1s   x2s   y2s   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__'  s
    			c         C   s    |  i |  i |  i |  i f Sd S(   s5   Returns bounding rectangle of object as (x1,y1,x2,y2)N(   s   selfs   x1s   y1s   x2s   y2(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds.  s     (	   s   __name__s
   __module__s   AttrMaps	   LineShapes   AttrMapValues   isNumbers   _attrMaps   __init__s	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Line  s   		s
   SolidShapec           B   s,   t  Z e d e d e e   Z d   Z RS(   Ns   BASEs	   fillColorc         C   s!   t  d |  _ t i |  |  d  S(   Ns	   fillColor(   s   STATE_DEFAULTSs   selfs	   fillColors	   LineShapes   __init__s   kw(   s   selfs   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__:  s    (   s   __name__s
   __module__s   AttrMaps	   LineShapes   AttrMapValues   isColorOrNones   _attrMaps   __init__(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys
   SolidShape3  s   	i   i   i   s   moveTos   lineTos   curveTos	   closePathc   
      C   s   |  i } d } d } d } x |  i D]t }	 t |	 } | |	 } | | } t | | | | ! | } |	 t j o | d } n |	 t j o | d } q% q% W| | j Sd S(   s   Helper function for renderers.i    i   N(   s   paths   pointss   is   hadClosePaths	   hadMoveTos	   operatorss   ops   _PATH_OP_ARG_COUNTs   nArgss	   drawFuncss   funcs   js   applys
   _CLOSEPATHs   _MOVETO(
   s   paths	   drawFuncss   is   js   nArgss   pointss   funcs   hadClosePaths	   hadMoveTos   op(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   _renderPathF  s"     	
 


s   Pathc        
   B   s   t  Z d  Z e d e d e e  d e e  d e e   Z e	 e	 d d  Z
 d   Z d   Z d	   Z d
   Z d   Z d   Z RS(   s2   Path, made up of straight lines and bezier curves.s   BASEs   pointss	   operatorss
   isClipPathi    c         K   s~   t  i |  |  | t j o
 g  } n | t j o
 g  } n t |  d d j p
 t d  | |  _ | |  _ | |  _	 d  S(   Ni   i    s-   Point list must have even number of elements!(
   s
   SolidShapes   __init__s   selfs   kws   pointss   Nones	   operatorss   lens   AssertionErrors
   isClipPath(   s   selfs   pointss	   operatorss
   isClipPaths   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__b  s    

!		c         C   s5   |  i |  i |  i  } | i |  i    | Sd  S(   N(   s   selfs	   __class__s   pointss	   operatorss   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copym  s    c         C   s*   |  i i | | g  |  i i t  d  S(   N(   s   selfs   pointss   extends   xs   ys	   operatorss   appends   _MOVETO(   s   selfs   xs   y(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   moveTor  s    c         C   s*   |  i i | | g  |  i i t  d  S(   N(   s   selfs   pointss   extends   xs   ys	   operatorss   appends   _LINETO(   s   selfs   xs   y(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   lineTov  s    c         C   s6   |  i i | | | | | | g  |  i	 i
 t  d  S(   N(   s   selfs   pointss   extends   x1s   y1s   x2s   y2s   x3s   y3s	   operatorss   appends   _CURVETO(   s   selfs   x1s   y1s   x2s   y2s   x3s   y3(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   curveToz  s    "c         C   s   |  i i t  d  S(   N(   s   selfs	   operatorss   appends
   _CLOSEPATH(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   closePath~  s    c         C   s   t  |  i  Sd  S(   N(   s   getPathBoundss   selfs   points(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (   s   __name__s
   __module__s   __doc__s   AttrMaps
   SolidShapes   AttrMapValues   isListOfNumberss	   isBooleans   _attrMaps   Nones   __init__s   copys   moveTos   lineTos   curveTos	   closePaths	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   PathY  s    						c         C   sl  | t j o
 | } n g  } d k l } l } l } | d } | | } | | }
 x  |
 | j  o |
 d | }
 qW Wt |
 |  }	 | i } |	 d j oU t |	 | p d  } | | } t t |	 | d  d  } |	 | } | d 7} n d } d } xN t |  D]@ }	 | |	 | }	 | |  | | |	  | | | |	  f  qW| o | i   n | Sd  S(	   N(   s   sins   coss   pif180.0i   f0.001f1.0f0.5i   i    (   s   yradiuss   Nones   radiuss   pointss   maths   sins   coss   pis   degreestoradianss   startangledegreess
   startangles   endangledegreess   endangles   floats   angles   appends   as   mins   degreedeltas   radiansdeltas   maxs   ints   ns   xranges   centerxs   centerys   reverse(   s   centerxs   centerys   radiuss   startangledegreess   endangledegreess   yradiuss   degreedeltas   reverses   degreestoradianss   angles   endangles   pis   sins
   startangles   as   coss   ns   pointss   radiansdelta(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getArcPoints  s6     



 	

 0 s   ArcPathc           B   s#   t  Z d  Z e e e e d  Z RS(   s   Path with an addArc methodc
         C   s   t  | | | | | d | d | d |	 } | p t |  i  o+ |  i
 | d d | d d  | d =n x$ | D] \ }
 } |  i |
 |  qt Wd  S(   Ns   yradiuss   degreedeltas   reversei    i   (   s   getArcPointss   centerxs   centerys   radiuss   startangledegreess   endangledegreess   yradiuss   degreedeltas   reverses   Ps   moveTos   lens   selfs	   operatorss   xs   ys   lineTo(   s   selfs   centerxs   centerys   radiuss   startangledegreess   endangledegreess   yradiuss   degreedeltas   moveTos   reverses   xs   Ps   y(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   addArc  s    *   (   s   __name__s
   __module__s   __doc__s   Nones   addArc(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   ArcPath  s    c         K   sV  g  } g  }	 x |  D] } t |  t t g j o | } g  } n | d } | d } | t	 j o t
 d |  n t	 i |  } t |  t | j o t
 d | t |  f  n | i |  |	 i t |   q Wx[ | d f | d f f D]A \ }
 } x2 t | t |	  d  D] } |	 | |
 |	 | <qWq Wt t |	 | | f |  Sd  S(   Ni    i   s   bad operator name %ss   %s bad arguments %si   (   s   Os   Ps   pathSegss   segs   types   ListTypes	   TupleTypes   opNames   argss   _PATH_OP_NAMESs
   ValueErrors   indexs   ops   lens   _PATH_OP_ARG_COUNTs   strs   appends   extends   lists   dxs   dys   ds   os   xranges   is   applys   Paths
   isClipPaths   kw(   s   pathSegss
   isClipPaths   dxs   dys   kws   segs   opNames   argss   Os   Ps   ds   is   os   op(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys
   definePath  s,     


  s   Rectc           B   s   t  Z d  Z e d e d e e  d e e  d e e  d e e  d e e  d e e   Z d d d	  Z d
   Z	 d   Z
 RS(   s)   Rectangle, possibly with rounded corners.s   BASEs   xs   ys   widths   heights   rxs   ryi    c         K   sJ   t  i |  |  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _	 d  S(   N(
   s
   SolidShapes   __init__s   selfs   kws   xs   ys   widths   heights   rxs   ry(   s   selfs   xs   ys   widths   heights   rxs   rys   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s    					c         C   s?   |  i |  i |  i |  i |  i  } | i |  i    | Sd  S(   N(	   s   selfs	   __class__s   xs   ys   widths   heights   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    $c         C   s.   |  i |  i |  i |  i |  i |  i f Sd  S(   N(   s   selfs   xs   ys   widths   height(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (   s   __name__s
   __module__s   __doc__s   AttrMaps
   SolidShapes   AttrMapValues   isNumbers   _attrMaps   __init__s   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Rect  s    			s   Imagec           B   st   t  Z d  Z e d e d e e  d e e  d e e  d e e  d e e   Z	 d   Z
 d   Z d	   Z RS(
   s   Bitmap image.s   BASEs   xs   ys   widths   heights   pathc         K   sA   t  i |  |  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(	   s
   SolidShapes   __init__s   selfs   kws   xs   ys   widths   heights   path(   s   selfs   xs   ys   widths   heights   paths   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s    				c         C   sE   |  i |  i |  i |  i |  i |  i  } | i |  i	    | Sd  S(   N(
   s   selfs	   __class__s   xs   ys   widths   heights   paths   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    *c         C   s(   |  i |  i |  i t |  i t f Sd  S(   N(   s   selfs   xs   ys   width(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (   s   __name__s
   __module__s   __doc__s   AttrMaps
   SolidShapes   AttrMapValues   isNumbers   isNumberOrNones   Nones   _attrMaps   __init__s   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Image  s    			s   Circlec        
   B   sV   t  Z e d e d e e  d e e  d e e   Z d   Z d   Z d   Z	 RS(   Ns   BASEs   cxs   cys   rc         K   s/   t  i |  |  | |  _ | |  _ | |  _ d  S(   N(   s
   SolidShapes   __init__s   selfs   kws   cxs   cys   r(   s   selfs   cxs   cys   rs   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s    		c         C   s9   |  i |  i |  i |  i  } | i |  i    | Sd  S(   N(   s   selfs	   __class__s   cxs   cys   rs   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    c         C   s<   |  i |  i |  i |  i |  i |  i |  i |  i f Sd  S(   N(   s   selfs   cxs   rs   cy(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (
   s   __name__s
   __module__s   AttrMaps
   SolidShapes   AttrMapValues   isNumbers   _attrMaps   __init__s   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Circle  s   			s   Ellipsec           B   sb   t  Z e d e d e e  d e e  d e e  d e e   Z d   Z d   Z d   Z	 RS(	   Ns   BASEs   cxs   cys   rxs   ryc         K   s8   t  i |  |  | |  _ | |  _ | |  _ | |  _ d  S(   N(   s
   SolidShapes   __init__s   selfs   kws   cxs   cys   rxs   ry(   s   selfs   cxs   cys   rxs   rys   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s
    			c         C   s?   |  i |  i |  i |  i |  i  } | i |  i    | Sd  S(   N(	   s   selfs	   __class__s   cxs   cys   rxs   rys   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    $c         C   s<   |  i |  i |  i |  i |  i |  i |  i |  i f Sd  S(   N(   s   selfs   cxs   rxs   cys   ry(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds$  s    (
   s   __name__s
   __module__s   AttrMaps
   SolidShapes   AttrMapValues   isNumbers   _attrMaps   __init__s   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Ellipse  s   			s   Wedgec           B   s   t  Z d  Z e d e d e e  d e e  d e e  d e e  d e e  d e e  d e e  d	 e e   	Z d
 Z	 e
 d  Z d   Z d   Z d   Z d   Z RS(   sn   A "slice of a pie" by default translates to a polygon moves anticlockwise
       from start angle to end angles   BASEs   centerxs   centerys   radiuss   startangledegreess   endangledegreess   yradiuss   radius1s   yradius1i   c         K   so   t  i |  |  x | | j  o | d } q W| | | | | f \ |  _ |  _ |  _ |  _ |  _ | |  _	 d  S(   Nih  (
   s
   SolidShapes   __init__s   selfs   kws   endangledegreess   startangledegreess   centerxs   centerys   radiuss   yradius(   s   selfs   centerxs   centerys   radiuss   startangledegreess   endangledegreess   yradiuss   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__8  s     3c         C   sx   t  |  d t  } | t j o |  i } n t  |  d t  } t  |  d |  } | t j o
 | } n | | | f Sd  S(   Ns   yradiuss   radius1s   yradius1(   s   getattrs   selfs   Nones   yradiuss   radiuss   radius1s   yradius1(   s   selfs   radius1s   yradius1s   yradius(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys
   _xtraRadiiA  s      
c         C   sV  |  i } |  i } |  i } |  i   \ } } } |  i } |  i	 }
 d k
 l } l } l } | d } | | } |
 | }	 x  |	 | j  o |	 d | }	 q| Wt |	 |  } g  } | d j oX t |  i p d |  } | | } t d t | | d   } | | } | d 7} n d } d } g  } | i } | i } x> t |  D]0 } | | | } | | |  | |  f  qHWx8 | D]0 \ } } | | | |  | | | |  qW| d j p
 | t! j o | d j p
 | t! j o | |  | |  nF | i"   x8 | D]0 \ } } | | | |  | | | |  qWt# |  Sd  S(	   N(   s   sins   coss   pif180.0i   f0.001f1.0i   f0.5i    ($   s   selfs   centerxs   centerys   radiuss
   _xtraRadiis   yradiuss   radius1s   yradius1s   startangledegreess   endangledegreess   maths   sins   coss   pis   degreestoradianss
   startangles   endangles   floats   angles   pointss   mins   degreedeltas   radiansdeltas   maxs   ints   ns   CAs   appends   CAAs   as   xranges   cs   ss   Nones   reverses   Polygon(   s   selfs   radius1s   degreestoradianss   radiuss   centerxs   centerys   degreedeltas   CAAs   angles   endangles   endangledegreess   yradiuss   pis   sins   as   CAs   cs
   startangles   startangledegreess   yradius1s   coss   ns   ss   pointss   radiansdelta(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   asPolygonM  sT    					


 

		   4
 c         C   sE   |  i |  i |  i |  i |  i |  i  } | i |  i	    | Sd  S(   N(
   s   selfs	   __class__s   centerxs   centerys   radiuss   startangledegreess   endangledegreess   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copyx  s    c         C   s   |  i   i   Sd  S(   N(   s   selfs	   asPolygons	   getBounds(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (   s   __name__s
   __module__s   __doc__s   AttrMaps
   SolidShapes   AttrMapValues   isNumbers   isNumberOrNones   _attrMaps   degreedeltas   Nones   __init__s
   _xtraRadiis	   asPolygons   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Wedge'  s     				+		s   Polygonc           B   sG   t  Z d  Z e d e d e e   Z g  d  Z d   Z	 d   Z
 RS(   sK   Defines a closed shape; Is implicitly
    joined back to the start for you.s   BASEs   pointsc         K   s>   t  i |  |  t |  d d j p
 t d  | |  _ d  S(   Ni   i    s-   Point list must have even number of elements!(   s
   SolidShapes   __init__s   selfs   kws   lens   pointss   AssertionError(   s   selfs   pointss   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s    !c         C   s-   |  i |  i  } | i |  i    | Sd  S(   N(   s   selfs	   __class__s   pointss   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    c         C   s   t  |  i  Sd  S(   N(   s   getPointsBoundss   selfs   points(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (   s   __name__s
   __module__s   __doc__s   AttrMaps
   SolidShapes   AttrMapValues   isListOfNumberss   _attrMaps   __init__s   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   Polygon  s    		s   PolyLinec           B   sG   t  Z d  Z e d e d e e   Z g  d  Z d   Z	 d   Z
 RS(   s   Series of line segments.  Does not define a
    closed shape; never filled even if apparently joined.
    Put the numbers in the list, not two-tuples.s   BASEs   pointsc         K   s   t  i |  |  t |  } | o t | d  t t	 f j oA g  } x. | D]& \ } } | i |  | i |  qM W| } q t |  d d j p
 t d  n | |  _ d  S(   Ni    i   s-   Point list must have even number of elements!(   s	   LineShapes   __init__s   selfs   kws   lens   pointss	   lenPointss   types   ListTypes	   TupleTypes   Ls   xs   ys   appends   AssertionError(   s   selfs   pointss   kws	   lenPointss   Ls   ys   x(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s     
%c         C   s-   |  i |  i  } | i |  i    | Sd  S(   N(   s   selfs	   __class__s   pointss   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    c         C   s   t  |  i  Sd  S(   N(   s   getPointsBoundss   selfs   points(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    (   s   __name__s
   __module__s   __doc__s   AttrMaps	   LineShapes   AttrMapValues   isListOfNumberss   _attrMaps   __init__s   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   PolyLine  s    		s   Stringc           B   s   t  Z d  Z e d e e  d e e  d e e  d e e  d e e  d e e  d e e	  d e e   Z
 d	   Z d
   Z d   Z d   Z RS(   si   Not checked against the spec, just a way to make something work.
    Can be anchored left, middle or end.s   xs   ys   texts   fontNames   fontSizes	   fillColors
   textAnchors   encodingc         K   se   | |  _  | |  _ | |  _ d |  _ t d |  _ t d |  _ t d |  _ |  i	 |  d |  _ d  S(   Ns   starts   fontNames   fontSizes	   fillColors   cp1252(   s   xs   selfs   ys   texts
   textAnchors   STATE_DEFAULTSs   fontNames   fontSizes	   fillColors   setPropertiess   kws   encoding(   s   selfs   xs   ys   texts   kw(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   __init__  s    				c         C   s*   |  i t |  i |  i |  i |  i  Sd  S(   N(   s   selfs   xs   stringWidths   texts   fontNames   fontSizes   encoding(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   getEast  s    c         C   s9   |  i |  i |  i |  i  } | i |  i    | Sd  S(   N(   s   selfs	   __class__s   xs   ys   texts   news   setPropertiess   getProperties(   s   selfs   new(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   copy  s    c         C   s   t  |  i |  i |  i |  i  } |  i d j o |  i } nG |  i d j o |  i d | } n" |  i d j o |  i | } n | |  i	 d |  i | | |  i	 |  i f Sd  S(   Ns   starts   middlef0.5s   endf0.20000000000000001(
   s   stringWidths   selfs   texts   fontNames   fontSizes   encodings   ws
   textAnchors   xs   y(   s   selfs   xs   w(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys	   getBounds  s    !(   s   __name__s
   __module__s   __doc__s   AttrMaps   AttrMapValues   isNumbers   isStrings   Nones   isColorOrNones   isTextAnchors   _attrMaps   __init__s   getEasts   copys	   getBounds(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   String  s    			s   UserNodec           B   s   t  Z d  Z d   Z RS(   sk  A simple template for creating a new node.  The user (Python
    programmer) may subclasses this.  provideNode() must be defined to
    provide a Shape primitive when called by a renderer.  It does
    NOT inherit from Shape, as the renderer always replaces it, and
    your own classes can safely inherit from it without getting
    lots of unintended behaviour.c         C   s   t  d  d S(   s   Override this to create your own node. This lets widgets be
        added to drawings; they must create a shape (typically a group)
        so that the renderer can draw the custom node.s4   this method must be redefined by the user/programmerN(   s   NotImplementedError(   s   self(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   provideNode  s     (   s   __name__s
   __module__s   __doc__s   provideNode(    (    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   UserNode  s    c          C   sm   t  d d d d  } d  k }  |  i } d GH| | i    Hd G| i   d GHd GH| ` d G| i   d  S(   Ni
   i   i2   s   a Rectangle:s   verifying...s   OKs   deleting rect.width(   s   Rects   rs   pprints   pps   getPropertiess   verifys   width(   s   pprints   pps   r(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   test  s    		
s   __main__(_   s   __doc__s   __version__s   strings   oss   syss   maths   pis   coss   sins   tans   typess	   FloatTypes   IntTypes   ListTypes	   TupleTypes
   StringTypes   InstanceTypes   pprints   reportlab.platypuss   Flowables   reportlab.rl_configs   shapeCheckings   verboses   defaultGraphicsFontNames   _unset_s   reportlab.libs   loggers   colorss   reportlab.lib.validatorss   reportlab.lib.attrmaps   reportlab.lib.utilss   fp_strs   reportlab.pdfbase.pdfmetricss   stringWidths	   Exceptions   NotImplementedErrors   NON_ZERO_WINDINGs   EVEN_ODDs   blacks   Nones   STATE_DEFAULTSs   nullTransforms	   translates   scales   rotates   skewXs   skewYs   mmults   inverses   zTransformPoints   transformPoints   transformPointss   zTransformPointss   _textBoxLimitss   _rotatedBoxLimitss   _DrawTimeResizeables   _SetKeyWordArgss   getRectsBoundss   getPathBoundss   getPointsBoundss   Shapes   Groups   _addObjImports   _reprs   _renderGroupPys   _extraKWs   Drawings   _DrawingEditorMixins	   LineShapes   Lines
   SolidShapes   ranges   _MOVETOs   _LINETOs   _CURVETOs
   _CLOSEPATHs   _PATH_OP_ARG_COUNTs   _PATH_OP_NAMESs   _renderPaths   Paths   EmptyClipPaths   getArcPointss   ArcPaths
   definePaths   Rects   Images   Circles   Ellipses   Wedges   Polygons   PolyLines   Strings   UserNodes   tests   __name__(P   s   _MOVETOs   IntTypes   verboses   Flowables   zTransformPointss   nullTransforms   transformPointss   _rotatedBoxLimitss   colorss   PolyLines
   definePaths   Lines   Groups   tans   _reprs   Circles   EVEN_ODDs   getArcPointss   fp_strs
   StringTypes   scales   mmults   EmptyClipPaths	   FloatTypes   transformPoints	   translates   _SetKeyWordArgss   pprints   defaultGraphicsFontNames
   _CLOSEPATHs   _textBoxLimitss   Strings   UserNodes   tests   _LINETOs   loggers   __version__s   InstanceTypes   Rects   getPathBoundss   _DrawingEditorMixins   NON_ZERO_WINDINGs	   LineShapes   strings   shapeCheckings   Wedges   _renderPaths   getRectsBoundss   _CURVETOs   syss   _extraKWs   rotates   Images   _addObjImports   skewYs   skewXs   ListTypes   _unset_s	   TupleTypes   Drawings   STATE_DEFAULTSs   _PATH_OP_NAMESs   inverses   coss   pis   getPointsBoundss   stringWidths   Ellipses   _DrawTimeResizeables   sins   _PATH_OP_ARG_COUNTs   Shapes   _renderGroupPys   Paths   Polygons   zTransformPoints
   SolidShapes   NotImplementedErrors   oss   ArcPath(    (    sC   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/shapes.pys   ?   s   +														"	
			M#			+		].	