
    h m                    0   % S SK Jr  S SKJrJrJrJr  S SKJr  S SK	r	S SK
Jr  S SKJr  S SKJrJrJrJrJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJrJ r J!r!J"r"  S SK#J$r$  S SK%J&r&J'r'J(r(  SSK)J*r*  \(       a"  S SK+J,r,J-r-J.r.  S SK/J0r0  S SK1J2r2  S SKJ3r3  S SK#J4r4  / SQr5\	Rl                  " S5      r7S@S jr8SAS jr9SBS jr:SCS jr;\" S0 5      r<S\=S'   \" S\" S\R|                  S9\" SS S 9\" S!S"\8\9S#9\" S$\S%S&9\" S'S(\R~                  S)9\" S*S\S%\R                  \S+9\" S,\"\\:\;S-9\" S.\S/9\" S0\S/9\" S1\S%S&9S2.
5      rA\" \A5      rBS3rCS4rD\* " S5 S6\(5      5       rE\ " S7 S85      5       rF " S9 S:5      rGSDS; jrHSES< jrISFS= jrJSGS> jrK      SHS? jrLg)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                D    SU s=:  =(       a    S:  Os  =(       a    U S:g  $ )Ni    r    acis    F/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/layer.pyis_valid_layer_color_indexr3   .   s    3*#(*    c                *    [        U 5      (       a  U $ S$ )N   )r3   r0   s    r2   fix_layer_colorr7   3   s    ,S1138q8r4   c                \    [         R                  " U 5      (       a  U [        [        4;  a  gg)NTF)r
   is_valid_lineweightr   r   lws    r2   is_valid_layer_lineweightr<   7   s(    $$R(((*<==r4   c                Z    U [         [        4;   a  [        $ [        R                  " U 5      $ 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                  8  ^  \ rS rSrSrSr\" \\\	5      r
SS0rSrSrSrS	r S(   S)U 4S
 jjjrS*U 4S jjrS rS+S jrS,S jrS,S jrS+S jrS,S jrS,S jrS+S jrS+S jrS,S jrS,S jrS-S jrS.S jr\S/S j5       r \ RB                  S0S j5       r \S-S j5       r"\"RB                  S1S j5       r"\S2S j5       r#\#RB                  S3S j5       r#\S4S j5       r$\$RB                  S5S  j5       r$S6S! jr%S7S" jr&S8S# jr'S9U 4S$ jjr(S:U 4S% jjr)S;U 4S& jjr*S'r+U =r,$ )<r)   x   zDXF LAYER entityLAYERrM   0r             c                `   > [         TU ]  U5      nU(       a  UR                  U[        5        U$ r>   )superload_dxf_attribssimple_dxfattribs_loader#acdb_layer_table_record_group_codes)self	processordxf	__class__s      r2   rb   Layer.load_dxf_attribs   s2     g&y1..8 
r4   c                  > [         TU ]  U5        UR                  [        :  aH  UR	                  [
        [        R                  5        UR	                  [
        [        R                  5        U R                  R                  U/ SQ5        g )NrL   )ra   export_entityrH   r   
write_tag2r   r*   rM   acdb_layer_table_recordrg   export_dxf_attribs)re   	tagwriterrh   s     r2   rk   Layer.export_entity   sf    i(%'  2J2O2OP  2I2N2NO##	
r4   c                
   U R                   c   S5       eU R                  R                  S5      (       dW  U R                   R                  S   n[	        U[
        5      (       a  UR                  R                  nOUnX R                  l        U R                  R                  S5      (       dX  U R                   R                  S   n[	        U[
        5      (       a  UR                  R                  nOUnX R                  l	        g g )Nvalid DXF document requiredrU   GlobalrT   Normal)
docrg   hasattr	materials
isinstancer   handlerU   
plotstylesrT   )re   global_ry   normals       r2   set_required_attributesLayer.set_required_attributes   s    xx#B%BB#xx 122hh((2G'9-- ++ '-HH$xx 233XX((2F&),,**(.HH% 4r4   c                V    U R                   R                  [        R                  -  S:  $ )z$Returns ``True`` if layer is frozen.r   rg   rN   r)   FROZENre   s    r2   	is_frozenLayer.is_frozen   s    xx~~,q00r4   c                p    U R                   R                  [        R                  -  U R                   l        g)zFreeze layer.Nr   r   s    r2   freezeLayer.freeze   s    %,,6r4   c                p    U R                   R                  [        R                  -  U R                   l        g)zThaw layer.N)rg   rN   r)   THAWr   s    r2   thaw
Layer.thaw   s    %**4r4   c                V    U R                   R                  [        R                  -  S:  $ )z$Returns ``True`` if layer is locked.r   rg   rN   r)   LOCKr   s    r2   	is_lockedLayer.is_locked   s    xx~~

*Q..r4   c                p    U R                   R                  [        R                  -  U R                   l        g)zZLock layer, entities on this layer are not editable - just important
in CAD applications.
Nr   r   s    r2   lock
Layer.lock   s      %**4r4   c                p    U R                   R                  [        R                  -  U R                   l        g)zXUnlock layer, entities on this layer are editable - just important
in CAD applications.
N)rg   rN   r)   UNLOCKr   s    r2   unlockLayer.unlock   s      %,,6r4   c                4    U R                   R                  S:  $ )z!Returns ``True`` if layer is off.r   )rg   rO   r   s    r2   is_offLayer.is_off   s    xx~~!!r4   c                ,    U R                  5       (       + $ )z Returns ``True`` if layer is on.)r   r   s    r2   is_onLayer.is_on   s    ;;=  r4   c                `    [        U R                  R                  5      U R                  l        g)zSwitch layer `on` (visible).Nabsrg   rO   r   s    r2   onLayer.on   s    TXX^^,r4   c                b    [        U R                  R                  5      * U R                  l        g)zSwitch layer `off` (invisible).Nr   r   s    r2   off	Layer.off   s    dhhnn--r4   c                @    [        U R                  R                  5      $ zxGet layer color, safe method for getting the layer color, because
:attr:`dxf.color` is negative for layer status `off`.
r   r   s    r2   	get_colorLayer.get_color   s     488>>""r4   c                |    U R                  5       (       a  [        U5      O[        U5      * nXR                  l        gzxSet layer color, safe method for setting the layer color, because
:attr:`dxf.color` is negative for layer status `off`.
N)r   r   rg   rO   )re   rO   s     r2   	set_colorLayer.set_color   s(     #jjllE
Ur4   c                    U R                   R                  S5      (       a/  [        R                  " U R                   R	                  S5      5      $ g)zZReturns RGB true color as (r, g, b)-tuple or None if attribute
dxf.true_color is not set.
rP   N)rg   rv   clrint2rgbgetr   s    r2   rgb	Layer.rgb   s8    
 88L));;txx||L9::r4   c                d    U R                   R                  S[        R                  " U5      5        g)z8Set RGB true color as (r, g, b)-tuple e.g. (12, 34, 56).rP   N)rg   setr   rgb2int)re   r   s     r2   r   r      s     	\3;;s#34r4   c                "    U R                  5       $ r   )r   r   s    r2   rO   Layer.color   s    
 ~~r4   c                &    U R                  U5        gr   )r   re   values     r2   rO   r     s    
 	ur4   c                     U R                  [        5      n[        U5      S:  a  US   R                  $ g! [         a     gf = f)Nr     )	get_xdatarW   lenr   r   )re   xdatas     r2   descriptionLayer.description  sH    		NN#56E 5zA~Qx~~%  		s   6 
AAc                   U R                   (       aG  [        U R                   R                  ;  a)  U R                   R                  R                  [        5        U R	                  [        5        U R                  [        SSU4/5        g )N)  r   r   )ru   rW   appidsnewdiscard_xdata	set_xdatar   s     r2   r   r     sY     88*$((//AHHOO 23-.)Ju+FGr4   c                     U R                  [        5      nUS   R                  nUS-  (       a  [        R                  " U5      $  g! [
         a     gf = f)Nr   i           )r   rX   r   r   transparency2floatr   )re   r   ts      r2   transparencyLayer.transparency"  s[    	1NN#34E aA9}--a00    		s   A 
AAc                n   U R                   (       aG  [        U R                   R                  ;  a)  U R                   R                  R                  [        5        SUs=::  a  S::  aF  O  OCU R	                  [        5        U R                  [        S[        R                  " U5      4/5        g [        S5      e)Nr   r    i/  zValue out of range [0, 1].)	ru   rX   r   r   r   r   r   float2transparency
ValueErrorr   s     r2   r   r   /  sz     88(?HHOO 01??/0NN+tS5K5KE5R.S-TU9::r4   c                $   [         R                  " U5      (       d  [        S[         S35      eU R                  c   S5       eU R                  R
                  nU R                  R                  R                  5       S;   a#  [        SU R                  R                   S35      eUR                  U5      (       a  [        SU S	35      eU R                  R                  nXR                  l        UR                  X05        U R                  X15        g)
a  
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   ru   layersrg   rM   lower	has_entryreplace_rename_layer_references)re   rM   r   olds       r2   renameLayer.rename:  s    8 ,,T2245L4MQO  xx#E%EE#88== $665dhhmm_BGHHD!!wtf,<=>>hhmms!%%c0r4   c                H   U R                   c   S5       eU R                   R                  R                  nU" U5      nU R                   R                  R	                  5        H  nUR
                  R                  S5      (       a0  U" UR
                  R                  5      U:X  a  X%R
                  l        UR                  5       nUS:X  a  UR                  X5        M|  US:X  a  [        R                  SU S35        M  US:X  d  M  [        R                  SU S35        M     g )	Nr   layerVIEWPORTLAYER_FILTERzrenaming layer "z"" - document contains LAYER_FILTERLAYER_INDEXz!" - document contains LAYER_INDEX)ru   r   keyentitydbvaluesrg   rv   r   dxftyperename_frozen_layerloggerdebug)re   old_namenew_namer   old_keyeentity_types          r2   r   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                    [        U 5      $ )z:Returns the :class:`LayerOverrides` object for this layer.)r+   r   s    r2   get_vp_overridesLayer.get_vp_overrides|  s    d##r4   c                   > U R                   c   S5       e[        TU ]	  U5        UR                  U R                  R
                  5        UR                  U R                  R                  S5      5        g)z5Register required resources to the resource registry.Nz+LAYER entity must be assigned to a documentrU   )ru   ra   register_resourcesadd_linetyperg   rQ   
add_handler   )re   registryrh   s     r2   r   Layer.register_resources  sZ    xx#R%RR#"8,dhh//0DHHLL):;<r4   c                  > [        U[        5      (       d   e[        TU ]  X5        UR	                  U R
                  R                  5      U R
                  l        UR                  XSSS9  UR
                  R                  S5        UR
                  R                  S5        UR                  5         UR                  5         g)z3Translate resources from self to the copied entity.rU   T)rI   rT   rV   N)rx   r)   ra   map_resourcesget_linetyperg   rQ   map_existing_handlediscardr}   discard_extension_dict)re   clonemappingrh   s      r2   r   Layer.map_resources  s    %''''e-#001B1BC##D1BT#R		,-		*% 	%%' 	$$&r4   c                >  > [         TU ]  U5        U R                  R                  nUR                  R
                  R                  U5      (       a  g SU R                  l        UR                  [        R                  SU SU R                  R                   S3U US9  g )NrK   zReplaced undefined linetype z in layer 'z' by CONTINUOUS)codemessage
dxf_entitydata)ra   auditrg   rQ   ru   	linetypesr   fixed_errorr   UNDEFINED_LINETYPErM   )re   auditorrQ   rh   s      r2   r  Layer.audit  s    g88$$;;  **844(..28*KVef	 	 	
r4   r/   r>   )rf   zOptional[SubclassProcessor]returnr"   )ro   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____firstlineno____doc__DXFTYPEr   r   r*   rm   
DXFATTRIBSDEFAULT_ATTRIBSr   r   r   r   rb   rk   r}   r   r   r   r   r   r   r   r   r   r   r   r   propertyr   setterrO   r   r   r   r   r   r   r   r  __static_attributes____classcell__)rh   s   @r2   r)   r)   x   s|   G,.EJ smOFDDF 8<4	 
,/"175/57"!-.#   	ZZ5 5     \\  
 
 H H 
 
 ; ;)1V.$='"
 
r4   r)   c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   Srg)OverrideAttributesi  r  r1   Optional[clr.RGB]r   r  r   r  rQ   rS   r/   N)r  r  r  r  __annotations__r   r/   r4   r2   r#  r#    s    	H	MOr4   r#  c                      \ rS rSrSrSS jrSSS jjrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSS jrSS jrS S jrS!S jrSS jrSS jrSS"S jjrSrg)#r+   i  a  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    UR                   c   S5       eXl        [        U5      U l        g )Nrr   )ru   _layerload_layer_overrides
_overrides)re   r   s     r2   __init__LayerOverrides.__init__  s)    yy$C&CC$.u5r4   Nc                N    Uc  [        U R                  5      $ XR                  ;   $ )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*  re   	vp_handles     r2   has_overridesLayerOverrides.has_overrides  s&     ((OO++r4   c                D    [        U R                  U R                  5        g)zpWrite :class:`Viewport` overrides back into the :class:`Layer` entity.
Without a commit() all changes are lost!
N)store_layer_overridesr(  r*  r   s    r2   commitLayerOverrides.commit  s     	dkk4??;r4   c                `    U R                   R                  U[        U R                  5      5      $ )zvReturns the OverrideAttributes() instance for `vp_handle`, creates a new
OverrideAttributes() instance if none exist.
)r*  
setdefaultdefault_ovr_settingsr(  r.  s     r2   _acquire_overrides!LayerOverrides._acquire_overrides  s*     )) -
 	
r4   c                l     U R                   U   $ ! [         a    [        U R                  5      s $ f = f)zkReturns the overrides for `vp_handle`, returns the default layer
settings if no Override() instance exist.
)r*  KeyErrorr8  r(  r.  s     r2   _get_overridesLayerOverrides._get_overrides  s4    	5??9-- 	5'44	5s    33c                n    [        U5      (       d  [        SU 35      eU R                  U5      nX#l        g)zFOverride the :ref:`ACI`.

Raises:
    ValueError: invalid color value
zinvalid ACI value: N)r3   r   r9  r1   re   r/  r   vp_overridess       r2   r   LayerOverrides.set_color  s8     *%0025':;;..y9 r4   c                <    U R                  U5      nUR                  $ )zRReturns the :ref:`ACI` override or the original layer value if no
override exist.
)r=  r1   re   r/  rA  s      r2   r   LayerOverrides.get_color        **95r4   c                    Ub)  [         R                  " U5      (       d  [        SU 35      eU R                  U5      nX#l        g)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   r9  r   r@  s       r2   set_rgbLayerOverrides.set_rgb  sC     Y%;%;E%B%B25':;;..y9 r4   c                <    U R                  U5      nUR                  $ )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   rD  s      r2   get_rgbLayerOverrides.get_rgb  rF  r4   c                n    SUs=::  a  S::  d  O  [        SU S35      eU R                  U5      nX#l        g)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   r9  r   r@  s       r2   set_transparencyLayerOverrides.set_transparency  sC     u##(/NO  ..y9$)!r4   c                <    U R                  U5      nUR                  $ )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   rD  s      r2   get_transparencyLayerOverrides.get_transparency  s      **95(((r4   c                    X R                   R                  R                  ;  a  [        SU S35      eU R	                  U5      nX#l        g)zYSet the linetype override.

Raises:
    ValueError: linetype without a LTYPE table entry
zinvalid linetype: $, a linetype table entry is requiredN)r(  ru   r	  r   r9  rQ   r@  s       r2   set_linetypeLayerOverrides.set_linetype"  sJ     111$UG+OP  ..y9 %r4   c                <    U R                  U5      nUR                  $ )zPReturns the linetype override or the original layer value if no
override exist.
)r=  rQ   rD  s      r2   r   LayerOverrides.get_linetype/  s      **95$$$r4   c                <    U R                  U5      nUR                  $ )zRReturns the lineweight override or the original layer value if no
override exist.
)r=  rS   rD  s      r2   get_lineweightLayerOverrides.get_lineweight6  s      **95&&&r4   c                p    [        U5      (       d  [        SU S35      eU R                  U5      nX#l        g)zOSet the lineweight override.

Raises:
    ValueError: invalid lineweight value
zinvalid lineweight: rU  N)r<   r   r9  rS   r@  s       r2   set_lineweightLayerOverrides.set_lineweight=  sA     )//&ug-QR  ..y9"'r4   c                |    Uc  U R                   R                  5         g U R                   U	 g! [         a     gf = f)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   LayerOverrides.discardJ  s@     OO!!#		* 		s   . 
;;)r(  r*  )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/  rc  r  r  )r  r  r  r  r  r+  r0  r4  r9  r=  r   r   rI  rL  rO  rR  rV  r   r[  r^  r   r   r/   r4   r2   r+   r+     s\    6
,<
5
! ! *)&%'(
 
r4   r+   c                    [        U R                  U R                  U R                  U R                  R
                  U R                  R                  S9$ )z*Returns the default settings of the layer.)r1   r   r   rQ   rS   )r#  rO   r   r   rg   rQ   rS   r   s    r2   r8  r8  W  s@    KKII''##99'' r4   c                    [        SU R                  R                  R                  U5      5      nUb#  U R                  R
                  UR                  ;   $ g)zIReturns ``True`` if layer is frozen in VIEWPORT defined by the vp_handle.r#   F)r   ru   r   r   rg   rM   frozen_layers)r   r/  vps      r2   is_layer_frozen_in_vpri  b  sD    	j%)),,00;	<B	~yy~~!1!111r4   c                .  ^ ^^^^^^^ S	U U4S jjmS
U4S jjmS
U4S jjmSUU4S jjmS
U4S jjmU UUUU4S jnT R                   c   S5       eT R                   R                  mTc   S5       e[        5       mT R                  (       d  T$ U" 5         T$ )z@Load all VIEWPORT overrides from the layer extension dictionary.c                P   > TR                  U 5      nUc  [        T5      nUTU '   U$ r>   )r   r8  )r/  ovrr   	overridess     r2   get_ovr%load_layer_overrides.<locals>.get_ovrm  s/    mmI&;&u-C#&Ii 
r4   c                L   > T" U 5      n[         R                  " U5      Ul        g r>   )r   r   r   r/  r   rl  rn  s      r2   	set_alpha'load_layer_overrides.<locals>.set_alphat  s     i 11%8r4   c                   > T" U 5      n[         R                  " U5      u  p4U[         R                  :X  a  XBl        g U[         R                  :X  a  XBl        g g r>   )r   decode_raw_colorCOLOR_TYPE_ACIr1   COLOR_TYPE_RGBr   )r/  r   rl  type_r  rn  s        r2   r   'load_layer_overrides.<locals>.set_colorx  sJ    i **51C&&&Gc(((G )r4   c                v   > TR                  U5      nUb$  T" U 5      nUR                  R                  Ul        g g r>   )r   rg   rM   rQ   )r/  	lt_handleltyperl  r   rn  s       r2   	set_ltype'load_layer_overrides.<locals>.set_ltype  s5    Y')$C 99>>CL r4   c                "   > T" U 5      nXl         g r>   )rS   rq  s      r2   set_lw$load_layer_overrides.<locals>.set_lw  s    i r4   c                   > TR                  5       n [        R                  [        R                  T4[        R                  [        R
                  T	4[        R                  [        R                  T
4[        R                  [        R                  T44 HB  u  pn[        SU R                  U5      5      nUc  M&  [        XB5       H  u  pVU" XV5        M     MD     g )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   rr  r   r}  r  s          r2   set_xdict_state-load_layer_overrides.<locals>.set_xdict_state  s    ((*  %"6"6	B  %"6"6	B  %"6"6	Bu00&9	"
Cv 	599S>2D(8(D$I9, )E"
r4   rr   zvalid entity database required)r/  r  )r/  r  r   r  )r/  r  r{  r  )ru   r   dicthas_extension_dict)	r   r  r   rn  rm  rr  r   r}  r  s	   ` @@@@@@@r2   r)  r)  j  s     9* *- - 99 ?"?? ++HA!AA/3vI##r4   c                    U R                   nUR                  [        R                  5       VVs/ s H  u  p4UPM	     nnnUR                  U5       VVs/ s H  u  p4UPM	     nnn[	        XV5      $ s  snnf s  snnf r>   )tagsfind_allr   OVR_VP_HANDLE_CODEzip)r  
group_coder  r  r   handlesr   s          r2   r  r    sg    99D(,e6N6N(OP(Ou(OGP'+}}Z'@A'@e'@FAw QAs   A0A6c                  ^ ^^^^ SSK Jm  U 4S jmSUU 4S jjnSU 4S jjnSU4S jjnUU4S jnUU4S jnUU U4S	 jnUU4S
 jnT R                  c   S5       eT R                  R                  n	UR	                  5        V
Vs0 s H#  u  pX;   d  M  X   R
                  (       d  M!  X_M%     snn
m[        T 5      m[        U" 5       5      nU(       a>  U" U[        R                  [        R                  5      nU" [        R                  U5        OU" [        R                  5        [        U" 5       5      nU(       a>  U" U[        R                  [        R                  5      nU" [        R                  U5        OU" [        R                  5        [        U" 5       5      nU(       a>  U" U[        R                  [        R                   5      nU" [        R"                  U5        OU" [        R"                  5        [        U" 5       5      nU(       a>  U" U[        R$                  [        R&                  5      nU" [        R(                  U5        gU" [        R(                  5        gs  snn
f )zaStore all VIEWPORT overrides in the layer extension dictionary.
Replaces all existing overrides!
r   )DXFTagc                 f   > T R                   (       a  T R                  5       $ T R                  5       $ r>   )r  r  new_extension_dictre  s   r2   	get_xdict(store_layer_overrides.<locals>.get_xdict  s*    ##++--++--r4   c                4  > SSK Jn  T" 5       nUR                  U 5      n[        XB5      (       d3  Ub0  [        R                  S[        U5       S[        T5       S35        S nUc"  UR                  U 5      nSUR                  l	        UR                  U5        g )Nr   )r$   zFound entity z as override storage in z but expected XRECORDr    )ezdxf.entitiesr$   r   rx   r   r   r  add_xrecordrg   cloningreset)r   r  r$   r  r  r  r   s        r2   set_xdict_tags-store_layer_overrides.<locals>.set_xdict_tags  s    *yy~$((T-=LLD	{*B3u:, O' ( D<$$S)D DHH

4r4   c                   > TR                   (       d  g TR                  5       nUR                  U 5      nUb"  UR                  5         UR	                  U 5        g g r>   )r  r  r   destroyr   )r   r  r  r   s      r2   del_xdict_tags-store_layer_overrides.<locals>.del_xdict_tags  sJ    ''((*yy~LLNMM# r4   c           
        > / nU  HC  u  pEUR                  T" SU5      T" [        R                  U5      T" X$5      T" SS5      /5        ME     U$ )Nf   })extendr   r  )r  rM   r  r  r   r/  r  s         r2   	make_tags(store_layer_overrides.<locals>.make_tags  sY     $EKK3%533Y?4'3$	 !% r4   c               3     >#    TR                  5        HE  u  pUR                  TR                  :w  d  M!  [        R                  " UR                  5      U 4v   MG     g 7fr>   )itemsr   r   r   r/  rl  rE   vp_exists     r2   collect_alphas-store_layer_overrides.<locals>.collect_alphas  sI     &nn.NI7#7#77,,S-=-=>	II /s
   .A)Ac               3  R  >#    TR                  5        H  u  pUR                  TR                  :w  d  UR                  TR                  :w  d  M;  UR                  c!  [        R                  " UR                  5      nO [        R                  " UR                  5      nX 4v   M     g 7fr>   )r  r1   r   r   encode_raw_color)r/  rl  	raw_colorrE   r  s      r2   collect_colors-store_layer_overrides.<locals>.collect_colors  sr     &nn.NIww'++%GKK)?77? # 4 4SWW =I # 4 4SWW =I** /s   AB'AB'c               3    >#    TR                  5        Ho  u  pUR                  TR                  :w  d  M!  TR                  R                  R	                  UR                  5      nUc  MU  UR
                  R                  U 4v   Mq     g 7fr>   )r  rQ   ru   r	  r   rg   ry   )r/  rl  r|  rE   r   r  s      r2   collect_linetypes0store_layer_overrides.<locals>.collect_linetypes  sd     &nn.NI||w///		++//=$))**I55	 /s   .B0B)Bc               3     >#    TR                  5        H1  u  pUR                  TR                  :w  d  M!  UR                  U 4v   M3     g 7fr>   )r  rS   r  s     r2   collect_lineweights2store_layer_overrides.<locals>.collect_lineweights  s:     &nn.NI~~!3!33nni// /s
   .A
A
Nrr   )r   r  r  list[DXFTag])r   r  )r  zlist[tuple[Any, str]]rM   r  r  r  r  r  )ezdxf.lldxf.typesr  ru   r   r  is_aliver8  listr   OVR_APP_ALPHAr  r  OVR_APP_COLORr  r  OVR_APP_LTYPEr  r  
OVR_APP_LWr  r  )r   rm  r  r  r  r  r  r  r  r   r/  rl  alphasr  r   r	  lineweightsr  rE   r  r  s   `                @@@@r2   r3  r3    s    ).  J
+60
 99 ?"?? yy!!H (oo//NI! 	'/':'C'C 		/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   I+I+)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)   rm  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!   r  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_boolrm   rd   rW   rX   r)   r#  r+   r8  ri  r)  r  r3  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   