
    Q?h                     D   S SK JrJrJr  S6S jrS6S jr  S7S jr " S S5      rS	 r   S8S
 jr	S SK
Jr  \S-  rS\-  rS\-  rS rS rS rS rSrS\-
  r " S S5      rS rS9S jr\S:X  a  S SK Jr  S SKJrJr  \" SS5      r\" \SSSSS S \\S!9	  \" \S"S#SS$S S \\S!9	  \R;                  S%/S&S'S(9  \" \" / S)Q/ S*Q/ S+Q/5      5        \" \" S,S-/S.S///5      5        \" \" S0S-/S1S///5      5        \" \" S2S3/S/S4//5      5        \" \" / S)QS2S3// S5Q/5      5        gg):    )DrawingPolygonLineNc                 >    Uc  SSK Jn  U (       a  U" U SU-
  5      nU$ )Nr   )Blacker   )reportlab.lib.colorsr   )colshdshadingr   s       S/var/www/html/env/lib/python3.13/site-packages/reportlab/graphics/charts/utils3d.py
_getShadedr      s!    
{0gc!G),J    c                 >    Uc  SSK Jn  U (       a  U" U SU-
  5      nU$ )Nr   )Whiterr   )r	   r   )r
   r   lightingr   s       r   _getLitr   	   s!    
{/fS8,Jr   r   c                 N   [        US U5      n[        US US-  5      nX	X4S jn[        X45      nU(       d  U(       a  X4:w  a	  U" X"X4XVUS9  U" XXXVUS9  U R                  [        XX#X$X4XUSS95        U(       d  U(       a$  U R                  [	        XX.X=(       d    US95        g g )Ng       @c
                 V    UR                  [        XX-   X%-   X-   X5-   X4XU	SS95        g )Nr   )strokeWidthstrokeColor	fillColorstrokeLineJoin)addr   )
x1x2y1y2xoffyoffGr   r   r   s
             r   _add_3d_bar!_draw_3d_bar.<locals>._add_3d_bar   s6    	grbgbgrwrwF#	abd 	er   )r   r   )r   r   r   r   )r   r   )r   maxr   r   r   )r!   r   r   y0yhighxdepthydepthr   fillColorShadedr   r   r   fillColorShadedTopr"   usds                  r   _draw_3d_barr,      s     !48O#Id73;? [e
 b.C9FoVBCf@RSEE'2r1I]^` a 	dBR+KiZijk r   c                       \ rS rSrSS jrSrg)_YStrip(   c                 V    Xl         X l        X0l        X@l        [	        XEU5      U l        g N)r%   r   sloper   r   r)   )selfr%   r   r2   r   r)   r   s          r   __init___YStrip.__init__)   s%    
"))GLr   )r   r)   r2   r%   r   N)皙?)__name__
__module____qualname____firstlineno__r4   __static_attributes__ r   r   r.   r.   (   s    Mr   r.   c                 "    XX-   X%-   X-   X5-   X/$ r1   r<   )x0r   r%   r   r   r    s         r   _ystrip_polyr?   0   s    "'"'"'"'"88r   c                    [        Xe-
  5      nUU-  nUU-  nUS:H  =(       a    S=(       d    U* [        U5      -  n[        X!-
  5      nUS:H  =(       a    S=(       d    XC-
  U-  nUU:  =(       a    [        XU5      =(       d    U	nXX-  nXW-  nSnUc  X$4/nOXC-
  S-  X!-
  S-  -   S-  nUU-  nUU:  a  X$4/nOq[        U[        U5      -  5      S-   n[        X!-
  5      U-  n[        XC-
  5      U-  n/ nUR                  n[        SU5       H  n U" UUU -  -   UUU -  -   45        M     U R                  nUU-   n!UU-   n"U H;  u  nn#UU-   n$U#U-   n%[        [        U!U$U"U%UU5      UUUS9n&U" SXVU!U"U&45        U$n!U%n"M=     g )Nr   gP.5_g333333?         ?r   )r   r   r   )	absfloatr   intappendranger   r   r?   )'r!   r>   r   r%   r   z0z1theta_xtheta_yr   r)   	tileWidthr   r   strokeDashArrayr   zwidthr'   r(   depth_slopexr2   czy0zx0tileStrokeWidthDTndxdyaix_0y_0yx_1y_1Ps'                                          r   _make_3d_line_inforb   4   s   
 ZFG^FG^F19&?6'%-*?KbeAqDNU'ruaiEkKj7KXyA
*C
*COWIeaZ
"S(9$Y;	AAeI&&')AruaBruaBAA1QZ2bd72bd7#$   	
A
S&C
S&C!eeLc3VVD !qoO	1R3s1
 r   )pirB   rA   g     f@c                     U [         -  $ r1   _180_pi)angles    r   _2radrh   g   s    =r   c                 6    U [         -  n U S:  a	  U [         -  n U $ )Nư)_2pi)radianss    r   mod_2pirm   j   s    nGu}gogNr   c                     U [         -  $ r1   re   )os    r   _2degrp   o   s    W9r   c                 &    U S-  n U S:  a  U S-  n U $ )Nih  rj   r<   rZ   s    r   _360rs   r   s    HAwSHr   :0yE>c                   *    \ rS rSrS rS r\rS rSrg)_Segmenty   c                    X1   nXBS-
     S   nXBS-
     S   nXB   S   nXB   S   nXu:  a  XxXV4u  pVpx[        Xu-
  5      U l        [        X-
  5      U l        XPl        Xpl        X`l        Xl        Xl        X l        Xl	        g )Nr   r   )
rD   rZ   br>   r   r%   r   seriesr[   s)	r3   r{   r[   dataSr>   r%   r   r   s	            r   r4   _Segment.__init__z   s    GsVAYsVAYT!WT!W5+KB" rurur   c           	      x    SU R                   < SU R                  < SU R                  < SU R                  < S3	$ )Nz[(,z),(z)])r>   r%   r   r   )r3   s    r   __str___Segment.__str__   s!    &*ggdggdggdggFFr   c                 p   U R                   nUR                   nX4::  d   eX@R                  :  a  gUR                  U R                  :X  a-  UR                  U R                  S-
  U R                  S-   4;   a  gU R                  nU R
                  nUR                  nUR
                  nX-  Xv-  -
  n	SU	s=:  a  S:  a  g  X4-
  n
U R                  UR                  -
  nX{-  X-  -
  U	-  nX[-  Xj-  -
  U	-  nUS:  d  US:  d  US:  d  US:  a  gX<U-  -   nU R                  X-  -   n[        Us=:  a
  [        :  a3  O  O0U R                  U R                  X4nUU;  a  UR                  U5        [        Us=:  a
  [        :  a5  O  gUR                  UR                  X4nUU;  a  UR                  U5        ggg)z4try to find an intersection with _Segment o
        r   Ng:0yErt   r   )
r>   r   r{   r[   rZ   ry   r%   _ZERO_ONErF   )r3   ro   Ir>   ox0rZ   ry   oaobdetrX   rY   uourP   r^   ts                    r   	intersect_Segment.intersect   sr    WWddwwww;q33;133466!8DFF1H"55vFFFFSSSSdRTk>T>6>XWWqtt^URU]CdQTk3Q3!A#AAv1HGGacM<4<tvva!Az188A;=D=ACCAzAHHQKz r   )	rZ   ry   r[   r{   rz   r>   r   r%   r   N)	r7   r8   r9   r:   r4   r   __repr__r   r;   r<   r   r   rv   rv   y   s    *G H(r   rv   c                     U R                   U R                  U R                  U R                  U R                  U R
                  4$ r1   )r>   r   r%   r   r{   r[   rr   s    r   _segKeyr      s-    DDadd144ACC((r   c                 ,   / nUR                   n[        [        U 5      5       Hr  nX   nU(       d  M  [        U5      nUS:X  a  M#  [        SU5       H?  n[        XGU 5      nUR                  [        UR                  5      -   U:  d  M7  U" U5        MA     Mt     UR                  [        S9  / n	[        U5      n[        SUS-
  5       H8  nX'   n[        US-   U5       H  n
UR                  X*   U	5      S:X  d  M    M6     M:     U	R                  5         U	$ )a&  
data is a sequence of series
each series is a list of (x,y) coordinates
where x & y are ints or floats

find_intersections returns a sequence of 4-tuples
    i, j, x, y

where i is a data index j is an insertion position for data[i]
and x, y are coordinates of an intersection of series data[i]
with some other series. If correctly implemented we get all such
intersections. We don't count endpoint intersections and consider
parallel lines as non intersecting (even when coincident).
We ignore segments that have an estimated size less than small.
r   )keyr   )
rF   rG   lenrv   rZ   rC   ry   sortr   r   )r|   smallr}   rZ   r{   dsrW   r[   segr   js              r   find_intersectionsr      s    $ 	A	A3t9W8Ga4qA1t$CuuSZ&#   FFwF
AAA1QqS\Dqs1A{{14"A%u   FFHHr   __main__)r   )	lightgreypinki,     
      2      )r   r      r/   -   pdf.r,   )formatsoutDirfnRoot))r   rB   )r   rB   )rB   r   )rB   r   ))g:?皙?r6   r   r6   皙?r   r   r   r   )r   r   r   r6   r   r6   r   r   r   r   )r   r   r6   g?r   r   r   )r   r   r   )Nr6   )NNNr   r6   )Nr   NNNr6   )r   )reportlab.graphics.shapesr   r   r   r   r   r,   r.   r?   rb   mathrc   _pi_2rk   rf   rh   rm   rp   rs   r   r   rv   r   r   r7   r	   r   r   rU   saveprintr<   r   r   <module>r      s   < < 159<l0M M9 @AHL	,\ 
3tR

 	w5( 5(n)$L Z14CABBAqI4PBBAqI4PFFE7#^F<	
?@s  uN  O  P  Q	
z:68LM
NO	
z:6Z8PQ
RS	
uUmYw,?@
AB	
?uNkl
mn r   