
    Og6                    z   d dl mZ d dl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 d dl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 d
dlm Z m!Z!m"Z" d
dl#m$Z$m%Z% d
dl&m'Z' d
dl(m)Z) d
dl*m+Z+ d dl,m-Z-m.Z. erd dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 g dZ7 ed ed       edejp                  e       edd
e
jr                  e       edd
e
jr                  e       edd
e
jr                  e       edd        ed ejp                  ed!e
jt                  e"       ed#d       ed$d% e
jv                  d&d'       e
jx                  d&d'             ed(d  e
jv                  d d)       e
jx                  d d)            d*
      Z= ee=      Z> G d+ d,e$      Z?e) G d- d.e?             Z@e) G d/ d0e?             ZAe) G d1 d2e?             ZBe) G d3 d4e?             ZC ed5 ed
       ed6      d7      ZD eeD      ZE G d8 d9e'      ZFe) G d: d;eF             ZGe) G d< d=eF             ZHe) G d> d?eF             ZIy@)A    )annotations)TYPE_CHECKINGUnionIterableOptional)Self)	validator)DXFAttrDXFAttributesDefSubclassXTypeRETURN_DEFAULTgroup_code_mapping)SUBCLASS_MARKERDXF2000DXFTypeError)const)Tags)NULLVECZ_AXISUVecMatrix44Vec3   )
base_classSubclassProcessor	DXFEntity)
DXFGraphicacdb_entity)	DXFObject)register_entity)default_copy)InsertTransformationErrorInsertCoordinateSystem)Drawing)DXFNamespace)AbstractTagWriter)xref)PdfUnderlayDwfUnderlayDgnUnderlayPdfDefinitionDgnDefinitionDwfDefinitionUnderlayUnderlayDefinitionAcDbUnderlayReferenceiT  
   )xtypedefault)   )r4   r	   fixer*   +   2   )r4      T)r3   r4   optionalr	   r6   i  i  d      e   i  Q   
