
    Og m                    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    Y/var/www/html/public_html/myphp/venv/lib/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138q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(%'  2J2O2OP  2I2N2N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    xx#B%BB#xx 12hh((2G'9- ++ '-DHH$xx 23XX((2F&),**(.DHH% 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    xx~~,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    xx~~

*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    xx~~!!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    TXX^^,r4   c                b    t        | j                  j                         | j                  _        y)zSwitch layer `off` (invisible).Nr   r~   s    r2   offz	Layer.off   s    dhhnn--r4   c                @    t        | j                  j                        S zGet 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     488>>""r4   c                t    | j                         rt        |      nt        |       }|| j                  _        yzSet 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(     #jjl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    
 88L);;txx||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    		NN#56E 5zA~Qx~~%  		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     88*$((//AHHOO 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NN#34E 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     88(?HHOO 01?? 9:: /0NN+tS5K5KE5R.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45L4MQO  xx#E%EE#88== $665dhhmm_BGHHD!wtf,<=>>hhmmsD!%%c4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    xx#E%EE#hhoo!!h-""))+ 	Auu}}W%#aeekk*:g*E&))+Kj(%%h9. &xj0VW - &xj0U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    xx#R%RR#"8,dhh//0DHHLL):;<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    %'''eW-#001B1BC##D%1BT#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88$$;;  **84(..28*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 smOFDDF 8<4	
,/"175/57"!-.#   	ZZ5 5     \\  
 
 H H 
 
 ; ;)1V.$='"
 
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+    yy$C&CC$.u5r4   Nc                L    |t        | j                        S || j                  v S )zReturns ``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(     ((DOO++r4   c                D    t        | j                  | j                         y)zWrite :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     	dkk4??;r4   c                `    | j                   j                  |t        | j                              S )zReturns 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	5s    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25':;;..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)zSet 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25':;;..y9 r4   c                <    | j                  |      }|j                  S )zReturns 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)zSet 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 )zReturns 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$UG+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@     )/&ug-QR  ..y9"'r4   c                x    || j                   j                          y	 | j                   |= y# t        $ r Y yw xY w)zDiscard 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@     OO!!#		* 		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@    KKII''##99'' 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	~yy~~!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/    mmI&;&u-C#&Ii 
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&&&CGc(((CG )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 99>>CL 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 	599S>2D(8t(D -$Iu9e,-		-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*- - 99 ?"?? ++HA!AA/3vI##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[    sg    99D(,e6N6N(OPuuPGP'+}}Z'@AeeAF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    *yy~$(T-=LLD	{*B3u:, O' ( D<$$S)D DHH

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    ''((*yy~LLNMM# r4   c           
         g }| D ]D  \  }}|j                   d|       t        j                  |       ||       dd      g       F |S )Nf   })extendr   rd  )r   rM   r   rb  r   r  ri  s         r2   	make_tagsz(store_layer_overrides.<locals>.make_tags  sb     $ 	E9KK3%533Y?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  sS     &nn. 	JNIs7#7#77,,S-=-=>	II	J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  s|     &nn. 	+NIsww'++%GKK)?77? # 4 4SWW =I # 4 4SWW =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  sl     &nn. 	6NIs||w///		++//=$))**I55		6s   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  sB     &nn. 	0NIs~~!3!33nni//	0s
   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
 99 ?"?? yy!!H (oo/Is!x	':'C'C 	3H
 #5)G."#F!4!4e6J6JKu**D1u**+."#F!4!4e6J6JKu**D1u**+&()IE$7$79M9MNu**D1u**+*,-Ke&6&68I8I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, )44KR(P + P% Y%B%BCQ'0!	
 cgE|y/L/L
 // 
 &/&
 $CG<"37;CGdCO(+ X '99P&Q #) %  k
I k
 k
\	   d dN6r p)p):p)	p)r4   