;ò
¹0sDc           @   sý   d  Z  d Z d k Td k l Z d k l Z d k l Z d k	 l
 Z
 d k l Z l Z l Z l Z e
 i d „ Z d	 e f d
 „  ƒ  YZ d k l Z d e f d „  ƒ  YZ d e
 i d d „ Z d e
 i d d „ Z d „  Z e d j o e ƒ  n d S(   s|   Usage:
    import renderpdf
    renderpdf.draw(drawing, canvas, x, y)
Execute the script to see some test drawings.
changed
s8    $Id: renderPDF.py 2830 2006-04-05 15:18:32Z rgbecker $ (   s   *(   s   Canvas(   s   stringWidth(   s   getStringIO(   s	   rl_config(   s   Renderers   StateTrackers   getStateDeltas   renderScaledDrawingc         C   s/   t  ƒ  } | i t |  ƒ | | | d | ƒd S(   s
   As it sayss   showBoundaryN(	   s   _PDFRenderers   Rs   draws   renderScaledDrawings   drawings   canvass   xs   ys   showBoundary(   s   drawings   canvass   xs   ys   showBoundarys   R(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   draw   s     	s   _PDFRendererc           B   sƒ   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z RS(   s±   This draws onto a PDF document.  It needs to be a class
    rather than a function, as some PDF-specific state tracking is
    needed outside of the state info in the SVG model.c         C   s"   d |  _ d |  _ t ƒ  |  _ d  S(   Ni    (   s   selfs   _strokes   _fills   StateTrackers   _tracker(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   __init__   s    		c         C   s¢   t  | t ƒ o | i o |  i i ƒ  n t | ƒ } |  i	 i
 | ƒ |  i | h  ƒ |  i | ƒ |  i	 i ƒ  t  | t ƒ o | i o |  i i ƒ  n d S(   sE   This is the recursive method called for each node
        in the treeN(   s
   isinstances   nodes   Paths
   isClipPaths   selfs   _canvass	   saveStates   getStateDeltas   deltass   _trackers   pushs   applyStateChangess   drawNodeDispatchers   pops   restoreState(   s   selfs   nodes   deltas(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawNode$   s     c      
   C   s    | i | i j o
 d j n o; |  i i  | i | i | i | i d |  i	 d |  i
 ƒn> |  i i | i | i | i | i | i d |  i
 d |  i	 ƒd  S(   Ni    s   strokes   fill(   s   rects   rxs   rys   selfs   _canvass   xs   ys   widths   heights   _strokes   _fills	   roundRect(   s   selfs   rect(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawRect8   s    $		c         C   sS   | i o t i i | i ƒ o/ |  i i | i | i | i | i	 | i
 ƒ n d  S(   N(   s   images   paths   oss   existss   selfs   _canvass   drawInlineImages   xs   ys   widths   height(   s   selfs   image(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys	   drawImageK   s     c         C   s7   |  i o) |  i i | i | i | i | i ƒ n d  S(   N(   s   selfs   _strokes   _canvass   lines   x1s   y1s   x2s   y2(   s   selfs   line(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawLineT   s    
c         C   s5   |  i i | i | i | i d |  i d |  i ƒd  S(   Ns   fills   stroke(   s   selfs   _canvass   circles   cxs   cys   rs   _fills   _stroke(   s   selfs   circle(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys
   drawCircleX   s    	c         C   sË   |  i o½ t | i ƒ d j p
 t d ‚ | i d d !| i d f \ } } |  i i	 ƒ  } | i | d | d ƒ x< t d t | ƒ d ƒ D]" } | i | | | | d ƒ q W|  i i | ƒ n d  S(   Ni   s#   Polyline must have 2 or more pointsi    i   (   s   selfs   _strokes   lens   polylines   pointss   AssertionErrors   heads   tails   _canvass	   beginPaths   paths   moveTos   ranges   is   lineTos   drawPath(   s   selfs   polylines   heads   is   tails   path(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawPolyLine_   s    
 #  c         C   su  | i | i | i | i | i f \ } }	 } }
 } | i ƒ  \ } } } | t
 j o
 | } n | |
 } |  i i ƒ  } | d j p
 | t
 j o | d j p
 | t
 j o@ | i | |	 ƒ | i | | |	 | | | |	 | |
 | ƒ nZ | i | | |	 | | | |	 | |
 | ƒ | i | | |	 | | | |	 | | | ƒ | i ƒ  |  i i | d |  i d |  i ƒd  S(   Ni    s   fills   stroke(   s   wedges   centerxs   centerys   radiuss   startangledegreess   endangledegreess
   _xtraRadiis   yradiuss   radius1s   yradius1s   Nones   angles   selfs   _canvass	   beginPaths   paths   moveTos   arcTos   arcs   closes   drawPaths   _fills   _stroke(   s   selfs   wedges   radius1s   endangledegreess   angles   yradius1s   yradiuss   radiuss   centerxs   centerys   startangledegreess   path(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys	   drawWedgei   s$    3 

4""
"
	c      	   C   so   | i | i } | i | i } | i | i } | i | i } |  i
 i  | | | | d |  i d |  i ƒd  S(   Ns   fills   stroke(   s   ellipses   cxs   rxs   x1s   x2s   cys   rys   y1s   y2s   selfs   _canvass   _fills   _stroke(   s   selfs   ellipses   y2s   y1s   x2s   x1(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawEllipse~   s
    c         C   sÙ   t  | i ƒ d j p
 t d ‚ | i d d !| i d f \ } } |  i i ƒ  } | i
 | d | d ƒ x< t d t  | ƒ d ƒ D]" } | i | | | | d ƒ qƒ W| i ƒ  |  i i | d |  i d |  i ƒd  S(   Ni   s#   Polyline must have 2 or more pointsi    i   s   strokes   fill(   s   lens   polygons   pointss   AssertionErrors   heads   tails   selfs   _canvass	   beginPaths   paths   moveTos   ranges   is   lineTos   closes   drawPaths   _strokes   _fill(   s   selfs   polygons   heads   is   tails   path(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawPolygon†   s     #  
	c         C   s  |  i o|  i i ƒ  } | d | i | i | i | i	 f \ } }
 }	 } } | d d g j o€ | d | d f \ } } t | | | | ƒ } | d j o |
 | }
 qá | d j o |
 | d }
 qá t d	 t | ƒ ‚ n |  i i |
 |	 ƒ } | i | ƒ |  i i | ƒ n d  S(
   Ns
   textAnchors   starts	   inheriteds   fontNames   fontSizes   ends   middlei   s   bad value for textAnchor (   s   selfs   _fills   _trackers   getStates   Ss	   stringObjs   xs   ys   texts   encodings   text_anchors   encs   fonts	   font_sizes   stringWidths   textLens
   ValueErrors   strs   _canvass	   beginTexts   ts   textLines   drawText(   s   selfs	   stringObjs   encs	   font_sizes   textLens   text_anchors   texts   Ss   ts   ys   xs   font(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys
   drawString”   s    
4c         C   s³   d k  l } |  i i ƒ  } | i | i | i | i	 f } | | | ƒ } | o |  i } n d } | i o# |  i i | d | d |  i ƒn  |  i i | d | d |  i ƒd  S(   N(   s   _renderPathi    s   fills   stroke(   s   reportlab.graphics.shapess   _renderPaths   selfs   _canvass	   beginPaths   pdfPaths   moveTos   lineTos   curveTos   closes	   drawFuncss   paths   isCloseds   _fills   fills
   isClipPaths   clipPaths   _strokes   drawPath(   s   selfs   paths   pdfPaths   _renderPaths	   drawFuncss   isCloseds   fill(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawPath¥   s    
#c      	   C   sç  xà| i ƒ  D]Ò\ } } | d j o; |  i i | d | d | d | d | d | d ƒ q | d j o7 | t j o d |  _ qßd |  _ |  i i	 | ƒ q | d	 j o |  i i
 | ƒ q | d
 j o |  i i | ƒ q | d j o |  i i | ƒ q | d j o, | o |  i i | ƒ qß|  i i ƒ  q | d j o7 | t j o d |  _ qßd |  _ |  i i | ƒ q | d d g j oG | i d |  i i ƒ } | i d |  i i ƒ } |  i i | | ƒ q q Wd S(   s`   This takes a set of states, and outputs the PDF operators
        needed to set those propertiess	   transformi    i   i   i   i   i   s   strokeColors   strokeWidths   strokeLineCaps   strokeLineJoins   strokeDashArrays	   fillColors   fontSizes   fontNameN(   s   deltas   itemss   keys   values   selfs   _canvass	   transforms   Nones   _strokes   setStrokeColors   setLineWidths
   setLineCaps   setLineJoins   setDashs   _fills   setFillColors   gets	   _fontnames   fontnames	   _fontsizes   fontsizes   setFont(   s   selfs   deltas   newStates   fontnames   values   fontsizes   key(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   applyStateChangesµ   s<      		(   s   __name__s
   __module__s   __doc__s   __init__s   drawNodes   drawRects	   drawImages   drawLines
   drawCircles   drawPolyLines	   drawWedges   drawEllipses   drawPolygons
   drawStrings   drawPaths   applyStateChanges(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   _PDFRenderer   s    								
					(   s   Flowables   GraphicsFlowablec           B   s    t  Z d  Z d „  Z d „  Z RS(   s'   Flowable wrapper around a Pingo drawingc         C   s+   | |  _  |  i  i |  _ |  i  i |  _ d  S(   N(   s   drawings   selfs   widths   height(   s   selfs   drawing(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   __init__æ   s    	c         C   s   t  |  i |  i d d ƒ d  S(   Ni    (   s   draws   selfs   drawings   canv(   s   self(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawë   s    (   s   __name__s
   __module__s   __doc__s   __init__s   draw(    (    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   GraphicsFlowableä   s    	s    i   c   
      C   sJ  t  |  ƒ }  t | ƒ } | i d d ƒ | i d d | ƒ | i | ƒ | o6 | i
 |  i |  i f ƒ t |  | d d d | ƒnC | i d d ƒ d } d	 } | |  i } t |  | d | d | ƒ| i ƒ  | i ƒ  t i d
 j o t | d ƒ oJ y< d k } d k }	 | i | ƒ i d d ƒ |	 i | ƒ WqFqFXn d S(   sà   Makes a one-page PDF with just the drawing.

    If autoSize=1, the PDF will be the same size as
    the drawing; if 0, it will place the drawing on
    an A4 page with a title above it - possibly overflowing
    if too big.s   Times-Romani$   iP   iî  i    s   showBoundaryi   iä  i   s   macs   writeNs   CAROs   PDF (   s   renderScaledDrawings   ds   Canvass   fns   cs   setFonts
   drawStrings   msgs   setTitles   autoSizes   setPageSizes   widths   heights   draws   showBoundarys   ys   is   showPages   saves   syss   platforms   hasattrs   macfss
   macostoolss   FSSpecs   SetCreatorTypes   touched(
   s   ds   fns   msgs   showBoundarys   autoSizes   is   macfss   cs   ys
   macostools(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys
   drawToFileî   s.     

!c      	   C   s6   t  ƒ  } t |  | d | d | d | ƒ| i ƒ  Sd S(   s>   Returns a PDF as a string in memory, without touching the disks   msgs   showBoundarys   autoSizeN(   s   getStringIOs   ss
   drawToFiles   ds   msgs   showBoundarys   autoSizes   getvalue(   s   ds   msgs   showBoundarys   autoSizes   s(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   drawToString  s     	c    	      C   sö  t  d ƒ } | i d d ƒ | i d d d ƒ d k l }  g  } xg t |  ƒ D]Y } | d d	 !d
 j o? t	 d | d ƒ } t	 d | d ƒ } | i | | f ƒ qO qO W| i d d ƒ d } d } xý | D]õ \ } } | t j	 p t d | ‚ | d j  o | i ƒ  d } n | d } | i d d ƒ | i d | d | ƒ | i d d ƒ | d } | i d | ƒ } | i | ƒ | i | ƒ | i ƒ  } | | i } t | | d | ƒ | d } qÏ W| d j o | i ƒ  n | i ƒ  d GHd  S(   Ns   renderPDF.pdfs   Times-Romani$   iP   iî  s   Graphics Test(   s
   testshapesi    i
   s
   getDrawings   testshapes.s   ()s   .__doc__i   iä  i   s   Drawing %d has no docstring!i,  i   s   Times-BoldItalics
   Drawing %di   s   saved renderPDF.pdf(   s   Canvass   cs   setFonts
   drawStrings   reportlab.graphicss
   testshapess   drawingss   dirs   funcnames   evals   drawings	   docstrings   appends   ys   is   Nones   AssertionErrors   showPages	   beginTexts   textObjs	   textLiness   drawTexts   getYs   heights   draws   save(	   s
   testshapess   cs   textObjs   is	   docstrings   funcnames   drawingss   ys   drawing(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   test   sH      



 
s   __main__N(   s   __doc__s   __version__s   reportlab.graphics.shapess   reportlab.pdfgen.canvass   Canvass   reportlab.pdfbase.pdfmetricss   stringWidths   reportlab.lib.utilss   getStringIOs	   reportlabs	   rl_configs
   renderbases   Renderers   StateTrackers   getStateDeltas   renderScaledDrawings   _unset_s   draws   _PDFRenderers   reportlab.platypuss   Flowables   GraphicsFlowables
   drawToFiles   drawToStrings   tests   __name__(   s   Canvass   StateTrackers   renderScaledDrawings   getStringIOs
   drawToFiles   stringWidths   draws   _PDFRenderers   Flowables	   rl_configs   Renderers   tests   drawToStrings   __version__s   getStateDeltas   GraphicsFlowable(    (    sF   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/renderPDF.pys   ?
   s    É
#	F