;
0sDc           @   s  d  Z  d Z d k Z d k Z d k l Z d k l Z l Z l	 Z	 d k
 l Z l Z l Z d k l Z d k l Z d k l Z l Z d	 d
 d d d d d d d d d d d d d d d d f Z d	 f  d     YZ d
 f  d     YZ d e f d     YZ d   Z d d   Z d e f d!     YZ d e f d"     YZ d e f d#     YZ d e f d$     YZ d e f d%     YZ d e f d&     YZ  d e f d'     YZ! d( e" e" d)  Z# d*   Z$ d+ f  d,     YZ% d e% e f d-     YZ& d e f d.     YZ' d e f d/     YZ( d e f d0     YZ) d e f d1     YZ* d2 e f d3     YZ+ d e f d4     YZ, d5 f  d6     YZ- d7 e% f d8     YZ. d e. e f d9     YZ/ d:   Z0 d;   Z1 d e. e f d<     YZ2 d= e. e f d>     YZ3 d S(?   s8    $Id: flowables.py 2830 2006-04-05 15:18:32Z rgbecker $ s  
A flowable is a "floating element" in a document whose exact position is determined by the
other elements that precede it, such as a paragraph, a diagram interspersed between paragraphs,
a section header, etcetera.  Examples of non-flowables include page numbering annotations,
headers, footers, fixed diagrams or logos, among others.

Flowables are defined here as objects which know how to determine their size and which
can draw themselves onto a page with respect to a relative "origin" position determined
at a higher level. The object's draw() method should assume that (0,0) corresponds to the
bottom left corner of the enclosing rectangle that will contain the object. The attributes
vAlign and hAlign may be used by 'packers' as hints as to how the object should be placed.

Some Flowables also know how to "split themselves".  For example a
long paragraph might split itself between one page and the next.

Packers should set the canv attribute during wrap, split & draw operations to allow
the flowable to work out sizes etc in the proper context.

