Ë
    £èhp  ã                  óP  — U d dl mZ d dlmZmZmZmZ d dlmZ d dl	Z	d dl
mZ d dlmZ d dlmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z( ddl)m*Z* er"d dl+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dlm3Z3 d dl#m4Z4 g d¢Z5 e	jl                  d«      Z7d@d„Z8dAd„Z9dBd„Z:dCd„Z; edi «      Z<de=d<    ed edej|                  ¬«       edd ¬ «       ed!d"e8e9¬#«       ed$ed%¬&«       ed'd(ej~                  ¬)«       ed*ded%ej€                  e¬+«       ed,e"ee:e;¬-«       ed.e¬/«       ed0e¬/«       ed1ed%¬&«      d2œ
«      ZA eeA«      ZBd3ZCd4ZDe* G d5„ d6e(«      «       ZEe G d7„ d8«      «       ZF G d9„ d:«      ZGdDd;„ZHdEd<„ZIdFd=„ZJdGd>„ZK	 	 	 	 	 	 dHd?„ZLy)Ié    )Úannotations)ÚTYPE_CHECKINGÚOptionalÚcastÚAny)ÚSelfN)Ú	dataclass)Ú	validator)ÚDXFAttrÚDXFAttributesÚDefSubclassÚRETURN_DEFAULTÚgroup_code_mapping)Úcolors)Úconst)
ÚDXF12ÚSUBCLASS_MARKERÚDXF2000ÚDXF2007ÚDXF2004ÚINVALID_NAME_CHARACTERSÚDXFValueErrorÚLINEWEIGHT_BYBLOCKÚLINEWEIGHT_BYLAYERÚLINEWEIGHT_DEFAULT)Ú
AuditError)Ú
base_classÚSubclassProcessorÚ	DXFEntityé   )Úregister_entity)ÚDXFNamespaceÚViewportÚXRecord)ÚAbstractTagWriter)ÚEntityDB)Úxref)ÚAuditor)ÚLayerÚacdb_symbol_table_recordÚLayerOverridesÚezdxfc                ó0   — d| cxk  xr dk  nc xr | dk7  S )Ni ÿÿÿé   r   © ©Úacis    ú4lib/python3.12/site-packages/ezdxf/entities/layer.pyÚis_valid_layer_color_indexr3   .   s   € à�3Ö˜ÔÒ* #¨¡(Ð*ó    c                ó    — t        | «      r| S dS )Né   )r3   r0   s    r2   Úfix_layer_colorr7   3   s   € Ü,¨SÔ1ˆ3Ð8°qÐ8r4   c                óL   — t        j                  | «      r| t        t        fvryy)NTF)r
   Úis_valid_lineweightr   r   ©Úlws    r2   Úis_valid_layer_lineweightr<   7   s%   € Ü×$Ñ$ RÔ(ØÔ(Ô*<Ð=Ñ=ØØr4   c                óT   — | t         t        fv rt        S t        j                  | «      S ©N)r   r   r   r
   Úfix_lineweightr:   s    r2   Úfix_layer_lineweightr@   >   s(   € Ø	Ô Ô"4Ð5Ñ5Ü!Ð!ä×'Ñ'¨Ó+Ð+r4   ÚAcDbSymbolTableRecordr   r*   ÚAcDbLayerTableRecordé   éF   )Údefaulté>   r6   )rE   r
   Úfixeri¤  T)Ú
dxfversionÚoptionalé   Ú
Continuous)rE   r
   i"  )rE   rH   rI   r
   rG   ir  )rE   rH   r
   rG   i†  )rH   i[  i\  ©
ÚnameÚflagsÚcolorÚ
true_colorÚlinetypeÚplotÚ
lineweightÚplotstyle_handleÚmaterial_handleÚunknown1ÚAcAecLayerStandardÚAcCmTransparencyc                  óì  ‡ — e Zd ZdZdZ eeee«      Z	ddiZ
dZdZdZdZ	 d&	 	 	 d'ˆ fd	„Zd(ˆ fd
„Z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ed-d„«       Zej@                  d.d„«       Zed+d„«       Z!e!j@                  d/d„«       Z!ed0d„«       Z"e"j@                  d1d„«       Z"ed2d„«       Z#e#j@                  d3d„«       Z#d4d „Z$d5d!„Z%d6d"„Z&d7ˆ fd#„Z'd8ˆ fd$„Z(d9ˆ fd%„Z)ˆ xZ*S ):r)   zDXF LAYER entityÚLAYERrM   Ú0r    éþ   é   éû   c                óV   •— t         ‰| �  |«      }|r|j                  |t        «       |S r>   )ÚsuperÚload_dxf_attribsÚsimple_dxfattribs_loaderÚ#acdb_layer_table_record_group_codes)ÚselfÚ	processorÚdxfÚ	__class__s      €r2   ra   zLayer.load_dxf_attribs†   s2   ø€ ô ‰gÑ& yÓ1ˆÙØ×.Ñ.ØÔ8ôð ˆ
r4   c                ó  •— t         ‰| �  |«       |j                  t        kD  rH|j	                  t
        t        j                  «       |j	                  t
        t        j                  «       | j                  j                  |g d¢«       y )NrL   )r`   Úexport_entityrH   r   Ú
write_tag2r   r*   rM   Úacdb_layer_table_recordrf   Úexport_dxf_attribs)rd   Ú	tagwriterrg   s     €r2   ri   zLayer.export_entity�   sf   ø€ Ü‰Ñ˜iÔ(Ø×Ñ¤%Ò'Ø× Ñ ¤Ô2J×2OÑ2OÔPØ× Ñ ¤Ô2I×2NÑ2NÔOà�‰×#Ñ#Øòõ	
r4   c                óä  — | j                   €J d«       ‚| j                  j                  d«      sS| j                   j                  d   }t	        |t
        «      r|j                  j                  }n|}|| j                  _        | j                  j                  d«      sT| j                   j                  d   }t	        |t
        «      r|j                  j                  }n|}|| j                  _	        y y )Núvalid DXF document requiredrU   ÚGlobalrT   ÚNormal)
Údocrf   ÚhasattrÚ	materialsÚ
isinstancer   ÚhandlerU   Ú
plotstylesrT   )rd   Úglobal_rv   Únormals       r2   Úset_required_attributeszLayer.set_required_attributes¦   s¿   € Ø�x‰xÐ#ÐBÐ%BÓBÐ#Ø�x‰x×ÑÐ 1Ô2Ø—h‘h×(Ñ(¨Ñ2ˆGÜ˜'¤9Ô-Ø Ÿ™×+Ñ+‘à �Ø'-ˆD�H‰HÔ$Ø�x‰x×ÑÐ 2Ô3Ø—X‘X×(Ñ(¨Ñ2ˆFÜ˜&¤)Ô,ØŸ™×*Ñ*‘à�Ø(.ˆD�H‰HÕ%ð 4r4   c                óV   — | j                   j                  t        j                  z  dkD  S )z$Returns ``True`` if layer is frozen.r   ©rf   rN   r)   ÚFROZEN©rd   s    r2   Ú	is_frozenzLayer.is_frozen·   s   € à�x‰x�~‰~¤§¡Ñ,¨qÑ0Ð0r4   c                óp   — | j                   j                  t        j                  z  | j                   _        y)zFreeze layer.Nr|   r~   s    r2   ÚfreezezLayer.freeze»   s   € àŸ™Ÿ™¬%¯,©,Ñ6ˆ�‰�r4   c                óp   — | j                   j                  t        j                  z  | j                   _        y)zThaw layer.N)rf   rN   r)   ÚTHAWr~   s    r2   Úthawz
Layer.thaw¿   s   € àŸ™Ÿ™¬%¯*©*Ñ4ˆ�‰�r4   c                óV   — | j                   j                  t        j                  z  dkD  S )z$Returns ``True`` if layer is locked.r   ©rf   rN   r)   ÚLOCKr~   s    r2   Ú	is_lockedzLayer.is_lockedÃ   s   € à�x‰x�~‰~¤§
¡
Ñ*¨QÑ.Ð.r4   c                óp   — | j                   j                  t        j                  z  | j                   _        y)zjLock layer, entities on this layer are not editable - just important
        in CAD applications.
        Nr†   r~   s    r2   Úlockz
Layer.lockÇ   s    € ð Ÿ™Ÿ™¬%¯*©*Ñ4ˆ�‰�r4   c                óp   — | j                   j                  t        j                  z  | j                   _        y)zhUnlock layer, entities on this layer are editable - just important
        in CAD applications.
        N)rf   rN   r)   ÚUNLOCKr~   s    r2   ÚunlockzLayer.unlockÍ   s    € ð Ÿ™Ÿ™¬%¯,©,Ñ6ˆ�‰�r4   c                ó4   — | j                   j                  dk  S )z!Returns ``True`` if layer is off.r   )rf   rO   r~   s    r2   Úis_offzLayer.is_offÓ   s   € à�x‰x�~‰~ Ñ!Ð!r4   c                ó$   — | j                  «        S )z Returns ``True`` if layer is on.)r�   r~   s    r2   Úis_onzLayer.is_on×   s   € à—;‘;“=Ð Ð r4   c                ó`   — t        | j                  j                  «      | j                  _        y)zSwitch layer `on` (visible).N©Úabsrf   rO   r~   s    r2   ÚonzLayer.onÛ   s   € ä˜TŸX™XŸ^™^Ó,ˆ�‰�r4   c                ób   — t        | j                  j                  «       | j                  _        y)zSwitch layer `off` (invisible).Nr“   r~   s    r2   Úoffz	Layer.offß   s   € ä˜dŸh™hŸn™nÓ-Ð-ˆ�‰�r4   c                ó@   — t        | j                  j                  «      S ©zˆGet layer color, safe method for getting the layer color, because
        :attr:`dxf.color` is negative for layer status `off`.
        r“   r~   s    r2   Ú	get_colorzLayer.get_colorã   s   € ô �4—8‘8—>‘>Ó"Ð"r4   c                ót   — | j                  «       rt        |«      nt        |«       }|| j                  _        y©zˆSet layer color, safe method for setting the layer color, because
        :attr:`dxf.color` is negative for layer status `off`.
        N)r‘   r”   rf   rO   )rd   rO   s     r2   Ú	set_colorzLayer.set_coloré   s(   € ð #Ÿj™jœl”�E”
´°U³°ˆØˆ�‰�r4   c                ó–   — | j                   j                  d«      r.t        j                  | j                   j	                  d«      «      S y)zjReturns RGB true color as (r, g, b)-tuple or None if attribute
        dxf.true_color is not set.
        rP   N)rf   rs   ÚclrÚint2rgbÚgetr~   s    r2   Úrgbz	Layer.rgbð   s5   € ð
 �8‰8×Ñ˜LÔ)Ü—;‘;˜tŸx™xŸ|™|¨LÓ9Ó:Ð:àr4   c                ób   — | j                   j                  dt        j                  |«      «       y)z8Set RGB true color as (r, g, b)-tuple e.g. (12, 34, 56).rP   N)rf   ÚsetrŸ   Úrgb2int)rd   r¢   s     r2   r¢   z	Layer.rgbú   s   € ð 	�‰�‰�\¤3§;¡;¨sÓ#3Õ4r4   c                ó"   — | j                  «       S r™   )rš   r~   s    r2   rO   zLayer.colorÿ   s   € ð
 �~‰~ÓÐr4   c                ó&   — | j                  |«       yrœ   )r�   ©rd   Úvalues     r2   rO   zLayer.color  s   € ð
 	�‰�uÕr4   c                óˆ   — 	 | j                  t        «      }t        |«      dkD  r|d   j                  S y# t        $ r Y yw xY w)Nr    Ú )Ú	get_xdatarW   Úlenr©   r   )rd   Úxdatas     r2   ÚdescriptionzLayer.description  sH   € ð		Ø—N‘NÔ#5Ó6ˆEô �5‹z˜AŠ~à˜Q‘x—~‘~Ð%àøô ò 	Ùð	ús   ‚5 µ	AÁ Ac                ó  — | j                   rEt        | j                   j                  vr)| j                   j                  j                  t        «       | j	                  t        «       | j                  t        dd|fg«       y )N)éè  r«   r±   )rr   rW   ÚappidsÚnewÚdiscard_xdataÚ	set_xdatar¨   s     r2   r¯   zLayer.description  sY   € ð �8Š8Ô*°$·(±(·/±/ÑAØ�H‰H�O‰O×ÑÔ 2Ô3Ø×ÑÔ-Ô.Ø�‰Ô)¨J¸¸u¸Ð+FÕGr4   c                ó    — 	 | j                  t        «      }|d   j                  }|dz  rt        j                  |«      S y# t
        $ r Y yw xY w)Nr   i   ç        )r¬   rX   r©   rŸ   Útransparency2floatr   )rd   r®   Úts      r2   ÚtransparencyzLayer.transparency"  sT   € ð	1Ø—N‘NÔ#3Ó4ˆEð �a‘—‘ˆAØ�9Š}ä×-Ñ-¨aÓ0Ð0Øøô ò 	Ùð	ús   ‚A Á	AÁAc                ón  — | j                   rEt        | j                   j                  vr)| j                   j                  j                  t        «       d|cxk  rdk  rOn t        d«      ‚| j	                  t        «       | j                  t        dt        j                  |«      fg«       y t        d«      ‚)Nr   r    i/  zValue out of range [0, 1].)	rr   rX   r²   r³   r´   rµ   rŸ   Úfloat2transparencyÚ
