
    Vff[                       d dl mZ d dlmZmZ d dlZd dlmZm	Z	 d dl
mZ d dlmZmZ d dlmZmZ d dlmZmZ erd dlmZ 	 	 	 	 	 	 ddZ	 	 	 	 	 	 dd	Z	 	 	 	 	 	 dd
Z	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ 	 	 	 	 	 	 ddZ!	 	 	 	 	 	 ddZ"	 	 	 	 	 	 d dZ#	 	 	 	 	 	 	 	 d!dZ$y)"    )annotations)TYPE_CHECKINGcastN)FillTypeLineType)as_fill_typeas_line_type)check_filledcheck_lines)MOVETOoffset_dtypec                   |t         j                  k(  r| S |t         j                  k(  r+| d   | d   D cg c]  }t        j                  |       c}fS t        | d         dkD  r1t        j                  | d         }t        j                  | d         }nd }d }|t         j                  k(  r|g|gfS |t         j                  k(  r|g|d gfS t        j                  |      gfS |t         j                  k(  r&|d nt        j                  | d         }|g|g|gf}|S |t         j                  k(  rC|
d gd gd gf}|S t        j                  |      }t        j                  | d         }|g|g|gf}|S t        d|       c c}w )Nr      Invalid FillType )r   	OuterCodeOuterOffsetarroffsets_from_codeslenconcat_pointsconcat_codesChunkCombinedCodeChunkCombinedOffsetChunkCombinedCodeOffsetoffsets_from_lengthsChunkCombinedOffsetOffset outer_offsets_from_list_of_codes
ValueError)filledfill_type_tocodespointsouter_offsetsret1ret2offsetss           Z/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/contourpy/convert.py_convert_filled_from_OuterCoder(      s    x)))	--	-q	vayQeC2259QRR
6!9~""6!9-  +x1115'""	55	55=4TUUc6L6LU6STUU	99	9 &C4L4LVTUY4W9?5'M?7[	;;	;=?Cftftf=UD
  ,,U3G@@KMHwi-9D,\N;<<5 Rs   Fc                    |t         j                  k(  r,| d   D cg c]  }t        j                  |       }}| d   |fS |t         j                  k(  r| S t        | d         dkD  r1t        j                  | d         }t        j                  | d         }nd }d }|t         j                  k(  r|g|d gfS t        j                  |      gfS |t         j                  k(  r|g|gfS |t         j                  k(  rC|
d gd gd gf}|S t        j                  |      }t        j                  | d         }|g|g|gf}|S |t         j                  k(  r.|
d gd gd gf}|S t        j                  | d         }|g|g|gf}|S t        d|       c c}w )Nr   r   r   )r   r   r   codes_from_offsetsr   r   r   concat_offsetsr   r   r   r   r   "outer_offsets_from_list_of_offsetsr   )	r   r    r&   separate_codesr"   r$   r!   r#   r%   s	            r'    _convert_filled_from_OuterOffsetr.   5   s    x)))IOPQSg#009SSq	>**	--	-
6!9~""6!9-$$VAY/x1117?4XYY8N8Nw8WXYY	55	57)$$	99	9?=AFTFTF;SD
  **73E44VAY?MHug7D	;;	;>?Cftftf=UD   BB6!9MMHwi-9D,\N;<<A Ts   Fc                    |t         j                  k(  r| S |t         j                  k(  r1| d   D cg c]  }|d nt        j                  |       c}}| d   |fS t        dt         j                   d| d      c c}w )Nr   r   Conversion from  to  not supported)r   r   r   r   r   r   )r   r    r!   s      r'   &_convert_filled_from_ChunkCombinedCoder3   ]   s     x111	55	5W]^_W`aeC,B,B5,IIaq	5!!x99:$|nN[] 	] bs    A:c                J   |t         j                  k(  r\g }t        |  D ]H  \  }}||j                  d        t        r|J |j                  t        j                  ||             J | d   |fS |t         j                  k(  r| S t        dt         j                   d| d      )Nr   r0   r1   r2   )	r   r   zipappendr   r   codes_from_offsets_and_pointsr   r   )r   r    chunk_codesr"   r&   s        r'   (_convert_filled_from_ChunkCombinedOffsetr9   k   s     x11124"F| 	WOFG~""4( "...""3#D#DWf#UV	W q	;''	55	5x;;<Dn]_ 	_    c           
        |t         j                  k(  r\g }g }t        |  D ]I  \  }}}|
