;ò
¸0sDc           @   sì  d  Z  d k Z d k l Z d k l Z l Z l Z l Z l	 Z	 l
 Z
 l Z l Z l Z l Z l Z d k Td k l Z d k l Z l Z l Z l Z l Z l Z d k l Z l Z l Z d k l Z l Z e  a! h  d	 h  d
 d <d d <d d <d d <d d <d d <d d <d d <d d <<d h  d
 d <d d <d d <d d <d d <d d <d d <d d <d d <<Z" d „  Z# d „  Z$ d d
 d „ Z% d
 d
 d  d! d" d d
 d# „ Z& d
 d
 d  d! d" d d
 d$ „ Z' h  d d" <d d" <d d" <d d% <d d% <d d% <d d& <d d& <d' d& <Z( d( e f d) „  ƒ  YZ) d* f  d+ „  ƒ  YZ* e d, d- d. d/ ƒ Z+ d0 e f d1 „  ƒ  YZ, e e e, ƒ ƒ Z- d2 e) f d3 „  ƒ  YZ. d4 e. f d5 „  ƒ  YZ/ e e e/ ƒ ƒ Z0 d S(6   s9    $Id: textlabels.py 2647 2005-07-26 13:47:51Z rgbecker $ N(   s   colors(   s   isNumbers   isNumberOrNones   OneOfs   isColorOrNones   isStrings   isTextAnchors   isBoxAnchors	   isBooleans   NoneOrs   isInstanceOfs   isNoneOrString(   s   *(   s   stringWidth(   s   Drawings   Groups   Circles   Rects   Strings   STATE_DEFAULTS(   s   _PATH_OP_ARG_COUNTs   _PATH_OP_NAMESs
   definePath(   s   Widgets
   PropHolders   xi    s   ni-   s   neiZ   s   ei‡   s   sei´   s   siá   s   swi  s   wi;  s   nwiÓÿÿÿs   yc   	      C   sà   g  } | d ƒ } g  } | } xŒ t i |  ƒ D]{ } | | ƒ } | | | | j p
 | g  j o | i | ƒ | | | } q/ | i t i | d ƒ ƒ | g } | } q/ W| g  j o | i t i | d ƒ ƒ n | Sd  S(   Ns    (   s   Ls   SWs   wss   Os   ws   strings   splits   txts   ts   lts   mWs   appends   join(	   s   txts   mWs   SWs   Ls   Os   lts   wss   ts   w(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _simpleSplit   s      "	
 c         C   s2   t  |  ƒ |  j o t  |  ƒ Sn t |  d ƒ Sd  S(   Ni   (   s   ints   ns   round(   s   n(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _pathNumTrunc&   s     i   c         C   s¸  g  } g  } g  } x›|  d f f D]‰}	 |	 d }
 | o |
 d d d g j o>| d d j o | d } | o^ xC t d t | ƒ d ƒ D]) } | | | d !\ | | d <| | <q‹ W| i
 ƒ  | i
 ƒ  n | i d d ƒ | i d ƒ n d } | o t t | ƒ } n xj | D]b } | t t i | ƒ } | d j o | i | ƒ n" | i | f t | | | !ƒ ƒ | } qWg  } g  } n | i |
 ƒ | i |	 d ƒ q# W| Sd  S(   Ns   endi    s   moveTos   moveToClosedi   i   s	   closePath(   s   Os   Ps   Rs   Gs   gs   ops   pathReverses   xranges   lens   is   reverses   inserts   appends   truncates   maps   _pathNumTruncs   os   _PATH_OP_ARG_COUNTs   _PATH_OP_NAMESs   indexs   js   tuples   extend(   s   Gs   truncates   pathReverses   js   is   os   Os   Ps   Rs   gs   op(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _processGlyph*   s@     

 '
  !

