
    'j
                    f    d dl mZ d dlmZ d dlmZ d dlmZ dgZdZ	dZ
 G d d          ZddZdS )    )annotations)XRecord)Tags)DXFTagRoundtripXRecordf   c                  <    e Zd ZdZdddZddZddZddZddZdS )r   a  Helper class for ACAD Roundtrip Data.

    The data is stored in an XRECORD, in sections separated by tags
    (102, "ACAD_SECTION_NAME").

    Example for inverted clipping path of SPATIAL_FILTER objects:

    ...
    100
    AcDbXrecord
    280
    1
    102
    ACAD_INVERTEDCLIP_ROUNDTRIP
    10
    399.725563048036
    20
    233.417786599994
    30
    0.0
    ...
    102
    ACAD_INVERTEDCLIP_ROUNDTRIP_COMPARE
    10
    399.725563048036
    20
    233.417786599994
    ...

    NxrecordXRecord | NonereturnNonec                4    |t                      }|| _        d S N)r   r   )selfr   s     \/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/acad_xrec_roundtrip.py__init__zRoundtripXRecord.__init__.   s    ?iiG    keystrboolc                R    | j         j        D ]\  }}|t          k    r	||k    r dS dS )z4Returns True if an entry section for key is present.TF)r   tagsSECTION_MARKER_CODE)r   r   codevalues       r   has_sectionzRoundtripXRecord.has_section3   s;    <, 	 	KD%***u||ttur   r   r   c                    | j         j        }t          ||          \  }}|t          k    r?|                    t          t          |                     |                    |           dS |||dz   |<   dS )zTSet content of section `key` to `tags`. Replaces the content of an existing section.   N)r   r   find_section	NOT_FOUNDappendr   r   extend)r   r   r   xrecord_tagsstartends         r   set_sectionzRoundtripXRecord.set_section:   s{    |(!,44
sI':C @ @AAA%%%%%,0LS)))r   c                    | j         j        }t          ||          \  }}|t          k    r||dz   |         S t	                      S )z%Returns the content of section `key`.r   )r   r   r    r!   r   r   r   r$   r%   r&   s        r   get_sectionzRoundtripXRecord.get_sectionD   sF    |(!,44
sI	C00vvr   c                h    | j         j        }t          ||          \  }}|t          k    r|||= dS dS )z;Removes section `key`, section `key` doesn't have to exist.N)r   r   r    r!   r)   s        r   discardzRoundtripXRecord.discardL   sD    |(!,44
sIU3Y''' r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )	__name__
__module____qualname____doc__r   r   r'   r*   r,    r   r   r   r      s         >    
   1 1 1 1   ( ( ( ( ( (r   r   r   r   r   r   tuple[int, int]c                    t           }t          |           D ]0\  }}|j        dk    r|j        |k    r|}|t           k    r||fc S 1|t           k    r|t	          |           fS t           t           fS )zlReturns the start- and end index of section `key`.

    Returns (-1, -1) if the section does not exist.
    r   )r!   	enumerater   r   len)r   r   r%   indextags        r   r    r    T   s    
 Eoo    
s8s??9EEi%<  	c$iiir   N)r   r   r   r   r   r2   )
__future__r   ezdxf.entitiesr   ezdxf.lldxf.tagsr   ezdxf.lldxf.typesr   __all__r   r!   r   r    r1   r   r   <module>r=      s    # " " " " " " " " " " " ! ! ! ! ! ! $ $ $ $ $ $
 	C( C( C( C( C( C( C( C(L           r   