
    zYHh*f                       d dl mZ 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&	 	 	 	 	 	 	 	 d%dZ'	 	 	 	 	 	 	 	 d&dZ(y)'    )annotations)pairwise)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           J/var/www/html/planif/env/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/   6   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_ChunkCombinedCoder4   ^   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   r1   r2   r3   )	r   r   zipappendr   r   codes_from_offsets_and_pointsr   r   )r    r!   chunk_codesr#   r'   s        r(   (_convert_filled_from_ChunkCombinedOffsetr:   l   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   r6   r   r   split_points_by_offsetssplit_codes_by_offsetsr   r   r   r   r   r   r7   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_ChunkCombinedCodeOffsetrJ      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  r.|t        |      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   r6   r   r   r8   r>   r?   r   r   r   r7   r   r   r   r   r   )r    r!   rC   r.   r#   r'   r$   r"   rD   ser9   r%   rG   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}%)$)1-)@)BA1Q3'!*)D )B B$ %++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)B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  Convert filled contours from one :class:`~.FillType` to another.

    Args:
        filled (sequence of arrays): Filled contour polygons to convert, such as those returned by
            :meth:`.ContourGenerator.filled`.
        fill_type_from (FillType or str): :class:`~.FillType` to convert from as enum or
            string equivalent.
        fill_type_to (FillType or str): :class:`~.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_ChunkCombinedCoder4   r   FillReturn_ChunkCombinedOffsetr:   r   "FillReturn_ChunkCombinedCodeOffsetrJ   r   $FillReturn_ChunkCombinedOffsetOffsetrO   r   )r    fill_type_fromr!   s      r(   convert_filledrY      sV   4 ".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   r8   r   ChunkCombinedNanconcat_points_with_nanr   )
linesline_type_toliner.   r%   r#   r'   r"   r&   rI   s
             r(   _convert_lines_from_Separaterd   ;  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&   rI   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]   r6   r   r@   rB   r   r   splitr7   r   r^   r   r   r   r_   insert_nan_at_offsetsr   )ra   rb   separate_linesr#   r"   split_atrc   r.   rF   
points_nanr'   s              r(   %_convert_lines_from_ChunkCombinedCodern   |  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]   r6   r   r   r>   r^   r   r7   r8   r   r_   rj   r   )	ra   rb   rk   r#   r'   rc   r.   r9   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   r7   
remove_nanr8   r   r_   r   )	ra   rb   rk   r#   r.   chunk_pointsr9   r'   rF   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|       )aa  Convert contour lines from one :class:`~.LineType` to another.

    Args:
        lines (sequence of arrays): Contour lines to convert, such as those returned by
            :meth:`.ContourGenerator.lines`.
        line_type_from (LineType or str): :class:`~.LineType` to convert from as enum or
            string equivalent.
        line_type_to (LineType or str): :class:`~.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&   2 ".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;   c                n    t        |      }t        |      }| D cg c]  }t        |||       c}S c c}w )a   Convert multiple sets of filled contours from one :class:`~.FillType` to another.

    Args:
        multi_filled (nested sequence of arrays): Filled contour polygons to convert, such as those
            returned by :meth:`.ContourGenerator.multi_filled`.
        fill_type_from (FillType or str): :class:`~.FillType` to convert from as enum or
            string equivalent.
        fill_type_to (FillType or str): :class:`~.FillType` to convert to as enum or string
            equivalent.

    Return:
        Converted sets 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.3.0
    )r	   rY   )multi_filledrX   r!   r    s       r(   convert_multi_filledr   1  s5    4 ".1N-LO[\VN6><@\\\   2c                n    t        |      }t        |      }| D cg c]  }t        |||       c}S c c}w )a  Convert multiple sets of contour lines from one :class:`~.LineType` to another.

    Args:
        multi_lines (nested sequence of arrays): Contour lines to convert, such as those returned by
            :meth:`.ContourGenerator.multi_lines`.
        line_type_from (LineType or str): :class:`~.LineType` to convert from as enum or
            string equivalent.
        line_type_to (LineType or str): :class:`~.LineType` to convert to as enum or string
            equivalent.

    Return:
        Converted set of 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.3.0
    )r
   r~   )multi_linesr}   rb   ra   s       r(   convert_multi_linesr   Q  s5    2 ".1N-LLWX5M%>XXXr   )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   )r   list[cpy.FillReturn]rX   r   r!   r   r   r   )r   list[cpy.LineReturn]r}   r   rb   r   r   r   ))
__future__r   	itertoolsr   typingr   r   numpyr@   contourpy._contourpyr   r   contourpy.arrayrA   r   contourpy.enum_utilr	   r
   contourpy.typecheckr   r   contourpy.typesr   r   
_contourpyrQ   r)   r/   r4   r:   rJ   rO   rY   rd   rg   rn   rq   rv   r~   r   r    r;   r(   <module>r      s@   "  &  3  : 9 0&!=$!=!= !=H%=&%=%= %=P],]] ]_.__ _*9=29=9= 9=x@=4@=@= @=F8?8?"8? "8? 	8?v="== =D=&== =>&=+&=&= &=R'=-'='= '=T)=*)=)= )=X3?3?"3? "3? 	3?l]&]"] "] 	]@Y%Y"Y "Y 	Yr;   