underlay_def_handleinsertscale_xscale_yscale_zrotation	extrusionflagscontrastfadec                  :    e Zd ZdZ eeee      Ze	Z
d fdZefd dZ	 d!	 	 	 d" fdZd#dZd$ fdZd Zd% fdZd&d	Zd' fd
Zd( fdZ	 	 	 	 	 	 d)dZd*dZd+dZed        Zej6                  d,d       Zed-d       Zej6                  d.d       Zed-d       Zej6                  d.d       Zed-d       Zej6                  d.d       Zed-d       Zej6                  d/d       Zed0d       Z e j6                  d1d       Z d,dZ!ddZ"d fdZ#d2dZ$ xZ%S )3r/   zVirtual UNDERLAY entity.c                >    t         |           g | _        d | _        y N)super__init___boundary_path_underlay_defself	__class__s    \/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/underlay.pyrO   zUnderlay.__init__t   s    *,;?    c                ~    t        |t              sJ t        | j                        |_        | j                  |_        y rM   )
isinstancer/   listrP   rQ   )rS   entitycopy_strategys      rU   	copy_datazUnderlay.copy_datay   s3    &(+++ $T%8%8 9#11rV   c                v   t         |   |      }|r|j                  d      }|rct        | j	                  |            }|j                  |t        |       t        | j                        dk  r|| _	        | j                          |S t        j                  d| j                   d|j                   d      |S )N   subclassz,missing 'AcDbUnderlayReference' subclass in z(#))rN   load_dxf_attribssubclass_by_indexr   load_boundary_pathfast_load_dxfattribsacdb_underlay_group_codeslenboundary_pathdxfreset_boundary_pathr   DXFStructureErrorDXFTYPEhandle)rS   	processorri   tagsrT   s       rU   rb   zUnderlay.load_dxf_attribs~   s     g&y1..q1DD33D9:..2T /  t))*Q."DH,,. 
	 --B||nBszzl!5  
rV   c              #     K   g }|D ]1  }|j                   dk(  r|j                  |j                         .| 3 || _        y w)N   )codeappendvaluerP   )rS   ro   pathtags       rU   rd   zUnderlay.load_boundary_path   sD      	Cxx2~CII&			
 #s   AAc                    t         |   |       |j                  }|j                  | j                  j                  dd             | _        y )NrA   )rN   post_load_hookentitydbgetri   rQ   )rS   docdbrT   s      rU   rx   zUnderlay.post_load_hook   s:    s#\\VVDHHLL1F$MNrV   c                   t        | j                  j                  t              sJ | j                  }t        |t
              r?| j                  |j                  u r&|j                  | j                  j                         y y y rM   )rX   ri   rm   strrQ   r0   r{   append_reactor_handlerS   underlay_defs     rU   post_bind_hookzUnderlay.post_bind_hook   sb    $((//3///))|%78L,,,..txx? - 9rV   c                    t         |   |       |j                  t        t        j
                         | j                  j                  |g d       | j                  |       y)(Export entity specific data as DXF tags.r@   N)	rN   export_entity
write_tag2r   acdb_underlaynameri   export_dxf_attribsexport_boundary_pathrS   	tagwriterrT   s     rU   r   zUnderlay.export_entity   sP    i(_m.@.@A##	
 	!!),rV   c                P    | j                   D ]  }|j                  d|d d         y )Nrq   r^   )rh   write_vertex)rS   r   vertexs      rU   r   zUnderlay.export_boundary_path   s-    (( 	3F""2vbqz2	3rV   c                    t         |   |       t        | j                  t              r0|j                  | j                  j                  j                         y y rM   )rN   register_resourcesrX   rQ   r0   
add_handleri   rm   )rS   registryrT   s     rU   r   zUnderlay.register_resources   sF    "8,d((*<= 2 2 6 6 = => >rV   c                   t        |t              sJ t        |   ||       | j	                  ||      }||_        |j                  j                  |j                  _        |j                  |j                  j                         y rM   )
rX   r/   rN   map_resourcesmap_underlay_defrQ   ri   rm   rA   r   )rS   clonemappingunderlay_def_copyrT   s       rU   r   zUnderlay.map_resources   sm    %***eW- 11%A/(9(=(=(D(D		%//		0@0@ArV   c                   | j                   }t        |t              sJ |j                  |j                  j
                        }t        |t              sJ |j                  }|J |j                  j                  |j                        j                  |      r|S |j                  j                  fd      }j                  ||       |S )Nc                    | vS rM    )kunderlay_dicts    rU   <lambda>z+Underlay.map_underlay_def.<locals>.<lambda>   s    a}6L rV   )rQ   rX   r0   get_reference_of_copyri   rm   r{   rootdictget_required_dictacad_dict_namefind_keyobjectsnext_underlay_keytake_ownership)rS   r   r   r   r   r{   keyr   s          @rU   r   zUnderlay.map_underlay_def   s     )),(:;;;#99,:J:J:Q:QR+-?@@@ii66|7R7RS!!"34$$ kk++,LM$$S*;<  rV   c                    || _         |j                  j                  | j                  _        |j	                  | j                  j                         y rM   )rQ   ri   rm   rA   r   r   s     rU   set_underlay_defzUnderlay.set_underlay_def   s8    )'3'7'7'>'>$**488??;rV   c                    | j                   S rM   )rQ   rS   s    rU   get_underlay_defzUnderlay.get_underlay_def   s    !!!rV   c                    | j                   S rM   )rP   r   s    rU   rh   zUnderlay.boundary_path   s    """rV   c                &    | j                  |       y rM   )set_boundary_pathrS   verticess     rU   rh   zUnderlay.boundary_path   s    x(rV   c                b    t        | j                  j                  t        j                  z        S rM   )boolri   rH   r   UNDERLAY_CLIPPINGr   s    rU   clippingzUnderlay.clipping   s     DHHNNU%<%<<==rV   c                D    | j                  t        j                  |       y rM   )set_flag_stater   r   rS   states     rU   r   zUnderlay.clipping   s    E33U;rV   c                b    t        | j                  j                  t        j                  z        S rM   )r   ri   rH   r   UNDERLAY_ONr   s    rU   onzUnderlay.on   s     DHHNNU%6%6677rV   c                D    | j                  t        j                  |       y rM   )r   r   r   r   s     rU   r   zUnderlay.on  s    E--u5rV   c                b    t        | j                  j                  t        j                  z        S rM   )r   ri   rH   r   UNDERLAY_MONOCHROMEr   s    rU   
monochromezUnderlay.monochrome  s     DHHNNU%>%>>??rV   c                D    | j                  t        j                  |       y rM   )r   r   r   r   s     rU   r   zUnderlay.monochrome
  s    E55u=rV   c                b    t        | j                  j                  t        j                  z        S rM   )r   ri   rH   r   UNDERLAY_ADJUST_FOR_BGr   s    rU   adjust_for_backgroundzUnderlay.adjust_for_background  s     DHHNNU%A%AABBrV   c                D    | j                  t        j                  |       y rM   )r   r   r   r   s     rU   r   zUnderlay.adjust_for_background  s    E88%@rV   c                    | j                   j                  | j                   j                  | j                   j                  fS rM   )ri   rC   rD   rE   r   s    rU   scalingzUnderlay.scaling  s-    xx!1!14883C3CCCrV   c                    t        |t        t        f      r|||}}}n|\  }}}|| j                  _        || j                  _        || j                  _        y rM   )rX   floatintri   rC   rD   rE   )rS   scalexyzs        rU   r   zUnderlay.scaling  sL    eeS\*UE!qAGAq!rV   c                n    t        |      }t        |      r|| _        d| _        y | j	                          y )NT)rY   rg   rP   r   rj   r   s     rU   r   zUnderlay.set_boundary_path$  s-    >x="*D DM$$&rV   c                     g | _         d| _        y)zRemoves the clipping path.FN)rP   r   r   s    rU   rj   zUnderlay.reset_boundary_path-  s     rV   c                    | j                   sy | j                  r/| j                  j                  | j                  j                         | `t        |           y rM   )is_aliverQ   discard_reactor_handleri   rm   rP   rN   destroyrR   s    rU   r   zUnderlay.destroy2  sB    }}55dhhooFrV   c                   | j                   }t        t        |j                        |j                  |j
                  |j                  f|j                  |j                        }	 |j                  |      }|j                  |_        |j                  |_        |j                  |_        |j                  |_        |j                  |_        |j                  |_        | j                  |       | S # t        $ r t        d      w xY w)a  Transform UNDERLAY entity by transformation matrix `m` inplace.

        Unlike the transformation matrix `m`, the UNDERLAY entity can not
        represent a non-orthogonal target coordinate system and an
        :class:`InsertTransformationError` will be raised in that case.

        )rB   r   rF   rG   zLUNDERLAY entity can not represent a non-orthogonal target coordinate system.)ri   r$   r   rB   rC   rD   rE   rF   rG   	transformr#   scale_factor_xscale_factor_yscale_factor_zpost_transform)rS   mri   source_systemtarget_systems        rU   r   zUnderlay.transform;  s     hh.

