Ë
    ^ãjk  ã                   óÄ  — d Z d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 ddl­ ddl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 dd
lm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-  G d„ de«      Z. G d„ de)«      Z/ G d„ de/«      Z0 G d„ de0«      Z1d„ Z2 G d„ d«      Z3 G d„ de1«      Z4 G d„ de0«      Z5d „ Z6 G d!„ d"e1«      Z7d#„ Z8d$„ Z9d%„ Z:d&„ Z;y')(z3.3.0z;This modules defines a very preliminary Line Chart example.é    )Úcolors)
ÚisNumberÚisNumberOrNoneÚisColorOrNoneÚisListOfStringsOrNoneÚ	isBooleanÚNoneOrÚisListOfNumbersOrNoneÚisStringOrNoneÚOneOfÚ
Percentage)Ú*)Úflatten)ÚTypedPropertyCollectionÚ
PropHolderÚ
tpcGetItem)ÚLineÚRectÚGroupÚDrawingÚPolygonÚPolyLine)ÚNoEntry)ÚXCategoryAxisÚ
YValueAxis)ÚLabel)ÚuSymbol2SymbolÚisSymbolÚ
makeMarker)ÚPlotArea)Ú_objStré   )ÚFillPairedDatac                   ó  — e Zd Z e eed¬«       eed¬«       eed¬«       eed¬«       e ee	«      dd¬«       ed	d
d¬«       ed	dd¬«       ee
d¬«       e e eddd«      «      dd¬«       eedd¬«       eedd¬«      ¬«      Zy	)ÚLineChartPropertieszWidth of a line.©ÚdesczColor of a line or border.zfill color of a bar.zDash array of a line.zWidget placed at data points.r"   ©r'   ÚadvancedUsageNzShader Class.zFiller Class.zName of the line.ÚlineÚ
joinedLineÚbarzWhat kind of plot this line isz2Percentage of available width to be used for a barzIf true flood fill to x axis)ÚstrokeWidthÚstrokeColorÚ	fillColorÚstrokeDashArrayÚsymbolÚshaderÚfillerÚnameÚ	lineStyleÚbarWidthÚinFill)Ú__name__Ú
__module__Ú__qualname__ÚAttrMapÚAttrMapValuer   r   r
   r	   r   r   r   r   r   Ú_attrMap© ó    úf/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/reportlab/graphics/charts/linecharts.pyr%   r%      s®   „ ÙÙ" 8Ð2DÔEÙ" =Ð7SÔTÙ  Ð5KÔLÙ&Ð'<ÐCZÔ[Ù™f XÓ.Ð5TÐcdÔeÙ˜d¨ÀqÔIÙ˜d¨ÀqÔIÙ˜NÐ1DÔEÙ ¡©¨f°\À%Ó(HÓ!IÐPpð  @Aô  BÙ Ð4hÐwxÔyÙ˜iÐ.LÐ[\Ô]ô
�Hr?   r%   c                   ó   — e Zd Zd„ Zdd„Zy)ÚAbstractLineChartc                 ó  — | j                   }|t        |«      z  }||   }|j                  }	||dz  z   }
t        |dd «      }|dk(  rPt        |dt        |dd «      «      }t        |dt        |dd «      «      }t	        ||||||	d|t        |d|	«      ¬«	      }nj| j
                  s|d	k(  rWt        |dt        |dd «      «      }t        |dt        |dd «      «      }t        ||