t        r|J |J |t	        j
                  ||      z  }|t	        j                  ||      z  }K ||fS |t         j                  k(  rg }g }t        |  D ]l  \  }}}|
t        r|J |J |t	        j
                  ||      z  }t	        j                  ||      }||D cg c]  }t	        j                  |       c}z  }n ||fS |t         j                  k(  r| d   | d   f}|S |t         j                  k(  r2| d   D cg c]  }|d nt	        j                  |       }	}| d   |	f}
|
S |t         j                  k(  r| S |t         j                  k(  rg }g }t        | dd   D ]  \  }}|#|j                  d        |j                  d        +t        r|J t	        j                  |      }t        j                  |D cg c]   }t        j                   ||k(        d   d   " c}t"              }|j                  |       |j                  |        | d   ||f}|S t%        d|       c c}w c c}w c c}w )Nr   r   )dtyper   )r   r   r5   r   r   split_points_by_offsetssplit_codes_by_offsetsr   r   r   r   r   r   r6   nparraynonzeror   r   )r   r    separate_pointsr-   r"   r!   r#   separate_offsetsr$   all_offsetsr%   chunk_offsetschunk_outer_offsetsr&   ooret3s                   r'   ,_convert_filled_from_ChunkCombinedCodeOffsetrI      s    x))),/L 	S(FE=!  ,,,(4443#>#>v}#UU#"<"<UM"RR	S  00	--	-,/L 	`(FE=!  ,,,(4443#>#>v}#UU!$!;!;E=!Q P^$_uS%;%;E%B$__ 	`  !122	33	328)VAY1G	55	5$*1I/   %}t#2H2H2OO / /4:1I{3K	99	9	;;	;68<>$'$4 	: E=}$$T*#**40 (444007 "Ta)bb"**W]*CA*Fq*I)b/;!=$$W-#**=9	: 1I}&9:
 ,\N;<<A %`/" *cs   I(; I-:%I2
c           
     $   |t         j                  k(  rwg }g }t        |  D ]d  \  }}}|
t        r|J |J t	        j
                  ||      }||   }|t	        j                  ||      z  }|t	        j                  ||      z  }f ||fS |t         j                  k(  rg }g }t        |  D ]  \  }}}|
t        r|J |J t        |      dkD  r5|t        |d d |dd        D 	
cg c]  \  }	}
||	|
dz    ||	   z
   c}
}	z  }n|j                  |       |t	        j                  |||         z  } ||fS |t         j                  k(  rcg }t        |  D ]M  \  }}}||j                  d        t        r|J |J |j                  t	        j
                  ||             O | d   |f}|S |t         j                  k(  r
| d   | d   fS |t         j                  k(  rg }g }t        |  D ]r  \  }}}|#|j                  d        |j                  d        ,t        r|J |J |j                  t	        j
                  ||             |j                  ||          t | d   ||f}|S |t         j                  k(  r| S t        d|       c c}
}	w )N   r   r   r   )r   r   r5   r   r   r7   r=   r>   r   r   r6   r   r   r   r   r   )r   r    rB   r-   r"   r&   r#   r!   rC   ser8   r$   rF   r%   s                  r'   ._convert_filled_from_ChunkCombinedOffsetOffsetrO      s+    x))).16l 	S*FG]! "...(44499'6J ' 63#>#>v}#UU#"<"<UM"RR	S  00	--	-.16l 
	_*FG]! "...(444}%)$),]3B-?qrAR)S)UA1Q3'!*)D )U U$ %++G43#>#>vw}G]#^^
	_  !122	33	324.16l 	W*FG]~""4( "...(444""3#D#DWf#UV	W 39)[1I	55	5q	6!9%%	99	9<>.16l 		C*FG]~""4(#**40 "...(444""3#D#DWf#UV#**7=+AB		C 9?q	;Pc7d	;;	;,\N;<<M)Us   &J
c                V   t        |      }t        |      }t        | |       |t        j                  k(  r,t        rt        t        j                  |       } t        | |      S |t        j                  k(  r,t        rt        t        j                  |       } t        | |      S |t        j                  k(  r,t        rt        t        j                  |       } t        | |      S |t        j                  k(  r,t        rt        t        j                   |       } t#        | |      S |t        j$                  k(  r,t        rt        t        j&                  |       } t)        | |      S |t        j*                  k(  r,t        rt        t        j,                  |       } t/        | |      S t1        d|       )a  Return the specified filled contours converted to a different :class:`~contourpy.FillType`.

    Args:
        filled (sequence of arrays): Filled contour polygons to convert.
        fill_type_from (FillType or str): :class:`~contourpy.FillType` to convert from as enum or
            string equivalent.
        fill_type_to (FillType or str): :class:`~contourpy.FillType` to convert to as enum or string
            equivalent.

    Return:
        Converted filled contour polygons.

    When converting non-chunked fill types (``FillType.OuterCode`` or ``FillType.OuterOffset``) to
    chunked ones, all polygons are placed in the first chunk. When converting in the other
    direction, all chunk information is discarded. Converting a fill type that is not aware of the
    relationship between outer boundaries and contained holes (``FillType.ChunkCombinedCode`` or)
    ``FillType.ChunkCombinedOffset``) to one that is will raise a ``ValueError``.

    .. versionadded:: 1.2.0
    r   )r   r
   r   r   r   r   cpyFillReturn_OuterCoder(   r   FillReturn_OuterOffsetr.   r   FillReturn_ChunkCombinedCoder3   r   FillReturn_ChunkCombinedOffsetr9   r   "FillReturn_ChunkCombinedCodeOffsetrI   r   $FillReturn_ChunkCombinedOffsetOffsetrO   r   )r   fill_type_fromr    s      r'   convert_filledrY      sV   2 ".1N-L(+++#22F;F-flCC	8//	/#44f=F/EE	855	5#::FCF5flKK	877	7#<<fEF7MM	8;;	;#@@&IF;FLQQ	8==	=#BBFKF=flSS,^,<=>>r:   c                   |t         j                  k(  r| S |t         j                  k(  r&| D cg c]  }t        j                  |       }}| |fS |t         j
                  k(  rR| sd gd gf}|S t        j                  |       }t        j                  |       }t        j                  ||      }|g|gf}|S |t         j                  k(  r8| sd gd gf}|S t        j                  |       gt        j                  |       gf}|S |t         j                  k(  r!| sd gf}	|	S t        j                  |       gf}	|	S t        d|       c c}w )NInvalid LineType )r   SeparateSeparateCoder   codes_from_pointsr   r   r   r7   r   ChunkCombinedNanconcat_points_with_nanr   )
linesline_type_toliner-   r$   r"   r&   r!   r%   rH   s
             r'   _convert_lines_from_Separaterd   9  se    x(((	..	.BGH$#//5HH~&&	33	37;ftf5ED 	 &&u-F..u5G55gvFEHug&D	55	59=7GD  &&u-.1I1I%1P0QRD	22	26:VID  //679D,\N;<<1 Is   Ec                <   |t         j                  k(  r| d   S |t         j                  k(  r| S |t         j                  k(  rA| d   sd gd gf}|S t	        j
                  | d         gt	        j                  | d         gf}|S |t         j                  k(  rA| d   sd gd gf}|S t	        j
                  | d         gt	        j                  | d         gf}|S |t         j                  k(  r'| d   sd gf}|S t	        j                  | d         gf}|S t        d|       Nr   r   r[   )r   r\   r]   r   r   r   r   r   r   r_   r`   r   )ra   rb   r$   r%   rH   s        r'    _convert_lines_from_SeparateCoderg   [  sF    x(((Qx	..	.	33	3Qx7;ftf5ED  &&uQx01C4D4DU1X4N3OPD	55	5Qx9=7GD  &&uQx01C4L4LUSTX4V3WXD	22	2Qx6:VID  //a9:<D,\N;<<r:   c                   |t         j                  t         j                  fv rg }t        |  D ]m  \  }}|	t        r|J t        j                  |t        k(        d   }t        |      dkD  r|t        j                  ||dd        z  }]|j                  |       o |t         j                  k(  r|S |D cg c]  }t        j                  |       }}||fS |t         j                  k(  r| S |t         j                  k(  r0| d   D cg c]  }|d nt        j                  |       }}| d   |fS |t         j                   k(  rmg }	t        |  D ]]  \  }}||	j                  d        t        r|J t        j                  |      }
