;
0sDc           @   sz  d  Z  d k Z d k Z d k l Z l Z d k l Z l Z d k	 l
 Z
 d k l Z l Z l Z l Z d k l Z d k Z d k l Z d k l Z d	 k l Z d
 Z d f  d     YZ d k Td d e i d  Z d   Z d e f d     YZ e i d  Z e i d  Z  d d  Z! e" d j oD d k# Z# e$ e# i%  d j o e# i% d Z& n d Z& e! e&  n d S(   s7    $Id: renderPS.py 2808 2006-03-15 16:47:27Z rgbecker $ N(   s   getFonts   stringWidth(   s   fp_strs   getStringIO(   s   black(   s   Renderers   StateTrackers   getStateDeltas   renderScaledDrawing(   s   STATE_DEFAULTS(   s
   StringType(   s   getitem(   s	   rl_configsj  
/RE { %def
  findfont begin
  currentdict dup length dict begin
    { %forall
      1 index /FID ne { def } { pop pop } ifelse
    } forall
    /FontName exch def dup length 0 ne { %if
      /Encoding Encoding 256 array copy def
      0 exch { %forall
        dup type /nametype eq { %ifelse
          Encoding 2 index 2 index put
          pop 1 add
        }{ %else
          exch pop
        } ifelse
      } forall
    } if pop
  currentdict dup end end
  /FontName get exch definefont pop
} bind def

/WinAnsiEncoding [
  39/quotesingle 96/grave 128/euro 130/quotesinglbase/florin/quotedblbase
  /ellipsis/dagger/daggerdbl/circumflex/perthousand
  /Scaron/guilsinglleft/OE 145/quoteleft/quoteright
  /quotedblleft/quotedblright/bullet/endash/emdash
  /tilde/trademark/scaron/guilsinglright/oe/dotlessi
  159/Ydieresis 164/currency 166/brokenbar 168/dieresis/copyright
  /ordfeminine 172/logicalnot 174/registered/macron/ring
  177/plusminus/twosuperior/threesuperior/acute/mu
  183/periodcentered/cedilla/onesuperior/ordmasculine
  188/onequarter/onehalf/threequarters 192/Agrave/Aacute
  /Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
  /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
  /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute
  /Ocircumflex/Otilde/Odieresis/multiply/Oslash
  /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
  /germandbls/agrave/aacute/acircumflex/atilde/adieresis
  /aring/ae/ccedilla/egrave/eacute/ecircumflex
  /edieresis/igrave/iacute/icircumflex/idieresis
  /eth/ntilde/ograve/oacute/ocircumflex/otilde
  /odieresis/divide/oslash/ugrave/uacute/ucircumflex
  /udieresis/yacute/thorn/ydieresis
] def

s   PSCanvasc           B   s  t  Z d d f d d  Z d   Z e e d  Z d   Z e d  Z d   Z d	   Z	 e e d
  Z
 d   Z d   Z g  d d  Z d   Z d   Z d   Z d   Z e d  Z d   Z d   Z d d  Z d d  Z d   Z d d  Z d d d  Z d d d  Z d   Z d    Z d d! d d"  Z d#   Z d d d d$  Z e e d%  Z  d&   Z! d'   Z" d(   Z# d)   Z$ d*   Z% d d+  Z& d d d d,  Z' d-   Z( d.   Z) d/   Z* d0   Z+ e e d1  Z, d2   Z- e e d3  Z. RS(4   Ni,  i   c         C   s   | \ |  _ |  _ g  } | i |  _ | i |  _ d |  _	 g  |  _
 d |  _ t |  _ |  _ |  _ |  _ |  _ |  _ |  _ |  _ g  |  _ |  i t d t d  |  i t d  |  i d  |  i d  |  i d  | |  _ d  S(   Ni    s   
s   fontNames   fontSizes   strokeColori   i   (   s   sizes   selfs   widths   heights	   xtraStates   appends   _xtraState_pushs   pops   _xtraState_pops   commentss   codes   _seps   Nones   _strokeColors
   _fillColors
   _lineWidths   _fonts	   _fontSizes   _lineCaps	   _lineJoins   _colors
   _fontsUseds   setFonts   STATE_DEFAULTSs   setStrokeColors
   setLineCaps   setLineJoins   setLineWidths   PostScriptLevel(   s   selfs   sizes   PostScriptLevels	   xtraState(    (    s   ./renderPS.pys   __init__D   s    			:	c         C   s&   |  i o |  i i d |  n d  S(   Ns   %(   s   selfs   commentss   codes   appends   msg(   s   selfs   msg(    (    s   ./renderPS.pys   comment[   s    
 c         C   sj   t  d j o# |  i | | | d t d t n7 t  d j o# |  i | | | d t d t n d  d  S(   Ni   s   x2s   y2i   s   PostScriptLevelException(   s   PostScriptLevels   selfs   _drawImageLevel1s   images   x1s   y1s   Nones   _drawImageLevel2(   s   selfs   images   x1s   y1s   x2s   y2(    (    s   ./renderPS.pys	   drawImage^   s
    ##c         C   s   |  i i d  d  S(   Ns   showpage(   s   selfs   codes   append(   s   self(    (    s   ./renderPS.pys   clearg   s    c         C   s&  t  | d  o t | d  } n | } |  i d d j o |  i   n |  i i d d |  i |  i	 t
 f  g  } x( |  i D] } | i d | | f  q W|  i i d t i | |  i   | i t i |  i |  i   | | j	 o1 | i   d	 k l } | | d
 d d d n d  S(   Ns   writes   wbis   showpagei    s   %%!PS-Adobe-3.0 EPSF-3.0
%%%%BoundingBox: 0 0 %d %d
%%%% Initialization:
/m {moveto} bind def
/l {lineto} bind def
/c {curveto} bind def

%s
s   WinAnsiEncoding /%s /%s REi   (   s   markfilenames   creatorcodes   XPR3s   filetypes   EPSF(   s   hasattrs   fs   opens   files   selfs   codes   clears   inserts   widths   heights   PS_WinAnsiEncodings   fontReencodes
   _fontsUseds   fontNames   appends   strings   joins   _seps   writes   closes   reportlab.lib.utilss   markfilename(   s   selfs   fs   markfilenames   fontNames   files   fontReencode(    (    s   ./renderPS.pys   savej   s"     	
 "
c         C   s'   |  i |  i f  |  i i d  d  S(   Ns   gsave(   s   selfs   _xtraState_pushs   _fontCodeLocs   codes   append(   s   self(    (    s   ./renderPS.pys	   saveState   s    c         C   s&   |  i i d  |  i   \ |  _ d  S(   Ns   grestore(   s   selfs   codes   appends   _xtraState_pops   _fontCodeLoc(   s   self(    (    s   ./renderPS.pys   restoreState   s    c         C   s4   | p |  i } | p |  i } t | | |  Sd S(   sl   Return the logical width of the string if it were drawn
        in the current font (defaults to self.font).N(   s   fonts   selfs   _fonts   fontSizes	   _fontSizes   stringWidths   s(   s   selfs   ss   fonts   fontSize(    (    s   ./renderPS.pys   stringWidth   s     c         C   s5   |  i | j o! | |  _ |  i i d |  n d  S(   Ns   %d setlinecap(   s   selfs   _lineCaps   vs   codes   append(   s   selfs   v(    (    s   ./renderPS.pys
   setLineCap   s    	c         C   s5   |  i | j o! | |  _ |  i i d |  n d  S(   Ns   %d setlinejoin(   s   selfs	   _lineJoins   vs   codes   append(   s   selfs   v(    (    s   ./renderPS.pys   setLineJoin   s    	i    c         C   s   d } t |  t i j p t |  t i j o! |  i i d | | | f  n} t |  t i
 j p t |  t i j oP | d j p
 t d  t i t t |   } |  i i d | | | f  n d S(   s7   Two notations.  pass two numbers, or an array and phases   setdashs   [%s %s] 0 %si    s   phase is a length in user spaces
   [%s] %s %sN(   s   psoperations   types   arrays   typess   IntTypes	   FloatTypes   selfs   _codes   appends   phases   ListTypes	   TupleTypes   AssertionErrors   strings   joins   maps   strs	   textarrays   code(   s   selfs   arrays   phases   psoperations	   textarray(    (    s   ./renderPS.pys   setDash   s     ,!,c         C   s   | |  _ |  i |  d  S(   N(   s   colors   selfs   _strokeColors   setColor(   s   selfs   color(    (    s   ./renderPS.pys   setStrokeColor   s    	c         C   s   |  i | j o | |  _ | op t | d  o3 |  i i d t | i | i | i	 | i
   q |  i i d t | i | i | i   q n d  S(   Ns   cyans   %s setcmykcolors   %s setrgbcolor(   s   selfs   _colors   colors   hasattrs   codes   appends   fp_strs   cyans   magentas   yellows   blacks   reds   greens   blue(   s   selfs   color(    (    s   ./renderPS.pys   setColor   s    	3c         C   s   | |  _ |  i |  d  S(   N(   s   colors   selfs
   _fillColors   setColor(   s   selfs   color(    (    s   ./renderPS.pys   setFillColor   s    	c         C   s5   | |  i j o! | |  _ |  i i d |  n d  S(   Ns   %s setlinewidth(   s   widths   selfs
   _lineWidths   codes   append(   s   selfs   width(    (    s   ./renderPS.pys   setLineWidth   s    	c         C   s\   |  i | j p |  i | j o8 t |  i  |  _ | |  _ | |  _ |  i i d  n d  S(   Ns    (	   s   selfs   _fonts   fonts	   _fontSizes   fontSizes   lens   codes   _fontCodeLocs   append(   s   selfs   fonts   fontSizes   leading(    (    s   ./renderPS.pys   setFont   s
     		c         C   sT   |  i t j o@ |  i |  i  |  i i d t | |  t | |  f  n d  S(   Ns   %s m %s l stroke(   s   selfs   _strokeColors   Nones   setColors   codes   appends   fp_strs   x1s   y1s   x2s   y2(   s   selfs   x1s   y1s   x2s   y2(    (    s   ./renderPS.pys   line   s    c         C   sM   t  i | t d  d  } t  i | d d  } t  i | d d  } | Sd S(   s   
        return a copy of string s with special characters in postscript strings
        escaped with backslashes.
        Have not handled characters that are converted normally in python strings
        i.e. 
 -> newline
        i\   s   \\s   (s   \(s   )s   \)N(   s   strings   replaces   ss   chrs   str(   s   selfs   ss   str(    (    s   ./renderPS.pys   _escape   s
     c         C   s  |  i t j o
|  i |  i o` t |  i  i i } d | t
 |  i  f |  i |  i <| |  i j o |  i i |  q n |  i |  i  |  i |  } | d j o' |  i i d t
 | |  | f  q|  i i d | | | f  |  i i d |  |  i i d  n d  S(   Ns"   (%s) findfont %s scalefont setfonti    s   %s m (%s) show s   gsave %s %s translate %s rotates   0 0 m (%s) shows   grestore(   s   selfs
   _fillColors   Nones   codes   _fontCodeLocs   getFonts   _fonts   faces   names   psNames   fp_strs	   _fontSizes
   _fontsUseds   appends   setColors   _escapes   ss   angles   xs   y(   s   selfs   xs   ys   ss   angles   psName(    (    s   ./renderPS.pys
   drawString   s    #'s   middlec         C   s}   |  i t j	 oi t | |  i |  i  } | d j o | | 8} n  | d j o | | d 8} n |  i
 | | |  n d  S(   Ns   ends   middlef2.0(   s   selfs
   _fillColors   Nones   stringWidths   texts   _fonts	   _fontSizes   textLens   text_anchors   xs
   drawStrings   y(   s   selfs   xs   ys   texts   text_anchors   textLen(    (    s   ./renderPS.pys   drawCentredString   s    c         C   s   |  i | | | d d d  S(   Ns   text_anchors   end(   s   selfs   drawCentredStrings   texts   xs   y(   s   selfs   texts   xs   y(    (    s   ./renderPS.pys   drawRightString   s    c
         C   s   d }
 t | |  t | | | | | |  f } |  i t j o, |  i |  i  |  i i |
 | d  n |  i t j o> |  i |  i  |  i i |
 | |	 o d p d d  n d  S(   Ns   %s m %s curvetos    eofills
    closepaths    s    stroke(   s   codelines   fp_strs   x1s   y1s   x2s   y2s   x3s   y3s   x4s   y4s   datas   selfs
   _fillColors   Nones   setColors   codes   appends   _strokeColors   closed(   s   selfs   x1s   y1s   x2s   y2s   x3s   y3s   x4s   y4s   closeds   codelines   data(    (    s   ./renderPS.pys	   drawCurve   s    *i   c         C   s   t  | |  t | |  f \ } } t  | |  t | |  f \ } } |  i | | f | | f | | f | | f f d d d | d | d S(   s)   Draw a rectangle between x1,y1, and x2,y2s   closedi   s   strokes   fillN(
   s   mins   x1s   x2s   maxs   y1s   y2s   selfs   polygons   strokes   fill(   s   selfs   x1s   y1s   x2s   y2s   strokes   fill(    (    s   ./renderPS.pys   rect
  s     $$i   c   	      C   s%  t  | |  t | |  f \ } } t  | |  t | |  f \ } } d } d g } | i | | | | | | | d d f  | i | | | | | | | d d f  | i | | | | | | | d d f  | i | | | | | | | d d f  | i d  |  i |  d	 S(
   s   Draw a rounded rectangle between x1,y1, and x2,y2,
        with corners inset as ellipses with x radius rx and y radius ry.
        These should have x1<x2, y1<y2, rx>0, and ry>0.sJ   matrix currentmatrix %s %s translate %s %s scale 0 0 1 %s %s arc setmatrixs   newpathiZ   i   i  ih  i    s	   closepathN(   s   mins   x1s   x2s   maxs   y1s   y2s   ellipsePaths   rrCodes   appends   rxs   rys   selfs   _fillAndStroke(	   s   selfs   x1s   y1s   x2s   y2s   rxs   rys   rrCodes   ellipsePath(    (    s   ./renderPS.pys	   roundRect  s     $$	,,,,c         C   s   |  i | | | |  d S(   sq   Draw an orthogonal ellipse inscribed within the rectangle x1,y1,x2,y2.
        These should have x1<x2 and y1<y2.N(   s   selfs   drawArcs   x1s   y1s   x2s   y2(   s   selfs   x1s   y1s   x2s   y2(    (    s   ./renderPS.pys   ellipse-  s     c         C   s*   |  i | | | | | | | |  d  S(   N(   s   selfs   ellipses   xcs   rs   yc(   s   selfs   xcs   ycs   r(    (    s   ./renderPS.pys   circle3  s    ih  c         C   s  | | d | | d f \ } } | | d | | d f \ }	 }
 |  i	 | | | | | |  } t i | d } t i | d } | | } d } |  i t j o |  i |  i  |  i i |  d } |  i t j o |  i i d  n |  i | |  |  i i d  |  i t j o |  i i d  q6n |  i t j o |  i |  i  | |	 t i |  | |
 t i |  f \ } } | o |  i i |  n | o4 |  i | |  |  i | |  |  i i d  n |  i i d	  n d
 S(   s   Draw a partial ellipse inscribed within the rectangle x1,y1,x2,y2,
        starting at startAng degrees and covering extent degrees.   Angles
        start with 0 to the right (+x) and increase counter-clockwise.
        These should have x1<x2 and y1<y2.f2.0f180.0i    i   s   gsaves   eofills   grestores	   closepaths   strokeN(   s   x1s   x2s   y1s   y2s   cxs   cys   rxs   rys   selfs   _genArcCodes   startAngs   extents   codelines   maths   pis   startAngleRadianss   extentRadianss   endAngleRadianss   codelineAppendeds
   _fillColors   Nones   setColors   codes   appends   _strokeColors   lineTos   coss   sins   startxs   startys
   fromcenter(   s   selfs   x1s   y1s   x2s   y2s   startAngs   extents
   fromcenters   startAngleRadianss   rxs   rys   startys   cys   cxs   codelines   extentRadianss   startxs   codelineAppendeds   endAngleRadians(    (    s   ./renderPS.pys   drawArc6  s8     ""
  4c         C   s   t  | | d  } t  | | d  } | | d | | d f \ } } d } | d j o
 d }
 n d }
 | | | | | | | |
 f }	 | |	 Sd S(   sO   Calculate the path for an arc inscribed in rectangle defined by (x1,y1),(x2,y2)f2.0sI   matrix currentmatrix %s %s translate %s %s scale 0 0 1 %s %s %s setmatrixi    s   arcs   arcnN(   s   abss   x2s   x1s   xScales   y2s   y1s   yScales   xs   ys   codelines   extents   arcs   startAngs   data(   s   selfs   x1s   y1s   x2s   y2s   startAngs   extents   ys   yScales   datas   arcs   codelines   xs   xScale(    (    s   ./renderPS.pys   _genArcCodea  s     "
c         C   s   t  |  d j p
 t d  | d } | d } g  } | i d t |   x% | D] } | i d t |   qU W| o | i d  n |  i
 | d | d	 | d  S(
   Ni   s"   Polygon must have 2 or more pointsi    i   s   %s ms   %s ls	   closepaths   strokes   fill(   s   lens   ps   AssertionErrors   starts   polyCodes   appends   fp_strs   points   closeds   selfs   _fillAndStrokes   strokes   fill(   s   selfs   ps   closeds   strokes   fills   starts   polyCodes   point(    (    s   ./renderPS.pys   polygons  s    

 c         C   sm   |  i t j oY |  i |  i  d } x@ | D]4 } |  i i | t	 | d  t	 | d  f  q- Wn d  S(   Ns   %s m %s l strokei    i   (
   s   selfs   _strokeColors   Nones	   _setColors   codelines   lineLists   lines   codes   appends   fp_str(   s   selfs   lineLists   colors   widths   codelines   line(    (    s   ./renderPS.pys   lines  s     c         C   s!   |  i i d t | |   d  S(   Ns   %s m(   s   selfs   codes   appends   fp_strs   xs   y(   s   selfs   xs   y(    (    s   ./renderPS.pys   moveTo  s    c         C   s!   |  i i d t | |   d  S(   Ns   %s l(   s   selfs   codes   appends   fp_strs   xs   y(   s   selfs   xs   y(    (    s   ./renderPS.pys   lineTo  s    c      	   C   s-   |  i i d t | | | | | |   d  S(   Ns   %s c(
   s   selfs   codes   appends   fp_strs   x1s   y1s   x2s   y2s   x3s   y3(   s   selfs   x1s   y1s   x2s   y2s   x3s   y3(    (    s   ./renderPS.pys   curveTo  s    c         C   s   |  i i d  d  S(   Ns	   closepath(   s   selfs   codes   append(   s   self(    (    s   ./renderPS.pys	   closePath  s    c         C   s   t  |  d j p
 t d  |  i t j oq |  i |  i  |  i | d d | d d  x* | d D] } |  i	 | d | d  qh W|  i
 i d  n d  S(   Ni   s#   Polyline must have 1 or more pointsi    s   stroke(   s   lens   ps   AssertionErrors   selfs   _strokeColors   Nones   setColors   moveTos   ts   lineTos   codes   append(   s   selfs   ps   t(    (    s   ./renderPS.pys   polyLine  s      c      	   C   s  g  } d } xs| D]k}	 |	 d } t |	 d  } | t j of | o% d } | i d t	 | d    n | i d t	 | d    | i d t	 | d   q | t
 j oK d } | d  \ } } } } }
 } | i |  i | | | | |
 |   q | t j of | o% d } | i d t	 | d    n | i d t	 | d    | i d t	 | d   q t d |  q W| o | i d	  n |  i |  d  S(
   Ni   i    s   %s mi   s   %s li   s
   %s curvetos   unknown figure operator: s	   closepath(   s
   figureCodes   firsts   partLists   parts   ops   lists   argss
   figureLines   appends   fp_strs	   figureArcs   x1s   y1s   x2s   y2s
   startAngles   extents   selfs   _genArcCodes   figureCurves	   TypeErrors   closeds   _fillAndStroke(   s   selfs   partLists   closeds   x1s   y2s   extents   argss
   figureCodes   x2s   parts
   startAngles   y1s   ops   first(    (    s   ./renderPS.pys
   drawFigure  s4     
)c         C   sH  |  i o | } |  i o | } | p | p | o|  i i |  | oh | p | o |  i i d  n |  i	 |  i  |  i i d  | p | o |  i i d  q n | oZ | o |  i i d  n |  i	 |  i  |  i i d  | o |  i i d  qn | o$ |  i i d  |  i i d  qDn d  S(   Ns   gsaves   eofills   grestores   strokes   clips   newpath(
   s   selfs
   _fillColors   fills   _strokeColors   strokes   clips   codes   extends   appends   setColor(   s   selfs   codes   clips   fills   stroke(    (    s   ./renderPS.pys   _fillAndStroke  s*        c         C   s!   |  i i d t | |   d  S(   Ns   %s translate(   s   selfs   codes   appends   fp_strs   xs   y(   s   selfs   xs   y(    (    s   ./renderPS.pys	   translate  s    c         C   s!   |  i i d t | |   d  S(   Ns   %s scale(   s   selfs   codes   appends   fp_strs   xs   y(   s   selfs   xs   y(    (    s   ./renderPS.pys   scale  s    c      	   C   s-   |  i i d t | | | | | |   d  S(   Ns   [%s] concat(
   s   selfs   codes   appends   fp_strs   as   bs   cs   ds   es   f(   s   selfs   as   bs   cs   ds   es   f(    (    s   ./renderPS.pys	   transform  s    c         C   s   | | f \ |  _ |  _ d S(   s1   if this is used we're probably in the wrong worldN(   s   ws   hs   selfs   widths   height(   s   selfs   ws   h(    (    s   ./renderPS.pys   _drawTimeResize  s     c      	   C   s  d }	 | i d  } | i \ } } | o | | } n | o | | } n | | } | | } |  i i d d | | | f d | | f d | g  |  i i d | | |	 f d | d	 d	 | d	 | f d
 d g  | i   } t |  | | j d f p t  |  i |  } t |  }
 |
 i d  } x1 | d j o# |  i i |  |
 i d  } q:W|  i i d  |  i i d  d S(   s   drawImage(self,image,x1,y1,x2=None,y2=None) : If x2 and y2 are ommitted, they are
        calculated from image size. (x1,y1) is upper left of image, (x2,y2) is lower right of
        image in piddle coordinates.i   s   RGBs   gsaves   %s %s translates   %s %s scales   /scanline %d 3 mul string defs   %s %s %ss   [%s %s %s %s %s %s]i    s2   { currentfile scanline readhexstring pop } false 3s   colorimage s   Wrong amount of data for imageiN   s    s   % end of image datas   grestoreN(   s   component_depths   images   converts   myimages   sizes   imgwidths	   imgheights   x2s   x1s   y2s   y1s	   drawwidths
   drawheights   selfs   codes   extends   tostrings   rawimages   lens   AssertionErrors   _AsciiHexEncodes   hex_encodeds   getStringIOs	   outstreams   reads   datalines   append(   s   selfs   images   x1s   y1s   x2s   y2s
   drawheights   hex_encodeds   rawimages   component_depths	   outstreams	   drawwidths   myimages   imgwidths   datalines	   imgheight(    (    s   ./renderPS.pys   _drawImageLevel1  s.     

9
@$ c         C   s?   t    } x% | D] } | i d t |   q W| i   Sd S(   s   Helper function used by imagess   %02xN(   s   getStringIOs   outputs   inputs   chars   writes   ords   getvalue(   s   selfs   inputs   chars   output(    (    s   ./renderPS.pys   _AsciiHexEncode,  s     	 c         C   sn  | i d j o d } d } | } nK | i d j o | i d  } d } | } n | i d  } d } d } | i \ } } | o | | } n | o | | } n | | } | | } |  i i d d | | | f d	 | | f g  | d j o |  i i d
  n" | d j o |  i i d  n |  i i d | | | f  | d j o |  i i d  n | d j o |  i i d  n |  i i d | | | f d d d g  | i   }
 t |
  | | j d f p t  |  i |
  } t |  } | i d  }	 x1 |	 d j o# |  i i |	  | i d  }	 qW|  i i d  |  i i d  d S(   s"   At present we're handling only PILs   Li   i   s   1s   RGBi   s   gsaves   %s %s translates   %s %s scales   /DeviceRGB setcolorspaces   /DeviceGray setcolorspacesY   
<<
/ImageType 1
/Width %d /Height %d  %% dimensions of source image
/BitsPerComponent %ds   /Decode [0 1]s6   /Decode [0 1 0 1 0 1]  %% decode color values normallys   /ImageMatrix [%s 0 0 %s 0 %s]s.   /DataSource currentfile /ASCIIHexDecode filters   >> % End image dictionarys   images   Wrong amount of data for imageiN   s    s   > % end of image datas   grestoreN(   s   images   modes   imBitsPerComponents   imNumComponentss   myimages   converts   sizes   imwidths   imheights   x2s   x1s   y2s   y1s	   drawwidths
   drawheights   selfs   codes   extends   appends   tostrings   rawimages   lens   AssertionErrors   _AsciiHexEncodes   hex_encodeds   getStringIOs	   outstreams   reads   dataline(   s   selfs   images   x1s   y1s   x2s   y2s
   drawheights   hex_encodeds   imNumComponentss   datalines   rawimages	   outstreams   imBitsPerComponents   imwidths   myimages   imheights	   drawwidth(    (    s   ./renderPS.pys   _drawImageLevel23  sR     



2*$ (/   s   __name__s
   __module__s   __init__s   comments   Nones	   drawImages   clears   saves	   saveStates   restoreStates   stringWidths
   setLineCaps   setLineJoins   setDashs   setStrokeColors   setColors   setFillColors   setLineWidths   setFonts   lines   _escapes
   drawStrings   drawCentredStrings   drawRightStrings	   drawCurves   rects	   roundRects   ellipses   circles   drawArcs   _genArcCodes   polygons   liness   moveTos   lineTos   curveTos	   closePaths   polyLines
   drawFigures   _fillAndStrokes	   translates   scales	   transforms   _drawTimeResizes   _drawImageLevel1s   _AsciiHexEncodes   _drawImageLevel2(    (    (    s   ./renderPS.pys   PSCanvasC   sX   																		+						
#				F	(   s   *i    c         C   s/   t    } | i t |   | | | d | d S(   s
   As it sayss   showBoundaryN(	   s   _PSRenderers   Rs   draws   renderScaledDrawings   drawings   canvass   xs   ys   showBoundary(   s   drawings   canvass   xs   ys   showBoundarys   R(    (    s   ./renderPS.pys   draw~  s     	c         C   sP   g  } x? t d t |   d  D]% } | i |  | |  | d f  q W| Sd S(   so   
    given a list of coordinates [x0, y0, x1, y1....]
    produce a list of points [(x0,y0), (y1,y0),....]
    i    i   i   N(   s   Ps   ranges   lens   Ls   is   append(   s   Ls   is   P(    (    s   ./renderPS.pys   _pointsFromList  s      #s   _PSRendererc           B   s   t  Z d  Z d   Z d   Z h  d d <d d <d d <d	 d
 <d d <d d <d 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 EPS document.  It needs to be a class
    rather than a function, as some EPS-specific state tracking is
    needed outside of the state info in the SVG model.c         C   s   t    |  _ d  S(   N(   s   StateTrackers   selfs   _tracker(   s   self(    (    s   ./renderPS.pys   __init__  s    c         C   s4  |  i i d |  |  i i } t | t  o | i o |  i i	   n t
 |  } |  i i |  |  i | h   |  i |  |  i i   } t | t  o | i o |  i i   n |  i i d |  | |  i _ xK | i   D]= \ } } |  i i |  o t |  i |  i | |  q q Wd S(   sE   This is the recursive method called for each node
        in the trees   begin node %ss   end node %sN(   s   selfs   _canvass   comments   nodes   _colors   colors
   isinstances   Paths
   isClipPaths	   saveStates   getStateDeltas   deltass   _trackers   pushs   applyStateChangess   drawNodeDispatchers   pops   rDeltass   restoreStates   itemss   ks   vs	   _restoress   has_keys   setattr(   s   selfs   nodes   deltass   colors   rDeltass   vs   k(    (    s   ./renderPS.pys   drawNode  s$      s   strokeColors   _strokeColors   strokeWidths
   _lineWidths   strokeLineCaps   _lineCaps   strokeLineJoins	   _lineJoins	   fillColors
   _fillColors   fontNames   _fonts   fontSizes	   _fontSizec         C   s   | i | i j o
 d j n o7 |  i i  | i | i | i | i | i | i  n@ |  i i	 | i | i | i | i | i | i | i | i  d  S(   Ni    (
   s   rects   rxs   rys   selfs   _canvass   xs   ys   widths   heights	   roundRect(   s   selfs   rect(    (    s   ./renderPS.pys   drawRect  s
    $"c         C   s:   |  i i o) |  i i | i | i | i | i  n d  S(   N(   s   selfs   _canvass   _strokeColors   lines   x1s   y1s   x2s   y2(   s   selfs   line(    (    s   ./renderPS.pys   drawLine  s    c         C   s#   |  i i | i | i | i  d  S(   N(   s   selfs   _canvass   circles   cxs   cys   r(   s   selfs   circle(    (    s   ./renderPS.pys
   drawCircle  s    c      	   C   s   | i   \ } } } | d j p
 | t j o | d j p
 | t j op | i }	 | i } | i } | i	 } | i
 } | |	 }
 |  i i | | | | | | | | |	 |
 d d n |  i | i    d  S(   Ni    s
   fromcenteri   (   s   wedges
   _xtraRadiis   yradiuss   radius1s   yradius1s   Nones   startangledegreess   endangledegreess   centerxs   centerys   radiuss   extents   selfs   _canvass   drawArcs   drawPolygons	   asPolygon(   s   selfs   wedges   radius1s   endangledegreess   yradius1s   radiuss   yradiuss   centerxs   centerys   startangledegreess   extent(    (    s   ./renderPS.pys	   drawWedge  s    4					
%c         C   s.   |  i i o |  i i t | i   n d  S(   N(   s   selfs   _canvass   _strokeColors   polyLines   _pointsFromLists   ps   points(   s   selfs   p(    (    s   ./renderPS.pys   drawPolyLine  s    c         C   s]   | i | i } | i | i } | i | i } | i | i } |  i
 i  | | | |  d  S(   N(   s   ellipses   cxs   rxs   x1s   x2s   cys   rys   y1s   y2s   selfs   _canvas(   s   selfs   ellipses   y2s   y1s   x2s   x1(    (    s   ./renderPS.pys   drawEllipse  s
    c         C   s#   |  i i t | i  d d d  S(   Ns   closedi   (   s   selfs   _canvass   polygons   _pointsFromLists   ps   points(   s   selfs   p(    (    s   ./renderPS.pys   drawPolygon  s    c   
      C   s   |  i i o |  i i   } | d | 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 | | |  n d  S(
   Ns
   textAnchors   starts	   inheriteds   fontNames   fontSizes   ends   middlei   s   bad value for text_anchor (   s   selfs   _canvass
   _fillColors   _trackers   getStates   Ss	   stringObjs   xs   ys   texts   text_anchors   fonts   fontSizes   stringWidths   textLens
   ValueErrors   strs
   drawString(
   s   selfs	   stringObjs   textLens   text_anchors   texts   Ss   fontSizes   ys   xs   font(    (    s   ./renderPS.pys
   drawString  s    +c         C   sr   d k  l } |  i } | i | i | i | i f } | | |  } | o t | _ n | i g  d | i d  S(   N(   s   _renderPaths   clip(   s   reportlab.graphics.shapess   _renderPaths   selfs   _canvass   cs   moveTos   lineTos   curveTos	   closePaths	   drawFuncss   paths   isCloseds   Nones
   _fillColors   _fillAndStrokes
   isClipPath(   s   selfs   paths   cs   _renderPaths	   drawFuncss   isClosed(    (    s   ./renderPS.pys   drawPath  s    	c      	   C   s  x| i   D]\ } } | d j o; |  i i | d | d | d | d | d | d  q | d j o |  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 o |  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 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   setStrokeColors   setLineWidths
   setLineCaps   setLineJoins   setDashs   setFillColors   gets   _fonts   fontnames	   _fontSizes   fontsizes   setFont(   s   selfs   deltas   newStates   fontnames   values   fontsizes   key(    (    s   ./renderPS.pys   applyStateChanges  s0      c         C   s   d k  l } | | i  } | i } | i } | i	 } | t j	 o | | 7} n | i } | t j	 o | | 7} n |  i i | i | | | |  d  S(   N(   s   ImageReader(   s   reportlab.lib.utilss   ImageReaders   images   paths   ims   xs   x0s   ys   y0s   widths   x1s   Nones   heights   y1s   selfs   _canvass	   drawImages   _image(   s   selfs   images   ImageReaders   ims   y1s   y0s   x0s   x1(    (    s   ./renderPS.pys	   drawImage+  s    			 	 (   s   __name__s
   __module__s   __doc__s   __init__s   drawNodes	   _restoress   drawRects   drawLines
   drawCircles	   drawWedges   drawPolyLines   drawEllipses   drawPolygons
   drawStrings   drawPaths   applyStateChangess	   drawImage(    (    (    s   ./renderPS.pys   _PSRenderer  s    		E											*c         C   sN   t  |   }  t |  i |  i f  } t |  | d d d | | i |  d  S(   Ni    s   showBoundary(
   s   renderScaledDrawings   ds   PSCanvass   widths   heights   cs   draws   showBoundarys   saves   fn(   s   ds   fns   showBoundarys   c(    (    s   ./renderPS.pys
   drawToFile6  s    c         C   s*   t    } t |  | d | | i   Sd S(   s=   Returns a PS as a string in memory, without touching the disks   showBoundaryN(   s   getStringIOs   ss
   drawToFiles   ds   showBoundarys   getvalue(   s   ds   showBoundarys   s(    (    s   ./renderPS.pys   drawToString<  s     	s   epsoutc   
      C   s   d  k  } | i i |   o | i |   n d  k } g  } xg t |  D]Y } | d d !d j o? t	 d | d  }	 t	 d | d  } | i |	 | f  qJ qJ Wd } xI | D]A \ } } |  | i d | } t | |  d G| GH| d	 } q Wd  S(
   Ni    i
   s
   getDrawings   testshapes.s   ()s   .__doc__s   renderPS_%d.epss   savedi   (   s   oss   paths   isdirs   outdirs   mkdirs
   testshapess   drawingss   dirs   funcnames   evals   drawings	   docstrings   appends   is   ds   seps   filenames
   drawToFile(
   s   outdirs
   testshapess   ds   is	   docstrings   funcnames   drawingss   filenames   oss   drawing(    (    s   ./renderPS.pys   testH  s$    		  	s   __main__i   ('   s   __version__s   strings   typess   reportlab.pdfbase.pdfmetricss   getFonts   stringWidths   reportlab.lib.utilss   fp_strs   getStringIOs   reportlab.lib.colorss   blacks   reportlab.graphics.renderbases   Renderers   StateTrackers   getStateDeltas   renderScaledDrawings   reportlab.graphics.shapess   STATE_DEFAULTSs   maths
   StringTypes   operators   getitems	   reportlabs	   rl_configs   PS_WinAnsiEncodings   PSCanvass   shapess   showBoundarys   draws   _pointsFromLists   _PSRenderers
   drawToFiles   drawToStrings   tests   __name__s   syss   lens   argvs   outdir(   s   getStateDeltas   drawToStrings   fp_strs
   StringTypes   getStringIOs   _pointsFromLists	   rl_configs   blacks   typess   tests   __version__s   PS_WinAnsiEncodings   maths   draws   getFonts   strings   renderScaledDrawings   syss   outdirs   STATE_DEFAULTSs   _PSRenderers   StateTrackers
   drawToFiles   stringWidths   Renderers   getitems   PSCanvas(    (    s   ./renderPS.pys   ?   s8   	0  6 	
	