||z   |
|	d¬
«      }|r||_        |r
||_        nd }t        |d«      r|j                  }nt        |d«      r|j                  }nd }|rt        |||dz  z   |
|	«      }|r0|r.t        «       }|j                  |«       |j                  |«       |S |xs |S )Ng       @r5   r,   r0   r-   r   r/   )r-   r.   ÚstrokeLineCapr0   r/   r+   )r.   rD   r1   )ÚlinesÚlenr.   Úgetattrr   ÚjoinedLinesr   r-   r0   Úhasattrr1   r   r   Úadd)ÚselfÚrowNoÚxÚyÚwidthÚheightÚ	baseStyleÚstyleIdxÚstyleÚcolorÚyh2r5   Údashr-   ÚLÚSÚgs                    r@   ÚmakeSwatchSamplez"AbstractLineChart.makeSwatchSample)   s¬  € Ø—J‘Jˆ	Øœ3˜y›>Ñ)ˆØ˜(Ñ#ˆØ×!Ñ!ˆØ��r‘	‰kˆÜ˜E +¨dÓ3ˆ	Ø�eÒÜ˜5Ð"3´W¸YÐGXÐY]Ó5^Ó_ˆDÜ  ¨´w¸uÀmÐTXÓ7YÓZˆKÜ�Q�q˜˜v°+È%Ð^_Ðptô  @Gð  HMð  NYð  Z_ó  @`ô  a‰AØ×Ò ¨LÒ!8Ü˜5Ð"3´W¸YÐGXÐY]Ó5^Ó_ˆDÜ  ¨´w¸uÀmÐTXÓ7YÓZˆKÜ�Q�s˜1˜U™7 3°5ÀqÔIˆAÙ¨K˜AœMÙ¨�QÕ&àˆAä�5˜(Ô#Ø—‘‰AÜ�Y Ô)Ø× Ñ ‰AàˆAá”.  1 U¨2¡X¡:¨c°%Ó8ˆaÙ‘Ü“ˆAØ�E‰E�!ŒHØ�E‰E�!ŒHØˆHØŠv�Aˆr?   Nc                 óH   — t        t        | j                  |   d|«      «      S )zreturn series name i or defaultr4   )r!   rG   rE   )rK   ÚiÚdefaults      r@   ÚgetSeriesNamezAbstractLineChart.getSeriesNameL   s   € ä”w˜tŸz™z¨!™}¨V°GÓ<Ó=Ð=r?   ©N)r8   r9   r:   rZ   r^   r>   r?   r@   rB   rB   '   s   „ ò!ôF>r?   rB   c                   ó   — e Zd Zy)Ú	LineChartN©r8   r9   r:   r>   r?   r@   ra   ra   P   ó   „ Ør?   ra   c            
       ó   — e Zd ZdZ ed,i de“d eedd¬«      “d eedd¬«      “d	 ed
d¬«      “d ed
d¬«      “d ed
d¬«      “d eed¬«      “d eed¬«      “d ed
d¬«      “d ed
d¬«      “d ed
d¬«      “d eed¬«      “d ed
d¬«      “d ee	d d¬«      “d! ee	d"d¬«      “d# ed
d$d¬«      “ŽZ
d%„ Zd&„ Zd'„ Zd(„ Zd)„ Zd*„ Zd+„ Zy
)-ÚHorizontalLineCharta±  Line chart with multiple lines.

    A line chart is assumed to have one category and one value axis.
    Despite its generic name this particular line chart class has
    a vertical value axis and a horizontal category one. It may
    evolve into individual horizontal and vertical variants (like
    with the existing bar charts).

    Available attributes are:

        x: x-position of lower-left chart origin
        y: y-position of lower-left chart origin
        width: chart width
        height: chart height

        useAbsolute: disables auto-scaling of chart elements (?)
        lineLabelNudge: distance of data labels to data points
        lineLabels: labels associated with data values
        lineLabelFormat: format string or callback function
        groupSpacing: space between categories

        joinedLines: enables drawing of lines

        strokeColor: color of chart lines (?)
        fillColor: color for chart background (?)
        lines: style list, used cyclically for data series

        valueAxis: value axis object
        categoryAxis: category axis object
        categoryNames: category names

        data: chart data, a list of data series of equal length
    ÚBASEÚuseAbsolutez$Flag to use absolute spacing values.r"   r(   ÚlineLabelNudgez,Distance between a data point and its label.Ú
lineLabelsNz(Handle to the list of data point labels.r&   ÚlineLabelFormatz9Formatting string or function used for data point labels.ÚlineLabelArrayzHexplicit array of line label values, must match size of data if present.ÚgroupSpacingz? - Likely to disappear.rH   z.Display data points joined with lines if true.rE   zHandle of the lines.Ú	valueAxiszHandle of the value axis.ÚcategoryAxiszHandle of the category axis.ÚcategoryNameszList of category names.Údataz/Data to be plotted, list of (lists of) numbers.r7   z!Whether infilling should be done.ÚreversePlotOrderzIf true reverse plot order.Úannotationsz<list of callables, will be called with self, xscale, yscale.c                 óT  — t         j                  | «       d | _        d | _        t	        «       | _        t        «       | _        ddg| _        d| _	        t        t        «      | _        d| j                  _        t        j                  | j                  d   _        t        j                   | j                  d   _        t        j"                  | j                  d   _        d| _        d| _        t        t(        «      | _        d | _        d | _        d| _        d| _        d| _        d| _        y )N©éd   én   éx   é‚   )éF   éP   rz   éZ   )ÚNorthÚSouthÚEastÚWestr"   r   é   é
   )ra   Ú__init__r.   r/   r   rn   r   rm   rp   ro   r   r%   rE   r-   r   ÚredÚgreenÚbluerg   rl   r   ri   rj   rk   rh   rH   r7   rq   ©rK   s    r@   r‚   zHorizontalLineChart.__init__‹   sõ   € Ü×Ñ˜4Ô ð  ˆÔØˆŒô *›OˆÔÜ#›ˆŒð 'Ø%ð'ˆŒ	à<ˆÔä,Ô-@ÓAˆŒ
Ø!"ˆ�
‰
ÔÜ$*§J¡Jˆ�
‰
�1‰Ô!Ü$*§L¡Lˆ�
‰
�1‰Ô!Ü$*§K¡Kˆ�
‰
�1‰Ô!ð ˆÔØˆÔä1´%Ó8ˆŒØ#ˆÔØ"ˆÔð !ˆÔð
 ˆÔØˆŒØ !ˆÕr?   c                 óÖ   — t        dd«      }ddg}t        «       }d|_        d|_        d|_        d|_        ||_        t        d	«      |j                  _	        |j                  |«       |S )
ú Shows basic use of a line chart.éÈ   ru   ©é   é   é   é   é%   é-   é   é   ©é   r�   é   é   é&   é.   é   rŒ   r�   r�   éU   éª   ÚCircle)r   re   rM   rN   rP   rO   rp   r   rE   r1   rJ   ©rK   Údrawingrp   Úlcs       r@   ÚdemozHorizontalLineChart.demo»   sl   € ô ˜#˜sÓ#ˆð /Ø/ðˆô
 !Ó"ˆàˆŒØˆŒØˆŒ	ØˆŒØˆŒÜ$ XÓ.ˆ�‰Œà�‰�BŒàˆr?   c                 óœ  — t        | j                  «      | _        t        t	        t        t         | j                  «      «      «      | _        | j                  rd}n/| j                  }| j                  j                  d«      d   }||z  }|| _        | j                  j                  d«      x| _        }d| j                  z  |z  x| _        }t        «       }g j                   }| j                  j                  }| j                  j                  }	| j                  }
t        |
«      }t#        |
«      D ]Û  \  }}t%        |t&        «      rh|j(                  }d|cxk  r|k  r@n n=||k(  rt+        d|z  «      ‚||f}|j-                  t/        |«      t        |«      f«       nt+        d|›d|›�«      ‚g j                   }t#        |«      D ]2  \  }}|€Œ	 ||«      \  }}||z   }|} |	|«      |z
  } ||||z   f«       Œ4  ||j0                  «       ŒÝ |j0                  }|D ]  \  }}t'        ||   |«      ||<   Œ t        |«      | _        || _        y)	z…Works out where they go.

        Sets an attribute _positions which is a list of
        lists of (x, y) matching the data.
        g      ð?r   r"   ç      à?z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row N)rF   rp   Ú_seriesCountÚmaxÚlistÚmapÚ
_rowLengthrg   rl   rn   ÚscaleÚ_normFactorrm   Ú_yzeroÚ_hngsÚsetÚappendÚ	enumerateÚ
isinstancer#   ÚotherÚ
ValueErrorrJ   ÚminÚ__self__Ú_pairInFillsÚ
_positions)rK   Ú
normFactorÚ	normWidthÚ
availWidthÚyzeroÚhngsÚpairsÚPÚcscaleÚvscalerp   ÚnrL   Úrowr°   Útr*   ÚcolNoÚdatumÚgroupXÚ
groupWidthrM   rN   rP   s                           r@   ÚcalcPositionsz!HorizontalLineChart.calcPositionsÒ   s'  € ô   §	¡	›NˆÔÜœd¤3¤s¨4¯9©9Ó#5Ó6Ó7ˆŒà×Òà‰Jð ×)Ñ)ˆIØ×*Ñ*×0Ñ0°Ó3°AÑ6ˆJØ# iÑ/ˆJØ%ˆÔØ"Ÿn™n×2Ñ2°1Ó5Ð5ˆŒ�eØ $×"3Ñ"3Ñ3°jÑ@Ð@ˆŒ
�Tä“ˆØ�I‰IˆØ×"Ñ"×(Ñ(ˆØ—‘×%Ñ%ˆØ�y‰yˆÜ�‹IˆÜ" 4›ò 	‰IˆE�#Ü˜#œ~Ô.ØŸ	™	�Ø�e”:˜A•:Ø˜e’|Ü(Ð)TÐW\Ñ)\Ó]Ð]Ø˜u˜�AØ—I‘Iœs 1›v¤c¨!£f˜oÕ.å$ÒY^Ñ`eÐ%fÓgÐgØ—9‘9ˆDÜ(¨›~ò (‘��eØÑ$Ù)/°«Ñ&�F˜JØ ™�AØ�AÙ# E›]¨QÑ.�FÙ˜!˜Q˜v™X˜Õ'ð(ñ ˆd�m‰mÕð%	ð& �J‰Jˆð "ò 	6‰LˆE�5Ü% a¨¡h¨uÓ5ˆAˆeŠHð	6ä ›JˆÔØˆ�r?   c                 óö  — | j                   }| j                  |   |   }|€d}nSt        |«      t        u r|dk(  r	 | j                  |   |   }n)||z  }n#t        |d«      r	 ||«      }nt        d|z  «      ‚|ru| j                  ||f   }|j                  sy|dkD  r |j                  ||| j                  z   «       n|j                  ||| j                  z
  «       |j                  |«       |S d}|S #  d}Y Œ�xY w)z*Draw a label for a given item in the list.NÚvaluesÚ__call__z6Unknown formatter type %s, expected string or functionr   )rj   rp   ÚtypeÚstrrk   rI   r±   ri   ÚvisibleÚ	setOriginrh   ÚsetText)	rK   rL   rÂ   rM   rN   ÚlabelFmtÚ
