;ň
ť0sDc           @   s   d  Z  d Z d k Z d k Td k l Z l Z l Z d k l	 Z	 d k
 l Z e e f Z d f  d     YZ d	 e f d
     YZ d S(   s9    $Id: textobject.py 2830 2006-04-05 15:18:32Z rgbecker $ sĂ   
PDFTextObject is an efficient way to add text to a Canvas. Do not
instantiate directly, obtain one from the Canvas instead.

Progress Reports:
8.83, 2000-01-13, gmcm:
    created from pdfgen.py
N(   s   *(   s   Colors	   CMYKColors   toColor(   s   fp_str(   s
   pdfmetricss   _PDFColorSetterc           B   sV   t  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   si   Abstracts the color setting operations; used in Canvas and Textobject
    asseumes we have a _code objectc         C   s<   | | | | f |  _ |  i i d t | | | |   d S(   s   set the fill color useing negative color values
            (cyan, magenta, yellow and darkness value).
         Takes 4 arguments between 0.0 and 1.0s   %s kN(	   s   cs   ms   ys   ks   selfs   _fillColorCMYKs   _codes   appends   fp_str(   s   selfs   cs   ms   ys   k(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setFillColorCMYK   s     c         C   s<   | | | | f |  _ |  i i d t | | | |   d S(   s   set the stroke color useing negative color values
            (cyan, magenta, yellow and darkness value).
            Takes 4 arguments between 0.0 and 1.0s   %s KN(	   s   cs   ms   ys   ks   selfs   _strokeColorCMYKs   _codes   appends   fp_str(   s   selfs   cs   ms   ys   k(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setStrokeColorCMYK    s     c         C   s6   | | | f |  _ |  i i d t | | |   d S(   sw   Set the fill color using positive color description
           (Red,Green,Blue).  Takes 3 arguments between 0.0 and 1.0s   %s rgN(   s   rs   gs   bs   selfs   _fillColorRGBs   _codes   appends   fp_str(   s   selfs   rs   gs   b(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setFillColorRGB'   s     c         C   s6   | | | f |  _ |  i i d t | | |   d S(   sy   Set the stroke color using positive color description
           (Red,Green,Blue).  Takes 3 arguments between 0.0 and 1.0s   %s RGN(   s   rs   gs   bs   selfs   _strokeColorRGBs   _codes   appends   fp_str(   s   selfs   rs   gs   b(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setStrokeColorRGB-   s     c   	      C   s¸  t  | t  o | i } | | i | | i | | i | | i f \ } } } } | | | | f |  _ |  i i d t | | | |   n&t  | t  o? | i | i | i f } | |  _ |  i i d t |   n× t |  t j o t |  } | d j o' | |  _ |  i i d t |   q´| d j o* |  i | d | d | d | d  q´d t |   n: t |  t j o |  i t  |   n d t |   d	 S(
   s?   Takes a color object, allowing colors to be referred to by names   %s ks   %s rgi   i   i    i   i   s   Unknown colorN(!   s
   isinstances   aColors	   CMYKColors   densitys   ds   cyans   magentas   yellows   blacks   cs   ms   ys   ks   selfs   _fillColorCMYKs   _codes   appends   fp_strs   Colors   reds   greens   blues   rgbs   _fillColorRGBs   types	   _SeqTypess   lens   ls   setFillColorCMYKs   strs
   StringTypes   setFillColors   toColor(	   s   selfs   aColors   cs   ds   ms   ls   ys   rgbs   k(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setFillColor3   s*     	:'		*c   	      C   s¸  t  | t  o | i } | | i | | i | | i | | i f \ } } } } | | | | f |  _ |  i i d t | | | |   n&t  | t  o? | i | i | i f } | |  _ |  i i d t |   n× t |  t j o t |  } | d j o' | |  _ |  i i d t |   q´| d j o* |  i | d | d | d | d  q´d t |   n: t |  t j o |  i t  |   n d t |   d	 S(
   s?   Takes a color object, allowing colors to be referred to by names   %s Ks   %s RGi   i   i    i   i   s   Unknown colorN(!   s
   isinstances   aColors	   CMYKColors   densitys   ds   cyans   magentas   yellows   blacks   cs   ms   ys   ks   selfs   _strokeColorCMYKs   _codes   appends   fp_strs   Colors   reds   greens   blues   rgbs   _strokeColorRGBs   types	   _SeqTypess   lens   ls   setStrokeColorCMYKs   strs
   StringTypes   setStrokeColors   toColor(	   s   selfs   aColors   cs   ds   ms   ls   ys   rgbs   k(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setStrokeColorL   s*     	:'		*c         C   s0   | | | f |  _ |  i i d t |   d S(   s)   Sets the gray level; 0.0=black, 1.0=whites   %s gN(   s   grays   selfs   _fillColorRGBs   _codes   appends   fp_str(   s   selfs   gray(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setFillGraye   s     c         C   s0   | | | f |  _ |  i i d t |   d S(   s)   Sets the gray level; 0.0=black, 1.0=whites   %s GN(   s   grays   selfs   _strokeColorRGBs   _codes   appends   fp_str(   s   selfs   gray(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setStrokeGrayj   s     (   s   __name__s
   __module__s   __doc__s   setFillColorCMYKs   setStrokeColorCMYKs   setFillColorRGBs   setStrokeColorRGBs   setFillColors   setStrokeColors   setFillGrays   setStrokeGray(    (    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   _PDFColorSetter   s    							s   PDFTextObjectc           B   sř   t  Z d  Z d d d  Z 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 d   Z d   Z d   Z d   Z d   Z d   Z d d  Z d   Z d d  Z d d  Z d   Z RS(   sş  PDF logically separates text and graphics drawing; text
    operations need to be bracketed between BT (Begin text) and
    ET operators. This class ensures text operations are
    properly encapusalted. Ask the canvas for a text object
    with beginText(x, y).  Do not construct one directly.
    Do not use multiple text objects in parallel; PDF is
    not multi-threaded!

    It keeps track of x and y coordinates relative to its origin.i    c         C   s   d g |  _ | |  _ |  i i |  _ |  i i |  _ |  i i |  _ t i |  i  } t
 | d d  |  _ d |  _ |  i | |  d  S(   Ns   BTs   _dynamicFonti    i˙˙˙˙(   s   selfs   _codes   canvass   _canvass	   _fontnames	   _fontsizes   _leadings
   pdfmetricss   getFonts   fonts   getattrs   _dynamicFonts
   _curSubsets   setTextOrigins   xs   y(   s   selfs   canvass   xs   ys   font(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   __init__z   s    		c         C   s'   |  i i d  t i |  i d  Sd S(   s#   pack onto one line; used internallys   ETs    N(   s   selfs   _codes   appends   strings   join(   s   self(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   getCode   s     c         C   so   |  i i o! |  i i d t | |   n |  i i d t | |   | |  _ |  _	 | |  _
 |  _ d  S(   Ns   1 0 0 1 %s Tms   1 0 0 -1 %s Tm(   s   selfs   _canvass   bottomups   _codes   appends   fp_strs   xs   ys   _x0s   _xs   _y0s   _y(   s   selfs   xs   y(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setTextOrigin   s
    !c      	   C   sm   |  i i o | } | } n |  i i d t | | | | | |   | |  _ |  _ | |  _ |  _ d S(   s3   Like setTextOrigin, but does rotation, scaling etc.s   %s TmN(   s   selfs   _canvass   bottomups   cs   ds   _codes   appends   fp_strs   as   bs   es   fs   _x0s   _xs   _y0s   _y(   s   selfs   as   bs   cs   ds   es   f(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setTextTransform   s     )c         C   s!  |  i o |  i d d d j o§ t i |  i d  } t |  d j o |  i d =n t i | d   |  i d <t | d  } t | d  } | | 7} | | 8} |  i | 8_ |  i | 8_ n |  i i d t | |   |  i | 7_ |  i | 7_ |  i |  _ |  i |  _ d S(	   sx  Starts a new line at an offset dx,dy from the start of the
        current line. This does not move the cursor relative to the
        current position, and it changes the current offset of every
        future line drawn (i.e. if you next do a textLine() call, it
        will move the cursor to a position one line lower than the
        position specificied in this call.  i˙˙˙˙iý˙˙˙s    Tdi   iü˙˙˙iţ˙˙˙s   %s TdN(   s   selfs   _codes   strings   splits   Ls   lens   joins   floats   lastDxs   lastDys   dxs   dys   _x0s   _y0s   appends   fp_strs   _xs   _y(   s   selfs   dxs   dys   Ls   lastDxs   lastDy(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys
   moveCursorŁ   s"     "

c         C   s   |  i | d  d S(   s   Starts a new line dx away from the start of the
        current line - NOT from the current point! So if
        you call it in mid-sentence, watch out.i    N(   s   selfs
   moveCursors   dx(   s   selfs   dx(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setXPosĚ   s     c         C   s   |  i |  i f Sd S(   s:   Returns current text position relative to the last origin.N(   s   selfs   _xs   _y(   s   self(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys	   getCursorŇ   s     c         C   s   |  i |  i f Sd S(   sR   Returns a tuple giving the text position of the start of the
        current line.N(   s   selfs   _x0s   _y0(   s   self(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   getStartOfLineÖ   s     c         C   s   |  i Sd S(   s7   Returns current x position relative to the last origin.N(   s   selfs   _x(   s   self(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   getXŰ   s     c         C   s   |  i Sd S(   s7   Returns current y position relative to the last origin.N(   s   selfs   _y(   s   self(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   getYß   s     c         C   s   | |  _ | |  _ t i |  i  } t | d d  |  _	 |  i	 o d |  _
 n6 |  i i i |  } |  i i d | t |  f  d S(   s˝   Sets the font and fontSize
        Raises a readable exception if an illegal font
        is supplied.  Font names are case-sensitive! Keeps track
        of font anme and size for metrics.s   _dynamicFonti    i˙˙˙˙s   %s %s TfN(   s
   psfontnames   selfs	   _fontnames   sizes	   _fontsizes
   pdfmetricss   getFonts   fonts   getattrs   _dynamicFonts
   _curSubsets   _canvass   _docs   getInternalFontNames   pdffontnames   _codes   appends   fp_str(   s   selfs
   psfontnames   sizes   pdffontnames   font(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   _setFontă   s     		
c         C   sś   | |  _ | |  _ | t j o | d } n | |  _ t i	 |  i  } t | d d  |  _ |  i o d |  _ n? |  i i i |  } |  i i d | t |  t |  f  d S(   sé   Sets the font.  If leading not specified, defaults to 1.2 x
        font size. Raises a readable exception if an illegal font
        is supplied.  Font names are case-sensitive! Keeps track
        of font anme and size for metrics.f1.2s   _dynamicFonti    i˙˙˙˙s   %s %s Tf %s TLN(   s
   psfontnames   selfs	   _fontnames   sizes	   _fontsizes   leadings   Nones   _leadings
   pdfmetricss   getFonts   fonts   getattrs   _dynamicFonts
   _curSubsets   _canvass   _docs   getInternalFontNames   pdffontnames   _codes   appends   fp_str(   s   selfs
   psfontnames   sizes   leadings   pdffontnames   font(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setFontó   s     			
c         C   s'   | |  _ |  i i d t |   d S(   s   Adjusts inter-character spacings   %s TcN(   s	   charSpaces   selfs
   _charSpaces   _codes   appends   fp_str(   s   selfs	   charSpace(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setCharSpace  s     	c         C   s'   | |  _ |  i i d t |   d S(   s   Adjust inter-word spacing.  This can be used
        to flush-justify text - you get the width of the
        words, and add some space between them.s   %s TwN(   s	   wordSpaces   selfs
   _wordSpaces   _codes   appends   fp_str(   s   selfs	   wordSpace(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setWordSpace  s     	c         C   s+   d | |  _ |  i i d t |   d S(   s   Stretches text out horizontallyid   s   %s TzN(   s
   horizScales   selfs   _horizScales   _codes   appends   fp_str(   s   selfs
   horizScale(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setHorizScale  s     c         C   s'   | |  _ |  i i d t |   d S(   s*   How far to move down at the end of a line.s   %s TLN(   s   leadings   selfs   _leadings   _codes   appends   fp_str(   s   selfs   leading(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys
   setLeading  s     	c      	   C   sP   | d d d d d d d d f j p
 t d	  | |  _ |  i i d
 |  d S(   s5  Set the text rendering mode.

        0 = Fill text
        1 = Stroke text
        2 = Fill then stroke
        3 = Invisible
        4 = Fill text and add to clipping path
        5 = Stroke text and add to clipping path
        6 = Fill then stroke and add to clipping path
        7 = Add to clipping pathi    i   i   i   i   i   i   i   s!   mode must be in (0,1,2,3,4,5,6,7)s   %d TrN(   s   modes   AssertionErrors   selfs   _textRenderModes   _codes   append(   s   selfs   mode(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setTextRenderMode  s    
 /	c         C   s7   | |  _ |  i | |  _ |  i i d t |   d S(   s<   Move text baseline up or down to allow superscrip/subscriptss   %s TsN(   s   rises   selfs   _rises   _ys   _codes   appends   fp_str(   s   selfs   rise(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   setRise,  s     	c      
   C   sĐ  |  i } t i |  i  } g  }
 |  i o˘ x| i	 | | i  D] \ } }	 | |  i j oN | i | | i  } |
 i d | t |  i  t |  i  f  | |  _ n |
 i d | i |	   qA Wnó| i oY |
 i d | i i | i  t |  i  t |  i  f  |
 i d | i |   n| } t | t  o y | i d  } WqÚt j
 om } | i  d d !\ } } t | i  d  d | i  d | | d | !| | | !| | | d !f f    qÚXn x t i# | | g | i$  D]x \ } }	 | | j oE |
 i d | i i | i  t |  i  t |  i  f  | } n |
 i d | i |	   q÷W| | j o? |
 i d | i i |  i  t |  i  t |  i  f  n d i& |
  Sd	 S(
   s%   Generates PDF text output operator(s)s   %s %s Tf %s TLs   (%s) Tjs   utf8i   i   s   %s
%s-->%s<--%si
   s    N('   s   selfs   _canvass   canvs
   pdfmetricss   getFonts	   _fontnames   fonts   Rs   _dynamicFonts   splitStrings   texts   _docs   subsets   ts
   _curSubsets   getSubsetInternalNames   pdffontnames   appends   fp_strs	   _fontsizes   _leadings   _escapes
   _multiBytes   getInternalFontNames   fontNames   formatForPdfs   fcs
   isinstances   unicodes   decodes   UnicodeDecodeErrors   es   argss   is   js
   unicode2T1s   substitutionFontss   fs   join(   s   selfs   texts   subsets   es   fs   is   js   fcs   canvs   ts   Rs   fonts   pdffontname(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   _formatText2  s>     	
 ,"
;W ;
?c         C   s5   |  i i d |  i |  | o d p d f  d S(   s3   prints string at current point, ignores text cursors   %s%ss    T*s    N(   s   selfs   _codes   appends   _formatTexts   texts   TStar(   s   selfs   texts   TStar(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   _textOut[  s     c         C   sE   |  i |  i i | |  i |  i  |  _ |  i i |  i	 |   d S(   s9   prints string at current point, text cursor moves across.N(
   s   selfs   _xs   _canvass   stringWidths   texts	   _fontnames	   _fontsizes   _codes   appends   _formatText(   s   selfs   text(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   textOut_  s     (s    c         C   sp   |  i |  _ |  i i o |  i |  i |  _ n |  i |  i |  _ |  i |  _ |  i i	 d |  i
 |   d S(   sy   prints string at current point, text cursor moves down.
        Can work with no argument to simply move the cursor down.s   %s T*N(   s   selfs   _x0s   _xs   _canvass   bottomups   _ys   _leadings   _y0s   _codes   appends   _formatTexts   text(   s   selfs   text(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   textLined  s     i   c         C   sČ   t  |  t j oB t i t i |  d  } | d j o t t i |  } qŚ nR t  |  t	 j o
 | } n5 t  |  t
 j o
 | } n d d j p
 t d  x | D] } |  i |  q­ Wd S(   s  prints multi-line or newlined strings, moving down.  One
        comon use is to quote a multi-line block in your Python code;
        since this may be indented, by default it trims whitespace
        off each line and from the beginning; set trim=0 to preserve
        whitespace.s   
i   i    s4   argument to textlines must be string,, list or tupleN(   s   types   stuffs
   StringTypes   strings   splits   strips   liness   trims   maps   ListTypes	   TupleTypes   AssertionErrors   lines   selfs   textLine(   s   selfs   stuffs   trims   liness   line(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys	   textLinesv  s     

 c         C   s   |  i d g j Sd S(   s=   PDFTextObject is true if it has something done after the inits   BTN(   s   selfs   _code(   s   self(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   __nonzero__  s     (   s   __name__s
   __module__s   __doc__s   __init__s   getCodes   setTextOrigins   setTextTransforms
   moveCursors   setXPoss	   getCursors   getStartOfLines   getXs   getYs   _setFonts   Nones   setFonts   setCharSpaces   setWordSpaces   setHorizScales
   setLeadings   setTextRenderModes   setRises   _formatTexts   _textOuts   textOuts   textLines	   textLiness   __nonzero__(    (    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   PDFTextObjecto   s2   	 		
		)													)	(   s   __version__s   __doc__s   strings   typess   reportlab.lib.colorss   Colors	   CMYKColors   toColors   reportlab.lib.utilss   fp_strs   reportlab.pdfbases
   pdfmetricss	   TupleTypes   ListTypes	   _SeqTypess   _PDFColorSetters   PDFTextObject(   s   fp_strs   strings	   _SeqTypess   Colors   toColors   _PDFColorSetters	   CMYKColors   __version__s   __doc__s
   pdfmetricss   PDFTextObject(    (    sE   /home/packages/reportlab/reportlab_2_0/reportlab/pdfgen/textobject.pys   ?   s   		Y