
    Q?hWd                        S r SrSSKrSSKJr  SSKJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr  SSK7  SSKJrJr  SSKJrJrJr  SS	KJrJrJ r J!r!J"r"J#r#  SS
K$J%r%J&r&  SSK'J(r(J)r)J*r*J+r+  SSKJ,r,  S r-S r.S r/S r0S r1S r2 " S S\5      r3 " S S5      r4 " S S\45      r5 " S S\45      r6 " S S\5      r7 " S S\65      r8 " S S \5      r9 " S! S"\75      r:g)#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                     U S/-  nSnU H<  n[        U[        U5      5      n[        U5       H  u  pV[        X%   U5      X%'   M     M>     S/US U -   n[        U5       H  nX%S-   ==   X%   -  ss'   M     U$ )Nr      )maxlen	enumeraterange)nAXmaixs          S/var/www/html/env/lib/python3.13/site-packages/reportlab/graphics/charts/legends.py	_transMaxr4      s    	1#A	A#a&MQ<CAqtA;AD    
aeA1X	A#!$ H    c                 N    [        U 5      (       a  [        U 5      $ [        U 5      $ N)r#   r$   strss    r3   _objStrr;   "   s    Qxx{1vr5   c                 j    [        U 5      (       a  [        [        [        U 5      5      $ [	        U 5      $ r7   )r!   listmap_getStrr;   r9   s    r3   r?   r?   (   s&    QxxCN##qzr5   c                     [        U 5      (       a3  [        U  Vs/ s H  o=(       d    SR                  S5      PM     sn5      $ U =(       d    SR                  S5      $ s  snf )N 
)r!   tuplesplit)r:   r2   s     r3   	_getLinesrE   .   sH    QxxQ7QwBood+Q788Rt$$ 8s   #Ac                     [        U 5      n[        U 5      (       a%  [        U Vs/ s H  n[        U5      PM     sn5      $ [        U5      $ s  snf r7   )rE   r!   r(   r)   )r:   Tr2   s      r3   _getLineCountrH   4   s@    !AQxxA&AqCFA&''1v 's   Ac           	         / nUR                   n[        U5      (       a  [        U5       H  u  pxXGU 4   n	[        U	SU5      n
[        U	SU5      nUR	                  S5       Vs/ s H  n[        XU5      PM     nn[        U	R                  U=(       a    [        U5      =(       d    S5      nU" U5        U" U	R                  5        M     US	 U$ USU 4   n	[        U	SU5      n
[        U	SU5      nUR	                  S5       Vs/ s H  n[        XU5      PM     nnU" [        U	R                  U=(       a    [        U5      =(       d    S5      5        U$ s  snf s  snf )NfontNamefontSizerB   r   )	appendr!   r*   getattrrD   r   r(   minWidthrpad)r1   r:   rJ   rK   subColsSaSjtscfNfSr2   r/   s                 r3   
_getWidthsrY   ;   s0   
A	
BQxxQ<CA1BJx0BJx0B12?AQB'A?BKKc!f 12AqErwwK   bE H QqS\R
8,R
8,-.WWT];][#];
3r{{1<Q,1-.H @ <s   "EEc                   Z   \ rS rSrSr\" \" \SS9\" \SS9\" \" SSSS	S
5      SS9\" \	SS9\" \SS9\" \
SS9\" \SS9\" \" \" \" \5      5      \" \" \5      SSSS945      SS9\" \" \" \" \5      5      \" \" \5      SSSS945      SS9\" \SS9\" \SS9\" \" SSS5      SS9S9rSrg)SubColPropertyP   r   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)rO   rP   alignrJ   rK   leading	fillColor
underlines	overlinesdxdyvAlign N)__name__
__module____qualname____firstlineno__dividerLinesAttrMapAttrMapValuer   r   r   r   r   r   r   r   r   r   _attrMap__static_attributes__rv   r5   r3   r[   r[   P   s&   L.MNH*IJU6'(8INTij/IJ/IJ~4MN [A!(F<3E,FzR^_cRdmnrs  xB  HC  ,D  #E  Lc  d 6,t2D+EjQ]^bQclmqr  wA  GB  +C  "D  Ka  b()IJ()IJeE(8<Bab
Hr5   r[   c                   6    \ rS rSrS r\" \5      rS rS rSrg)LegendCallouta   c                 h   ^  [        U 4S j5      n[        U Vs/ s H  o2U   PM	     sn5      $ s  snf )zZreturn a tuple of values from the first function up the stack with isinstance(self,legend)c                 P   > U R                  SS 5      TL =(       a    U =(       d    S $ NselfgetLlegends    r3   <lambda>-LegendCallout._legendValues.<locals>.<lambda>d   "    !%%t"4">"D1"L"Lr5   )r"   rC   )r   argsr   r0   s   `   r3   _legendValuesLegendCallout._legendValuesb   s-    LMD)DqdD)**)s   /c                 |   ^ [        U4S j5      n[        U Vs/ s H  n[        XX4   5      PM     sn5      $ s  snf )Nc                 P   > U R                  SS 5      TL =(       a    U =(       d    S $ r   r   r   s    r3   r   3LegendCallout._selfOrLegendValues.<locals>.<lambda>i   r   r5   )r"   rC   rN   )r   r   r   r   r0   s    `   r3   _selfOrLegendValues!LegendCallout._selfOrLegendValuesh   s4    LMD9DqgdQT*D9::9s   9c                     Uu  pgg r7   rv   )r   r   gthisxycolNamecolnames           r3   __call__LegendCallout.__call__l       	Tr5   rv   N)	rw   rx   ry   rz   r   staticmethodr   r   r   rv   r5   r3   r   r   a   s    + !/M;r5   r   c                       \ rS rSrS rSrg)LegendSwatchCallouto   c                     Uu  pg r7   rv   )
r   r   r   r   r   r1   r   swatchr   r   s
             r3   r   LegendSwatchCallout.__call__p   r   r5   rv   Nrw   rx   ry   rz   r   r   rv   r5   r3   r   r   o   s    r5   r   c                       \ rS rSrS rSrg)LegendColEndCallouts   c                     g r7   rv   )r   r   r   r2   xtr   widthlWidths           r3   r   LegendColEndCallout.__call__t   s    r5   rv   Nr   rv   r5   r3   r   r   s   s    r5   r   c                      \ rS rSrSr\" Sa0 S\" \SS9_S\" \SS9_S\" \S	S9_S
\" \SS9_S\" \SS9_S\" \SSS9_S\" \SSS9_S\" \SSS9_S\" \SS9_S\" \SS9_S\" \SS9_S\" \	" SS5      SS9_S \" S!S"S9_S#\" \
S$S9_S%\" \S&S9_S'\" \S(S9_S)\" \S*S9_S+\" \S,S9_S-\" \S.S9_S/\" \" \" \5      5      S0SS9_S1\" S!S2SS9_S3\" \S45      _S5\" \S6SS79_S8\" \	" S9SS:S;S<S=S>S?5      S@SS79_SA\" \SBSS9_SC\" \SDSS9_SE\" \SFSS9_SG\" \" \S9S:S:SH9SISS9_SJ\" \SKSS9_SL\" S!SMSS9_SN\" S!SOS9_SP\" S!SQSS9_SR\" \SSS9_ST\" \SUS9_6rSV rSW rSX rSY rSZ rS[ rS\ rS] rS^ rS_ rS`rg!)bLegendw   a  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 pointr]   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'   )r^   advancedUsageautoYPaddingz%y Padding between rows if deltay=NoneyGapzAdditional gap between rowsrs   zWidth of swatch rectanglert   zHeight of swatch rectanglecolumnMaximumzMax. number of items per column	alignmentr_   r`   z*Alignment of text with respect to swatchescolorNamePairsNz4List of color/name tuples (color can also be widget)rJ   rd   rK   re   ro   ztext leadingrp   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.dividerOffsXrg   zdivider lines X offsetsdividerOffsYzdividerLines Y offsetcolEndCalloutz.a user callout(self,g, x, xt, y,width, lWidth)rQ   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                    SU l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l	        SU l
        SU l        SU l        [        R                  S	4[        R                  S
4[        R                   S4[        R"                  S4[        R$                  S4/U l        [(        S   U l        [(        S   U l        S U l        [(        S   U l        [(        S   U l        [(        S   U l        S U l        SU l        SU l        SU l        SU l        SU l         S U l!        [        RD                  U l#        SU l$        SU l%        S U l&        U RO                  5         g )Nr   r_   K      r   r   
   r   redbluegreenpinkyellowrJ   rK   rp   r   r   nw      ?r   r   )(r2   r   r   r   r   r   r   rs   rt   r   r   r   r   r   r   r   r   r   r   r   r   rJ   rK   ro   rp   r   r   r   r   r   r   r{   r   r   blackr   r   r   r   _init_subColsr   s    r3   __init__Legend.__init__   s_       		   "(U 3!'f 5!'w 7!'f 5!' 9	< 'z2&z2'4)-8)-8 	 $"LL!!r5   c                     [        [        5      =ol        SUl        S=Ul        =Ul        Ul        SUl        SUS   l        SUl        S Ul	        g )Nr'   r   r`   r_   rk   )
r   r[   rQ   rP   rs   rt   rO   rn   ru   ro   )r   rV   s     r3   r   Legend._init_subCols   sM    3NCC\&'''1	
r5   c                 >    S H  n[        X5      (       d  M  Us  $    g )N)linesbarsslicesstrands)hasattr)r   chartr0   s      r3   _getChartStyleNameLegend._getChartStyleName   s    5Au 6r5   c                 8    [        XR                  U5      S 5      $ r7   )rN   r   )r   r   s     r3   _getChartStyleLegend._getChartStyle   s    u44U;DAAr5   c           	         [        U5      (       d   U Vs/ s H  n[        US   5      PM     nnU$ [        US[        USS 5      5      n[        UR                  5       Vs/ s H  oTR                  USU-  5      PM     nnU$ s  snf s  snf )Nr'   r   obj	series %d)r   r?   rN   r+   _seriesCountgetSeriesName)r   r   ptextsr   r1   s         r3   	_getTextsLegend._getTexts   s    n%%,:;NqWQqT]NE;  N77>%PT3UVEEJ5K]K]E^_E^((;?;E^E_	 < `s   B Bc                 
   U R                   nU R                  nU R                  n[        U R	                  U5      5       VVs/ s H  u  pV[        XVX#U5      PM     nnnU(       d  SS/$ [        U Vs/ s H  n[        U5      PM     sn5      nU R                  (       aK  U R                  n	[        S[        U5      U R                  5       V
s/ s H  n
[        XXU	-    5      PM     sn
$ [        X5      $ s  snnf s  snf s  sn
f )z2Calculate the maximum width of some given strings.r   )rJ   rK   rQ   r*   r   rY   r(   r)   r   r   r+   r4   )r   r   rJ   rK   rQ   r1   r/   Mr,   r   rs              r3   _calculateMaxBoundariesLegend._calculateMaxBoundaries   s    ====,,FOPTP^P^_mPnFopFosqZh':Fopa5L#AQ#$?? ..M?DQs1vdN`N`?ab?a!Ia!mO 45?abbQ>! q $ cs   C52C;D c                 l   U R                   nU R                  nU R                  U-
  =p4U R                  nU R                  n[        U5      R                  R                  S-  nUS:X  a  SnXu-  nUS-  nU R                  n	U	(       d  [        X5      U R                  -   n	Sn
SnUnU R                  S-
  nU R                  U R                  5       H_  nX1U-
  S-  -   nU[        U5      U-  -
  nSU-  U-
  U-
  nU[        U	U5      -
  U-
  n[        UUU5      nX:X  a  SnUnU
S-  n
MX  UnUS-   nMa     XL-
  $ )N     @@r   `"?333333?r'   r   r   )rt   r   r   rK   rJ   r   faceascentr   r(   r   r   r   r   rH   min)r   rt   r   thisy
upperleftyrK   rJ   r  ro   r   columnCountcountlowylimr   y0r   leadingMovenewys                      r3   _calcHeightLegend._calcHeight	  sO   WWyy!VVb[(====x %%,,U219Uf3,B0A0A Av  1$NN4#6#67D6	3&B]4(00AB$q&,KVK005Dqd#Dz"q a 8   r5   c           
          [        XX4UUUS9$ )N)rp   r   r   )r   )r   r2   r  rs   rt   rp   r   r   s           r3   _defaultSwatchLegend._defaultSwatch(  s    Ab )"-"- 	r5   c                    U R                   n[        U5      nU(       aA  [        US[        USS 5      5      nS n[        US9nUR                  nU R                  U5      nOI[        U SS 5      n[        U5      (       a!  [        US[        USS 5      5      n[        US9n[        U5      nU R                  nU R                  nU R                  n	U R                  n
U R                  nU R                  nU R                  nU R                  nU R                  nU R                   nU R"                  nU R$                  nU R&                  nUS-  nU R(                  nU(       d  [+        UU5      U R,                  -   nU R.                  nU R1                  U5      n[3        XZ-   S-
  U
S-  -  5      nX}-   U R4                  -   nU R6                  nU(       a&  [9        U Vs/ s H  nUS   PM
     sn5      UU-  -   nO[+        US   U-   U5      nUU-  nUU/-  nU R:                  nU R<                  U R                  -
  nUS	;  a$  U R?                  5       nUS
;   a	  UUS-  -  nOUU-  nUS;  a  US;   a	  UUS-  -  nOUU-  nUn [A        5       n![C        U5      RD                  RF                  S-  n"U"S:X  a  Sn"U"U-  n"U
S-
  n#[        U SS 5      n$[        U SS 5      n%U RH                  n&U&(       a<  U RJ                  n'U RL                  n(U RN                  n)U RP                  n*U RR                  n+[U        U5       GH"  n,U(       a  Un-U,U-l+        WU,   n.O\UU,   u  n-n.[        U5      (       a	  Un-U,U-l+        [        U.5      (       a+  [        US[        USS 5      5      RY                  U,SU,-  5      n.[[        U.5      n// n0U0R\                  n1[3        U,U
S-  -  5      n2UU2   n3UUU"-
  S-  -   =n4n5U$(       a  U$" U U!UU4U-U.45        U	S:X  a  Un6UU3S   -   U-   n7OU	S:X  a  UU-   U-   n6Un7O[_        S5      e[a        U.5      (       d  U//n/[c        U.5      n8U4n9[e        U/5       GH5  u  n:n;U5n4U:S-  n<U6U3U<   -   n=U6U3U<S-      -   n>UU:U,4   n?U?Rf                  n@U?R                  nAU?R                  nB[        U?SU5      nC[        U?SU5      nD[        U?SU5      nEU?Rh                  =(       d    SU-  nFWCU:X  a	  U"WD-  U-  nGO/[C        U5      RD                  RF                  S-  nGUGS:X  a  SnGWGWD-  nGU?Rj                  nHUHS:X  a  SnIOWF* U8[        U;5      -
  -  nIWHS:X  a  WIS-  nIW@S:X  a  Sn@U=nJOW@S:X  a  Sn@U>nJOW@S :X  a  U>nJO
Sn@SU=U>-   -  nJU; H&  nKU1" [m        WJWA-   U4WB-   WI-   UKWCWDWEW@S!95        U4WF-  n4M(     [o        U9U45      n9U4WF-  n4U4[+        UFWG-
  S5      -
  S"4U4UG-   S#44 H  u  nLnM[        U?UMS 5      nNUN(       d  M  [q        WN[r        [t        45      (       d  WN4nNWN Hu  nO[v        Rv                  " UO5      nOUO=Rx                  WL-  sl<        UO=Rz                  UL-  sl=        UO=R|                  U=-  sl>        UO=R~                  U>-  sl?        U1" UO5        Mw     M     GM8     U7n6U9n4SU5-  U4-
  U-
  nPU&(       a  UU-   U-   U3S   -   W*S   -   nQUUS-  -   W+-   n9U&S-  (       a
  U,U
-  (       d  U&S-  (       a.  U,U
-  (       d$  U!R                  [        UU*S   -   U9WQU9W(W'W)S$95        U&S%-  (       aH  U,U
-  U#:X  d	  U,US-
  :X  a6  U9[+        UWP5      U-   -  n9U!R                  [        UU*S   -   U9WQU9W(W'W)S$95        U6[        U S&S5      -   nRU[        U S'S5      -   nS[        U-5      (       a8  [        U-S[        U-SS 5      5      nUR                  [        U-S(U,5      WRWSXx5      nTO[q        U-[        R                  5      (       a@  [        U5      (       a  [        UWRUS-  -   WSUS-  -   U-5      nTONU R                  WRWSXxU-UUS)9nTO9U-b4   [v        R                  " U-5      nTWRUTl        WSUTl        UUTlI        UUTlJ        OS nTWT(       a(  U!R                  WT5        U%(       a  U%" U U!UU5U,U-U.4WT5        U0 H  nUU!R                  UU5        M     U R                  (       aa  U,U
-  U#:X  d	  U,US-
  :X  aO  U	S:X  a  UnVOUU-   U-   nVUUS-  -   W+-   [+        UWP5      U-   -
  n9U R                  U U!UWVU9U3S   U3S   U-   U-   5        U,U
-  U#:X  a  U(       a  UU3S   U-   -  nOUU-   nU nGM  U[+        UWP5      -
  U-
  nGM%     U!$ s  snf !   S nT GN= f)*Nr   r   )r   r   r  r'   g      ?rL   )ner,   r   autoy)ecwg       @)r   r  swautox)r,   r  r:   r   r  r   r  r   r   r   r   r_   r`   zbad alignmentrJ   rK   rp   rk   rm   startendrc   rJ   rK   rp   
textAnchorrq   rr   r   r   strokeDashArrayr   r   r   index)rp   r   r   )Lr   r   rN   r   r   r   r)   rs   rt   r   r   r   r   r   rJ   rK   rp   r   r   rQ   r   r(   r   r   r   intr   r   sumr2   r   r  r   r   r  r  r{   r   r   r   r   r   r+   r#  r   rE   rM   
ValueErrorr!   rH   r*   rn   ro   ru   r   r  
isinstancerC   r=   copyy1y2x1x2addr   makeSwatchSampler   Colorr    r   r  deepcopyr   heightr   )Wr   r   autoCPr   r   r,   
chartTextsrs   rt   r   r   r   r   r   rJ   rK   rp   r   r   rQ   ro   r   bamaxWidthnColsxWr   r/   r   r   r  r1  r  r   r  r  r   scalloutr{   r   r   r   r   r   r1   r   r   rG   rR   rS   rT   jOffsr   r  r2   xn	lineCountydkr   kkr+  r,  rV   anchorscdxscdyrW   rX   fCfLfAvAvAdyxoffsrU   iyr0   illr  xdswatchXswatchYr  r:   r   sW                                                                                          r3   drawLegend.draw/  s	   ,,'N77>%PT3UVELe_F""A7J"4t<Ll##WW\%PT5UV#N#AWWWWNN	**&&====NN	&&&&,,3,yyG_T%6%66F^^//?Q_Q&s):;<^D---__
112122e8;E"b0F&LEhZ'H ,,%%'F]"",,]"q 
Gx %%,,U219Uf(a$y.45((,,L,,L#44,,L,,LqA	!!}*1-	T,''&C !CI$<<"<USW8XYgghijuxyjyzD$AABA}S()*AQKE BvIs?**AQuQDz:F"59_[0g%"H[( 11;;C%d+IB$Q<%qSuRy[uRT{]QqS\uuuuR
84R
84RI6ZZ/3x<x< )X-B *//66u<B1ub"HBYYu9D3)c%j"89D8|TS[T6>$FEW_"FEY&E%FBKEAveDj4QBY[jpqrGA  AYR RU1~l;QrT+<NOEB Ad+Br)"eD\::"B!#A $		!ADDBJDDDBJDDDBJDDDBJDqE "$	 PW (l AAB$q&,K2Xk)%)3LOC2c6\,.!!^=|A~WXYfWfEE$u\!_4R2$0l\ln o !N=#)=QqS#f[1$66BEE$u\!_4R2$0l\ln o '$va00Ggd6!44Gc{{GGCd,CD**73wq+A''RTXC..L))&|GBrEM'"R%-PSTA++GGBC\gt+  AAc*A!AC!AC AG!AH aXd1U2aT
1EaQ!!q';q1Q3x&Br+-B2c6\,.#f[2I$2NO""4E2r59eBiPRlS^F^_#U2Yr\)E!&LE"c&55d:i l y 2BAs   e'2ee"c                    [        SS5      n[        5       nSUl        SUl        SUl        SUl        SR                  5       nU Vs/ s H  n[        [        U5      U4PM     nnX2l	        UR                  US5        U$ s  snf )zMake sample legend.   d   r_   r   r   z&red green blue yellow pink black whiter   )r   r   r   r2   r   r   rD   rN   r   r   r-  )r   dr   itemsr1   s        r3   demoLegend.demo  s     C!8>>@278%Q'&!$a(%8 %	fh 9s   A?) r   r   r   r   r   r   r   r   r   r   r   r{   r   r   r   rs   r   rt   rp   rJ   rK   ro   r   r   rQ   r   r   r   r   r2   r   r   rv   )rw   rx   ry   rz   __doc__r|   r}   r   r   r   r   r   r   r   r    r   r
   r	   r   r~   r   r   r   r   r   r   r  r  rN  rU  r   rv   r5   r3   r   r   w   s     #
(TU#
(TU#
 n3]^#
 n3]^	#

 #82^_#
 $H3]lmn#
 $H3Zijk#
 H+HWXY#
 ()DE#
 ()EF#
 %X4UV#
 !vw!7>jk#
 &d1gh#
  /IJ#
  /IJ#
  ~NC!#
" !5MN##
$ #=7UV%#
& #82]^'#
( $F6(+;$<Cn}~)#
* t*Sbcd+#
, !-OP-#
. "),_nop/#
0 $E!Aa!Aa$:  <E  TU  V1#
2 $H3GVWX3#
4 $M8L[\]5#
6 ((=Dbqrs7#
8 $JxQ!$LSl{|}9#
: $H3JYZ[;#
< %T0`opq=#
> t)?@?#
@ %T0gvwxA#
B H+QRC#
D H+QRE#
HJ4l
B" !>bHr5   r   c                   d    \ rS rSrSS\S\R                  S\R                  SSSSS4S	 jrS
 rSr	g)TotalAnnotatori%  Totalz0.0r   r   Nr   r   c                     Xl         X l        X0l        X@l        XPl        Xl        Xl        Xl        Xl        X`l	        Xpl
        Xl        g r7   )lTextrTextrJ   rK   rp   rt   rs   dlydlxr   r   r"  )r   r\  r]  rJ   rK   rp   r   r   r"  rs   rt   r^  r_  s                r3   r   TotalAnnotator.__init__&  sC     

  "&&.r5   c                    SSK JnJn	  U R                  n
U R                  nU R
                  nU R                  nU R                  n[        U5      R                  R                  S-  nUS:X  a  SnX-  nU
S-  nXPR                  -   US-  -
  nU R                  (       a,  U(       a%  UR                  U" UUU R                  UU
USS95        U R                  (       a'  UR                  U" XF-   UU R                  UU
US	S95        U(       a_  U(       aW  XPR                  -   U-
  nUR                  U	" X0R                   S   -   UX0R                   S
   -   U-   UXU R"                  S95        g g g )Nr   )r   r   r  r  r  g?r  r  r  r'   r!  )reportlab.graphics.shapesr   r   rK   rJ   rp   r   r   r   r  r  rt   r\  r-  r]  r^  r_  r"  )r   r   r   r2   r   r   r   r   r   r   rK   rJ   rp   r   r   r  ro   ytyLs                      r3   r   TotalAnnotator.__call__6  sE   :====NN	&&&&x %%,,U219Uf3,wwYvcz!::)EE&Btzz!!#$	& '
 ::EE&"TZZ!!#"	$ %
 ;88G#BEE$q!}R((1+f(<R +$($8$8: ; ';r5   )r_  r^  rs   rt   rp   rJ   rK   r\  r]  r   r"  r   )
rw   rx   ry   rz   r%   r   r   r   r   r   rv   r5   r3   rY  rY  %  s1    $ENUWll_cQA5/ ;r5   rY  c                       \ rS rSrSr\" \" \SS9\" \SS9\" \SS9\" \SS9\" \SS9\" \	S	S9\" \
S
S9S9rS rS rSrg)
LineSwatchiT  zHbasically a Line with properties added so it can be used in a LineLegendz(x-coordinate for swatch line start pointr]   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   r1  r   r   r"  c                 p    SSK Jn  SU l        SU l        SU l        SU l        Xl        S U l        SU l        g )Nr   )r   r   r'   )	reportlab.lib.colorsr   r2   r   r   r1  r   r"  r   )r   r   s     r3   r   LineSwatch.__init__`  s7    ,
#r5   c                     [        U R                  U R                  U R                  U R                  -   U R                  5      nU R                  Ul        U R
                  Ul        U R                  Ul        U$ r7   )r   r2   r   r   r   r"  r   )r   rJ  s     r3   rN  LineSwatch.drawj  sX    tvvdjj08((!11((r5   )r1  r   r"  r   r   r2   r   N)rw   rx   ry   rz   rW  r|   r}   r   r   r   r	   r~   r   rN  r   rv   r5   r3   rg  rg  T  sg    R(RS(RSX,CDh-HI"=7MN">8QR&'<C_`Hr5   rg  c                   $    \ rS rSrSrS rS rSrg)
LineLegendiq  zA 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                 J    [         R                  U 5        SU l        SU l        g )Nr   r   )r   r   rs   rt   r   s    r3   r   LineLegend.__init__x  s     r5   c                 b    [        5       nXl        X(l        X8l        XHl        XXl        Xhl        U$ r7   )rg  r2   r   r   r1  r   r   )	r   r2   r  rs   rt   rp   r   r   rJ  s	            r3   r  LineLegend._defaultSwatch  s,    \!#r5   )rs   rt   N)rw   rx   ry   rz   rW  r   r  r   rv   r5   r3   rn  rn  q  s    r5   rn  );__version__rW  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   rb  r   r   r   r   r   r   "reportlab.graphics.widgets.markersr   r    reportlab.lib.utilsr!   r"   r#   r$   r%   r4   r;   r?   rE   rH   rY   r[   r   r   r   r   rY  rg  rn  rv   r5   r3   <module>r{     s   
 J   V V V V V $ = U U X X G C C 4
%*
Z 
" - - lV l\-;( -;^ : r5   