
    kfWd                        d Z dZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ ddlT ddlmZmZ ddlmZmZmZ dd	lmZmZm Z m!Z!m"Z"m#Z# dd
l$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddlm,Z, d Z-d Z.d Z/d Z0d Z1d Z2 G d de          Z3 G d d          Z4 G d de4          Z5 G d de4          Z6 G d de          Z7 G d de6          Z8 G d d e          Z9 G d! d"e7          Z:dS )#z3.3.0z<This will be a collection of legends to be used with charts.    N)colors)isNumberOneOfisStringisColorOrNoneisNumberOrNoneisListOfNumbersOrNone	isBooleanEitherOrNoneOrAutoOrisAutoAutoisBoxAnchor
SequenceOfisInstanceOf)*)stringWidthgetFont)WidgetTypedPropertyCollection
PropHolder)DrawingGroupStringRectLineSTATE_DEFAULTS)uSymbol2SymbolisSymbol)isSeqfind_localsisStrasNative)_baseGFontNamec                 (   | dgz  }d}|D ]M}t          |t          |                    }t          |          D ]\  }}t          ||         |          ||<   Ndg|d |         z   }t          |          D ]}||dz   xx         ||         z  cc<   |S )Nr      )maxlen	enumeraterange)nAXmaixs          a/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/graphics/charts/legends.py	_transMaxr4      s    	1#A	A  #a&&MMQ<< 	 	CAaqtA;;AaDD		
aeA1XX  	!A#!A$H    c                 \    t          |           rt          |           S t          |           S N)r#   r$   strss    r3   _objStrr;   "   s'    Qxx {{1vvr5   c                     t          |           r"t          t          t          |                     S t	          |           S r7   )r!   listmap_getStrr;   r9   s    r3   r?   r?   (   s2    Qxx CNN###qzzr5   c                     t          |           rt          d | D                       S | pd                    d          S )Nc                 <    g | ]}|pd                      d          S ) 
)split.0r2   s     r3   
<listcomp>z_getLines.<locals>.<listcomp>0   s(    777qwBood++777r5   rB   rC   )r!   tuplerD   r9   s    r3   	_getLinesrI   .   sC    Qxx %77Q777888Rt$$$r5   c                     t          |           }t          |           rt          d |D                       S t          |          S )Nc                 ,    g | ]}t          |          S  r)   rE   s     r3   rG   z!_getLineCount.<locals>.<listcomp>7   s    &&&qCFF&&&r5   )rI   r!   r(   r)   )r:   Ts     r3   _getLineCountrO   4   sC    !AQxx &&A&&&'''1vvr5   c                    g }|j         }t          |          rt          |          D ]\  }}||| f         }	t          |	d|          t          |	d|          fd|                    d          D             }
t          |	j        |
rt          |
          pd          }
 ||
            ||	j                   |d= n}|d| f         }	t          |	d|          t          |	d|          fd|                    d          D             }
 |t          |	j        |
rt          |
          pd                     |S )NfontNamefontSizec                 2    g | ]}t          |          S rL   r   rF   r2   fNfSs     r3   rG   z_getWidths.<locals>.<listcomp>C   s%    ???AQB''???r5   rC   r   c                 2    g | ]}t          |          S rL   rT   rU   s     r3   rG   z_getWidths.<locals>.<listcomp>L   s%    ;;;[B##;;;r5   )appendr!   r*   getattrrD   r(   minWidthrpad)r1   r:   rQ   rR   subColsSaSjtscr/   rV   rW   s              @@r3   
_getWidthsrd   ;   sX   
A	
BQxx /Q<< 	 	CAa1BJx00BJx00B????????ABKc!ff 122ABqEEEBrwKKKKbEEQqS\R
8,,R
8,,;;;;;QWWT]];;;
3r{1<Q,1--...Hr5   c                   D   e Zd ZdZ e eed           eed           e eddddd	          d
           eed           eed           ee	d           ee
d           e e e ee                     e ee          ddd          f          d           e e e ee                     e ee          ddd          f          d           eed           eed           e eddd          d                    ZdS )SubColPropertyr   zminimum width for this subcoldesczright padding for this subcolleftrightcentercentrenumericzalignment in subColFont name of the stringsFont size of the stringszleading for the strings	fontColoriemptyOKlohizunderline definitionszoverline definitionszx offset from default positionzy offset from default positiontopbottommiddlezvertical alignment in the row)r\   r]   alignrQ   rR   leading	fillColor
underlines	overlinesdxdyvAlignN)__name__
__module____qualname__dividerLinesAttrMapAttrMapValuer   r   r   r   r   r   r   r   r   r   _attrMaprL   r5   r3   rf   rf   P   s       Lw<.MNNN|H*IJJJUU6'(8INNTijjj</IJJJ</IJJJ,~4MNNN L[AAA!\((FF<<3E3E,F,FzzR^R^_cRdRdmnrs  xB  HC  HC  HC  ,D  #E  #E  Lc  d  d  d L66,,t2D2D+E+EjjQ]Q]^bQcQclmqr  wA  GB  GB  GB  +C  "D  "D  Ka  b  b  b\()IJJJ\()IJJJeeE(8<<Babbb
 
 
HHHr5   rf   c                   6    e Zd Zd Z ee          Zd Zd ZdS )LegendCalloutc                 `     t           fd          t          fd|D                       S )zZreturn a tuple of values from the first function up the stack with isinstance(self,legend)c                 <    |                      dd           u r| pd S NselfgetLlegends    r3   <lambda>z-LegendCallout._legendValues.<locals>.<lambda>d   $    !%%t"4"4">"D1"L r5   c                      g | ]
}|         S rL   rL   )rF   r0   r   s     r3   rG   z/LegendCallout._legendValues.<locals>.<listcomp>e   s    )))qad)))r5   r"   rH   )r   argsr   s   ` @r3   _legendValueszLegendCallout._legendValuesb   s>    LLLLMM))))D)))***r5   c                 d     t          fd          t           fd|D                       S )Nc                 <    |                      dd           u r| pd S r   r   r   s    r3   r   z3LegendCallout._selfOrLegendValues.<locals>.<lambda>i   r   r5   c                 >    g | ]}t          ||                   S rL   )r[   )rF   r0   r   r   s     r3   rG   z5LegendCallout._selfOrLegendValues.<locals>.<listcomp>j   s)    999qgd1QqT**999r5   r   )r   r   r   r   s   `` @r3   _selfOrLegendValuesz!LegendCallout._selfOrLegendValuesh   sB    LLLLMM99999D999:::r5   c                     |\  }}d S r7   rL   )r   r   gthisxycolNamecolnames           r3   __call__zLegendCallout.__call__l       	TTTr5   N)r   r   r   r   staticmethodr   r   rL   r5   r3   r   r   a   sR        + + + !L//M; ; ;    r5   r   c                       e Zd Zd ZdS )LegendSwatchCalloutc                     |\  }}	d S r7   rL   )
r   r   r   r   r   r1   r   swatchr   r   s
             r3   r   zLegendSwatchCallout.__call__p   r   r5   Nr   r   r   r   rL   r5   r3   r   r   o   s#            r5   r   c                       e Zd Zd ZdS )LegendColEndCalloutc                     d S r7   rL   )r   r   r   r2   xtr   widthlWidths           r3   r   zLegendColEndCallout.__call__t   s    r5   Nr   rL   r5   r3   r   r   s   s#            r5   r   c                      e Zd ZdZ ed_i d eed          d eed          d eed          d	 eed
          d eed          d eedd          d eedd          d eedd          d eed          d eed          d eed          d e edd          d          d ed d!          d" ee	d#          d$ eed%          d& eed'          d( ee
d)          d* ee
d+          d, eed-          d. e e ee                    d/d          d0 ed d1d          d2 eed3          d4 eed5d6          d7 e ed8dd9d:d;d<d=d>          d?d6          d@ eedAd          dB ee
dCd          dD eedEd          dF e eed8d9d9G          dHd          dI eedJd          dK ed dLd          dM ed dN          dO ed dPd          dQ eedR          dS eedT          ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd S )`Legenda%  A simple legend containing rectangular swatches and strings.

    The swatches are filled rectangles whenever the respective
    color object in 'colorNamePairs' is a subclass of Color in
    reportlab.lib.colors. Otherwise the object passed instead is
    assumed to have 'x', 'y', 'width' and 'height' attributes.
    A legend then tries to set them or catches any error. This
    lets you plug-in any widget you like as a replacement for
    the default rectangular swatches.

    Strings can be nicely aligned left or right to the swatches.
    r2   z*x-coordinate of upper-left reference pointrg   r   z*y-coordinate of upper-left reference pointdeltaxz(x-distance between neighbouring swatchesdeltayz(y-distance between neighbouring swatchesdxTextSpacez*Distance between swatch rectangle and textautoXPaddingz(x Padding between columns if deltax=Noner'   )rh   advancedUsageautoYPaddingz%y Padding between rows if deltay=NoneyGapzAdditional gap between rowsr}   zWidth of swatch rectangler~   zHeight of swatch rectanglecolumnMaximumzMax. number of items per column	alignmentri   rj   z*Alignment of text with respect to swatchescolorNamePairsNz4List of color/name tuples (color can also be widget)rQ   rn   rR   ro   ry   ztext leadingrz   zswatches filling colorstrokeColorzBorder color of the swatchesstrokeWidthz)Width of the border color of the swatchesswatchMarkerz)None, Auto() or makeMarker('Diamond') ...calloutz'a user callout(self,g,x,y,(color,text))	boxAnchorz Anchor point for the legend area
variColumnz1If true column widths may vary (default is false))r   r   r                     zGIf 1 we have dividers between the rows | 2 for extra top | 4 for bottomdividerWidthzdividerLines widthdividerColorzdividerLines colordividerDashArrayzDash array for dividerLines.dividerOffsXrq   zdivider lines X offsetsdividerOffsYzdividerLines Y offsetcolEndCalloutz.a user callout(self,g, x, xt, y,width, lWidth)r^   zsubColumn propertiesswatchCalloutz5a user swatch callout(self,g,x,y,i,(col,name),swatch)swdxz$x position adjustment for the swatchswdyz$y position adjustment for the swatchc                    d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        t          j        d	ft          j        d
ft          j        dft          j        dft          j        dfg| _        t(          d         | _        t(          d         | _        d | _        t(          d         | _        t(          d         | _        t(          d         | _        d | _        d| _        d| _        d| _        d| _        d| _         d | _!        t          j"        | _#        d| _$        d| _%        d | _&        | '                                 d S )Nr   ri   K      r   r   
   r   redbluegreenpinkyellowrQ   rR   rz   r   r   nw      ?r   r   )(r2   r   r   r   r   r   r   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   rQ   rR   ry   rz   r   r   r   r   r   r   r   r   r   blackr   r   r   r   _init_subColsr   s    r3   __init__zLegend.__init__   s_       		   "(U 3!'f 5!'w 7!'f 5!' 9	< 'z2&z2'4)-8)-8 	 $"L!!r5   c                     t          t                    x}| _        d|_        dx|_        x|_        |_        d|_        d|d         _        d|_        d |_	        d S )Nr'   r   rj   ri   ru   )
r   rf   r^   r]   r}   r~   r\   rx   r   ry   )r   rc   s     r3   r   zLegend._init_subCols   sV    3NCCCT\&'''1	