ValueErrorr¨   s     r2   rº   zLayer.transparency/  sŠ   € ð �8Š8Ô(°·±·±Ñ?Ø�H‰H�O‰O×ÑÔ 0Ô1Ø�Œ?˜Œ?ô Ð9Ó:Ð:ð ×ÑÔ/Ô0Ø�N‰NÔ+¨t´S×5KÑ5KÈEÓ5RÐ.SÐ-TÕUäÐ9Ó:Ð:r4   c                ó  — t        j                  |«      st        dt        › d�«      ‚| j                  €J d«       ‚| j                  j
                  }| j                  j                  j                  «       dv r#t        d| j                  j                  › d�«      ‚|j                  |«      rt        d|› d	�«      ‚| j                  j                  }|| j                  _        |j                  || «       | j                  ||«       y)
ah  
        Rename layer and all known (documented) references to this layer.

        .. warning::

            The DXF format is not consistent in storing layer references, the
            layers are mostly referenced by their case-insensitive name,
            some later introduced entities do reference layers by handle, which
            is the safer way in the context of renaming layers.

            There is no complete overview of where layer references are
            stored, third-party entities are black-boxes with unknown content
            and layer names could be stored in the extended data section of any
            DXF entity or in XRECORD entities.
            Which means that in some rare cases references to the old layer name
            can persist, at least this does not invalidate the DXF document.

        Args:
             name: new layer name

        Raises:
            ValueError: `name` contains invalid characters: <>/\":;?*|=`
            ValueError: layer `name` already exist
            ValueError: renaming of layers ``'0'`` and ``'DEFPOINTS'`` not
                possible

        z"Name contains invalid characters: Ú.Núvalid DXF document is required)r[   Ú	defpointszCan not rename layer "z".zLayer "z" already exist.)r
   Úis_valid_layer_namer½   r   rr   Úlayersrf   rM   ÚlowerÚ	has_entryÚreplaceÚ_rename_layer_references)rd   rM   rÃ   Úolds       r2   ÚrenamezLayer.rename:  sâ   € ô8 ×,Ñ,¨TÔ2ÜØ4Ô5LÐ4MÈQÐOóð ð �x‰xÐ#ÐEÐ%EÓEÐ#Ø—‘—‘ˆØ�8‰8�=‰=×ÑÓ Ð$6Ñ6ÜÐ5°d·h±h·m±m°_ÀBÐGÓHÐHØ×Ñ˜DÔ!Ü˜w t fÐ,<Ð=Ó>Ð>Ø�h‰h�m‰mˆØˆ�‰ŒØ�‰�s˜DÔ!Ø×%Ñ% c¨4Õ0r4   c                ó.  — | j                   €J d«       ‚| j                   j                  j                  } ||«      }| j                   j                  j	                  «       D ]³  }|j
                  j                  d«      r0 ||j
                  j                  «      |k(  r||j
                  _        |j                  «       }|dk(  r|j                  ||«       Œv|dk(  rt        j                  d|› d�«       Œ•|dk(  sŒ›t        j                  d|› d�«       Œµ y )	NrÀ   ÚlayerÚVIEWPORTÚLAYER_FILTERzrenaming layer "z"" - document contains LAYER_FILTERÚLAYER_INDEXz!" - document contains LAYER_INDEX)rr   rÃ   ÚkeyÚentitydbÚvaluesrf   rs   rË   ÚdxftypeÚrename_frozen_layerÚloggerÚdebug)rd   Úold_nameÚnew_namerÏ   Úold_keyÚeÚentity_types          r2   rÇ   zLayer._rename_layer_referencese  së   € Ø�x‰xÐ#ÐEÐ%EÓEÐ#Ø�h‰h�o‰o×!Ñ!ˆÙ�h“-ˆØ—‘×"Ñ"×)Ñ)Ö+ˆAØ�u‰u�}‰}˜WÔ%©#¨a¯e©e¯k©kÓ*:¸gÒ*EØ&�—‘”ØŸ)™)›+ˆKØ˜jÒ(Ø×%Ñ% h°Õ9Ø Ò.ô —‘Ø& x jÐ0VÐWõð  Ó-ô —‘Ø& x jÐ0UÐVõñ ,r4   c                ó   — t        | «      S )z:Returns the :class:`LayerOverrides` object for this layer.)r+   r~   s    r2   Úget_vp_overrideszLayer.get_vp_overrides|  s   € ä˜dÓ#Ð#r4   c                óè   •— | j                   €J d«       ‚t        ‰| �	  |«       |j                  | j                  j
                  «       |j                  | j                  j                  d«      «       y)z5Register required resources to the resource registry.Nz+LAYER entity must be assigned to a documentrU   )rr   r`   Úregister_resourcesÚadd_linetyperf   rQ   Ú
add_handler¡   )rd   Úregistryrg   s     €r2   rÞ   zLayer.register_resources€  sZ   ø€ à�x‰xÐ#ÐRÐ%RÓRÐ#Ü‰Ñ" 8Ô,Ø×Ñ˜dŸh™h×/Ñ/Ô0Ø×Ñ˜DŸH™HŸL™LÐ):Ó;Õ<r4   c                óˆ  •— t        |t        «      sJ ‚t        ‰| �  ||«       |j	                  | j
                  j                  «      | j
                  _        |j                  | |dd¬«       |j
                  j                  d«       |j
                  j                  d«       |j                  «        |j                  «        y)z3Translate resources from self to the copied entity.rU   T)rI   rT   rV   N)ru   r)   r`   Úmap_resourcesÚget_linetyperf   rQ   Úmap_existing_handleÚdiscardrz   Údiscard_extension_dict)rd   ÚcloneÚmappingrg   s      €r2   rã   zLayer.map_resourcesˆ  sœ   ø€ ä˜%¤Ô'Ð'Ð'Ü‰Ñ˜e WÔ-Ø#×0Ñ0°·±×1BÑ1BÓCˆ�‰Ôà×#Ñ# D¨%Ð1BÈTÐ#ÔRà�	‰	×ÑÐ,Ô-Ø�	‰	×Ñ˜*Ô%ð 	×%Ñ%Ô'ð 	×$Ñ$Õ&r4   c                ó:  •— t         ‰| �  |«       | j                  j                  }|j                  j
                  j                  |«      ry d| j                  _        |j                  t        j                  d|› d| j                  j                  › d�| |¬«       y )NrK   zReplaced undefined linetype z in layer 'z' by CONTINUOUS)ÚcodeÚmessageÚ
