o
    hL                     @  s   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
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dZdddZdddZd ddZdS )!    )annotations)TYPE_CHECKINGcast)FillTypeLineType)concat_codes_or_noneconcat_offsets_or_noneconcat_points_or_noneconcat_points_or_none_with_nan)as_fill_typeas_line_type)check_filledcheck_linesNfilledcpy.FillReturn	fill_typeFillType | strreturnc                 C  s  t |}|tjtjfv r| S t| | t| d dk r| S tr%ttj	| } t
| d }|tjkrPtr8ttj| } |du rDdgdgf}|S |gt| d gf}|S |tjkrutr]ttj| } |du ridgdgf}|S |gt| d gf}|S |tjkrtrttj| } |du rdgdgdgf}|S t| d }|gt| d g|gf}|S |tjkrtrttj| } |du rdgdgdgf}|S t| d }|gt| d g|gf}|S td| )a  Return the specified filled contours with chunked data moved into the first chunk.

    Filled contours that are not chunked (``FillType.OuterCode`` and ``FillType.OuterOffset``) and
    those that are but only contain a single chunk are returned unmodified. Individual polygons are
    unchanged, they are not geometrically combined.

    Args:
        filled (sequence of arrays): Filled contour data, such as returned by
            :meth:`.ContourGenerator.filled`.
        fill_type (FillType or str): Type of :meth:`~.ContourGenerator.filled` as enum or string
            equivalent.

    Return:
        Filled contours in a single chunk.

    .. versionadded:: 1.2.0
    r      N   zInvalid FillType )r   r   	OuterCodeOuterOffsetr   lenr   r   cpyFillReturn_Chunkr	   ChunkCombinedCodeFillReturn_ChunkCombinedCoder   ChunkCombinedOffsetFillReturn_ChunkCombinedOffsetr   ChunkCombinedCodeOffset"FillReturn_ChunkCombinedCodeOffsetChunkCombinedOffsetOffset$FillReturn_ChunkCombinedOffsetOffset
ValueError)r   r   pointsret1ret2ret3outer_offsetsret4 r*   e/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/contourpy/dechunk.pydechunk_filled   sX   




r,   linescpy.LineReturn	line_typeLineType | strc                 C  s6  t |}|tjtjfv r| S t| | t| d dk r| S tr%ttj	| } |tj
krPtr2ttj| } t| d }|du rDdgdgf}|S |gt| d gf}|S |tjkr{tr]ttj| } t| d }|du rodgdgf}|S |gt| d gf}|S |tjkrtrttj| } t| d }|gf}|S td| )a  Return the specified contour lines with chunked data moved into the first chunk.

    Contour lines that are not chunked (``LineType.Separate`` and ``LineType.SeparateCode``) and
    those that are but only contain a single chunk are returned unmodified. Individual lines are
    unchanged, they are not geometrically combined.

    Args:
        lines (sequence of arrays): Contour line data, such as returned by
            :meth:`.ContourGenerator.lines`.
        line_type (LineType or str): Type of :meth:`~.ContourGenerator.lines` as enum or string
            equivalent.

    Return:
        Contour lines in a single chunk.

    .. versionadded:: 1.2.0
    r   r   Nr   zInvalid LineType )r   r   SeparateSeparateCoder   r   r   r   r   LineReturn_Chunkr   LineReturn_ChunkCombinedCoder	   r   r   LineReturn_ChunkCombinedOffsetr   ChunkCombinedNanLineReturn_ChunkCombinedNanr
   r#   )r-   r/   r$   r%   r&   r'   r*   r*   r+   dechunk_linesZ   sB   



r8   multi_filledlist[cpy.FillReturn]c                   .   t    tjtjfv r| S  fdd| D S )a  Return multiple sets of filled contours with chunked data moved into the first chunks.

    Filled contours that are not chunked (``FillType.OuterCode`` and ``FillType.OuterOffset``) and
    those that are but only contain a single chunk are returned unmodified. Individual polygons are
    unchanged, they are not geometrically combined.

    Args:
        multi_filled (nested sequence of arrays): Filled contour data, such as returned by
            :meth:`.ContourGenerator.multi_filled`.
        fill_type (FillType or str): Type of :meth:`~.ContourGenerator.filled` as enum or string
            equivalent.

    Return:
        Multiple sets of filled contours in a single chunk.

    .. versionadded:: 1.3.0
    c                      g | ]}t | qS r*   )r,   ).0r   r   r*   r+   
<listcomp>       z(dechunk_multi_filled.<locals>.<listcomp>)r   r   r   r   )r9   r   r*   r>   r+   dechunk_multi_filled      rA   multi_lineslist[cpy.LineReturn]c                   r;   )a  Return multiple sets of contour lines with all chunked data moved into the first chunks.

    Contour lines that are not chunked (``LineType.Separate`` and ``LineType.SeparateCode``) and
    those that are but only contain a single chunk are returned unmodified. Individual lines are
    unchanged, they are not geometrically combined.

    Args:
        multi_lines (nested sequence of arrays): Contour line data, such as returned by
            :meth:`.ContourGenerator.multi_lines`.
        line_type (LineType or str): Type of :meth:`~.ContourGenerator.lines` as enum or string
            equivalent.

    Return:
        Multiple sets of contour lines in a single chunk.

    .. versionadded:: 1.3.0
    c                   r<   r*   )r8   )r=   r-   r/   r*   r+   r?      r@   z'dechunk_multi_lines.<locals>.<listcomp>)r   r   r1   r2   )rC   r/   r*   rE   r+   dechunk_multi_lines   rB   rF   )r   r   r   r   r   r   )r-   r.   r/   r0   r   r.   )r9   r:   r   r   r   r:   )rC   rD   r/   r0   r   rD   )
__future__r   typingr   r   contourpy._contourpyr   r   contourpy.arrayr   r   r	   r
   contourpy.enum_utilr   r   contourpy.typecheckr   r   
_contourpyr   r,   r8   rA   rF   r*   r*   r*   r+   <module>   s    

G
<