r5   c                 8    dD ]}t          ||          r|c S d S )N)linesbarsslicesstrands)hasattr)r   chartr0   s      r3   _getChartStyleNamezLegend._getChartStyleName   s1    5 	* 	*AuQ))tr5   c                 J    t          ||                     |          d           S r7   )r[   r   )r   r   s     r3   _getChartStylezLegend._getChartStyle   s"    uT44U;;DAAAr5   c           	          t          |          sd |D             }n@t          |dt          |dd                     fdt          j                  D             }|S )Nc                 8    g | ]}t          |d                    S )r'   )r?   )rF   ps     r3   rG   z$Legend._getTexts.<locals>.<listcomp>   s"    ;;;qWQqT]];;;r5   r   objc                 B    g | ]}                     |d |z            S )	series %d)getSeriesName)rF   r1   r   s     r3   rG   z$Legend._getTexts.<locals>.<listcomp>   s-    ___U((;?;;___r5   )r   r[   r+   _seriesCount)r   r   textsr   s      @r3   	_getTextszLegend._getTexts   sp    n%% 	`;;N;;;EEN77>%PT3U3UVVE____U5K]E^E^___Er5   c                 t   | j         | j        | j        fdt          |                     |                    D             sddgS t          d D                       | j        r8| j        fdt          dt                    | j                  D             S t                    S )z2Calculate the maximum width of some given strings.c           	      <    g | ]\  }}t          ||          S rL   )rd   )rF   r1   r/   rQ   rR   r^   s      r3   rG   z2Legend._calculateMaxBoundaries.<locals>.<listcomp>   s-    pppsqZ1h'::pppr5   r   c                 ,    g | ]}t          |          S rL   rM   rF   r/   s     r3   rG   z2Legend._calculateMaxBoundaries.<locals>.<listcomp>  s    ###AQ###r5   c           	      F    g | ]}t          ||z                      S rL   )r4   )rF   rMr   r,   s     r3   rG   z2Legend._calculateMaxBoundaries.<locals>.<listcomp>  s1    bbb!Ia!AmO"3 455bbbr5   )rQ   rR   r^   r*   r   r(   r   r   r+   r)   r4   )r   r   r   r   rQ   rR   r,   r^   s     @@@@@@r3   _calculateMaxBoundarieszLegend._calculateMaxBoundaries   s    ==,ppppppiPTP^P^_mPnPnFoFoppp 	a5L#####$$? 	" .MbbbbbbuQs1vvdN`?a?abbbbQq>>!r5   c                 &   | j         }| j        }| j        |z
  x}}| j        }| j        }t          |          j        j        dz  }|dk    rd}||z  }|dz  }| j        }	|	st          ||          | j
        z   }	d}