dxf_entityÚdata)r`   Úauditrf   rQ   rr   Ú	linetypesrÅ   Úfixed_errorr   ÚUNDEFINED_LINETYPErM   )rd   ÚauditorrQ   rg   s      €r2   rï   zLayer.audit™  s‚   ø€ Ü‰‰�gÔØ—8‘8×$Ñ$ˆØ�;‰;× Ñ ×*Ñ*¨8Ô4ØØ(ˆ�‰ÔØ×ÑÜ×.Ñ.Ø2°8°*¸KÈÏÉÏÉÀÐVeÐfØØð	 	õ 	
r4   r>   )re   zOptional[SubclassProcessor]Úreturnr"   )rm   r%   rô   ÚNone©rô   Úbool©rô   rõ   )rô   Úint)rO   rù   rô   rõ   )rô   zOptional[tuple[int, int, int]])r¢   ztuple[int, int, int]rô   rõ   )r©   rù   rô   rõ   )rô   Ústr)r©   rú   rô   rõ   )rô   Úfloat)r©   rû   rô   rõ   )rM   rú   rô   rõ   )rÖ   rú   r×   rú   rô   rõ   )rô   r+   )rá   zxref.Registryrô   rõ   )rè   r   ré   zxref.ResourceMapperrô   rõ   )ró   r(   rô   rõ   )+Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr   r   r*   rk   Ú
DXFATTRIBSÚDEFAULT_ATTRIBSr}   rƒ   r‡   rŒ   ra   ri   rz   r   r�   r„   rˆ   rŠ   r�   r�   r‘   r•   r—   rš   r�   Úpropertyr¢   ÚsetterrO   r¯   rº   rÉ   rÇ   rÜ   rÞ   rã   rï   Ú__classcell__)rg   s   @r2   r)   r)   x   sw  ø„ áà€GÙØÐ,Ð.Eó€Jð ˜s�m€OØ€FØ€DØ€DØ€Fð 8<ðØ4ðà	õõ
ò,/ó"1ó7ó5ó/ó5ó7ó"ó!ó-ó.ó#óð òó ðð 	‡Z�Zò5ó ð5ð ò ó ð ð ‡\�\òó ðð ò
ó ð
ð ×ÑòHó ðHð ò
ó ð
ð ×Ñò;ó ð;ó)1óVó.$õ=õ'÷"
ñ 
r4   r)   c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   y
)ÚOverrideAttributesrù   r1   úOptional[clr.RGB]r¢   rû   rº   rú   rQ   rS   N)rü   rý   rþ   Ú__annotations__r/   r4   r2   r  r  §  s   … à	ƒHØ	ÓØÓØƒMØ„Or4   r  c                  ó”   — e Zd ZdZdd„Zd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 d„Zy)!r+   a2  This object stores the layer attribute overridden in VIEWPORT entities,
    where each VIEWPORT can have individual layer attribute overrides.

    Layer attributes which can be overridden:

        - ACI color
        - true color (rgb)
        - linetype
        - lineweight
        - transparency

    c                óX   — |j                   €J d«       ‚|| _        t        |«      | _        y )Nro   )rr   Ú_layerÚload_layer_overridesÚ
_overrides)rd   rË   s     r2   Ú__init__zLayerOverrides.__init__¾  s+   € Ø�y‰yÐ$ÐCÐ&CÓCÐ$ØˆŒÜ.¨uÓ5ˆ�r4   Nc                óL   — |€t        | j                  «      S || j                  v S )zËReturns ``True`` if attribute overrides exist for the given
        :class:`Viewport` handle.
        Returns ``True`` if `any` attribute overrides exist if the given
        handle is ``None``.
        )r÷   r  ©rd   Ú	vp_handles     r2   Úhas_overrideszLayerOverrides.has_overridesÃ  s(   € ð ÐÜ˜Ÿ™Ó(Ð(Ø˜DŸO™OÐ+Ð+r4   c                óD   — t        | j                  | j                  «       y)z€Write :class:`Viewport` overrides back into the :class:`Layer` entity.
        Without a commit() all changes are lost!
        N)Ústore_layer_overridesr  r  r~   s    r2   ÚcommitzLayerOverrides.commitÍ  s   € ô 	˜dŸk™k¨4¯?©?Õ;r4   c                ó`   — | j                   j                  |t        | j                  «      «      S )z†Returns the OverrideAttributes() instance for `vp_handle`, creates a new
        OverrideAttributes() instance if none exist.
        )r  Ú