#;;S[[9\\mm	
	)33A6M
 #))
$--%//#22#22#22A ) 	+^ 	s   %C/ /D)returnNone)rZ   r   r   r   rM   rn   zOptional[SubclassProcessor]r   r&   )ro   r   r   r   )r{   r%   r   r   r   r'   r   r   )r   r'   )r   zxref.Registryr   r   )r   r   r   xref.ResourceMapperr   r   )r   r/   r   r   r   r0   )r   r0   r   r   )r   zOptional[UnderlayDefinition])r   zIterable[UVec]r   r   )r   r   )r   r   r   r   )r   r   )r   ztuple[float, float, float])r   zUnion[float, tuple])r   r   r   r/   )&__name__
__module____qualname____doc__r   r   r   r   
DXFATTRIBSr   MIN_DXF_VERSION_FOR_EXPORTrO   r"   r\   rb   rd   rx   r   r   r   r   r   r   r   r   propertyrh   setterr   r   r   r   r   r   rj   r   r   __classcell__rT   s   @rU   r/   r/   m   s   " z;FJ!(@
 5A 2 8<4	,#O
@-*3?
B!!(;!	!*<
" # # ) ) > > __< < 8 8 YY6 6 @ @ > > C C !!A "A D D ^^ '
rV   r/   c                      e Zd ZdZdZy)r)   zDXF PDFUNDERLAY entityPDFUNDERLAYNr   r   r   r   rl   r   rV   rU   r)   r)   Z  
     GrV   r)   c                      e Zd ZdZdZy)PdfReferencez^PDFREFERENCE ia a synonym for PDFUNDERLAY, ezdxf creates always PDFUNDERLAY
    entities.
    PDFREFERENCENr   r   rV   rU   r   r   a  s     GrV   r   c                      e Zd ZdZdZy)r*   zDXF DWFUNDERLAY entityDWFUNDERLAYNr   r   rV   rU   r*   r*   j  r   rV   r*   c                      e Zd ZdZdZy)r+   zDXF DGNUNDERLAY entityDGNUNDERLAYNr   r   rV   rU   r+   r+   q  r   rV   r+   AcDbUnderlayDefinitionr^   )filenamer   c                       e Zd ZdZdZ eee      Ze	Z
	 d		 	 	 d
 fdZd fdZedd       Zedd       Zedd       Zd Z xZS )r0   z#Virtual UNDERLAY DEFINITION entity.UNDERLAYDEFINITIONc                Z    t         |   |      }|r|j                  |t        d       |S )Nr   r_   )rN   rb   re   acdb_underlay_def_group_codes)rS   rn   ri   rT   s      rU   rb   z#UnderlayDefinition.load_dxf_attribs  s9     g&y1**2Q +  