labelValueÚ	labelTextÚlabels	            r@   Ú_innerDrawLabelz#HorizontalLineChart._innerDrawLabel	  s  € ð ×'Ñ'ˆØ—Y‘Y˜uÑ% eÑ,ˆ
àÐØ‰IÜ�(‹^œsÑ"Ø˜8Ò#ð%Ø $× 3Ñ 3°EÑ :¸5Ñ A‘Ið % zÑ1‘	Ü�X˜jÔ)Ù  Ó,‰IäÐUÐV^Ñ^Ó_Ð_áØ—O‘O U¨E NÑ3ˆEØ—=’= &à�1ŠuØ—‘  1 t×':Ñ':Ñ#:Õ;à—‘  1 t×':Ñ':Ñ#:Ô;Ø�M‰M˜)Ô$ð ˆð ˆEØˆøð)%Ø $’Iús   »C2 Ã2C8c                 óJ   — |j                  | j                  ||||«      «       y)zLDraw a label for a given item in the list.
        G must have an add methodN)rJ   rÓ   )rK   ÚGrL   rÂ   rM   rN   s         r@   Ú	drawLabelzHorizontalLineChart.drawLabel+  s!   € ð 	
�‰ˆd×"Ñ" 5¨¨q°Ó3Õ4r?   c                 óL  — t        «       }| j                  }| j                  }| j                  r|j	                  «        | j
                  }t        |«      }| j                  }|sA| j                  s5t        t        |«      «      D �cg c]  }t        |||z     dd«      r|‘Œ c}rR| j                  j                  }| j                  j                  }	|	| j                  j                  z   }