setdefaultÚdefault_ovr_settingsr  r  s     r2   Ú_acquire_overridesz!LayerOverrides._acquire_overridesÓ  s*   € ð �‰×)Ñ)ØÜ  §¡Ó-ó
ð 	
r4   c                ój   — 	 | j                   |   S # t        $ r t        | j                  «      cY S w xY w)z{Returns the overrides for `vp_handle`, returns the default layer
        settings if no Override() instance exist.
        )r  ÚKeyErrorr  r  r  s     r2   Ú_get_overrideszLayerOverrides._get_overridesÜ  s4   € ð	5Ø—?‘? 9Ñ-Ð-øÜò 	5Ü'¨¯©Ó4Ò4ð	5ús   ‚ ‘2±2c                óf   — t        |«      st        d|› �«      ‚| j                  |«      }||_        y)z^Override the :ref:`ACI`.

        Raises:
            ValueError: invalid color value
        zinvalid ACI value: N)r3   r½   r  r1   ©rd   r  r©   Úvp_overridess       r2   r�   zLayerOverrides.set_colorå  s7   € ô *¨%Ô0ÜÐ2°5°'Ð:Ó;Ð;Ø×.Ñ.¨yÓ9ˆØ ˆÕr4   c                ó<   — | j                  |«      }|j                  S )zbReturns the :ref:`ACI` override or the original layer value if no
        override exist.
        )r  r1   ©rd   r  r   s      r2   rš   zLayerOverrides.get_colorñ  ó    € ð ×*Ñ*¨9Ó5ˆØ×ÑÐr4   c                ó~   — |�#t        j                  |«      st        d|› �«      ‚| j                  |«      }||_        y)zªSet the RGB override as (red, gree, blue) tuple or ``None`` to remove
        the true color setting.

        Raises:
            ValueError: invalid RGB value

        Nzinvalid RGB value: )r
   Úis_valid_rgbr½   r  r¢   r  s       r2   Úset_rgbzLayerOverrides.set_rgbø  sB   € ð Ð¤Y×%;Ñ%;¸EÔ%BÜÐ2°5°'Ð:Ó;Ð;Ø×.Ñ.¨yÓ9ˆØ ˆÕr4   c                ó<   — | j                  |«      }|j                  S )z‹Returns the RGB override or the original layer value if no
        override exist. Returns ``None`` if no true color value is set.
        )r  r¢   r"  s      r2   Úget_rgbzLayerOverrides.get_rgb  r#  r4   c                ól   — d|cxk  rdk  sn t        d|› d�«      ‚| j                  |«      }||_        y)z²Set the transparency override. A transparency of 0.0 is opaque and
        1.0 is fully transparent.

        Raises:
            ValueError: invalid transparency value

        r·   g      ð?zinvalid transparency: z, has to be in the range [0, 1]N)r½   r  rº   r  s       r2   Úset_transparencyzLayerOverrides.set_transparency  sE   € ð �uÔ# Ô#ÜØ(¨¨Ð/NÐOóð ð ×.Ñ.¨yÓ9ˆØ$)ˆÕ!r4   c                ó<   — | j                  |«      }|j                  S )zšReturns the transparency override or the original layer value if no
        override exist. Returns 0.0 for opaque and 1.0 for fully transparent.
        )r  rº   r"  s      r2   Úget_transparencyzLayerOverrides.get_transparency  s    € ð ×*Ñ*¨9Ó5ˆØ×(Ñ(Ð(r4   c                ó–   — || j                   j                  j                  vrt        d|› d�«      ‚| j	                  |«      }||_        y)zqSet the linetype override.

        Raises:
            ValueError: linetype without a LTYPE table entry
        zinvalid linetype: ú$, a linetype table entry is requiredN)r  rr   rð   r½   r  rQ   r  s       r2   Úset_linetypezLayerOverrides.set_linetype"  sN   € ð ˜Ÿ™Ÿ™×1Ñ1Ñ1ÜØ$ U GÐ+OÐPóð ð ×.Ñ.¨yÓ9ˆØ %ˆÕr4   c                ó<   — | j                  |«      }|j                  S )z`Returns the linetype override or the original layer value if no
        override exist.
        )r  rQ   r"  s      r2   rä   zLayerOverrides.get_linetype/  s    € ð ×*Ñ*¨9Ó5ˆØ×$Ñ$Ð$r4   c                ó<   — | j                  |«      }|j                  S )zbReturns the lineweight override or the original layer value if no
        override exist.
        )r  rS   r"  s      r2   Úget_lineweightzLayerOverrides.get_lineweight6  s    € ð ×*Ñ*¨9Ó5ˆØ×&Ñ&Ð&r4   c                óh   — t        |«      st        d|› d�«      ‚| j                  |«      }||_        y)zgSet the lineweight override.

        Raises:
            ValueError: invalid lineweight value
        zinvalid lineweight: r.  N)r<   r½   r  rS   r  s       r2   Úset_lineweightzLayerOverrides.set_lineweight=  s@   € ô )¨Ô/ÜØ& u gÐ-QÐRóð ð ×.Ñ.¨yÓ9ˆØ"'ˆÕr4   c                óx   — |€| j                   j                  «        y	 | j                   |= y# t        $ r Y yw xY w)z˜Discard all attribute overrides for the given :class:`Viewport`
        handle or for all :class:`Viewport` entities if the handle is ``None``.
        N)r  Úclearr  r  s     r2   ræ   zLayerOverrides.discardJ  s@   € ð ÐØ�O‰O×!Ñ!Ô#Øð	Ø—‘ 	Ñ*øÜò 	Ùð	ús   Ÿ- ­	9¸9)rË   r)   r>   )r  úOptional[str]rô   r÷   rø   )r  rú   rô   r  )r  rú   r©   rù   rô   rõ   )r  rú   rô   rù   )r  rú   r©   r  )r  rú   rô   r  )r  rú   r©   rû   rô   rõ   )r  rú   rô   rû   )r  rú   r©   rú   rô   rõ   )r  rú   rô   rú   )r  r7  rô   rõ   )rü   rý   rþ   rÿ   r  r  r  r  r  r�   rš   r&  r(  r*  r,  r/  rä   r2  r4  ræ   r/   r4   r2   r+   r+   °  sW   „ ñó6ô