d}|}| j        dz
  }|                     | j                  D ]k}|||z
  dz  z   }|t          |          |z  z
  }d|z  |z
  |z
  }|t          |	|          z
  |z
  }t          |||          }||k    r
d}|}|
dz  }
d|}|dz   }l||z
  S )N     @@r   `"?333333?r'   r   r   )r~   r   r   rR   rQ   r   faceascentr   r(   r   r   r   r   rO   min)r   r~   r   thisy
upperleftyrR   rQ   r  ry   r   columnCountcountlowylimr   y0r   leadingMovenewys                      r3   _calcHeightzLegend._calcHeight	  s_   Wy!Vb[(
==x  %,U2199Uf(3,ABw0A Av 1$NN4#677 	  	 D6	3&B]4((00AB$q&,KVK0005Dqd##Dczz"q aD  r5   c           	      .    t          |||||||          S )N)rz   r   r   )r   )r   r2   r  r}   r~   rz   r   r   s           r3   _defaultSwatchzLegend._defaultSwatch(  s*    Aub" )"-"-   	r5   c                 4   | j         }t          |          }|rOt          |dt          |dd                     }d }t          |          }|j        }|                     |          }n_t          | dd           }t          |          r0t          |dt          |dd                     }t          |          }t          |          }| j        }| j        }| j	        }	| j
        }
| j        }| j        }| j        }| j        }| j        }| j        }| j        }| j        }| j        }|dz  }| j        }|st+          ||          | j        z   }| j        }|                     |          }t3          ||
z   dz
  |
dz  z            }||z   | j        z   }| j        }|r t9          d |D                       ||z  z   }n$t+          |d	         |z   |          }||z  }||gz  }| j        }| j        | j        z
  }|d
vr&|                                 }|dv r	||dz  z  }n||z  }|dvr|dv r	||dz  z  }n||z  }|}tA                      } tC          |          j"        j#        dz  }!|!dk    rd}!|!|z  }!|
dz
  }"t          | dd           }#t          | dd           }$| j$        }%|%r#| j%        }&| j&        }'| j'        }(| j(        })| j)        }*tU          |          D ]L}+|r|},|+|,_+        ||+         }-ni||+         \  },}-t          |          r	|},|+|,_+        t          |-          r7t          |dt          |dd                     ,                    |+d|+z            }-t[          |-          }.g }/|/j.        }0t3          |+|
dz  z            }1||1         }2|||!z
  dz  z   x}3}4|#r |#| | ||3|,|-f           |	dk    r|}5||2d	         z   |z   }6n |	dk    r||z   |z   }5|}6nt_          d          ta          |-          s|.g}.tc          |-          }7|3}8te          |.          D ]\  }9}:|4}3|9dz  };|5|2|;         z   }<|5|2|;dz            z   }=||9|+f         }>|>j3        }?|>j        }@|>j        }At          |>d|          }Bt          |>d|          }Ct          |>d|          }D|>j4        pd|z  }E|B|k    r	|!|Cz  |z  }Fn)tC          |          j"        j#        dz  }F|Fdk    rd}F|F|Cz  }F|>j5        }G|Gdk    rd}Hn!|E |7t          |:          z
  z  }H|Gdk    r|Hdz  }H|?dk    rd}?|<}In|?dk    rd }?|=}In|?d!k    r|=}In
d}?d|<|=z   z  }I|:D ]/}J |0tm          |I|@z   |3|Az   |Hz   |J|B|C|D|?"                     |3|Ez  }30to          |8|3          }8|3|Ez  }3|3t+          |E|Fz
  d          z
  d#f|3|Fz   d$ffD ]\  }K}Lt          |>|Ld           }M|Mrtq          |Mtr          tt          f          s|Mf}M|MD ]a}Ntw          j;        |N          }N|Nxj<        |Kz  c_<        |Nxj=        |Kz  c_=        |Nxj>        |<z  c_>        |Nxj?        |=z  c_?         |0|N           b|6}5|8}3d|4z  |3z
  |z
  }O|%r||z   |z   |2d	         z   |)d         z   }P||dz  z   |*z   }8|%dz  r|+|
z  s
|%dz  r7|+|
z  s2| @                    t          ||)d         z   |8|P|8|'|&|(%                     |%d&z  rZ|+|
z  |"k    s	|+|dz
  k    rH|8t+          ||O          |z   z  }8| @                    t          ||)d         z   |8|P|8|'|&|(%                     |5t          | d'd          z   }Q|t          | d(d          z   }Rt          |,          rIt          |,dt          |,dd                     }|B                    t          |,d)|+          |Q|R||          }Sntq          |,t          jD                  rKt          |          rt          ||Q|dz  z   |R|dz  z   |,          }Sn\| G                    |Q|R|||,||*          }Sn?|,;	 tw          jH        |,          }S|Q|S_        |R|S_        ||S_I        ||S_J        n#  d }SY nxY wd }S|Sr*| @                    |S           |$r |$| | ||4|+|,|-f|S           |/D ]}T| @                    |T           | jK        ro|+|
z  |"k    s	|+|dz
  k    r]|	dk    r|}Un||z   |z   }U||dz  z   |*z   t+          ||O          |z   z
  }8| K                    | | ||U|8|2d	         |2d	         |z   |z              |+|
z  |"k    r|r||2d	         |z   z  }n||z   }|}6|t+          ||O          z
  |z
  }N| S )+Nr   r   )r   r   r  r'   g      ?c                     g | ]
}|d          S )rX   rL   r   s     r3   rG   zLegend.draw.<locals>.<listcomp>U  s    11112111r5   rX   )ner,   r   autoy)ecwg       @)r   r  swautox)r,   r  r:   r   r   r   r  r   r   r   r   ri   rj   zbad alignmentrQ   rR   rz   ru   rw   startendrm   rQ   rR   rz   
textAnchorr{   r|   r   r   strokeDashArrayr   r   r   index)rz   r   r   )Lr   r   r[   r   r   r   r)   r}   r~   r   r   r   r   r   rQ   rR   rz   r   r   r^   r   r(   r   r   r   intr   r   sumr2   r   r  r   r   r  r  r   r   r   r   r   r   r+   r!  r   rI   rZ   
ValueErrorr!   rO   r*   rx   ry   r   r   r  
isinstancerH   r=   copyy1y2x1x2addr   makeSwatchSampler   Colorr    r   r  deepcopyr   heightr   )Vr   r   autoCPr   r   r,   
chartTextsr}   r~   r   r   r   r   r   rQ   rR   rz   r   r   r^   ry   r   bamaxWidthnColsxWr   r   r   r  r/  r  r   r  r  r   scalloutr   r   r   r   r   r   r1   r   r   rN   r_   r`   ra   jOffsr   r  r2   xn	lineCountydkr   kkr)  r*  rc   anchorscdxscdyrV   rW   fCfLfAvAvAdyxoffsrb   iyr0   illr  xdswatchXswatchYr  r:   r   sV                                                                                         r3   drawzLegend.draw/  sb   ,'' 	$N77>%PT3U3UVVELe___F"A77JJ"4t<<Ll## /WW\%PT5U5UVV#N##AWWN	*&==N	&&,3,y 	7G__T%66F^//??Q}_Q&s):;<<^D--_
 	(11111222e8;EE"b00F&LEhZ'H ,,,%%''F]""",,,]""q 