t        | d|«      }| j                   }d }t#        | j                  rt%        |«      n|«      D �]ô  \  }}||z  }||   }|j&                  }t        |d|«      }t        |d|«      }t        |dd «      }t        |dd «      }t)        |d«      r|j*                  }nt)        |d«      r|j*                  }nd }|dk(  rÃ|€E| j                  }t-        |j                  |«      }t/        |j                  |j                  z   |«      }t        |d	t1        d
«      «      }t3        |t0        «      r| j4                  |z  dz  }n|dz  }|D ]8  \  }}||k  rn|}|j7                  t9        ||z
  |d|z  ||z
  |||¬«      «       Œ: nû| j:                  s|dk(  rêt=        |«      }|st3        |t>        «      r�t        |dd «      }t3        |t>        «      r%|t=        t%        ||j@                     «      «      z   }n	g|z   
|gz   }|r|jC                  | |||«       n)j7                  tE        ||||k(  r|nd |xs d¬«      «       |r
|dk(  s||k7  r2tG        ||dd¬«      } |r|| _        |r|| _$        |j7                  | «       t)        |d«      r|jJ                  }!nt)        |d«      r|jJ                  }!nd }!|!rLt#        |«      D ]>  \  }"\  }}tM        tO        |!|"«      |||j&                  «      }#|#sŒ.|j7                  |#«       Œ@ t#        |«      D ]  \  }"\  }}| jQ                  |||"||«       Œ �Œ÷ |S c c}w )Nr7   FÚ_inFillGr/   r0   r5   r-   r,   r6   é2   g{®Gáz„?r¢   r€   )r-   r.   r/   r+   r3   çš™™™™™¹?)r/   r.   r-   r   r"   )r.   rD   ÚstrokeLineJoinr1   ))r   rj   rµ   rq   ÚreverserE   rF   r7   r´   ÚrangerG   rn   Ú_yrm   Ú_xÚ_lengthrª   r®   Úreversedr.   rI   r-   r¤   r²   r   r¯   r«   rJ   r   rH   r   r#   r°   Úfillr   r   r0   r1   r   r   rÖ   )$rK   rY   rÏ   r¼   rE   Ú
styleCountÚ_inFillrL   ÚinFillYÚinFillX0ÚinFillX1ÚinFillGr¹   ÚbyposrÀ   rR   ÚrowStyler.   r/   r7   rV   r5   r-   rM   Úbynegr6   ÚhbwrN   Ú_y0Úpointsr3   Úfpointsr*   ÚuSymbolrÂ   r1   s$                                       r@   Ú	makeLineszHorizontalLineChart.makeLines0  s  € Ü‹Gˆà×'Ñ'ˆØ�O‰OˆØ× Ò  !§)¡)¤+Ø—
‘
ˆÜ˜“Zˆ
Ø—+‘+ˆÙ�t×(Ò(Ü$)¬#¨a«&£Mö L˜5Ü" 5¨¨zÑ)9Ñ#:¸8ÀEÔJò ó Lð ×'Ñ'×*Ñ*ˆGØ—~‘~×(Ñ(ˆHØ $×"3Ñ"3×";Ñ";Ñ;ˆHÜ˜d :¨aÓ0ˆGØ—‘ˆØˆô $°4×3HÒ3H¤H¨Q¤KÈaÓPó @	6‰JˆE�3Ø˜zÑ)ˆHØ˜X‘ˆHØ"×.Ñ.ˆKÜ ¨°[ÓAˆIÜ˜X h¨wÓ7ˆFÜ˜8Ð%6¸Ó=ˆDÜ ¨°TÓ:ˆIä�x Ô/Ø&×2Ñ2‘Ü˜ Ô.Ø#×/Ñ/‘à"�ð ˜%ÒØ�=ØŸ™�AÜ §¡ U›O�EÜ §¡ Q§Y¡Y¡¨uÓ5�EÜ" 8¨J´zÀ"³~ÓF�Ü˜h¤zÔ2ØŸ*™* XÑ-¨dÑ2‘Cà" 3™,�CØò {‘D�A�qØ#$ U¢7™%°�CØ—E‘Eœ$˜q ™u S¨¨3©¨q°©uÀÐYdÐoxÔyÕzñ{ð ×!Ò! Y°Ò%<Ü  ›�ÙœZ¨¬NÔ;Ü$ X¨x¸Ó>�FÜ! #¤nÔ5Ø"(¬7´8¸A¸c¿i¹i¹LÓ3IÓ+JÑ"J™à#+¨GÐ"4°vÑ"=ÀÈ'Ð@RÑ"R˜ÙØŸ™ D¨°°yÀÕIàŸ™¤G¨G¸iÐcnÐpyÒcyÑT_ð  @Dð  Q\ò  Qcð  `cô  %dô  eÙ ¨¢¨k¸9Ò.DÜ# F°{ÐQRÐbcÔd�DÙ"Ø+6˜Ô(ÙØ/3˜Ô,Ø—E‘E˜$”Kä�x Ô*Ø"Ÿ/™/‘Ü˜ Ô)ØŸ,™,‘à�áÜ#,¨S£>ò -‘K�E™%˜1˜QÜ+¬J°w¸uÓ,EÀaÈÈ(×J^ÑJ^Ó_�FÚ˜qŸu™u V�}ð-ô
 "+¨3£ò 6‘�‘v˜˜1Ø—‘˜q %¨°°1Õ5ò6ð@	6ðD ˆùò[Ls   ÂP!c                 ó  — | j                   | j                  }}|j                  | j                  | j                  | j
                  «       |r||_        |r||_        |j                  | j                  «       |j                  d«      }|| j                  | j
                  z   kD  s|| j                  k  r| j                  }n|}|j                  | j                  || j                  «       |j                  | j                  «       | j                  «        t        «       }|j                  | j                  «       «       | j                  r*t        «       | _        |j                  | j                   «       |j                  |«       |j                  |«       t#        |dd«      }t#        |dd«      }|s|j%                  || |j&                  ¬«       |s|j%                  || |j&                  ¬«       |j                  | j)                  «       «       |r|j%                  || |j&                  ¬«       |r|j%                  || |j&                  ¬«       t#        | dd«      D ]/  }|j                   || |j                  |j                  «      «       Œ1 |S )zDraws itself.r   ÚdrawGridLastF)ÚparentÚdimrr   r>   )rm   rn   ÚsetPositionrM   rN   rP   ÚjoinAxisÚ	configurerp   r¨   rO   rÆ   r   rJ   ÚmakeBackgroundr7   rØ   rG   ÚmakeGridÚgetGridDimsrñ   )	rK   ÚvAÚcAÚxAxisCrossesAtrN   rY   ÚcAdglÚvAdglÚas	            r@   ÚdrawzHorizontalLineChart.draw‰  sÜ  € ð —‘ ×!2Ñ!2ˆBˆØ
