o
    fn                     @  s|   d dl mZ d dlmZmZ d dlmZ d dlZ	d dl
mZmZ d dlmZ er2d dlmZmZmZ dddZdddZdS )    )annotations)TYPE_CHECKINGcastN)FillTypeLineType)codes_from_offsets)
FillReturn
LineReturnLineReturn_Separatefilledr   	fill_typer   returnlist[mpath.Path]c           
   
   C  s`  |t jt jfv rdd t|  D }|S |t jt jfv r&dd t|  D }|S |t jkr^g }t|  D ]*\}}}|d u r;q1t||dd }t||dd }|dd t||D 7 }q1|S |t j	krg }t|  D ]<\}}}|d u rsqit
t|d D ])}||| ||d  d  }||d |d  }	|t|	t||d  g7 }q{qi|S td| d	)
Nc                 S  $   g | ]\}}|d urt ||qS NmpathPath.0pointscodes r   7lib/python3.10/site-packages/contourpy/util/mpl_util.py
<listcomp>      $ z'filled_to_mpl_paths.<locals>.<listcomp>c                 S  s(   g | ]\}}|d urt |t|qS r   )r   r   r   )r   r   offsetsr   r   r   r      s       c                 S  s   g | ]
\}}t ||qS r   r   )r   pcr   r   r   r      s    r   zConversion of FillType   to MPL Paths is not implemented)r   Z	OuterCodeChunkCombinedCodezipZOuterOffsetChunkCombinedOffsetZChunkCombinedCodeOffsetnpsplitZChunkCombinedOffsetOffsetrangelenr   r   r   RuntimeError)
r   r   pathsr   r   Zouter_offsetsr   iZoffsZptsr   r   r   filled_to_mpl_paths   s:   

 r,   linesr	   	line_typer   c                 C  s  |t jkr/trtt| } g }| D ]}|d |d ko!|d |d k}|tj||d q|S |t jt j	fv rBdd t
|  D }|S |t jkrg }t
|  D ]:\}}|d u rVqMtt|d D ](}||| ||d   }|d |d ko{|d |d k}|tj||d q^qM|S |t jkrg }| d	 D ]W}|d u rqtt|d d d	f d	 }td
g|t|gg}t
|d d
 |dd  D ]&\}	}
||	d |
 }|d |d ko|d |d k}|tj||d qq|S td| d)N)r   r   )r   r   )r   r   )r   r   )closedc                 S  r   r   r   r   r   r   r   r   5   r   z&lines_to_mpl_paths.<locals>.<listcomp>r   r   r   zConversion of LineType r!   )r   ZSeparater   r   r
   appendr   r   ZSeparateCoder"   r#   r$   r'   r(   ZChunkCombinedNanr%   ZnonzeroZisnanZconcatenater)   )r-   r.   r*   liner/   r   r   r+   Znan_offsetsser   r   r   lines_to_mpl_paths+   sH   

 
 
 " r4   )r   r   r   r   r   r   )r-   r	   r.   r   r   r   )Z
__future__r   typingr   r   Zmatplotlib.pathpathr   Znumpyr%   Z	contourpyr   r   Zcontourpy.arrayr   Zcontourpy._contourpyr   r	   r
   r,   r4   r   r   r   r   <module>   s    