,ó<ó
ó5ó
!ó ó!ó ó*ó)ó&ó%ó'ó(õ
r4   r+   c                ó®   — t        | j                  | j                  | j                  | j                  j
                  | j                  j                  ¬«      S )z*Returns the default settings of the layer.)r1   r¢   rº   rQ   rS   )r  rO   r¢   rº   rf   rQ   rS   ©rË   s    r2   r  r  W  s@   € äØ�K‰KØ�I‰IØ×'Ñ'Ø—‘×#Ñ#Ø—9‘9×'Ñ'ôð r4   c                óª   — t        d| j                  j                  j                  |«      «      }|�"| j                  j
                  |j                  v S y)zIReturns ``True`` if layer is frozen in VIEWPORT defined by the vp_handle.r#   F)r   rr   rÐ   r¡   rf   rM   Úfrozen_layers)rË   r  Úvps      r2   Úis_layer_frozen_in_vpr=  b  sD   € ä	ˆj˜%Ÿ)™)×,Ñ,×0Ñ0°Ó;Ó	<€BØ	€~Ø�y‰y�~‰~ ×!1Ñ!1Ð1Ð1Ør4   c                ó
  ‡ ‡‡‡‡‡‡‡— d	ˆ ˆfd„Šd
ˆfd„Šd
ˆfd„Šdˆˆfd„Šd
ˆfd„Šˆ ˆˆˆˆfd„}‰ j                   €J d«       ‚‰ j                   j                  Š‰€J d«       ‚t        «       Š‰ j                  s‰S  |«        ‰S )z@Load all VIEWPORT overrides from the layer extension dictionary.c                óN   •— ‰j                  | «      }|€t        ‰«      }|‰| <   |S r>   )r¡   r  )r  ÚovrrË   Ú	overridess     €€r2   Úget_ovrz%load_layer_overrides.<locals>.get_ovrm  s/   ø€ Ø�m‰m˜IÓ&ˆØˆ;Ü& uÓ-ˆCØ#&ˆI�iÑ Øˆ
r4   c                óJ   •—  ‰| «      }t        j                  |«      |_        y r>   )rŸ   r¸   rº   ©r  r©   r@  rB  s      €r2   Ú	set_alphaz'load_layer_overrides.<locals>.set_alphat  s    ø€ Ù�iÓ ˆÜ×1Ñ1°%Ó8ˆÕr4   c                ó²   •—  ‰| «      }t        j                  |«      \  }}|t         j                  k(  r||_        y |t         j                  k(  r||_        y y r>   )rŸ   Údecode_raw_colorÚCOLOR_TYPE_ACIr1   ÚCOLOR_TYPE_RGBr¢   )r  r©   r@  Útype_rî   rB  s        €r2   r�   z'load_layer_overrides.<locals>.set_colorx  sP   ø€ Ù�iÓ ˆÜ×*Ñ*¨5Ó1‰ˆˆtØ”C×&Ñ&Ò&ØˆC�GØ”c×(Ñ(Ò(ØˆC�Gð )r4   c                ót   •— ‰j                  |«      }|�$ ‰| «      }|j                  j                  |_        y y r>   )r¡   rf   rM   rQ   )r  Ú	lt_handleÚltyper@  rÐ   rB  s       €€r2   Ú	set_ltypez'load_layer_overrides.<locals>.set_ltype€  s5   ø€ Ø—‘˜YÓ'ˆØÐÙ˜)Ó$ˆCØ Ÿ9™9Ÿ>™>ˆC�Lð r4   c                ó$   •—  ‰| «      }||_         y r>   )rS   rD  s      €r2   Úset_lwz$load_layer_overrides.<locals>.set_lw†  s   ø€ Ù�iÓ ˆØˆ�r4   c                 ó²  •— ‰j                  «       } t        j                  t        j                  ‰ft        j                  t        j
                  ‰	ft        j                  t        j                  ‰