s   Times-Romaniè  s   startc         C   sò   t  o d  k } | i d d ƒ a  n d k l } | i t  | | ƒ g  }
 | d j oP t
 |  | | ƒ } t d j o | | } q« t d j o | | d } q« n x< t  i |  | | ƒ D]% }	 |
 i t |	 d | d | ƒƒ qÁ W|
 Sd  S(	   Ni   (   s   renderPMs   starts   ends   middlef2.0s   truncates   pathReverse(   s   _gss	   _renderPMs   gstates   reportlab.graphicss   renderPMs   _setFonts   fontNames   fontSizes   Ps   anchors   stringWidths   texts   textLens   text_anchors   xs   _stringPaths   ys   gs   extends   _processGlyphs   truncates   pathReverse(   s   texts   xs   ys   fontNames   fontSizes   anchors   truncates   pathReverses   textLens   gs   Ps   renderPMs	   _renderPM(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _text2PathDescriptionI   s"     	 #c         C   s>   t  t |  d | d | d | d | d | d | d | ƒƒ Sd  S(   Ns   xs   ys   fontNames   fontSizes   anchors   truncates   pathReverse(
   s
   definePaths   _text2PathDescriptions   texts   xs   ys   fontNames   fontSizes   anchors   truncates   pathReverse(   s   texts   xs   ys   fontNames   fontSizes   anchors   truncates   pathReverse(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys
   _text2Path\   s    s   ends   middles   cs   Labelc        7   B   s©  t  Z d  Z e d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d	 e e ƒ d
 e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e	 ƒ d e e	 ƒ d e e	 ƒ d e e	 ƒ d e e
 ƒ d e e d d ƒd e e d ƒ d e e d ƒ d e e d ƒ d e e d  ƒ ƒ Z d! „  Z d" „  Z d# „  Z d$ „  Z d% „  Z d& „  Z d' „  Z d( „  Z RS()   sï   A text label to attach to something else, such as a chart axis.

    This allows you to specify an offset, angle and many anchor
    properties relative to the label's origin.  It allows, for example,
    angled multiline axis labels.
    s   xs   ys   dxs   dys   angles	   boxAnchors   boxStrokeColors   boxStrokeWidths   boxFillColors	   boxTargets	   fillColors   strokeColors   strokeWidths   texts   fontNames   fontSizes   leadings   widths   maxWidths   heights
   textAnchors   visibles   descs    True if the label is to be drawns
   topPaddings   padding at top of boxs   leftPaddings   padding at left of boxs   rightPaddings   padding at right of boxs   bottomPaddings   padding at bottom of boxc      5   K   sÃ   |  i |   |  i d d d d d d d d d d d	 d d
 d d d d d d d d d d d d t d d d t d t d t d t d t d t d t d d t d d t d d d d d  d! d" ƒ d  S(#   Ns   _texts   Multi-Line
Strings	   boxAnchors   cs   anglei    s   xs   ys   dxs   dys
   topPaddings   leftPaddings   rightPaddings   bottomPaddings   boxStrokeWidthf0.5s   boxStrokeColors	   boxTargets   normals   strokeColors   boxFillColors   leadings   widths   maxWidths   heights	   fillColors   fontNames   fontSizes   strokeWidthf0.10000000000000001s
   textAnchors   starts   visiblei   (   s   selfs   _setKeywordss   kws   Nones   STATE_DEFAULTS(   s   selfs   kw(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   __init__‰   s6    


c         C   s   | |  _ d S(   sp   Set the text property.  May contain embedded newline characters.
        Called by the containing chart or axis.N(   s   texts   selfs   _text(   s   selfs   text(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   setText¨   s     c         C   s   | |  _  | |  _ d S(   s‰   Set the origin.  This would be the tick mark or bar top relative to
        which it is defined.  Called by the containing chart or axis.N(   s   xs   selfs   y(   s   selfs   xs   y(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys	   setOrigin®   s     	c         C   sœ   t  d d ƒ } | i t d d d d t i ƒƒ t ƒ  } | i d d ƒ d | _	 d | _
 d | _ d	 | _ t i | _ | i d
 ƒ | i | ƒ | Sd S(   sy   This shows a label positioned with its top right corner
        at the top centre of the drawing, and rotated 45 degrees.iÈ   id   iZ   i   s	   fillColors   nei-   i    iìÿÿÿs   Another
Multi-Line
StringN(   s   Drawings   ds   adds   Circles   colorss   greens   Labels   labs	   setOrigins	   boxAnchors   angles   dxs   dys   boxStrokeColors   setText(   s   selfs   ds   lab(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   demoµ   s     "					c         C   s²   |  i } | d d f j oŽ |  i } t | d d ƒ d d } | d oG | | d } t | ƒ d j o" | | d j o d p d	 } q” n t | d
 | } n | Sd S(   s,   hook for allowing special box anchor effectss   autoxs   autoyih  f45.0i-   iZ   i   i    iÓÿÿÿiÿÿÿÿN(	   s   selfs	   boxAnchors   bas   angles   ints   nas   das   abss   _A2BA(   s   selfs   angles   bas   nas   da(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _getBoxAnchorÊ   s     		&c         C   sk  t  i |  i d ƒ |  _ g  |  _ |  i }	 |  i } |  i } |  i	 } |  i
 |  i d „ } |  i oC g  } x- |  i D]" } t | |  i | ƒ | d d +qt W| |  _ n |  i oZ d } x< |  i D]1 }
 | |
 ƒ } |  i i | ƒ t | | ƒ } qÂ W| | | |  _ n |  i |  _ |  i p* |  i p d |  i t |  i ƒ |	 | |  _ |  i | | |  _ |  i |	 | |  _ |  i ƒ  } | d d d g j o |	 |  _  n; | d	 d
 d g j o |  i |	 |  _  n d |  i |  _  |  i  |  i |  _! | d d d g j o | |  i |  _" n5 | d d d
 g j o | |  _" n |  i d |  _" |  i" |  i |  _# d  S(   Ns   
c         C   s   t  |  | | ƒ S(   N(   s   stringWidths   texts   fNs   fS(   s   texts   fNs   fS(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   <lambda>ß   s    iÿÿÿÿi    f1.2s   ns   nes   nws   ss   sws   sef0.5s   es   w($   s   strings   splits   selfs   _texts   _liness   _lineWidthss
   topPaddings   leftPaddings   rightPaddings   bottomPaddings   fontNames   fontSizes   SWs   maxWidths   Ls   ls   _simpleSplits   widths   ws   lines	   thisWidths   appends   maxs   _widths   heights   leadings   lens   _heights   _ewidths   _eheights   _getBoxAnchors	   boxAnchors   _tops   _bottoms   _lefts   _right(   s   selfs   SWs   Ls   ls	   boxAnchors   leftPaddings   bottomPaddings   ws	   thisWidths
   topPaddings   lines   rightPadding(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   computeSize×   sL    					

  
 9c         C   s2   |  i } | d j o t |  i ƒ  } n | Sd S(   s/   This can be overridden to allow special effectss   boxautoN(   s   selfs
   textAnchors   tas   _BA2TAs   _getBoxAnchor(   s   selfs   ta(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _getTextAnchor  s
     	 c         C   sb  |  i }	 |	 p d |  _ |  i ƒ  |	 |  _ t ƒ  } | i |  i |  i |  i |  i	 ƒ | i
 |  i ƒ |  i |  i }
 |  i ƒ  } | d j o |  i } n/ | d j o |  i |  i d } n
 |  i } |  i p |  i o |  i oU | i t |  i |  i |  i |  i |  i |  i d |  i d |  i d |  i ƒƒ n |  i |  i |  i f \ } } } |  i |  i  |  i! p d | f \ } } } | oe xÃ |  i" D]S } t$ | | |
 | | | ƒ } | | _ | | _ | | _  | i | ƒ |
 | }
 qžWnb x^ |  i" D]S } t& | |
 | ƒ } | | _ | | _ | | _ | | _ | i | ƒ |
 | }
 qW| Sd  S(	   Ns    s   starts   middlef0.5s   strokeColors   strokeWidths	   fillColorf1.2('   s   selfs   _texts   computeSizes   Groups   gs	   translates   xs   dxs   ys   dys   rotates   angles   _tops   fontSizes   _getTextAnchors
   textAnchors   _lefts   _ewidths   _rights   boxFillColors   boxStrokeColors   boxStrokeWidths   adds   Rects   leftPaddings   _bottoms   bottomPaddings   _widths   _heights	   fillColors   fontNames   strokeColors   strokeWidths   leadings   _liness   lines
   _text2Paths   ss   String(   s   selfs
   textAnchors   fontNames   strokeWidths   gs   leadings   ss   fontSizes	   fillColors   _texts   ys   xs   strokeColors   line(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   draw  sV    	
		$			!,
 			
 				(   s   __name__s
   __module__s   __doc__s   AttrMaps   AttrMapValues   isNumbers   isBoxAnchors   isColorOrNones   isStrings   isNumberOrNones   isTextAnchors	   isBooleans   _attrMaps   __init__s   setTexts	   setOrigins   demos   _getBoxAnchors   computeSizes   _getTextAnchors   draw(    (    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   Labelb   sF    						+	s   LabelDecoratorc        ,   B   s"  t  Z e d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d	 e e ƒ d
 e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e ƒ d e e	 d d ƒƒ Z
 d „  Z d „  Z d „  Z RS(   Ns   xs   ys   dxs   dys   angles	   boxAnchors   boxStrokeColors   boxStrokeWidths   boxFillColors	   fillColors   strokeColors   strokeWidths   fontNames   fontSizes   leadings   widths   maxWidths   heights
   textAnchors   visibles   descs    True if the label is to be drawnc         C   sU   d |  _ d |  _ x< |  i i ƒ  D]+ } t |  | ƒ o t |  | t ƒ q" q" Wd  S(   Ns   starts   w(	   s   selfs
   textAnchors	   boxAnchors   _attrMaps   keyss   as   hasattrs   setattrs   None(   s   selfs   a(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   __init__T  s    		  c         C   sU   | i \ } } } }	 } } } } } } } }
 | i | i i |	 ƒ | i | ƒ d  S(   N(   s   ls   _callOutInfos   charts   gs   rowNos   colNos   xs   ys   widths   heights   x00s   y00s   x0s   y0s   Ls   setTexts   categoryAxiss   categoryNamess   add(   s   selfs   ls   Ls   y00s   x00s   rowNos   gs   charts   widths   colNos   y0s   ys   xs   x0s   height(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   decorateZ  s    -c         C   s}   d k  l } t ƒ  } xP |  i i ƒ  D]? \ } } | t	 j o t
 | | t	 ƒ } n t | | | ƒ q& W|  i | | ƒ d  S(   N(   s   deepcopy(   s   copys   deepcopys   Labels   Ls   selfs   __dict__s   itemss   as   vs   Nones   getattrs   ls   setattrs   decorate(   s   selfs   ls   as   vs   deepcopys   L(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   __call___  s    	  (   s   __name__s
   __module__s   AttrMaps   AttrMapValues   isNumberOrNones   isBoxAnchors   isColorOrNones   isNoneOrStrings   isTextAnchors	   isBooleans   _attrMaps   __init__s   decorates   __call__(    (    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   LabelDecorator<  s.   		s   highs   lows   bars   axiss   LabelOffsetc           B   sk   t  Z e d e e d d ƒd e e d d ƒd e e d d ƒd e e d d	 ƒƒ Z d
 „  Z d „  Z RS(   Ns   posModes   descs   Where to base +ve offsets   poss   Value for positive elementss   negModes   Where to base -ve offsets   negs   Value for negative elementsc         C   s$   d |  _ |  _ d |  _ |  _ d  S(   Ns   axisi    (   s   selfs   posModes   negModes   poss   neg(   s   self(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   __init__o  s    c   
      C   sñ   | i } | i } | i }	 | d j o |  i	 } |  i } n |  i } |  i } | o | i } n
 | i } |	 oq | o |	 i } n
 |	 i } | d j o | |	 i } qå | d j o
 | } qå | d j o | | } qå n | | Sd  S(   Ni    s   highs   lows   bar(   s   charts   _flipXYs   flipXYs   categoryAxiss   As   joinAxiss   jAs   vals   selfs   posModes   modes   poss   deltas   negModes   negs   _xs   vs   _ys   _vs   _length(
   s   selfs   charts   vals   As   _vs   vs   modes   flipXYs   deltas   jA(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys	   _getValues  s,    								
(	   s   __name__s
   __module__s   AttrMaps   AttrMapValues   isOffsetModes   isNumbers   _attrMaps   __init__s	   _getValue(    (    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   LabelOffseth  s   	s   BarChartLabelc           B   s’   t  Z d  Z e d e d e e d d ƒd e e d d ƒd e e d d ƒd	 e e d d
 ƒd e e	 d d ƒƒ Z
 d „  Z d „  Z d „  Z RS(   sF   
    An extended Label allowing for nudging, lines visibility etc
    s   BASEs   lineStrokeWidths   descs   Non-zero for a drawn lines   lineStrokeColors   Color for a drawn lines   fixedEnds   None or fixed draw ends +/-s
   fixedStarts   None or fixed draw starts +/-s   nudges   Non-zero sign dependent nudgec         C   sE   t  i |  ƒ d |  _ t |  _ d |  _ t |  _ |  _ d |  _	 d  S(   Ni    (
   s   Labels   __init__s   selfs   lineStrokeWidths   Nones   lineStrokeColors   nudges
   fixedStarts   fixedEnds   _pmv(   s   self(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   __init__  s    			c         C   s€   |  i } |  i d j  o_ h  d d <d d <d d <d d	 <d
 d
 <d	 d <d d <d d <d d <| } n | Sd  S(   Ni    s   nws   ses   ns   ss   nes   sws   ws   es   c(   s   selfs	   boxAnchors   as   _pmv(   s   selfs   a(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _getBoxAnchor¥  s    	 _c         C   sJ   |  i } |  i d j  o) h  d d <d d <d d <| } n | Sd  S(   Ni    s   starts   ends   middle(   s   selfs
   textAnchors   as   _pmv(   s   selfs   a(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   _getTextAnchorª  s    	 )(   s   __name__s
   __module__s   __doc__s   AttrMaps   Labels   AttrMapValues   isNumberOrNones   isColorOrNones   NoneOrInstanceOfLabelOffsets   isNumbers   _attrMaps   __init__s   _getBoxAnchors   _getTextAnchor(    (    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   BarChartLabel  s    			s   NA_Labelc           B   s8   t  Z d  Z e d e d e e d d ƒƒ Z d „  Z RS(   sF   
    An extended Label allowing for nudging, lines visibility etc
    s   BASEs   texts   descs   Text to be used for N/A valuesc         C   s   t  i |  ƒ d |  _ d  S(   Ns   n/a(   s   BarChartLabels   __init__s   selfs   text(   s   self(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   __init__·  s    (	   s   __name__s
   __module__s   __doc__s   AttrMaps   BarChartLabels   AttrMapValues   isNoneOrStrings   _attrMaps   __init__(    (    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   NA_Label¯  s    	(1   s   __version__s   strings   reportlab.libs   colorss   reportlab.lib.validatorss   isNumbers   isNumberOrNones   OneOfs   isColorOrNones   isStrings   isTextAnchors   isBoxAnchors	   isBooleans   NoneOrs   isInstanceOfs   isNoneOrStrings   reportlab.lib.attrmaps   reportlab.pdfbase.pdfmetricss   stringWidths   reportlab.graphics.shapess   Drawings   Groups   Circles   Rects   Strings   STATE_DEFAULTSs   _PATH_OP_ARG_COUNTs   _PATH_OP_NAMESs
   definePaths   reportlab.graphics.widgetbases   Widgets
   PropHolders   Nones   _gss   _A2BAs   _simpleSplits   _pathNumTruncs   _processGlyphs   _text2PathDescriptions
   _text2Paths   _BA2TAs   Labels   LabelDecorators   isOffsetModes   LabelOffsets   NoneOrInstanceOfLabelOffsets   BarChartLabels   NA_Labels   NoneOrInstanceOfNA_Label()   s   isOffsetModes   OneOfs   Groups   isNoneOrStrings   isColorOrNones   isBoxAnchors   Labels   colorss   _A2BAs   isNumberOrNones   Circles   BarChartLabels   Widgets   _PATH_OP_ARG_COUNTs   Strings   NA_Labels   NoneOrInstanceOfLabelOffsets
   definePaths
   _text2Paths   _text2PathDescriptions   _pathNumTruncs   NoneOrInstanceOfNA_Labels   __version__s   Rects   _BA2TAs   strings   isStrings   _processGlyphs   LabelOffsets   isNumbers   Drawings   STATE_DEFAULTSs	   isBooleans   NoneOrs   stringWidths   _simpleSplits   _PATH_OP_NAMESs
   PropHolders   isTextAnchors   isInstanceOfs   LabelDecorator(    (    sN   /home/packages/reportlab/reportlab_2_0/reportlab/graphics/charts/textlabels.pys   ?   s0   	I+º		WÚ+&