GGx  %,U2199Uf(a$y..455( 	-,L,L#4,L,Lq T	; T	;A 
{	!!}*1-	T,'' "&C !CI$<< {"<USW8X8XYYgghijuxyjyzzD$AABA}S()**AQKE BvIs?**A:QuQDz:::F""59_[0g%%"H[( 111;; C%d++IB$Q<< 5" 5"%qSuRy[uRT{]QqS\uuR
844R
844RI66Z/3x<x<< )X-BB **/6u<B1uub"HBYu99DD3)c%jj"89D8||TS[T6>>$FEEW__"FEEY&&EE%FBKE  ABveDj4QBY[jpqqqrrrGAAAYYR RU1~l;QrT+<NO 
" 
"EB Ad++B ")"eD\::F"B!# " "A $	!ADDBJDDDDBJDDDDBJDDDDBJDDBqEEEE
" AAB$q&,K 
o2Xk)%)3LOC2c6\,.!!^ o= o|A~ oWXYfWf oEE$u\!_4R2$0l\ln n n o o o !N o=#)=)=QqS#f[11$66BEE$u\!_4R2$0l\ln n n o o o '$va000Ggd6!444Gc{{ GGCd,C,CDD**73wq+A+A''RTUWXXC.. L)) A&|GBrEM'"R%-PSTTAA++GGBrC\gt+  A  AAAc**A!AC!AC AG!AHHAAA FaEXXd1U2aT
1EEE  a! `q';';q1Q3xx&&BBr+-B2c6\,.#f[2I2I$2NO""4E2r59eBiPRlS^F^___## )U2Yr\)EE!&LE"c&555d:s   %0``c                     t          dd          }t                      }d|_        d|_        d|_        d|_        d                                }d |D             }||_        |                    |d           |S )	zMake sample legend.   d   ri   r   r   z&red green blue yellow pink black whitec                 <    g | ]}t          t          |          |fS rL   )r[   r   )rF   r1   s     r3   rG   zLegend.demo.<locals>.<listcomp>  s'    888Q'&!$$a(888r5   r   )	r   r   r   r2   r   r   rD   r   r+  )r   dr   itemss       r3   demozLegend.demo  s     C!8>>@@88%888 %	fhr5   rL   )r   r   r   __doc__r   r   r   r   r   r   r   r   r   r    r   r
   r	   r   r   r   r   r   r   r   r   r  r  rL  rS  rL   r5   r3   r   r   w   s6         w #
 #
 #
L(TUUUU#
L(TUUUU#
 n3]^^^^#
 n3]^^^^	#

 #l82^____#
 $|H3]lmnnnn#
 $|H3Zijkkkk#
 |H+HWXYYYY#
 \()DEEEE#
 \()EFFFF#
 %X4UVVVV#
 !Lvw!7!7>jkkkk#
 &d1ghhhh#
  </IJJJJ#
  </IJJJJ#
  ,~NCCCC!#
" !L5MNNNN##
$ #l=7UVVVV%#
& #l82]^^^^'#
( $|FF66(+;+;$<$<Cn}~)#
* ,t*Sbcdddd+#
, !L-OPPP-#
. "\),_nopppp/#
0 $|EE!Aa!Aa$:$:  <E  TU  V  V  V  V1#
2 $|H3GVWXXXX3#
4 $|M8L[\]]]]5#
6 (<(=Dbqrssss7#
8 $|JJxQ!$L$L$LSl{|}}}}9#
: $|H3JYZ[[[[;#
< %T0`opqqqq=#
> ,t)?@@@@?#
@ %T0gvwxxxxA#
B |H+QRRRRC#
D |H+QRRRRE#
HJ4 4 4l    
B B B  " " " ! ! !>  b b bH    r5   r   c                   H    e Zd Zddedej        dej        dddddfdZd	 ZdS )
TotalAnnotatorTotalz0.0r   r   Nr   r   c                     || _         || _        || _        || _        || _        |
| _        |	| _        || _        || _        || _	        || _
        || _        d S r7   )lTextrTextrQ   rR   rz   r~   r}   dlydlxr   r   r   )r   rY  rZ  rQ   rR   rz   r   r   r   r}   r~   r[  r\  s                r3   r   zTotalAnnotator.__init__&  sa     

  "&&.r5   c                 b   ddl m}m}	 | j        }
| j        }| j        }| j        }| j        }t          |          j	        j
        dz  }|dk    rd}||