�‰�t—v‘v˜tŸv™v t§{¡{Ô3Ù˜RˆrŒ{Ù˜RˆrŒ{Ø
�‰�T—Y‘YÔð Ÿ™ !›ˆØ˜dŸf™f t§{¡{Ñ2Ò2¸ÈÏÉÒ8OØ—‘‰AàˆAà
�‰�t—v‘v˜q $§*¡*Ô-Ø
�‰�T—Y‘YÔà×ÑÔä‹GˆØ	�‰ˆd×!Ñ!Ó#Ô$Ø�;Š;Ü!›GˆDŒMØ�E‰E�$—-‘-Ô à	�‰ˆbŒ	Ø	�‰ˆbŒ	Ü˜˜>¨%Ó0ˆÜ˜˜>¨%Ó0ˆÙ�b—k‘k !¨4°B·N±N�kÔCÙ�b—k‘k !¨4°B·N±N�kÔCØ	�‰ˆd�n‰nÓÔÙ�"—+‘+˜a t°·±�+Ô?Ù�"—+‘+˜a t°·±�+Ô?Ü˜˜m¨BÓ/ÒQˆA°·±±q¸¸b¿h¹hÀrÇxÁxÓ7PÕ1QÐQØˆr?   r>   )r8   r9   r:   Ú__doc__r;   ra   r<   r   r   r   r=   r‚   r    rÆ   rÓ   rÖ   rñ   r  r>   r?   r@   re   re   V   s]  „ ñ ñD ò 
™Ið 
Ù" 8Ð2XÐghÕið
á% hÐ5cÐrsÕtð
ñ " $Ð-WÕXð
ñ ' tÐ2mÕnð	
ñ
 & dÐ1{Õ|ð
ñ $ HÐ3MÕNð
ñ # 8Ð2bÕcð
ñ ˜TÐ(>Õ?ð
ñ ! Ð,GÕHð
ñ $ DÐ/MÕNð
ñ %Ð%:ÐAZÕ[ð
ñ ˜DÐ'XÕYð
ñ ˜iÐ.QÐ`aÕbð
ñ (¨	Ð8UÐdeÕfð
ñ # 4Ð.lÐ{|Õ}ð
€Hò$."ò`ò.5òn òD5ò
Wór&r?   re   c                 ó*   — | d    | d   | d   | d    fS )zt, z0, z1, x, y = a[:5]r"   é   r   r’   r>   )r  s    r@   Ú_fakeItemKeyr  ±  s%   € àˆq‰TˆE�!�A‘$�q˜‘t˜Q˜q™T˜EÐ"Ð"r?   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
_FakeGroupc                 ó   — g | _         y r_   ©Ú_datar†   s    r@   r‚   z_FakeGroup.__init__¶  s	   € Øˆ�
r?   c                 ó@   — |r| j                   j                  |«       y y r_   )r  r­   )rK   Úwhats     r@   rJ   z_FakeGroup.add¹  s   € Ù�—‘×"Ñ" 4Õ(ˆ4r?   c                 ó   — | j                   S r_   r
  r†   s    r@   Úvaluez_FakeGroup.value¼  s   € Ø�z‰zÐr?   c                 óD   — | j                   j                  t        ¬«       y )N)Úkey)r  Úsortr  r†   s    r@   r  z_FakeGroup.sort¿  s   € Ø�
‰
�‰œLˆÕ)r?   N)r8   r9   r:   r‚   rJ   r  r  r>   r?   r@   r  r  µ  s   „ òò)òó*r?   r  c            
       óŽ   — e Zd Z ee eed¬«       eed¬«       eed¬«       eed¬«      ¬«      ZdZdZ	dZ
d	Zd
„ Zd„ Zd„ Zd„ Zy)ÚHorizontalLineChart3Dzdx/dzr&   zdy/dzzdepth of an individual serieszz gap around series)rf   Útheta_xÚtheta_yÚzDepthÚzSpacer¢   r�   r  c                 ó&  — t         j                  | «       | j                  }| j                  }| j                  }| j
                  j                  dk(  r||z  |dz   |z  z   }n|d|z  z   }| j                  |z  | _        | j                  |z  | _
        y )NÚparallel_3dr"   r€   )re   rÆ   r£   r  r  rn   rS   r  Ú_3d_dxr  Ú_3d_dy)rK   ÚnSeriesr  r  Ú	_3d_depths        r@   rÆ   z#HorizontalLineChart3D.calcPositionsÏ  s†   € Ü×)Ñ)¨$Ô/Ø×#Ñ#ˆØ—‘ˆØ—‘ˆØ×Ñ×"Ñ" MÒ1Ø ™¨°©	°6Ñ'9Ñ9‰Ià  6¡Ñ)ˆIØ—l‘l 9Ñ,ˆŒØ—l‘l 9Ñ,ˆ�r?   c                 ó‚   — | j                   }| j                  j                  dk(  r|| j                  |z   z  |z   }|S |}|S )Nr  )r  rn   rS   r  )rK   rL   r  Úz0s       r@   Ú_calc_z0zHorizontalLineChart3D._calc_z0Û  sJ   € Ø—‘ˆØ×Ñ×"Ñ" MÒ1Ø˜Ÿ™ FÑ*Ñ+¨FÑ2ˆBð ˆ	ð ˆBØˆ	r?   c                 óJ   — ||| j                   z  z   ||| j                  z  z   fS r_   )r  r  )rK   rM   rN   Úzs       r@   Ú_zadjustzHorizontalLineChart3D._zadjustã  s'   € Ø��4—<‘<‘Ñ  1 T§\¡\¡>Ñ!1Ð1Ð1r?   c                 ó€  — | j                   }t        t        t        | j                  «      «      «      }| j
                  r|j                  «        | j                  }|rJ d«       ‚| j                  }| j                  }| j                  }| j                  }t        «       }ddlm}	 t        | dd «      }