The "text" of a document usually consists mainly of a sequence of flowables which
flow into a document from top to bottom (with column and page breaks controlled by
higher level components).
N(   s   deepcopy(   s   ListTypes	   TupleTypes
   StringType(   s   reds   grays	   lightgrey(   s   fp_str(   s   pdfutils(   s   _FUZZs   overlapAttachedSpaces	   TraceInfos   Flowables   XBoxs   Preformatteds   Images   Spacers	   PageBreaks   SlowPageBreaks   CondPageBreaks   KeepTogethers   Macros   CallerMacros   ParagraphAndImages
   FailOnWraps
   HRFlowables   PTOContainers   KeepInFrames
   UseUpSpacec           B   s   t  Z d  Z d   Z RS(   s0   Holder for info about where an object originatedc         C   s1   d |  _ d |  _ d |  _ d |  _ d |  _ d  S(   Ns	   (unknown)i(   s   selfs   srcFiles   startLineNos   startLinePoss	   endLineNos
   endLinePos(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__,   s
    				(   s   __name__s
   __module__s   __doc__s   __init__(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys	   TraceInfo*   s    c           B   s   t  Z d  Z d Z d Z d   Z d   Z d d  Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z e d  Z d   Z RS(   s   Abstract base class for things to be drawn.  Key concepts:
    1. It knows its size
    2. It draws in its own coordinate system (this requires the
        base API to provide a translate() function.
    i    c         C   sL   d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ t |  _ t |  _	 d  S(   Ni    s   LEFTs   BOTTOM(
   s   selfs   widths   heights   wrappeds   hAligns   vAligns   Nones
   _traceInfos   _showBoundarys   encoding(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__B   s    							c         C   s   | |  _  |  i   |  `  d S(   s#   ensure canv is set on and then drawN(   s   canvs   selfs   draw(   s   selfs   canv(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _drawOnU   s     	
c         C   s  | o t |  d  oq |  i } | d d g j o | d | } q | d j o | | } q | d j o t d t |   q n | i	   | i
 | |  |  i |  t |  d  o |  i o- | i t  | i d	 d	 |  i |  i  n | i   d
 S(   s6   Tell it to draw itself on the canvas.  Do not overrides   hAligns   CENTERs   CENTREf0.5s   RIGHTs   LEFTs   Bad hAlign value s   _showBoundaryi    N(   s   _sWs   hasattrs   selfs   hAligns   as   xs
   ValueErrors   strs   canvass	   saveStates	   translates   ys   _drawOns   _showBoundarys   setStrokeColors   grays   rects   widths   heights   restoreState(   s   selfs   canvass   xs   ys   _sWs   a(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawOn[   s      	
 c         C   s5   | |  _  |  i | |  \ } } |  `  | | f Sd S(   sW   intended for use by packers allows setting the canvas on
        during the actual wrapN(   s   canvs   selfs   wraps   aWs   aHs   ws   h(   s   selfs   canvs   aWs   aHs   ws   h(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrapOnn   s
     	c         C   s   |  i |  i f Sd S(   s   This will be called by the enclosing frame before objects
        are asked their size, drawn or whatever.  It returns the
        size actually used.N(   s   selfs   widths   height(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrapv   s     c         C   s   t  |  d |  i  Sd S(   s-   This should return the minimum required widths	   _minWidthN(   s   getattrs   selfs   width(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   minWidth|   s     c         C   s)   | |  _  |  i | |  } |  `  | Sd S(   sX   intended for use by packers allows setting the canvas on
        during the actual splitN(   s   canvs   selfs   splits   aWs   aHs   S(   s   selfs   canvs   aWs   aHs   S(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   splitOn   s
     	c         C   s   g  Sd S(   s   This will be called by more sophisticated frames when
        wrap fails. Stupid flowables should return []. Clever flowables
        should split themselves and return a list of flowablesN(    (   s   selfs
   availWidths   availheight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   split   s     c         C   sT   t  |  d  o |  i Sn6 t  |  d  o t  |  i d  o |  i i Sn d Sd S(   sO   returns boolean determining whether the next flowable should stay with this ones   keepWithNexts   stylei    N(   s   hasattrs   selfs   keepWithNexts   style(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getKeepWithNext   s      # c         C   sT   t  |  d  o |  i Sn6 t  |  d  o t  |  i d  o |  i i Sn d Sd S(   sX   returns how much space should follow this item if another item follows on the same page.s
   spaceAfters   stylei    N(   s   hasattrs   selfs
   spaceAfters   style(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceAfter   s      # c         C   sT   t  |  d  o |  i Sn6 t  |  d  o t  |  i d  o |  i i Sn d Sd S(   s[   returns how much space should precede this item if another item precedess on the same page.s   spaceBefores   stylei    N(   s   hasattrs   selfs   spaceBefores   style(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceBefore   s      # c         C   s   d Sd S(   s?   Hook for IndexingFlowables - things which have cross referencesi    N(    (   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   isIndexing   s     c         C   s   t  |  d  o |  i d d  } n* t  |  d  o t |  i  } n d } | o | o | |  } n d |  i i t	 t
 |    |  i   | f Sd S(   s   
        This method should attempt to return a string that can be used to identify
        a particular flowable uniquely. The result can then be used for debugging
        and or error printouts
        s   getPlainTexts   identifyi   s   texts   ...s   <%s at %s%s>%sN(   s   hasattrs   selfs   getPlainTexts   rs   strs   texts   maxLens	   __class__s   __name__s   hexs   ids
   _frameName(   s   selfs   maxLens   r(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   identity   s     c         C   s:   t  |  d t  } | o | i o d | i Sn d Sd  S(   Ns   _frames	    frame=%ss    (   s   getattrs   selfs   Nones   fs   id(   s   selfs   f(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   _frameName   s     (   s   __name__s
   __module__s   __doc__s   _fixedWidths   _fixedHeights   __init__s   _drawOns   drawOns   wrapOns   wraps   minWidths   splitOns   splits   getKeepWithNexts   getSpaceAfters   getSpaceBefores
   isIndexings   Nones   identitys
   _frameName(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   Flowable9   s"    											c           B   s,   t  Z d  Z d d  Z d   Z d   Z RS(   s~   Example flowable - a box with an x through it and a caption.
    This has a known size, so does not need to respond to wrap().s   A Boxc         C   s,   t  i |   | |  _ | |  _ | |  _ d  S(   N(   s   Flowables   __init__s   selfs   widths   heights   text(   s   selfs   widths   heights   text(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__   s    		c         C   s   d |  i |  i |  i f Sd  S(   Ns   XBox(w=%s, h=%s, t=%s)(   s   selfs   widths   heights   text(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__   s    c         C   s   |  i i d d |  i |  i  |  i i d d |  i |  i  |  i i d |  i |  i d  |  i i d d  |  i i d |  i d |  i |  i  d  S(   Ni    s   Times-Romani   f0.5(	   s   selfs   canvs   rects   widths   heights   lines   setFonts   drawCentredStrings   text(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw   s
    (   s   __name__s
   __module__s   __doc__s   __init__s   __repr__s   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   XBox   s    	c         C   sz   x6 t  |   o t i |  d  d j o |  d }  q Wx6 t  |   o t i |  d  d j o |  d  }  q< W|  Sd  S(   Ni    s    i   i(   s   lens   liness   strings   strip(   s   lines(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _trimEmptyLines   s     ' 'i    c         C   sz   t  i |  d  } | d j oG t |  } g  } x> | D]& } t  i | |  } | i	 |  q8 Wn t |  } | Sd S(   s   
    tidy up text - carefully, it is probably code.  If people want to
    indent code within a source script, you can supply an arg to dedent
    and it will chop off that many character, otherwise it leaves
    left edge intact.
    s   
i    N(
   s   strings   splits   texts   liness   dedents   _trimEmptyLiness	   templiness   lines   rstrips   append(   s   texts   dedents   liness	   templiness   line(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys	   _dedenter   s      c           B   sA   t  Z d  Z e d d  Z d   Z d   Z d   Z d   Z RS(   s   This is like the HTML <PRE> tag.
    It attempts to display text exactly as you typed it in a fixed width "typewriter" font.
    The line breaks are exactly where you put
    them, and it will not be wrapped.i    c         C   s(   | |  _  | |  _ t | |  |  _ d S(   s   text is the text to display. If dedent is set then common leading space
        will be chopped off the front (for example if the entire text is indented
        6 spaces or more then each line will have 6 spaces removed from the front).
        N(   s   styles   selfs
   bulletTexts	   _dedenters   texts   dedents   lines(   s   selfs   texts   styles
   bulletTexts   dedent(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__   s     		c         C   sQ   |  i } d } | t j	 o d t |  } n d | t i |  i d  f Sd  S(   Ns   Preformatted(s   Preformatted(bulletText=%s,s   %s'''\ 
%s''')s   
(	   s   selfs
   bulletTexts   bTs   Hs   Nones   reprs   strings   joins   lines(   s   selfs   Hs   bT(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__   s
    	c         C   s9   | |  _ |  i i t |  i  |  _ |  i |  i f Sd  S(   N(   s
   availWidths   selfs   widths   styles   leadings   lens   liness   height(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap   s    	c         C   s   | |  i i j  o g  Sn t | d |  i i  } t i |  i d | !d  } t i |  i | d  } |  i } | i d j o t |  } d | _ n t | |  i  t | |  g Sd  S(   Nf1.0i    s   
(   s   availHeights   selfs   styles   leadings   ints   linesThatFits   strings   joins   liness   text1s   text2s   firstLineIndents   deepcopys   Preformatted(   s   selfs
   availWidths   availHeights   styles   linesThatFits   text2s   text1(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   split  s    	c         C   s   |  i i } |  i |  i i } |  i i d  |  i i	 o |  i i
 |  i i	  n |  i i | |  } | i |  i i |  i i |  i i  x |  i D] } | i |  q W|  i i |  d  S(   Ns   %PreformattedPara(   s   selfs   styles
   leftIndents   cur_xs   heights   fontSizes   cur_ys   canvs
   addLiterals	   textColors   setFillColors	   beginTexts   txs   setFonts   fontNames   leadings   liness   texts   textLines   drawText(   s   selfs   texts   cur_ys   cur_xs   tx(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw  s    	
 (	   s   __name__s
   __module__s   __doc__s   Nones   __init__s   __repr__s   wraps   splits   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   Preformatted   s    				c           B   sk   t  Z d  Z d Z d Z e e d d d d  Z d   Z d   Z d   Z	 d   Z
 d	   Z e d
  Z RS(   s  an image (digital picture).  Formats supported by PIL/Java 1.4 (the Python/Java Imaging Library
       are supported.  At the present time images as flowables are always centered horozontally
       in the frame. We allow for two kinds of lazyness to allow for many images in a document
       which could lead to file handle starvation.
       lazy=1 don't open image until required.
       lazy=2 open image when required then shut it.
    i   s   directs   autoc         C   s-  d |  _ | |  _ t | d  } | o | |  _ | |  _ n | |  _ |  _ | o& t i	 i
 |  d d d d d g j or d k l }
 |
 | d	  }	 t i |	  } |	 i   | d
 |  _ | d |  _ t |  _ |  i | | | d
  n8 | o |  i | | | d
  n |  i | | | |  d S(   s8   If size to draw at not specified, get it from the image.s   CENTERs   readi   s   .jpgs   .JPGs   .jpegs   .JPEG(   s   open_for_reads   bi    N(   s   selfs   hAligns   masks   _masks   hasattrs   filenames   fps   _files   oss   paths   splitexts   reportlab.lib.utilss   open_for_reads   fs   pdfutilss   readJPEGInfos   infos   closes
   imageWidths   imageHeights   Nones   _imgs   _setups   widths   heights   kinds   lazy(   s   selfs   filenames   widths   heights   kinds   masks   lazys   fps   infos   fs   open_for_read(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__3  s(     			1
	c         C   sC   | |  _ | |  _ | |  _ | |  _ | d j o |  i	   n d  S(   Ni    (
   s   lazys   selfs   _lazys   widths   _widths   heights   _heights   kinds   _kinds   _setup_inner(   s   selfs   widths   heights   kinds   lazy(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _setupM  s    				 c         C   sA  |  i } |  i } |  i } |  i } | o | i	   \ |  _
 |  _ n |  i d j o
 |  ` n | d d g j o* | p |  i
 |  _ | p |  i |  _ n | d d g j o, |  i
 | d |  _ |  i | d |  _ na | d d g j oM t t |  |  i
 t |  |  i  } |  i
 | |  _ |  i | |  _ n d  S(	   Ni   s   directs   absolutes
   percentages   %f0.01s   bounds   proportional(   s   selfs   _widths   widths   _heights   heights   _kinds   kinds   _imgs   imgs   getSizes
   imageWidths   imageHeights   _lazys	   drawWidths
   drawHeights   mins   floats   factor(   s   selfs   kinds   imgs   heights   widths   factor(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _setup_innerT  s$    				  
)c         C   s   | d j o0 d k l } | |  i  |  _ |  ` |  i Sn3 | d d d d f j o |  i   |  i | Sn t |   d  S(   Ns   _img(   s   ImageReaders	   drawWidths
   drawHeights
   imageWidths   imageHeight(	   s   as   reportlab.lib.utilss   ImageReaders   selfs   _files   _imgs   _setup_inners   __dict__s   AttributeError(   s   selfs   as   ImageReader(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __getattr__f  s    
c         C   s   |  i |  i f Sd  S(   N(   s   selfs	   drawWidths
   drawHeight(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrapq  s    c         C   s   |  i } | d j o d |  _ n |  i i |  i p |  i d d |  i |  i d |  i	 | d j o t
 |  _ | |  _ n d  S(   Ni   i   i    s   mask(   s   selfs   _lazys   lazys   canvs	   drawImages   _imgs   filenames	   drawWidths
   drawHeights   _masks   None(   s   selfs   lazy(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawu  s    	 	c         C   s\   t  i |  |  } | d d j o t |  i  t j o d | d  |  i f } n | Sd  S(   Nis   >...s   %s filename=%s>(   s   Flowables   identitys   selfs   maxLens   rs   types   filenames
   StringType(   s   selfs   maxLens   r(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   identity  s    '(   s   __name__s
   __module__s   __doc__s   _fixedWidths   _fixedHeights   Nones   __init__s   _setups   _setup_inners   __getattr__s   wraps   draws   identity(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   Image)  s    					c           B   s5   t  Z d  Z d Z d Z d   Z d   Z d   Z RS(   sd   A spacer just takes up space and doesn't draw anything - it guarantees
       a gap between objects.i   c         C   s   | |  _  | |  _ d  S(   N(   s   widths   selfs   height(   s   selfs   widths   height(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    	c         C   s!   d |  i i |  i |  i f Sd  S(   Ns
   %s(%s, %s)(   s   selfs	   __class__s   __name__s   widths   height(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__  s    c         C   s   d  S(   N(    (   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw  s    (   s   __name__s
   __module__s   __doc__s   _fixedWidths   _fixedHeights   __init__s   __repr__s   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   Spacer  s    		c           B   s,   t  Z d   Z d   Z d   Z d   Z RS(   Nc         C   s   d  S(   N(    (   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    c         C   s   d |  i i Sd  S(   Ns   %s()(   s   selfs	   __class__s   __name__(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__  s    c         C   s$   | |  _ | |  _ | | d f Sd  S(   Nf1e-08(   s
   availWidths   selfs   widths   availHeights   height(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s    		c         C   s   d  S(   N(    (   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw  s    (   s   __name__s
   __module__s   __init__s   __repr__s   wraps   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   UseUpSpace  s   			c           B   s   t  Z d  Z RS(   sj   Move on to the next page in the document.
       This works by consuming all remaining space in the frame!(   s   __name__s
   __module__s   __doc__(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys	   PageBreak  s   c           B   s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   SlowPageBreak  s   c           B   s)   t  Z d  Z d   Z d   Z d   Z RS(   s)   Throw a page if not enough vertical spacec         C   s   | |  _  d  S(   N(   s   heights   self(   s   selfs   height(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    c         C   s   d |  i f Sd  S(   Ns   CondPageBreak(%s)(   s   selfs   height(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__  s    c         C   s,   | |  i j  o | | f Sn d d f Sd  S(   Ni    (   s   availHeights   selfs   heights
   availWidth(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s    (   s   __name__s
   __module__s   __doc__s   __init__s   __repr__s   wrap(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   CondPageBreak  s    		i   c         C   sJ  d } d }
 d } d } x|  D] }	 |	 i | | d  \ } } | t j	 o | i | | f  n | t j p
 | t j o q n t | |  } |
 | 7}
 | o8 |	 i   } | o t | | d  } n |
 | 7}
 n' | t j	 o |	 i   | _ n d } |	 i   } |
 | 7}
 q W| t j	 o | | _ n | |
 | f Sd S(   s;   return max width, required height for a list of flowables Fi    i   iN(   s   Ws   Hs   pSs   atTops   Fs   fs   wrapOns   canvs
   availWidths   ws   hs   dimss   Nones   appends   _FUZZs   maxs   getSpaceBefores
   mergeSpaces   objs   _spaceBefores   getSpaceAfters   _spaceAfter(   s   Fs
   availWidths   canvs
   mergeSpaces   objs   dimss   pSs   atTops   ws   fs   Hs   Ws   h(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _listWrapOn  s6        
   c         C   s   t  |   t t f j o! |  t j	 o |  g p g  }  n d k l } g  i } |  D]$ } t
 | |  o | |  qU qU ~ p
 t d  |  Sd S(   s.   if it isn't a list or tuple, wrap it in a list(   s   LCActionFlowables)   LCActionFlowables not allowed in sublistsN(   s   types   Vs   ListTypes	   TupleTypes   Nones   doctemplates   LCActionFlowables   appends   _[1]s   xs
   isinstances   AssertionError(   s   Vs   LCActionFlowables   _[1]s   x(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _flowableSublist  s      !Gs   _ContainerSpacec           B   s   t  Z d   Z e d  Z RS(   Nc         C   s;   x0 |  i D]% } t | d  o | i   Sq
 q
 Wd Sd  S(   Ns   frameActioni    (   s   selfs   _contents   cs   hasattrs   getSpaceBefore(   s   selfs   c(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceBefore  s
    
 c         C   sS   | p |  i } | i   x- | D]% } t | d  o | i   Sq" q" Wd Sd  S(   Ns   frameActioni    (   s   contents   selfs   _contents   reverseContents   reverses   cs   hasattrs   getSpaceAfter(   s   selfs   contents   reverseContents   c(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceAfter  s    
 (   s   __name__s
   __module__s   getSpaceBefores   Nones   getSpaceAfter(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _ContainerSpace  s   	c           B   s;   t  Z e d  Z d   Z d   Z d   Z e d  Z RS(   Nc         C   s   t  |  |  _ | |  _ d  S(   N(   s   _flowableSublists	   flowabless   selfs   _contents	   maxHeights
   _maxHeight(   s   selfs	   flowabless	   maxHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    c         C   sa   |  i } t t |  } d  k } d | i | d  } | i | d d  } d | |  i	 f Sd  S(   Ns   
s   
  s0   KeepTogether(%s,maxHeight=%s) # end KeepTogether(
   s   selfs   _contents   fs   maps   reprs   Ls   strings   joins   replaces
   _maxHeight(   s   selfs   strings   fs   L(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__  s    		c         C   so   g  } t |  i | |  i d | \ } } | |  _ | o | d d p d |  _	 | | f |  _ | d f Sd  S(   Ns   dimsi    i   i (   s   dimss   _listWrapOns   selfs   _contents   aWs   canvs   Ws   Hs   _Hs   _H0s   aHs	   _wrapInfo(   s   selfs   aWs   aHs   dimss   Ws   H(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s    $	c   	      C   s   t  |  d t  | | f j o |  i | |  n |  i } |  i | j o |  i	 p | |  i	 j } |  i | j } | p | oH | o d k l } | } n d k l } | } | i d |    n | Sd  S(   Ns	   _wrapInfo(   s
   FrameBreak(   s   NullActionFlowablei    (   s   getattrs   selfs   Nones   aWs   aHs   wraps   _contents   Ss   _Hs
   _maxHeights   C0s   _H0s   C1s   doctemplates
   FrameBreaks   As   NullActionFlowables   insert(	   s   selfs   aWs   aHs   As   NullActionFlowables   Ss   C1s   C0s
   FrameBreak(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   split   s     
*
c         C   sv   d t  t |    |  i   d i g  i } |  i D] } | | i	    q2 ~  f } | o | d | !Sn | Sd  S(   Ns%   <KeepTogether at %s%s> containing :%ss   
i    (   s   hexs   ids   selfs
   _frameNames   joins   appends   _[1]s   _contents   fs   identitys   msgs   maxLen(   s   selfs   maxLens   fs   _[1]s   msg(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   identity  s    X(   s   __name__s
   __module__s   Nones   __init__s   __repr__s   wraps   splits   identity(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   KeepTogether  s
   			c           B   s2   t  Z d  Z d   Z d   Z d   Z d   Z RS(   s   This is not actually drawn (i.e. it has zero height)
    but is executed when it would fit in the frame.  Allows direct
    access to the canvas through the object 'canvas'c         C   s   | |  _  d  S(   N(   s   commands   self(   s   selfs   command(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    c         C   s   d t  |  i  Sd  S(   Ns	   Macro(%s)(   s   reprs   selfs   command(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__  s    c         C   s   d d f Sd  S(   Ni    (    (   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s    c         B   s    |  i e   h  d |  i <Ud  S(   Ns   canvas(   s   selfs   commands   globalss   canv(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw   s    (   s   __name__s
   __module__s   __doc__s   __init__s   __repr__s   wraps   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   Macro  s
    			c           B   s8   t  Z d  Z e e d  Z d   Z d   Z d   Z RS(   sf   
    like Macro, but with callable command(s)
    drawCallable(self)
    wrapCallable(self,aW,aH)
    c         C   s-   d   } | p | |  _ | p | |  _ d  S(   Nc          G   s   t  S(   N(   s   None(   s   args(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   <lambda>*  s    (   s   _s   drawCallables   selfs   _drawCallables   wrapCallables   _wrapCallable(   s   selfs   drawCallables   wrapCallables   _(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__)  s    	c         C   s   d t  |  i  Sd  S(   Ns   CallerMacro(%s)(   s   reprs   selfs   command(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__-  s    c         C   s!   |  i |  | |  d d f Sd  S(   Ni    (   s   selfs   _wrapCallables   aWs   aH(   s   selfs   aWs   aH(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap/  s    c         C   s   |  i |   d  S(   N(   s   selfs   _drawCallable(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw2  s    (   s   __name__s
   __module__s   __doc__s   Nones   __init__s   __repr__s   wraps   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   CallerMacro#  s
    		c           B   sM   t  Z d  Z d d d d  Z d   Z d   Z d   Z d   Z d   Z RS(	   s    combine a Paragraph and an Imagei   s   rightc         C   s1   | |  _  | |  _ | |  _ | |  _ | |  _ d  S(   N(   s   Ps   selfs   Is   xpads   ypads   sides   _side(   s   selfs   Ps   Is   xpads   ypads   side(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__7  s
    				c         C   s#   t  |  i i   |  i i    Sd  S(   N(   s   maxs   selfs   Ps   getSpaceBefores   I(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceBefore>  s    c         C   s#   t  |  i i   |  i i    Sd  S(   N(   s   maxs   selfs   Ps   getSpaceAfters   I(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceAfterA  s    c         C   sQ  |  i i | |  \ } }
 | |  _ |
 |  _ | |  _ |  i } | i	 } |  i
 } |  i }	 | i } | i } | | | i } | | | } | | i } d | _ t |
 |	 |  } | i | g | | g | g  | _ |  i d j o# | | g d | d g |  _ n t | i i  | | _ t |
 | i  |  _ |  i |  i f Sd  S(   Ni    s   lefti   (   s   selfs   Is   wraps
   availWidths   availHeights   wIs   hIs   widths   Ps   styles   xpads   ypads   leadings
   leftIndents   rightIndents   later_widthss   intermediate_widthss   firstLineIndents   first_line_widths   ints   nIWs
   breakLiness   blParas   _sides   _offsetss   lens   liness   heights   max(   s   selfs
   availWidths   availHeights   styles   Ps   leadings   intermediate_widthss   wIs
   leftIndents   ypads   hIs   later_widthss   first_line_widths   xpads   nIW(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrapD  s*    										'#c   	      C   s   |  i |  i |  i |  i f \ } } } } | | | j p t | i  d j o g  Sn | i | |  } | o | Sn | d } |  _ | d =| i } t |  i i i  | i | _ t | | i  |  _ |  g | Sd  S(   Ni    (   s   selfs   Ps   wIs   hIs   ypads   availHeights   lens   fragss   splits
   availWidths   Ss   styles   blParas   liness   leadings   heights   max(	   s   selfs
   availWidths   availHeights   styles   Ps   wIs   ypads   Ss   hI(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   split\  s    *'  	c         C   s   |  i } |  i d j oZ |  i i | d |  i |  i  |  i |  i _ z |  i i | d d  Wd  |  i ` XnH |  i i | |  i	 |  i
 |  i |  i |  i  |  i i | d d  d  S(   Ns   lefti    (   s   selfs   canvs   _sides   Is   drawOns   heights   hIs   _offsetss   Ps   widths   wIs   xpad(   s   selfs   canv(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawh  s    	  1(	   s   __name__s
   __module__s   __doc__s   __init__s   getSpaceBefores   getSpaceAfters   wraps   splits   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   ParagraphAndImage5  s    				c           B   s   t  Z d   Z d   Z RS(   Nc         C   s   t  d   d  S(   Ns3   FailOnWrap flowable wrapped and failing as ordered!(   s
   ValueError(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrapv  s    c         C   s   d  S(   N(    (   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawy  s    (   s   __name__s
   __module__s   wraps   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   FailOnWrapu  s   	s
   FailOnDrawc           B   s   t  Z d   Z d   Z RS(   Nc         C   s   d d f Sd  S(   Ni    (    (   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap}  s    c         C   s   t  d   d  S(   Ns2   FailOnDraw flowable drawn, and failing as ordered!(   s
   ValueError(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw  s    (   s   __name__s
   __module__s   wraps   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   FailOnDraw|  s   	c        
   B   sM   t  Z d  Z d d d e d d d d e d 	 Z d   Z d   Z d	   Z RS(
   s   Like the hr tags   80%i   s   rounds   CENTERs   BOTTOMc
   
      C   sb   t  i |   | |  _ | |  _ | |  _ | |  _ | |  _ | |  _	 | |  _
 | |  _ |	 |  _ d  S(   N(   s   Flowables   __init__s   selfs   widths	   thicknesss	   lineWidths   lineCaps   spaceBefores
   spaceAfters   colors   hAligns   vAligns   dash(
   s   selfs   widths	   thicknesss   lineCaps   colors   spaceBefores
   spaceAfters   hAligns   vAligns   dash(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    								c         C   s   d |  i |  i f Sd  S(   Ns   HRFlowable(width=%s, height=%s)(   s   selfs   widths   height(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __repr__  s    c         C   s   |  i } t |  t d  j oH | i   } | i d  o | t | d   d } qj t |  } n t | |  } | |  _	 | |  i
 f Sd  S(   Ns    s   %if0.01(   s   selfs   widths   ws   types   strips   endswiths
   availWidths   floats   mins   _widths	   lineWidth(   s   selfs
   availWidths   availHeights   w(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s    	 	c         C   s   |  i } | i   | i |  i  | i h  d d <d d <d d <|  i i    | i |  i	  |  i
 o | i |  i
  n | i d d |  i |  i  | i   d  S(   Ns   butti    s   roundi   s   squarei   (   s   selfs   canvs	   saveStates   setLineWidths	   lineWidths
   setLineCaps   lineCaps   lowers   setStrokeColors   colors   dashs   setDashs   lines   _widths   heights   restoreState(   s   selfs   canv(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   draw  s    	
5
 (	   s   __name__s
   __module__s   __doc__s	   lightgreys   Nones   __init__s   __repr__s   wraps   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   HRFlowable  s
    $		
s   _PTOInfoc           B   s   t  Z d   Z RS(   Nc         C   s"   t  |  |  _ t  |  |  _ d  S(   N(   s   _flowableSublists   trailers   selfs   header(   s   selfs   trailers   header(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    (   s   __name__s
   __module__s   __init__(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _PTOInfo  s   s
   _Containerc           B   s   t  Z d d e e d  Z RS(   Ni    f1.0c         C   s.  d }	 | t j o |  i } n | | | } | t j o |  i } n | |  i
 | 7} x | D] } | i | | d  \ } }
 | t j  p
 |
 t j  o q` n | | d j	 o! |
 t | i   |	 d  7}
 n | |
 8} | i | | | d | | | | d j	 o | i   }	 | |	 8} q` q` Wd S(   s"   we simulate being added to a framei    is   _sWiN(   s   pSs   aWs   Nones   selfs   widths   scales   _sWs   contents   _contents   ys   heights   cs   wrapOns   canvs   ws   hs   _FUZZs   maxs   getSpaceBefores   drawOns   xs   getSpaceAfter(   s   selfs   canvs   xs   ys   _sWs   scales   contents   aWs   ws   pSs   hs   c(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawOn  s(         !
(   s   __name__s
   __module__s   Nones   drawOn(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   _Container  s   c           B   s/   t  Z d  Z e e d  Z d   Z d   Z RS(   sQ  PTOContainer(contentList,trailerList,headerList)
    
    A container for flowables decorated with trailer & header lists.
    If the split operation would be called then the trailer and header
    lists are injected before and after the split. This allows specialist
    "please turn over" and "continued from previous" like behaviours.c         C   s   t  | |  } g  |  _ } xc t |  D]U } t
 | t  o | i | i  q) | i |  t | d  o | | _ q) q) Wd  S(   Ns   _ptoinfo(   s   _PTOInfos   trailers   headers   Is   selfs   _contents   Cs   _flowableSublists   contents   _s
   isinstances   PTOContainers   extends   appends   hasattrs   _ptoinfo(   s   selfs   contents   trailers   headers   Cs   Is   _(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s      c         C   s8   t  |  i | |  i  \ |  _ |  _ |  i |  i f Sd  S(   N(   s   _listWrapOns   selfs   _contents
   availWidths   canvs   widths   height(   s   selfs
   availWidths   availHeight(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s    $c         C   s  | d j  o g  Sn |  i } |  i } d } } } } } t
 |  } h  } xAt |  D]3} | | } | i } | | i   j oW | i } | i } t | | |  i  \ } } | d i   } | | | | f | | <n | | \ } } } } | i | | d  \ } } | o' t | i   | d  } | | 7} n | i    } | | | 7} | t | |  } | | | t" j o Pn | d 7} q\ W| | | 8} | | | | d }
 |
 d | j o | i$ | | |
  } n g  } t&   g } t
 |  d j o8 | |  | d  | | }	 | | d | | d } n1 | o g  Sn! | |  | | }	 | | | } |	 t* | t+ | i  t+ | i   g } | Sd  S(   Ni    ii   f0.99999000000000005f0.050000000000000003(,   s   availHeights   selfs   canvs   _contents   Cs   xs   is   Hs   pSs   hxs   lens   ns   I2Ws   xranges   cs   _ptoinfos   Is   keyss   trailers   Ts   headers   Hdrs   _listWrapOns
   availWidths   tWs   tHs   getSpaceBefores   tSBs   wrapOns   _s   hs   maxs   getSpaceAfters   tHSs   _FUZZs   aHs   splitOns   SSs
   UseUpSpaces   Fs   R1s   R2s   PTOContainers   deepcopy(   s   selfs
   availWidths   availHeights   pSs   tWs   hxs   canvs   tHs   I2Ws   R1s   aHs   tSBs   Cs   Hdrs   R2s   Fs   Is   Hs   Ts   _s   cs   is   hs   tHSs   ns   SSs   x(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   split  sV     		 
			 +(   s   __name__s
   __module__s   __doc__s   Nones   __init__s   wraps   split(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   PTOContainer  s    
	c         C   s   d |  d } d |  } d | d } d | } | | | | }	 | |	 } | |	 } | |	 } | |	 }
 | | | | } | | |
 | } | | f Sd  S(   Nf1.0i   (   s   s0s   a11s   a12s   s1s   a21s   a22s   dets   b11s   b12s   b21s   b22s   h0s   h1s   as   b(   s   s0s   s1s   h0s   h1s   as   a21s   a22s   a11s   a12s   dets   b22s   b21s   bs   b12s   b11(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _hmodel  s    



c   
      C   s   | \ } } t |  t j o | |  Sn d | | } d k l } |  | } | | | }	 |	 d j  o t
 Sn | |	  }	 | d j o | |	 } n | |	 } | | } t d | d |  Sd S(   s=   solve the model v = a/s**2 + b/s for an s which gives us v==hf0.5(   s   sqrti    f1.0N(   s   as   bs   abss   _FUZZs   hs   ts   maths   sqrts   fs   rs   Nones   s1s   s2s   max(
   s   hs   .2s   as   bs   fs   s1s   sqrts   ts   s2s   r(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _qsolve  s     
c           B   sG   t  Z g  d d d d  Z d   Z e d  Z d   Z d d	  Z RS(
   Ni   s   shrinks    c         C   s   | |  _  | |  _ | |  _ | |  _ | d d d d f j p t d |  i   | f  | d j p t d |  i   | f  | t j o
 t	 } n | |  _
 | |  _ d S(	   s  mode describes the action to take when overflowing
            error       raise an error in the normal way
            continue    ignore ie just draw it and report maxWidth, maxHeight
            shrink      shrinkToFit
            truncate    fit as much as possible
        s   errors   overflows   shrinks   truncates   %s invalid mode value %si    s   %s invalid maxHeight value %sN(   s   names   selfs   maxWidths	   maxHeights   modes   AssertionErrors   identitys
   mergeSpaces   Nones   overlapAttachedSpaces
   mergespaces   contents   _content(   s   selfs   maxWidths	   maxHeights   contents
   mergeSpaces   modes   name(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__1  s     				3' 
	c         C   s   |  i |  i |  i Sd  S(   N(   s   selfs   maxWidths   _leftExtraIndents   _rightExtraIndent(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _getAvailableWidthB  s    c         C   s   d |  i i t t |    |  i   t |  d d  o d t |  d d  p d t |  d d  o d t t |  d d   p d t |  d d  o d	 t t |  d   p d f Sd  S(
   Ns   <%s at %s%s%s> size=%sx%ss   names    s
    name="%s"s   maxWidths    maxWidth=%si    s	   maxHeights    maxHeight=%s(   s   selfs	   __class__s   __name__s   hexs   ids
   _frameNames   getattrs   fp_str(   s   selfs   maxLen(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   identityE  s    c      
      s`  d k  l }   i } t   i p   } t   i p |  } t	   i
    i  \ } } | d j o |  t j p | | t j o, d | |   i d  f }	 | |	   n|  t j o | | t j o | t   _ | t   _ nR|  t j p | | t j o, d  |   i d  f }	 | |	   n| d d f j o0 t | |  t   _ t | |  t   _ n   d   } | } | } d	 } | | t j ot | | } | |  \ } } | | t j o1 | t   _ | t   _ |   _ | | f Sn | } | } | } n | | } | |  \ } } | t   _ | t   _ |   _ | t d
 | | d  j  p | | t j o | } x d d d d d f D] }
 t | d	 |
 t | | | |   } | |  \ } } | | t j o | | t j o( | t   _ | t   _ |   _ PqqWn   i   i f Sd  S(   N(   s   LayoutErrors   errors   content %sx%s too large for %si   s8   Specified size too large for available space %sx%s in %ss   overflows   truncatec            sD   t    i |     i  \ } } | |  :} | |  :} | | f Sd  S(   N(   s   _listWrapOns   selfs   _contents   xs
   availWidths   canvs   Ws   H(   s   xs   Hs   W(   s   selfs
   availWidth(    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   func`  s    "

i   f0.94999999999999996i
   i    f0.01f0.050000000000000003f0.10000000000000001f0.14999999999999999(   s   doctemplates   LayoutErrors   selfs   modes   floats   maxWidths
   availWidths	   maxHeights   availHeights   _listWrapOns   _contents   canvs   Ws   Hs   _FUZZs   identitys   idents   widths   heights   mins   funcs   W0s   H0s   s0s   s1s   _scales   H1s   fs   _qsolves   _hmodels   s(   s   selfs
   availWidths   availHeights   s0s   Ws   maxWidths   Hs   LayoutErrors   funcs   idents   fs   H0s   H1s	   maxHeights   ss   modes   W0s   s1(    (   s   selfs
   availWidthsF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrapK  sb    	/""
	

	/ &"	i    c   	   	   C   s   t  |  d d  } |  i d j } | d j p | } | o | i   | o? | i   } | i
 | | |  i |  i  | i | d d q | i | |  d } } | i d | d |  n t i |  | | | d | d | | o | i   n d  S(   Ns   _scalef1.0s   truncates   strokei    s   _sWs   scale(   s   getattrs   selfs   scales   modes   truncates   sss   canvs	   saveStates	   beginPaths   ps   rects   xs   ys   widths   heights   clipPaths	   translates
   _Containers   drawOns   _sWs   restoreState(	   s   selfs   canvs   xs   ys   _sWs   scales   truncates   sss   p(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawOn  s    

" (   s   __name__s
   __module__s   __init__s   _getAvailableWidths   Nones   identitys   wraps   drawOn(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   KeepInFrame0  s
   		>s   ImageAndFlowablesc           B   sn   t  Z d  Z d d d d d d  Z d   Z d   Z d   Z d   Z d	   Z d d
  Z	 d e
 d  Z RS(   s(   combine a list of flowables and an Imagei    i   s   rightc         C   sI   t  |  |  _ | |  _ | |  _ | |  _	 | |  _ | |  _ | |  _ d  S(   N(   s   _flowableSublists   Fs   selfs   _contents   Is   _Is   imageRightPaddings   _irpads   imageLeftPaddings   _ilpads   imageBottomPaddings   _ibpads   imageTopPaddings   _itpads	   imageSides   _side(   s   selfs   Is   Fs   imageLeftPaddings   imageRightPaddings   imageTopPaddings   imageBottomPaddings	   imageSide(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   __init__  s    					c         C   sW   t  |  d  o |  i } n' t  |  d  o |  i } n
 |  i } t i |  |  Sd  S(   Ns   _C1s   _C0(   s   hasattrs   selfs   _C1s   Cs   _C0s   _contents
   _Containers   getSpaceAfter(   s   selfs   C(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceAfter  s    	c         C   s#   t  |  i i   t i |    Sd  S(   N(   s   maxs   selfs   _Is   getSpaceBefores
   _Container(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   getSpaceBefore  s    c         C   s9   x2 d d d f D]! } y t |  |  Wq q Xq Wd  S(   Ns	   _wrapArgss   _C0s   _C1(   s   as   delattrs   self(   s   selfs   a(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   _reset  s     c         C   sq  |  i }	 t |  d  o8 |  i | | f j o |  i |  i f Sn |  i   n | | f |  _ |  i	 i
 | |  \ } }
 | |  _ |
 |  _ |  i } |  i } |  i } |  i } | | | | |  _ | |
 | } |  i |	 |  i |  \ } } |  _ |  _ | |  _ t | |  } |  _ |  i o | |  _ n) t  |  i | |	  \ } } | | |  _ |  i |  i f Sd  S(   Ns	   _wrapArgs(#   s   selfs   canvs   hasattrs	   _wrapArgss
   availWidths   availHeights   widths   heights   _resets   _Is   wraps   wIs   hIs   _wIs   _hIs   _ilpads   ilpads   _irpads   irpads   _ibpads   ibpads   _itpads   itpads   _iWs   aHs
   _findSplits   Ws   H0s   _C0s   _C1s   maxs   _aHs   _listWrapOns   W1s   H1(   s   selfs
   availWidths   availHeights   irpads   itpads   W1s   ibpads   aHs   wIs   canvs   hIs   H1s   Ws   ilpads   H0(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   wrap  s.    							*	c         C   s  t  |  d  o( |  i | | f j o |  i   q8 n |  i | |  \ } } |  i	 | j o g  Sn |  i
 } | o | d } | i | | |  i	  } | o g  |  _
 |  i	 |  _ q| d g |  _
 |  i	 | d i |  _ | d | d } n g  |  _
 |  i	 |  _ |  g | Sd  S(   Ns	   _wrapArgsi    i   (   s   hasattrs   selfs	   _wrapArgss
   availWidths   availHeights   _resets   wraps   Ws   Hs   _aHs   _C1s   C1s   c0s   splits   Ss   height(   s   selfs
   availWidths   availHeights   Hs   Ss   Ws   C1s   c0(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   split  s&     	
		c      	   C   s   |  i d j o% | |  i } | |  i |  i } n) | |  i |  i |  i |  i } | } |  i	 i
 | | | |  i |  i |  i  t i
 |  | | | d |  i d |  i |  i o* t i
 |  | | | |  i d |  i n d  S(   Ns   lefts   contents   aW(   s   selfs   _sides   xs   _ilpads   Ixs   _irpads   _wIs   Fxs   widths   _Is   drawOns   canvs   ys   heights   _itpads   _hIs
   _Containers   _C0s   _iWs   _C1s   _aH(   s   selfs   canvs   xs   ys   _sWs   Ixs   Fx(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   drawOn  s    "+(
i   c         C   su  d } d }
 d } } d } |  i }	 xt |	  D]\ } } | i | | d  \ } } | t j p
 | t j o q2 n t | |  } | o8 | i   } | o t | | d  } n |
 | 7}
 n' | t j	 o | i   | _ n d } |
 | j o | | |	 |  |	 | f Sn |
 | 7}
 |
 | j o d k l } | |
 | } t | | t f  o] | i i } | t  | t! |   t } | | j  o | | 7} n | | | 7} | } n t# |  i$ | |  } | o | | |	 |  |	 | f Sq)| | |	 |  | d  | d |	 | d f Sn | i&   } |
 | 7}
 q2 W| t j	 o | | _' n | |
 | |	 g  f Sd S(   s;   return max width, required height for a list of flowables Fi    i   i(   s	   ParagraphN((   s   Ws   Hs   pSs   sBs   atTops   selfs   _contents   Fs	   enumerates   is   fs   wrapOns   canvs
   availWidths   ws   hs   _FUZZs   maxs   getSpaceBefores   ss
   mergeSpaces   objs   Nones   _spaceBefores   availHeights	   paragraphs	   Paragraphs   aHs
   isinstances   Preformatteds   styles   leadings   ints   floats   nHs   deepcopys   splits   Ss   getSpaceAfters   _spaceAfter(   s   selfs   canvs
   availWidths   availHeights
   mergeSpaces   objs   nHs   pSs   aHs   Fs   Hs   Ss	   Paragraphs   Ws   sBs   atTops   fs   is   hs   ss   ws   leading(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys
   _findSplit  sT     
	    
 
0 (   s   __name__s
   __module__s   __doc__s   __init__s   getSpaceAfters   getSpaceBefores   _resets   wraps   splits   drawOns   Nones
   _findSplit(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   ImageAndFlowables  s    
						(4   s   __version__s   __doc__s   oss   strings   copys   deepcopys   typess   ListTypes	   TupleTypes
   StringTypes   reportlab.lib.colorss   reds   grays	   lightgreys   reportlab.lib.utilss   fp_strs   reportlab.pdfbases   pdfutilss   reportlab.rl_configs   _FUZZs   overlapAttachedSpaces   __all__s	   TraceInfos   Flowables   XBoxs   _trimEmptyLiness	   _dedenters   Preformatteds   Images   Spacers
   UseUpSpaces	   PageBreaks   SlowPageBreaks   CondPageBreaks   Nones   _listWrapOns   _flowableSublists   _ContainerSpaces   KeepTogethers   Macros   CallerMacros   ParagraphAndImages
   FailOnWraps
   FailOnDraws
   HRFlowables   _PTOInfos
   _Containers   PTOContainers   _hmodels   _qsolves   KeepInFrames   ImageAndFlowables(-   s   pdfutilss   _PTOInfos   Flowables   Preformatteds   _ContainerSpaces   overlapAttachedSpaces   deepcopys   _FUZZs   ParagraphAndImages   fp_strs
   StringTypes   _qsolves   __all__s   CondPageBreaks   SlowPageBreaks   XBoxs   _hmodels
   _Containers   __version__s   CallerMacros   __doc__s   reds   _listWrapOns	   TraceInfos   strings   PTOContainers   Macros
   UseUpSpaces	   _dedenters	   PageBreaks   _trimEmptyLiness   KeepTogethers   ListTypes   KeepInFrames	   TupleTypes   grays   _flowableSublists   ImageAndFlowabless   Images	   lightgreys
   HRFlowables   Spacers
   FailOnDraws   oss
   FailOnWrap(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/platypus/flowables.pys   ?   sN   		<	@`	+@,H		j