a
    7Xh                     @   s  d dl mZmZmZ dAddZdBddZdCd	d
ZG dd dZdd ZdDddZ	d dl
mZ ed Zde Zde Zdd Zdd Zdd Zdd ZdZde ZG dd dZd d! ZdEd"d#Zed$krd d%l mZ d d&lmZmZ ed'd(Zeed)d*d)d+d,d,eed-	 eed.d/d)d0d,d,eed-	 ejd1gd2d
d3 eeg d4g d5g d6g eed7d8gd9d:gg eed;d8gd<d:gg eed=d>gd:d?gg eeg d4d=d>gg d@g dS )F    )DrawingPolygonLineN皙?c                 C   s*   |d u r&ddl m} | r&|| d| }|S )Nr   )Blacker   )reportlab.lib.colorsr   )colshdshadingr    r   f/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/reportlab/graphics/charts/utils3d.py
_getShaded   s    r   c                 C   s*   |d u r&ddl m} | r&|| d| }|S )Nr   )Whiterr   )r   r   )r	   r
   Zlightingr   r   r   r   _getLit	   s    r   r   c                 C   s   t |d |}t |d |d }| |	|
|fdd}t||}|s@|rt||kr^||||||||d ||||||||d | t||||||||f|	|
|dd |s|r| t|||||
|	p|d d S )Ng       @c
           
      S   s<   | t| || | || || || ||f|||	dd d S )Nr   )strokeWidthstrokeColor	fillColorstrokeLineJoin)addr   )
x1x2y1y2xoffyoffGr   r   r   r   r   r   _add_3d_bar   s    (z!_draw_3d_bar.<locals>._add_3d_bar)r   r   )r   r   r   r   )r   r   )r   maxr   r   r   )r   r   r   y0Zyhighxdepthydepthr   fillColorShadedr   r   r   ZfillColorShadedTopr   Zusdr   r   r   _draw_3d_bar   s    

r#   c                   @   s   e Zd ZdddZdS )_YStripr   c                 C   s*   || _ || _|| _|| _t|||| _d S N)r   r   sloper   r   r"   )selfr   r   r&   r   r"   r   r   r   r   __init__)   s
    z_YStrip.__init__N)r   )__name__
__module____qualname__r(   r   r   r   r   r$   (   s   r$   c                 C   s$   | || | || || || ||gS r%   r   )x0r   r   r   r   r   r   r   r   _ystrip_poly0   s    r-   c           '   	   C   s  t || }|| }|| }|dkr(dp4| t| }t|| }|dkrNdpX|| | }||krnt|	|
|pp|	}|| }|| }d}|d u r||fg}n|| d || d  d }||9 }||k r||fg}nlt|t| d }t|| | }t|| | }g }|j}td|D ]"} ||||   |||   f q| j}|| }!|| }"|D ]T\}}#|| }$|#| }%tt|!|$|"|%|||||d}&|d|||!|"|&f |$}!|%}"qXd S )Nr   gP.5_g333333?         ?r   )r   r   r   )	absfloatr   intappendranger   r   r-   )'r   r,   r   r   r   Zz0Zz1Ztheta_xZtheta_yr   r"   Z	tileWidthr   r   ZstrokeDashArrayr   Zzwidthr    r!   Zdepth_slopexr&   cZzy0Zzx0ZtileStrokeWidthDTndxdyaiZx_0Zy_0yZx_1Zy_1Pr   r   r   _make_3d_line_info4   sF     r@   )pir/   r.   g     f@c                 C   s   | t  S r%   _180_pi)Zangler   r   r   _2radg   s    rD   c                 C   s   | t  } | dk r| t 7 } | S )Nư)_2pi)radiansr   r   r   mod_2pij   s    rH   c                 C   s   | t  S r%   rB   )or   r   r   _2dego   s    rJ   c                 C   s   | d; } | dk r| d7 } | S )Nih  rE   r   r<   r   r   r   _360r   s    rL   :0yE>c                   @   s(   e Zd Zdd Zdd ZeZdd ZdS )_Segmentc           	      C   s   || }||d  d }||d  d }|| d }|| d }||k r\||||f\}}}}t || | _t || | _|| _|| _|| _|| _|| _|| _|| _	d S )Nr   r   )
r1   r<   br,   r   r   r   Zseriesr=   s)	r'   rP   r=   dataSr,   r   r   r   r   r   r   r(   z   s     z_Segment.__init__c                 C   s   d| j | j| j| jf S )Nz[(%s,%s),(%s,%s)])r,   r   r   r   )r'   r   r   r   __str__   s    z_Segment.__str__c                 C   s  | j }|j }||ksJ || jkr&dS |j| jkrP|j| jd | jd fv rPdS | j}| j}|j}|j}|| ||  }	d|	  k rdk rn ndS || }
| j|j }|| ||
  |	 }|| ||
  |	 }|dk s|dks|dk s|dkrdS |||  }| j||  }t|  k r&tk rNn n$| j| j||f}||vrN|	| t|  k rftk rn n$|j|j||f}||vr|	| dS )z4try to find an intersection with _Segment o
        r   Ng:0yErM   r   )
r,   r   rP   r=   r<   rO   r   _ZERO_ONEr3   )r'   rI   Ir,   Zox0r<   rO   ZoaobZdetr:   r;   uZour5   r>   tr   r   r   	intersect   s0    *$z_Segment.intersectN)r)   r*   r+   r(   rS   __repr__rZ   r   r   r   r   rN   y   s   rN   c                 C   s   | j | j| j| j| j| jfS r%   )r,   r   r   r   rP   r=   rK   r   r   r   _segKey   s    r\   c                 C   s   g }|j }tt| D ]\}| | }|s(qt|}|dkr:qtd|D ],}t||| }|jt|j |krD|| qDq|jtd g }	t|}td|d D ]8}|| }t|d |D ]}
|	||
 |	dkr qqq|	  |	S )aV  
    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   )
r3   r4   lenrN   r<   r0   rO   sortr\   rZ   )rQ   smallrR   r<   rP   Zdsr9   r=   segrV   jr   r   r   find_intersections   s&    
 rc   __main__)r   )	lightgreypinki,     
      2      )r   r      (   -   Zpdf.)formatsZoutDirZfnRoot))r   r/   )r   r/   )r/   r   )r/   r   ))g:?皙?r   rq   r   皙?r   r   r   r   )r   r   rq   r   r   r   rs   rr   rw   rx   )rt   rq   r   g?ru   rv   ry   )rz   rx   ry   )Nr   )Nr   )NNNr   r   )Nr   NNNr   )r   )Zreportlab.graphics.shapesr   r   r   r   r   r#   r$   r-   r@   mathrA   Z_pi_2rF   rC   rD   rH   rJ   rL   rT   rU   rN   r\   rc   r)   r   re   rf   r7   saveprintr   r   r   r   <module>   sH   

  
   
.7
&