z  }|
dz  }|| j        z   |dz  z
  }| j        r,|r*|                     |||| j        ||
|d                     | j        r-|                     |||z   || j        ||
|d	                     |rZ|rZ|| j        z   |z
  }|                     |	|| j        d         z   ||| j        d
         z   |z   |||| j                             d S d S d S )Nr   )r   r   r   r  r  g?r  r  r  r'   r  )reportlab.graphics.shapesr   r   rR   rQ   rz   r   r   r   r  r  r~   rY  r+  rZ  r[  r\  r   )r   r   r   r2   r   r   r   r   r   r   rR   rQ   rz   r   r   r  ry   ytyLs                      r3   r   zTotalAnnotator.__call__6  s   ::::::::==N	&&x  %,U2199Uf(3,twYvcz!: 	') 	'EE&&Btz!!#$	& & & ' ' '
 : 	%EE&&E"TZ!!#"	$ $ $ % % %
  	;; 	;48G#BEE$$q!}R$(1+f(<R +$($8: : : ; ; ; ; ;	; 	; 	; 	;r5   )r   r   r   r%   r   r   r   r   rL   r5   r3   rV  rV  %  sX        $ENUWl_cQA5/ / / / ; ; ; ; ;r5   rV  c                       e Zd ZdZ e eed           eed           eed           eed           eed           eed           ee	d	          
          Z