|
s| j                   j"                  dk7  rd}
|D �]&  }| j                  |   }t        |«      }t        | j$                  «      }||z  }| j$                  |   }|j&                  }t        |dd «      }| j)                  |«      }||z   }t+        | j$                  |   d«      r| j$                  |   j,                  }n/t+        | j$                  d«      r| j$                  j,                  }nd }| j.                  r?|r=|d   \  }}t        d|«      D ]&  }||   \  }} |	||||||||||d |
d d d d	¬
«       ||}}Œ( t+        | j$                  |   d«      r| j$                  |   j0                  }n/t+        | j$                  d«      r| j$                  j0                  }nd }|rMt        |«      D ]?  }||   \  }} ||||«      \  }}t3        ||||«      }|sŒ)|j5                  d|||||f«       ŒA t        |«      D ]E  }||   \  }} ||||«      \  }}| j7                  ||||«      }|sŒ/|j5                  d|||||f«       ŒG �Œ) |j9                  «        t;        «       }|j=                  «       D ]  }|j5                  |d   «       Œ |S )NzinFill not supported for 3d yetr   )Ú_make_3d_line_infoÚ_3d_tilewidthr  r"   r0   r-   rÚ   )ÚfillColorShadedÚ	tileWidthr.   r-   r0   Úshadingr1   r€   éÿÿÿÿ)rj   r¥   rÝ   rF   rµ   rq   rÜ   r7   r  r$  r  r  r  Ú!reportlab.graphics.charts.utils3dr&  rG   rn   rS   rE   r.   r!  rI   r-   rH   r1   r   rJ   rÓ   r  r   r  ) rK   rÏ   r¼   r7   r  r$  r  r  ÚFr&  r)  rL   rÀ   r¿   rã   rR   rê   ÚrowColorrV   r   Úz1r-   Úx0Úy0rÂ   Úx1Úy1rð   r1   rW   rY   Úvs                                    r@   rñ   zHorizontalLineChart3D.makeLinesæ  s*  € Ø×'Ñ'ˆÜ””s˜4Ÿ?™?Ó+Ó,Ó-ˆØ× Ò  !§)¡)¤+Ø—‘ˆÙÐ<Ð<Ó<ˆzð —‘ˆØ—=‘=ˆØ—,‘,ˆØ—,‘,ˆÜ‹LˆÝHÜ˜D °Ó6ˆ	Ù˜T×.Ñ.×4Ñ4°mÒCÐQRÀYð ó 2	/ˆEØ—/‘/ %Ñ(ˆCÜ�C“ˆAÜ˜TŸZ™Z›ˆJØ˜zÑ)ˆHØ—z‘z (Ñ+ˆHØ×+Ñ+ˆHÜ˜8Ð%6¸Ó=ˆDØ—‘˜uÓ%ˆBØ�f‘ˆBä�t—z‘z (Ñ+¨]Ô;Ø"Ÿj™j¨Ñ2×>Ñ>‘Ü˜Ÿ™ ]Ô3Ø"Ÿj™j×4Ñ4‘à"�ð ×ÒÙØ  ™V‘F�B˜Ü!& q¨£ò (˜Ø!$ U¡™˜˜BÙ*¨A¨r°2°r¸2¸rÀ2Ø '¨Ø (¸$È)Ø,0¸dÐTXØ(+õ	-ð
 "$ R˜B™ð(ô �t—z‘z (Ñ+¨XÔ6ØŸ*™* XÑ.×5Ñ5‘Ü˜Ÿ™ XÔ.ØŸ*™*×+Ñ+‘à�áÜ" 1›Xò =�EØ  ™Z‘F�B˜Ù% b¨¨BÓ/‘F�B˜Ü+¨G°B°r¸(ÓC�FÚ˜qŸu™u a¨¨2¨b°°FÐ%;Õ<ð	=ô ˜q›ò /�Ø˜U™‘��BÙ! " R¨Ó+‘��BØ×(Ñ(¨°°r¸2Ó>�Ú�a—e‘e˜Q˜r " R¨¨1Ð-Õ.ò	/ð]2	/ðh 	
�‰ŒÜ‹GˆØ—‘“Ò(ˆA˜AŸE™E ! B¡%�LÐ(Øˆr?   N)r8   r9   r:   r;   re   r<   r   r=   r  r  r  r  rÆ   r!  r$  rñ   r>   r?   r@   r  r  Ã  sd   „ ÙÐ/Ù˜x¨gÔ6Ù˜x¨gÔ6Ù˜hÐ-LÔMÙ˜hÐ-BÔCô	
€Hð €GØ€GØ€FØ€Fò
-òò2óLr?   r  c                   ó   — e Zd Zy)ÚVerticalLineChartNrb   r>   r?   r@   r6  r6  4  rc   r?   r6  c                  óÒ  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  _
        d
|_        dj                  d«      }||j                  _        d|j                  j                  _        d|j"                  _        d|j"                  _        d|j"                  _        | j+                  |«       | S )Né�  r‰   rŠ   ©rŒ   r�   r˜   r—   é   r•   é   r”   rÙ   é}   é,  r"   ÚFilledDiamondú%2.0fúJan Feb Mar Apr May Jun Jul Augú r¿   r   é<   é   )r   re   rM   rN   rP   rO   rp   rH   r   rE   r1   rj   Úsplitrn   ro   ÚlabelsÚ	boxAnchorrm   ÚvalueMinÚvalueMaxÚ	valueSteprJ   ©rž   rp   rŸ   ÚcatNamess       r@   Úsample1rL  7  sË   € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
Ó	€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ  Ó1€B‡H�H„OØ €BÔà0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€Nr?   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚSampleHorizontalLineChartzHSample class overwriting one method to draw additional horizontal lines.c                 ó   — t        dd«      }ddg}t        «       }d|_        d|_        d|_        d|_        ||_        t        j                  |_	        t        j                  d	«      |_        |j                  |«       |S )
rˆ   r‰   ru   rŠ   r“   r�   r�   rš   r›   éÌÌÌ )r   rN  rM   rN   rP   rO   rp   r   Úwhiter.   ÚHexColorr/   rJ   r�   s       r@   r    zSampleHorizontalLineChart.demoY  sw   € ô ˜#˜sÓ#ˆð /Ø/ðˆô
 'Ó(ˆàˆŒØˆŒØˆŒ	ØˆŒØˆŒÜŸ™ˆŒÜ—‘ xÓ0ˆŒà�‰�BŒàˆr?   c           
      óV  — t        «       }|j                  t        j                  | «      «       | j                  }|j
                  }|D ]]  }|j                  |«      }|j                  t        | j                  || j                  | j                  z   || j                  ¬«      «       Œ_ |S )N)r.   )r   rJ   re   rù   rm   Ú_tickValuesr¨   r   rM   rO   r.   )rK   rY   ÚvalAxisÚvalTickPositionsrN   s        r@   rù   z(SampleHorizontalLineChart.makeBackgroundq  s�   € Ü‹Gˆà	�‰Ô!×0Ñ0°Ó6Ô7à—.‘.ˆØ"×.Ñ.Ðà!ò 	8ˆAØ—‘˜aÓ ˆAØ�E‰E”$�t—v‘v˜q $§&¡&¨¯©Ñ"3°QØ%)×%5Ñ%5ô7õ 8ð	8ð
 ˆr?   N)r8   r9   r:   r  r    rù   r>   r?   r@   rN  rN  V  s   „ ÙNòó0r?   rN  c                  ó0  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        j                  |_
        t        j                  d	«      |_        t        d