ft        j                  t        j                  ‰ffD ]A  \  }}}t        d| j                  |«      «      }|€Œ%t        ||«      D ]  \  }} |||«       Œ ŒC y )Nr$   )Úget_extension_dictr   ÚOVR_ALPHA_KEYÚOVR_ALPHA_CODEÚOVR_COLOR_KEYÚOVR_COLOR_CODEÚOVR_LTYPE_KEYÚOVR_LTYPE_CODEÚ
OVR_LW_KEYÚOVR_LW_CODEr   r¡   Ú_load_ovr_values)ÚxdictrÏ   rë   r  Úxrecr  r©   rË   rE  r�   rN  rP  s          €€€€€r2   Úset_xdict_statez-load_layer_overrides.<locals>.set_xdict_stateŠ  s¹   ø€ Ø×(Ñ(Ó*ˆä× Ñ ¤%×"6Ñ"6¸	ÐBÜ× Ñ ¤%×"6Ñ"6¸	ÐBÜ× Ñ ¤%×"6Ñ"6¸	ÐBÜ×Ñœu×0Ñ0°&Ð9ó	"
ÑˆC��vô ˜	 5§9¡9¨S£>Ó2ˆDØÑÜ(8¸¸tÖ(DÑ$�I˜uÙ˜9 eÕ,ñ )Eñ"
r4   ro   zvalid entity database required)r  rú   )r  rú   r©   rù   )r  rú   rL  rú   )rr   rÐ   ÚdictÚhas_extension_dict)	rË   r^  rÐ   rB  rA  rE  r�   rN  rP  s	   ` @@@@@@@r2   r  r  j  s�   ÿ€ öõ9õö*õ÷-ð -ð �9‰9Ð Ð?Ð"?Ó?Ð ØŸ™×+Ñ+€HØÐÐAÐ!AÓAÐä/3«v€IØ×#Ò#ØÐáÔØÐr4   c                óò   — | j                   }|j                  t        j                  «      D ��cg c]  \  }}|‘Œ	 }}}|j                  |«      D ��cg c]  \  }}|‘Œ	 }}}t	        ||«      S c c}}w c c}}w r>   )ÚtagsÚfind_allr   ÚOVR_VP_HANDLE_CODEÚzip)r]  Ú
group_coderb  rë   r©   ÚhandlesrÑ   s          r2   r[  r[  £  sm   € Ø�9‰9€DØ(,¯©´e×6NÑ6NÔ(OÔPÑ(O™˜˜uŠuÐ(O€GÑPØ'+§}¡}°ZÔ'@ÔAÑ'@™˜˜eŠeÐ'@€FÑAÜˆw˜ÓÐùó QùÛAs   ¯A-ÁA3c                óŽ  ‡ ‡‡‡‡— ddl mŠ ˆ fd„Šdˆˆ fd„}dˆ fd„}dˆfd„}ˆˆfd„}ˆˆfd„}ˆˆ ˆfd	„}ˆˆfd
„}‰ j                  €J d«       ‚‰ j                  j                  }	|j	                  «       D �
�ci c]  \  }
}|
|	v r|	|
   j
                  r|
|“Œ c}}
Št        ‰ «      Št         |«       «      }|r> ||t        j                  t        j                  «      } |t        j                  |«       n |t        j                  «       t         |«       «      }|r> ||t        j                  t        j                  «      } |t        j                  |«       n |t        j                  «       t         |«       «      }|r> ||t        j                  t        j                   «      } |t        j"                  |«       n |t        j"                  «       t         |«       «      }|r> ||t        j$                  t        j&                  «      } |t        j(                  |«       y |t        j(                  «       yc c}}
w )ziStore all VIEWPORT overrides in the layer extension dictionary.
    Replaces all existing overrides!
    r   )ÚDXFTagc                 ó\   •— ‰ j                   r‰ j                  «       S ‰ j                  «       S r>   )r`  rR  Únew_extension_dictr9  s   €r2   Ú	get_xdictz(store_layer_overrides.<locals>.get_xdict²  s*   ø€ Ø×#Ò#Ø×+Ñ+Ó-Ð-à×+Ñ+Ó-Ð-r4   c                ó(  •— ddl m}  ‰«       }|j                  | «      }t        ||«      s2|�0t        j                  dt        |«      › dt        ‰«      › d�«       d }|€"|j                  | «      }d|j                  _	        |j                  |«       y )Nr   )r$   zFound entity z as override storage in z but expected XRECORDr    )Úezdxf.entitiesr$   r¡   ru   rÔ   rÕ   rú   Úadd_xrecordrf   ÚcloningÚreset)rÏ   rb  r$   r\  r]  rl  rË   s        €€r2   Úset_xdict_tagsz-store_layer_overrides.<locals>.set_xdict_tags¸  sŠ   ø€ Ý*á“ˆØ�y‰y˜‹~ˆÜ˜$ Ô(¨TÐ-=Ü�L‰LØ¤ D£	˜{Ð*BÄ3ÀuÃ:À,ð O'ð (ôð ˆDØˆ<Ø×$Ñ$ SÓ)ˆDØ ˆD�H‰HÔØ�
‰
�4Õr4   c                óª   •— ‰j                   sy ‰j                  «       }|j                  | «      }|�"|j                  «        |j	                  | «       y y r>   )r`  rR  r¡   Údestroyræ   )rÏ   r\  r]  rË   s      €r2   Údel_xdict_tagsz-store_layer_overrides.<locals>.del_xdict_tagsÈ  sJ   ø€ Ø×'Ò'ØØ×(Ñ(Ó*ˆØ�y‰y˜‹~ˆØÐØ�L‰LŒNØ�M‰M˜#Õð r4   c           
     óž   •— g }| D ]D  \  }}|j                   ‰d|«       ‰t        j                  |«       ‰||«       ‰dd«      g«       ŒF |S )Néf   Ú})Úextendr   rd  )rî   rM   rë   rb  r©   r  ri  s         €r2   Ú	make_tagsz(store_layer_overrides.<locals>.make_tagsÑ  s]   ø€ ØˆÛ $ÑˆE�9Ø�K‰Ká˜3 Ó%Ùœ5×3Ñ3°YÓ?Ù˜4 Ó'Ù˜3 Ó$ð	õð !%ð ˆr4   c               3  ó¸   •K  — ‰j                  «       D ]B  \  } }|j                  ‰j                  k7  sŒ t        j                  |j                  «      | f–— ŒD y ­wr>   )Úitemsrº   rŸ   r¼   ©r  r@  rE   Úvp_exists     €€r2   Úcollect_alphasz-store_layer_overrides.<locals>.collect_alphasÞ  sL   øè ø€ Ø&Ÿn™nÖ.‰NˆI�sØ×Ñ 7×#7Ñ#7Ó7Ü×,Ñ,¨S×-=Ñ-=Ó>À	ÐIÓIñ /ùs
   ƒ0A´&Ac               3  óF  •K  — ‰j                  «       D ]‰  \  } }|j                  ‰j                  k7  s|j                  ‰j                  k7  sŒ9|j                  € t        j                  |j                  «      }nt        j                  |j                  «      }|| f–— Œ‹ y ­wr>   )r|  r1   r¢   rŸ   Úencode_raw_color)r  r@  Ú	raw_colorrE   r~  s      €€r2   Úcollect_colorsz-store_layer_overrides.<locals>.collect_colorsã  sw   øè ø€ Ø&Ÿn™nÖ.‰NˆI�sØ�w‰w˜'Ÿ+™+Ò%¨¯©°G·K±KÓ)?Ø—7‘7�?Ü #× 4Ñ 4°S·W±WÓ =‘Iä #× 4Ñ 4°S·W±WÓ =�IØ Ð*Ó*ñ /ùs   ƒA	B!ÁAB!c               3  ó
  •K  — ‰j                  «       D ]k  \  } }|j                  ‰j                  k7  sŒ ‰j                  j                  j	                  |j                  «      }|€ŒR|j
                  j                  | f–— Œm y ­wr>   )r|  rQ   rr   rð   r¡   rf   rv   )r  r@  rM  rE   rË   r~  s      €€€r2   Úcollect_linetypesz0store_layer_overrides.<locals>.collect_linetypesì  sg   øè ø€ Ø&Ÿn™nÖ.‰NˆI�sØ�|‰|˜w×/Ñ/Ó/ØŸ	™	×+Ñ+×/Ñ/°·±Ó=�ØÑ$ØŸ)™)×*Ñ*¨IÐ5Ó5ñ	 /ùs   ƒ0B´1BÁ&Bc               3  ó’   •K  — ‰j                  «       D ]/  \  } }|j                  ‰j                  k7  sŒ |j                  | f–— Œ1 y ­wr>   )r|  rS   r}  s     €€r2   Úcollect_lineweightsz2store_layer_overrides.<locals>.collect_lineweightsó  s=   øè ø€ Ø&Ÿn™nÖ.‰NˆI�sØ�~‰~ ×!3Ñ!3Ó3Ø—n‘n iÐ/Ó/ñ /ùs
   ƒ0A´ANro   )rÏ   rú   rb  úlist[DXFTag])rÏ   rú   )rî   zlist[tuple[Any, str]]rM   rú   rë   rù   rô   rˆ  )Úezdxf.lldxf.typesri  rr   rÐ   r|  Úis_aliver  Úlistr   ÚOVR_APP_ALPHArT  rS  ÚOVR_APP_COLORrV  rU  ÚOVR_APP_LTYPErX  rW  Ú