|	j                  t        j"                  ||
             _ |	fS t%        d|       c c}w c c}w rf   )r   r\   r]   r5   r   r?   rA   r   r   splitr6   r   r^   r   r   r   r_   insert_nan_at_offsetsr   )ra   rb   separate_linesr"   r!   split_atrc   r-   rE   
points_nanr&   s              r'   %_convert_lines_from_ChunkCombinedCodern   z  s    ))8+@+@AA %[ 	2MFE!  ,,,::evo6q9x=1$"bhhvx|&DDN"))&1	2 8,,,!!FTUdc33D9UNU"N33	33	3	55	5&+Ah0" "'C4J4J54QQ 0 0a-((	22	224
 %[ 	NMFE~!!$'  ,,,007!!#";";FG"LM	N },\N;<<) V
0s   6F> Gc                0   |t         j                  t         j                  fv rsg }t        |  D ]+  \  }}|	t        r|J |t        j                  ||      z  }- |t         j                  k(  r|S |D cg c]  }t        j                  |       }}||fS |t         j                  k(  r\g }t        |  D ]H  \  }}||j                  d        t        r|J |j                  t        j                  ||             J | d   |fS |t         j                  k(  r| S |t         j                  k(  rXg }t        |  D ]H  \  }}||j                  d        t        r|J |j                  t        j                  ||             J |fS t        d|       c c}w Nr   r[   )r   r\   r]   r5   r   r   r=   r^   r   r6   r7   r   r_   rj   r   )	ra   rb   rk   r"   r&   rc   r-   r8   rm   s	            r'   '_convert_lines_from_ChunkCombinedOffsetrq     s    ))8+@+@AA"E{ 	OOFG! "...#"="=fg"NN		O
 8,,,!!FTUdc33D9UNU"N33	33	324"E{ 	WOFG~""4( "...""3#D#DWf#UV	W a+&&	55	5	22	224
"E{ 	NOFG~!!$' "...!!#";";FG"LM	N },\N;<<3 Vs   4Fc                   |t         j                  t         j                  fv rbg }| d   D ]  }||t        j                  |      z  } |t         j                  k(  r|S |D cg c]  }t        j
                  |       }}||fS |t         j                  k(  rg }g }| d   D ]u  }|#|j                  d        |j                  d        (t        j                  |      \  }}|j                  |       |j                  t        j                  ||             w ||fS |t         j                  k(  rqg }g }| d   D ]a  }|#|j                  d        |j                  d        (t        j                  |      \  }}|j                  |       |j                  |       c ||fS |t         j                  k(  r| S t        d|       c c}w rp   )r   r\   r]   r   split_points_at_nanr^   r   r6   