«      |j                  _        d|_        dj#                  d«      }||j$                  _        d|j$                  j(                  _        d|j,                  _        d|j,                  _        d|j,                  _        | j5                  |«       | S )Nr8  r‰   rŠ   r9  rÙ   r<  r=  r"   rP  r>  r?  r@  rA  r¿   r   rB  rC  )r   rN  rM   rN   rP   rO   rp   rH   r   rQ  r.   rR  r/   r   rE   r1   rj   rD  rn   ro   rE  rF  rm   rG  rH  rI  rJ   rJ  s       r@   Úsample1arX  €  sæ   € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
#Ó	$€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ—\‘\€B„NÜ—?‘? 8Ó,€B„LÜ  Ó1€B‡H�H„OØ €BÔà0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€Nr?   c                  ó&  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  _
        d
|_        t        j                  |_        t        j                  |_        dj#                  d«      }||j$                  _        d|j$                  j(                  _        d|j,                  _        d|j,                  _        d|j,                  _        | j5                  |«       | S )Nr8  r‰   rŠ   r9  rÙ   r<  r=  r"   ÚSmileyr?  r@  rA  r¿   r   rB  rC  )r   re   rM   rN   rP   rO   rp   rH   r   rE   r1   rj   r   Úblackr.   Ú	lightbluer/   rD  rn   ro   rE  rF  rm   rG  rH  rI  rJ   rJ  s       r@   Úsample2r]  ¡  sã   € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
Ó	€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ  Ó*€B‡H�H„OØ €BÔÜ—\‘\€B„NÜ×#Ñ#€B„Là0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€Nr?   c                  ó‚  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        d	|_        t        j                  |_        t        d
«      |j                  d   _        t        |j                  d   _        d|j                  d   _        d|j                  d   _        dj#                  d«      }||j$                  _        d|j$                  j(                  _        d|j,                  _        d|j,                  _        d|j,                  _        | j5                  |«       | S )Nr8  r‰   rŠ   r9  rÙ   r<  r=  r"   r?  rZ  r   r€   r’   r@  rA  r¿   rB  rC  )r   re   rM   rN   rP   rO   rp   rH   rj   r   r[  r.   r   rE   r1   r   r-   rD  rn   ro   rE  rF  rm   rG  rH  rI  rJ   rJ  s       r@   Úsample3r_  Â  s  € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
Ó	€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NØ €BÔÜ—\‘\€B„Nä# HÓ-€B‡H�HˆQ�KÔÜ €B‡H�HˆQ�KÔØ€B‡H�HˆQ�KÔØ€B‡H�HˆQ�KÔà0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€Nr?   c                  óÊ  — ddl m}  t        dd«      }t        «       }|j	                  |«       d|_        d}|D �cg c]  }|dz   ‘Œ	 }}|D �cg c]  }|dz
  ‘Œ	 }}|D �cg c]  }|dz   ‘Œ	 }}|D �cg c]  }|d	z
  ‘Œ	 }}t        j                  }	d}