rV   c                    t         |   |       |j                  t        t        j
                         | j                  j                  |ddg       y)r   r   r   N)rN   r   r   r   acdb_underlay_defr   ri   r   r   s     rU   r   z UnderlayDefinition.export_entity  s@    i(_.?.D.DE##I
F/CDrV   c                     | j                   d d S )N   )rl   r   s    rU   file_formatzUnderlayDefinition.file_format  s    ||BQrV   c                     | j                   dz   S )NUNDERLAYr  r   s    rU   entity_namezUnderlayDefinition.entity_name  s    *,,rV   c                "    d| j                    dS )NACAD_DEFINITIONSr  r   s    rU   r   z!UnderlayDefinition.acad_dict_name  s    t''(44rV   c                P    | j                  | j                  j                  g       y rM   )set_reactorsri   ownerr   s    rU   post_new_hookz UnderlayDefinition.post_new_hook  s    488>>*+rV   rM   r   r   )r   r~   )r   r   r   r   rl   r   r   r   r   r   r   rb   r   r   r  r  r   r  r   r   s   @rU   r0   r0     s    -"Gz+<=J!( 8<4	E     - - 5 5,rV   r0   c                      e Zd ZdZdZy)r,   zDXF PDFDEFINITION entityPDFDEFINITIONNr   r   rV   rU   r,   r,     
    "GrV   r,   c                      e Zd ZdZdZy)r.   zDXF DWFDEFINITION entityDWFDEFINITIONNr   r   rV   rU   r.   r.     r  rV   r.   c                      e Zd ZdZdZy)r-   zDXF DGNDEFINITION entityDGNDEFINITIONNr   r   rV   rU   r-   r-     r  rV   r-   N)J
__future__r   typingr   r   r   r   typing_extensionsr   ezdxf.lldxfr	   ezdxf.lldxf.attributesr
   r   r   r   r   r   ezdxf.lldxf.constr   r   r   r   ezdxf.lldxf.tagsr   
ezdxf.mathr   r   r   r   r   	dxfentityr   r   r   dxfgfxr   r   dxfobjr    factoryr!   copyr"   ezdxf.math.transformtoolsr#   r$   ezdxf.documentr%   ezdxf.entitiesr&   ezdxf.lldxf.tagwriterr'   ezdxfr(   __all__point3dis_not_zerois_not_null_vectoris_in_integer_rangefit_into_integer_ranger   rf   r/   r)   r   r*   r+   r   r   r0   r,   r.   r-   r   rV   rU   <module>r.     s   # ; ; " !  E D  ! < < ? ? +  $ 
 &+7	   's|"EMM7C++ 	
 ++ 	
 ++ 	
 B*--22 
 b)3i33B<2)222s;	
 3i33Ar:2)221b9	
c7:v /}= jz jZ (   8   (   (    AJ
  !33D E 
$, $,N &   &   &  rV   