remove_nanr7   r   r_   r   )	ra   rb   rk   r"   r-   chunk_pointsr8   r&   rE   s	            r'   $_convert_lines_from_ChunkCombinedNanrv     s    ))8+@+@AAAh 	BF!#"9"9&"AA	B 8,,,!!JXYc33F;YNY"N33	33	34624Ah 	WF~##D)""4("%.."8##F+""3#D#DWf#UV	W k**	55	568Ah 	.F~##D)$$T*"%.."8##F+$$W-	. m,,	22	2,\N;<<; Zs   #Gc                   t        |      }t        |      }t        | |       |t        j                  k(  r,t        rt        t        j                  |       } t        | |      S |t        j                  k(  r,t        rt        t        j                  |       } t        | |      S |t        j                  k(  r,t        rt        t        j                  |       } t        | |      S |t        j                  k(  r,t        rt        t        j                   |       } t#        | |      S |t        j$                  k(  r,t        rt        t        j&                  |       } t)        | |      S t+        d|       )aG  Return the specified contour lines converted to a different :class:`~contourpy.LineType`.

    Args:
        lines (sequence of arrays): Contour lines to convert.
        line_type_from (LineType or str): :class:`~contourpy.LineType` to convert from as enum or
            string equivalent.
        line_type_to (LineType or str): :class:`~contourpy.LineType` to convert to as enum or string
            equivalent.

    Return:
        Converted contour lines.

    When converting non-chunked line types (``LineType.Separate`` or ``LineType.SeparateCode``) to
    chunked ones (``LineType.ChunkCombinedCode``, ``LineType.ChunkCombinedOffset`` or
    ``LineType.ChunkCombinedNan``), all lines are placed in the first chunk. When converting in the
    other direction, all chunk information is discarded.

    .. versionadded:: 1.2.0
    r[   )r	   r   r   r\   r   r   rQ   LineReturn_Separaterd   r]   LineReturn_SeparateCoderg   r   LineReturn_ChunkCombinedCodern   r   LineReturn_ChunkCombinedOffsetrq   r_   LineReturn_ChunkCombinedNanrv   r   )ra   line_type_fromrb   s      r'   convert_linesr~     s&   0 ".1N-L~&***00%8E+E<@@	800	044e<E/|DD	855	5995AE4ULII	877	7;;UCE6ulKK	844	488%@E3E<HH,^,<=>>r:   )r   zcpy.FillReturn_OuterCoder    r   returncpy.FillReturn)r   zcpy.FillReturn_OuterOffsetr    r   r   r   )r   z cpy.FillReturn_ChunkCombinedCoder    r   r   r   )r   z"cpy.FillReturn_ChunkCombinedOffsetr    r   r   r   )r   z&cpy.FillReturn_ChunkCombinedCodeOffsetr    r   r   r   )r   z(cpy.FillReturn_ChunkCombinedOffsetOffsetr    r   r   r   )r   r   rX   FillType | strr    r   r   r   )ra   zcpy.LineReturn_Separaterb   r   r   cpy.LineReturn)ra   zcpy.LineReturn_SeparateCoderb   r   r   r   )ra   z cpy.LineReturn_ChunkCombinedCoderb   r   r   r   )ra   z"cpy.LineReturn_ChunkCombinedOffsetrb   r   r   r   )ra   zcpy.LineReturn_ChunkCombinedNanrb   r   r   r   )ra   r   r}   LineType | strrb   r   r   r   )%
__future__r   typingr   r   numpyr?   contourpy._contourpyr   r   contourpy.arrayr@   r   contourpy.enum_utilr   r	   contourpy.typecheckr
   r   contourpy.typesr   r   
_contourpyrQ   r(   r.   r3   r9   rI   rO   rY   rd   rg   rn   rq   rv   r~    r:   r'   <module>r      s   " &  3  : 9 0&!=$!=!= !=H%=&%=%= %=P],]] ]_.__ _*9=29=9= 9=x@=4@=@= @=F7?7?"7? "7? 	7?t="== =D=&== =>&=+&=&= &=R'=-'='= '=T)=*)=)= )=X2?2?"2? "2? 	2?r:   