OVR_APP_LWrZ  rY  )rË   rA  rr  ru  rz  r  rƒ  r…  r‡  rÐ   r  r@  Úalphasrb  r   rð   Úlineweightsri  rE   rl  r~  s   `                @@@@r2   r  r  ª  sÏ  ü€ õ )ô.öõ õõJõ
+ö6õ0ð
 �9‰9Ð Ð?Ð"?Ó?Ð Ø�y‰y×!Ñ!€Hð (Ÿo™oÔ/ôá/‰NˆI�sØ˜Ñ! x°	Ñ':×'CÒ'Cð 	�3‰Ø/ò€Hô
 # 5Ó)€GÜ‘.Ó"Ó#€FÙÙ˜¤×!4Ñ!4´e×6JÑ6JÓKˆÙ”u×*Ñ*¨DÕ1á”u×*Ñ*Ô+ä‘.Ó"Ó#€FÙÙ˜¤×!4Ñ!4´e×6JÑ6JÓKˆÙ”u×*Ñ*¨DÕ1á”u×*Ñ*Ô+äÑ&Ó(Ó)€IÙÙ˜¤E×$7Ñ$7¼×9MÑ9MÓNˆÙ”u×*Ñ*¨DÕ1á”u×*Ñ*Ô+äÑ*Ó,Ó-€KÙÙ˜¤e×&6Ñ&6¼×8IÑ8IÓJˆÙ”u×'Ñ'¨Õ.á”u×'Ñ'Õ(ùóAs   Á9 I)r1   rù   rô   r÷   )r1   rù   rô   rù   )r;   rù   rô   r÷   )r;   rù   rô   rù   )rô   r  rö   )rË   r)   rô   údict[str, OverrideAttributes])r]  r$   )rË   r)   rA  r’  rô   rõ   )MÚ
__future__r   Útypingr   r   r   r   Útyping_extensionsr   ÚloggingÚdataclassesr	   Úezdxf.lldxfr
   Úezdxf.lldxf.attributesr   r   r   r   r   r,   r   rŸ   r   Úezdxf.lldxf.constr   r   r   r   r   r   r   r   r   r   Úezdxf.auditr   Úezdxf.entities.dxfentityr   r   r   Úfactoryr!   rn  r"   r#   r$   Úezdxf.lldxf.tagwriterr%   Úezdxf.entitydbr&   r'   r(   Ú__all__Ú	getLoggerrÔ   r3   r7   r<   r@   r*   r	  rÂ   Úis_valid_table_nameÚis_integer_boolrk   rc   rW   rX   r)   r  r+   r  r=  r  r[  r  r/   r4   r2   Ú<module>r¤     sý  ðö #ß 5Ó 5Ý "Û Ý !Ý !÷õ õ  Ý ÷÷ ÷ õ #ß MÑ MÝ $áß>Ñ>Ý7Ý'ÝÝ#ò B€Ø	ˆ×	Ñ	˜7Ó	#€ó+ó
9óó,ñ )4Ð4KÈRÓ(PÐ ˜+Ó Pá%Øñ ˜ Y×%BÑ%BÔCÙ˜ QÔ'áØØØ0Ø!ô	
ñ ˜c¨gÀÔEáØ�|¨y×/LÑ/Lô
ñ ØØØØØ×/Ñ/Ø ô
ñ ØØ&ØØ/Ø&ô
ñ $ C°GÔ<á" 3°7Ô;á˜C¨G¸dÔCñO(ó+Ð ñX '9Ð9PÓ&QÐ #Ø)Ð Ø%Ð ð ôk
ˆIó k
ó ðk
ð\	 ÷ð ó ð÷dñ dóNóó6ór ðp)Øðp)Ø:ðp)à	ôp)r4   