d Zd ZdS )
LineSwatchzHbasically a Line with properties added so it can be used in a LineLegendz(x-coordinate for swatch line start pointrg   z(y-coordinate for swatch line start pointzlength of swatch linezused for line strokeWidthzcolor of swatch linezthickness of the swatchzdash array for swatch line)r2   r   r   r/  r   r   r   c                 t    ddl m} d| _        d| _        d| _        d| _        || _        d | _        d| _        d S )Nr   )r   r   r'   )	reportlab.lib.colorsr   r2   r   r   r/  r   r   r   )r   r   s     r3   r   zLineSwatch.__init__`  sN    ,,,,,,
#r5   c                     t          | j        | j        | j        | j        z   | j                  }| j        |_        | j        |_        | j        |_        |S r7   )r   r2   r   r   r   r   r   )r   rH  s     r3   rL  zLineSwatch.drawj  sH    tvdj088(!1(r5   N)r   r   r   rT  r   r   r   r   r   r	   r   r   rL  rL   r5   r3   rb  rb  T  s        RRwL(RSSSL(RSSSX,CDDDh-HIII"l=7MNNN"l>8QRRR&,'<C_```  H      r5   rb  c                       e Zd ZdZd Zd ZdS )
LineLegendzA subclass of Legend for drawing legends with lines as the
    swatches rather than rectangles. Useful for lineCharts and
    linePlots. Should be similar in all other ways the the standard
    Legend class.
    c                 V    t                               |            d| _        d| _        d S )Nr   r   )r   r   r}   r~   r   s    r3   r   zLineLegend.__init__x  s(     r5   c                 v    t                      }||_        ||_        ||_        ||_        ||_        ||_        |S r7   )rb  r2   r   r   r/  r   r   )	r   r2   r  r}   r~   rz   r   r   rH  s	            r3   r  zLineLegend._defaultSwatch  s:    \\!#r5   N)r   r   r   rT  r   r  rL   r5   r3   rg  rg  q  s<               r5   rg  );__version__rT  r&  reportlab.libr   reportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   reportlab.lib.attrmapreportlab.pdfbase.pdfmetricsr   r   reportlab.graphics.widgetbaser   r   r   r^  r   r   r   r   r   r   "reportlab.graphics.widgets.markersr   r    reportlab.lib.utilsr!   r"   r#   r$   r%   r4   r;   r?   rI   rO   rd   rf   r   r   r   r   rV  rb  rg  rL   r5   r3   <module>rr     sw  
 J             V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V $ # # # = = = = = = = = U U U U U U U U U U X X X X X X X X X X X X X X X X G G G G G G G G C C C C C C C C C C C C 4 4 4 4 4 4
 
 
    % % %    *
 
 
 
 
Z 
 
 
"           -       -   l l l l lV l l l\-; -; -; -; -;( -; -; -;^       :         r5   