d}d
}t        j                  }d|j                  _
        t        t        |«      t        |«      t        |«      t        |«      t        |«      «      |j                  _        t        t        |«      t        |«      t        |«      t        |«      t        |«      «      |j                  _        |j                  }d |d   _        t#        t%        |«      «      }|g|_         | ||	|
|||¬«      x|d   _        }|D ]4  }||   j+                  t-        |||   ||   ||   ||   ||   ¬«      «       Œ6 |S c c}w c c}w c c}w c c}w )Nr   )ÚCandleSticksr8  r‰   r�   rt   r�   r;  r’   r¢   rŒ   )ÚchartÚboxFillColorÚboxWidthÚ
crossWidthr-   r.   )ÚpositionÚboxMidÚcrossLoÚcrossHiÚboxLoÚboxHi)Úreportlab.graphics.widgetbasera  r   re   rJ   rN   r   Úpinkr[  rm   ÚavoidBoundSpacer²   rG  r¤   rH  rE   r.   rÝ   rF   rp   r1   ÚsetPropertiesÚdict)ra  Údrb  rg  ÚmÚhiÚlork  rj  rc  rd  re  ÚcandleStrokeWidthÚcandleStrokeColorrE   ÚIÚcandlesr\   s                     r@   ÚsampleCandleStickry  æ  sè  € Ý:Ü��SÓ€AÜÓ!€EØ‡E�Eˆ%„LØ€E„GØ!€FØÖ	�1ˆ!ˆB‹$Ð	€BÐ	ØÖ	�1ˆ!ˆB‹$Ð	€BÐ	Ø Ö!�QˆQˆq‹SÐ!€EÐ!Ø Ö!�QˆQˆq‹SÐ!€EÐ!Ü—;‘;€LØ€HØ€JØÐÜŸ™ÐØ&'€E‡O�OÔ#ä"¤3 v£;¬s°2«w´s¸2³w¼sÀ5»zÌ#ÈeË*ÓU€E‡O�OÔÜ"¤3 v£;¬s°2«w´s¸2³w¼sÀ5»zÌ#ÈeË*ÓU€E‡O�OÔØ�K‰K€EØ€Eˆ!�HÔÜŒc�&‹kÓ€AØ�€E„JÙ ,°5À|Ð^fÐs}ð  L]ð  k|ô  !}ð  }€Eˆ!�H„O�gØò  Fˆ�˜‘
×(Ñ(¬°qÀÀqÁ	ÐRTÐUVÑRWÐ`bÐcdÑ`eÐlqÐrsÑltð  |Að  BCñ  |Dô  *Eõ  Fð  FØ€Hùò' 
 ùÚ	ùÚ!ùÚ!s   »GÁGÁGÁ1G N)<Ú__version__r  Úreportlab.libr   Úreportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   Úreportlab.lib.attrmapÚreportlab.lib.utilsr   rl  r   r   r   Úreportlab.graphics.shapesr   r   r   r   r   r   Ú*reportlab.graphics.widgets.signsandsymbolsr   Úreportlab.graphics.charts.axesr   r   Ú$reportlab.graphics.charts.textlabelsr   Ú"reportlab.graphics.widgets.markersr   r   r   Úreportlab.graphics.charts.areasr    Ú!reportlab.graphics.charts.legendsr!   Úutilsr#   r%   rB   ra   re   r  r  r  r6  rL  rN  rX  r]  r_  ry  r>   r?   r@   ú<module>r‡     sÜ   ðð
 €ØI€å  ÷]÷ ]÷ ]ô $Ý 'ß YÑ Yß S× SÝ >ß DÝ 6ß SÑ SÝ 4Ý 5Ý !ô
˜*ô 
ô'>˜ô '>ôR	Ð!ô 	ôY˜)ô Yòv
#÷*ñ *ôoÐ/ô oôb	˜	ô 	òô>(Ð 3ô (òTòBòB"óHr?   