Ë
    £èh˜K  ã                  óÎ  — d dl mZ d dl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 d dl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 ddlmZ erd dlmZmZ d dl m!Z! d dl"m#Z# ddgZ$d¨d„Z%d©d„Z& edi d e
d«      “d e
dd¬«      “d e
dd ¬«      “d e
dd¬«      “d  e
d!«      “d" e
d#d ¬«      “d$ e
d%d¬«      “d& e
d'd(¬«      “d) e
d*d¬«      “d+ e
d,d¬«      “d- e
d.d¬«      “d/ e
d0d¬«      “d1 e
d2d¬«      “d3 e
d4d¬«      “d5 e
d6d7¬«      “d8 e
d0d ¬«      “d9 e
d:d¬«      “i d; e
d<«      “d= e
d>d¬«      “d? e
d@d¬«      “dA e
dBd¬«      “dC e
dDd¬«      “dE e
dFd¬«      “dG e
dHd¬«      “dI e
dJd¬«      “dK e
dLd¬«      “dM e
dNd¬«      “dO e
dPd¬«      “dQ e
dRd¬«      “dS e
dTd¬«      “dU e
dVd¬«      “dW e
dXd¬«      “dY e
dZd¬«      “d[ e
d\d¬«      “¥i d] e
d^d¬«      “d_ e
d`d¬«      “da e
dbd¬«      “dc e
ddd¬«      “de e
dfd¬«      “dg e
dhd¬«      “di e
djd¬«      “dk e
dld¬«      “dm e
dnd¬«      “do e
dpd¬«      “dq e
drd¬«      “ds e
dtd¬«      “du e
dvd¬«      “dw e
dxd¬«      “dy e
dzd¬«      “d{ e
d|d¬«      “d} e
dl«      “¥i d~ e
d«      “d€ e
d*d¬«      “d� e
d,d¬«      “d‚ e
d.d¬«      “dƒ e
d0d¬«      “d„ e
d2d¬«      “d… e
d4d¬«      “d† e
d‡«      “dˆ e
d‰«      “dŠ e
d‹«      “dŒ e
d�«      “dŽ e
d�«      “d� e
d‘«      “d’ e
dj«      “d“ e
d”«      “d• e
dn«      “d– e
dt«      “¥ e
d—«       e
d˜«       e
dl«       e
d™«       e
dš«       e
d›«       e
dœ«       e
d�«       e
dž«       e
dj«       e
dŸ«       e
d!«       e
d «       e
d¡«       e
d¢d£¬«      d¤œ¥«      Z' ee'«      Z(e G d¥„ de«      «       Z) G d¦„ dee)   «      Z*y§)ªé    )Úannotations)ÚTYPE_CHECKINGÚOptional)ÚSelf)ÚSUBCLASS_MARKER)ÚDXFAttrÚDXFAttributesÚDefSubclassÚgroup_code_mapping)ÚTagsé   )Ú
base_classÚSubclassProcessor)Ú	DXFObject)Úregister_entity)ÚObjectCollection)ÚMatrix44)Údefault_copy)ÚDXFNamespaceÚ	DXFEntity)ÚAbstractTagWriter)ÚDrawingÚMaterialÚMaterialCollectionc                ó   — g }t        «       }| D ]O  }|j                  |k(  r-|j                  |j                  «       t	        |«      dk(  sŒ<d}Œ?|j                  |«       ŒQ t	        |«      dk(  r|t        |«      fS | d fS )Né   éÿÿÿÿ)r   ÚcodeÚappendÚvalueÚlenr   )Útagsr   ÚvaluesÚ	remainingÚtags        ú7lib/python3.12/site-packages/ezdxf/entities/material.pyÚfetch_matrixr'      s{   € Ø€FÜ“€IÛˆØ�8‰8�tÒØ�M‰M˜#Ÿ)™)Ô$Ü�6‹{˜bÓ à‘à×Ñ˜SÕ!ð ô ˆ6ƒ{�bÒàœ( 6Ó*Ð*Ð*à�TˆzÐó    c                ó<   — |�|D ]  }| j                  ||«       Œ y y ©N)Ú
write_tag2)Ú	tagwriterr   Úmatrixr    s       r&   Úexport_matrixr.   /   s'   € ØÐÛˆEØ× Ñ   uÕ-ñ ð r(   ÚAcDbMaterialÚnameÚdescriptioné   Ú )ÚdefaultÚambient_color_methodéF   Úambient_color_factoré(   g      ð?Úambient_color_valueéZ   Údiffuse_color_methodéG   Údiffuse_color_factoré)   Údiffuse_color_valueé[   éÿÿÿÂÚdiffuse_map_blend_factoré*   Údiffuse_map_sourceéH   Údiffuse_map_file_nameé   Údiffuse_map_projection_methodéI   Údiffuse_map_tiling_methodéJ   Ú!diffuse_map_auto_transform_methodéK   Úspecular_gloss_factoré,   g      à?Úspecular_color_methodÚspecular_color_factoré-   Úspecular_color_valueé\   Úspecular_map_blend_factoré.   Úspecular_map_sourceéM   Úspecular_map_file_nameé   Úspecular_map_projection_methodéN   Úspecular_map_tiling_methodéO   Ú"specular_map_auto_transform_methodéª   Úreflection_map_blend_factoré0   Úreflection_map_sourceé«   Úreflection_map_file_nameé   Ú reflection_map_projection_methodé¬   Úreflection_map_tiling_methodé­   Ú$reflection_map_auto_transform_methodé®   ÚopacityéŒ   Úopacity_map_blend_factoré�   Úopacity_map_sourceé¯   Úopacity_map_file_nameé   Úopacity_map_projection_methodé°   Úopacity_map_tiling_methodé±   Ú!opacity_map_auto_transform_methodé²   Úbump_map_blend_factoré�   Úbump_map_sourceé³   Úbump_map_file_nameé   Úbump_map_projection_methodi  Úbump_map_tiling_methodi  Úbump_map_auto_transform_methodi  Úrefraction_indexé‘   Úrefraction_map_blend_factoré’   Úrefraction_map_sourcei  Úrefraction_map_file_nameé	   Ú refraction_map_projection_methodi  Úrefraction_map_tiling_methodi  Ú$refraction_map_auto_transform_methodi  Únormal_map_methodÚnormal_map_strengthiÑ  Únormal_map_blend_factorÚnormal_map_sourceÚnormal_map_file_nameÚnormal_map_projection_methodÚnormal_map_tiling_methodÚ normal_map_auto_transform_methodÚcolor_bleed_scaleiÌ  Úindirect_dump_scaleiÍ  Úreflectance_scaleiÎ  Útransmittance_scaleiÏ  Útwo_sided_materiali"  Ú	luminanceiÐ  Úluminance_modeÚmaterials_anonymousi%  Úglobal_illumination_modeÚfinal_gather_modei,  i#  iÕ  i-  i$  é>   i¤  i®  é”   iÔ  é]   é^   é?   )Úgen_proc_nameÚgen_proc_val_boolÚgen_proc_val_intÚgen_proc_val_realÚgen_proc_val_textÚgen_proc_table_endÚgen_proc_val_color_indexÚgen_proc_val_color_rgbÚgen_proc_val_color_nameÚ	map_utileÚtranslucenceÚself_illuminationÚreflectivityÚillumination_modelÚchannel_flagsc                  ót   ‡ — e Zd ZdZdddœZ eee«      Zd
ˆ fd„Z	e
fdd„Z	 d	 	 	 dˆ fd„Zd„ Zdˆ fd	„Zˆ xZS )r   ÚMATERIALr   rA   )r;   r?   c                ó„   •— t         ‰| �  «        d | _        d | _        d | _        d | _        d | _        d | _        d | _        y r*   )	ÚsuperÚ__init__Údiffuse_mapper_matrixÚspecular_mapper_matrixÚreflexion_mapper_matrixÚopacity_mapper_matrixÚbump_mapper_matrixÚrefraction_mapper_matrixÚnormal_mapper_matrix)ÚselfÚ	__class__s    €r&   r¸   zMaterial.__init__ã   sF   ø€ Ü‰ÑÔØ9=ˆÔ"Ø:>ˆÔ#Ø;?ˆÔ$Ø9=ˆÔ"Ø6:ˆÔØ<@ˆÔ%Ø8<ˆÕ!r(   c                óp  — d„ }t        |t        «      sJ ‚ || j                  «      |_         || j                  «      |_         || j                  «      |_         || j
                  «      |_         || j                  «      |_         || j                  «      |_         || j                  «      |_        y)zCopy material mapper matricesc                ó*   — | €d S | j                  «       S r*   )Úcopy)r-   s    r&   rÄ   z Material.copy_data.<locals>.copyð   s   € Ø!˜>�4Ð<¨v¯{©{«}Ð<r(   N)	Ú
isinstancer   r¹   rº   r»   r¼   r½   r¾   r¿   )rÀ   ÚentityÚcopy_strategyrÄ   s       r&   Ú	copy_datazMaterial.copy_dataí   sž   € ò	=ô ˜&¤(Ô+Ð+Ð+Ù'+¨D×,FÑ,FÓ'GˆÔ$Ù(,¨T×-HÑ-HÓ(IˆÔ%Ù)-¨d×.JÑ.JÓ)KˆÔ&Ù'+¨D×,FÑ,FÓ'GˆÔ$Ù$(¨×)@Ñ)@Ó$AˆÔ!Ù*.¨t×/LÑ/LÓ*MˆÔ'Ù&*¨4×+DÑ+DÓ&EˆÕ#r(   c                ó~   •— t         ‰| �  |«      }|r*|j                  |t        dd¬«      }| j	                  |«       |S )Nr   F)Úlog)r·   Úload_dxf_attribsÚfast_load_dxfattribsÚacdb_material_group_codesÚload_matrices)rÀ   Ú	processorÚdxfr"   rÁ   s       €r&   rË   zMaterial.load_dxf_attribsü   sK   ø€ ô ‰gÑ& yÓ1ˆÙØ×1Ñ1ØÔ.°°uð 2ó ˆDð ×Ñ˜tÔ$Øˆ
r(   c                óV  — t        |d«      \  }}|r|| _        t        |d«      \  }}|r|| _        t        |d«      \  }}|r|| _        t        |d«      \  }}|r|| _        t        |d«      \  }}|r|| _        t        |d«      \  }}|r|| _        t        |d«      \  }}|r|| _        y y )Né+   é/   é1   éŽ   é�   é“   )r'   r¹   rº   r»   r¼   r½   r¾   r¿   )rÀ   r"   r-   s      r&   rÎ   zMaterial.load_matrices  sÄ   € Ü# D¨"Ó-‰ˆˆfÙØ)/ˆDÔ&Ü# D¨"Ó-‰ˆˆfÙØ*0ˆDÔ'Ü# D¨"Ó-‰ˆˆfÙØ+1ˆDÔ(Ü# D¨#Ó.‰ˆˆfÙØ)/ˆDÔ&Ü# D¨#Ó.‰ˆˆfÙØ&,ˆDÔ#Ü# D¨#Ó.‰ˆˆfÙØ,2ˆDÔ)Ü# D¨"Ó-‰ˆˆfÙØ(.ˆDÕ%ð r(   c                óŽ  •— t         ‰| �  |«       |j                  t        t        j
                  «       | j                  j                  |g d¢«       t        |d| j                  «       | j                  j                  |g d¢«       t        |d| j                  «       | j                  j                  |g d¢«       t        |d| j                  «       | j                  j                  |g d¢«       t        |d| j                  «       | j                  j                  |g d	¢«       t        |d
| j                  «       | j                  j                  |g d¢«       t        |d| j                  «       | j                  j                  |g d¢«       t        |d| j                  «       | j                  j                  |g d¢«       y)z(Export entity specific data as DXF tags.)r0   r1   r5   r7   r9   r;   r=   r?   rB   rD   rF   rH   rJ   rL   rÒ   )
rN   rP   rQ   rS   rU   rW   rY   r[   r]   r_   rÓ   )ra   rc   re   rg   ri   rk   rÔ   )rm   ro   rq   rs   ru   rw   ry   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°   r±   r²   r³   N)r·   Úexport_entityr+   r   Úacdb_materialr0   rÐ   Úexport_dxf_attribsr.   r¹   rº   r»   r¼   r½   r¾   r¿   )rÀ   r,   rÁ   s     €r&   rÙ   zMaterial.export_entity  s‚  ø€ ä‰Ñ˜iÔ(à×Ñœ_¬m×.@Ñ.@ÔAà�‰×#Ñ#Øòô	
ô& 	�i  T×%?Ñ%?Ô@Ø�‰×#Ñ#Øòô	
ô 	�i  T×%@Ñ%@ÔAØ�‰×#Ñ#Øòô
	
ô 	�i  T×%AÑ%AÔBØ�‰×#Ñ#Øòô	
ô 	�i  d×&@Ñ&@ÔAØ�‰×#Ñ#Øòô
	
ô 	�i  d×&=Ñ&=Ô>Ø�‰×#Ñ#Øòô	
ô 	�i  d×&CÑ&CÔDØ�‰×#Ñ#Øò	ô	
ô 	�i  T×%>Ñ%>Ô?Ø�‰×#Ñ#Øòõ	
r(   ©ÚreturnÚNone)rÆ   r   rÝ   rÞ   r*   )rÏ   zOptional[SubclassProcessor]rÝ   r   )r,   r   rÝ   rÞ   )Ú__name__Ú
__module__Ú__qualname__ÚDXFTYPEÚDEFAULT_ATTRIBSr	   r   rÚ   Ú
DXFATTRIBSr¸   r   rÈ   rË   rÎ   rÙ   Ú__classcell__©rÁ   s   @r&   r   r   Ú   s_   ø„ à€Gà !Ø*ñ€Oñ ˜z¨=Ó9€Jõ=ð 5Aô Fð  8<ð	Ø4ð	à	õ	ò/÷.G
ñ G
r(   c                  ó(   ‡ — e Zd Zdˆ fd„Zdd„Zˆ xZS )r   c                óJ   •— t         ‰| �  |dd¬«       | j                  «        y )NÚACAD_MATERIALrµ   )Ú	dict_nameÚobject_type)r·   r¸   Úcreate_required_entries)rÀ   ÚdocrÁ   s     €r&   r¸   zMaterialCollection.__init__©  s#   ø€ Ü‰Ñ˜¨ÀZÐÔPØ×$Ñ$Õ&r(   c                ó>   — dD ]  }|| vsŒ| j                  |«       Œ y )N)ÚByBlockÚByLayerÚGlobal)Únew)rÀ   r0   s     r&   rì   z*MaterialCollection.create_required_entries­  s   € Û4ˆDØ˜4ÒØ—‘˜•ñ 5r(   )rí   r   rÜ   )rß   rà   rá   r¸   rì   rå   ræ   s   @r&   r   r   ¨  s   ø„ õ'÷r(   N)r"   r   r   ÚintrÝ   ztuple[Tags, Optional[Matrix44]])r,   r   r   ró   r-   r   rÝ   rÞ   )+Ú
__future__r   Útypingr   r   Útyping_extensionsr   Úezdxf.lldxf.constr   Úezdxf.lldxf.attributesr   r	   r
   r   Úezdxf.lldxf.tagsr   Ú	dxfentityr   r   Údxfobjr   Úfactoryr   Úobjectcollectionr   Ú
ezdxf.mathr   rÄ   r   Úezdxf.entitiesr   r   Úezdxf.lldxf.tagwriterr   Úezdxf.documentr   Ú__all__r'   r.   rÚ   rÍ   r   r   © r(   r&   Ú<module>r     sà  ðõ #ß *Ý "Ý -÷ó õ "ß 4Ý Ý $Ý .Ý Ý áß6Ý7Ý&àÐ+Ð
,€óó$.ñ Øð^Ø‘˜“
ð^à‘w˜q¨"Ô-ð^ð 	¡Ø˜ô!
ð^ð 	¡¨°CÔ 8ð^ð 	™w r›{ð^ð 	¡Ø˜ô!
ð^ð 	¡¨°CÔ 8ð^ð 	™wØ˜ô 
ð^ð 	#¡GØ˜ô%
ð^ð$ 	™g b°!Ô4ð%^ð( 	 ¡¨°BÔ!7ð)^ð* 	(©Ø˜ô*
ð+^ð0 	$¡W¨R¸Ô%;ð1^ð2 	,©W°RÀÔ-Cð3^ð< 	 ¡¨°SÔ!9ð=^ð> 	 ¡Ø˜ô"
ð?^ðD 	 ¡¨°SÔ!9ñE^ðF 	¡¨£ðG^ðH 	$¡WØ˜ô&
ðI^ðN 	™w r°1Ô5ðO^ðR 	!¡'¨!°RÔ"8ðS^ðT 	)©'Ø˜ô+
ðU^ðZ 	%¡g¨b¸!Ô&<ð[^ð\ 	-©g°cÀ1Ô.Eð]^ðf 	&¡wØ˜ô(
ðg^ðl 	 ¡¨°aÔ!8ðm^ðp 	#¡G¨A°rÔ$:ðq^ðr 	+©GØ˜ô-
ðs^ðx 	'©Ø˜ô)
ðy^ð~ 	/±¸ÀQÔ0Gð^ðH 	‘7˜3¨Ô,ðI^ðJ 	#¡GØ˜ô%
ðK^ðP 	™g c°1Ô5ðQ^ðT 	 ¡¨°BÔ!7òU^ðV 	(©Ø˜ô*
ðW^ð\ 	$¡W¨S¸!Ô%<ð]^ð^ 	,©W°SÀ!Ô-Dð_^ðh 	 ¡¨°cÔ!:ði^ðj 	™7 3°Ô2ðk^ðn 	™g a°Ô4ðo^ðp 	%¡gØ˜ô'
ðq^ðv 	!¡'¨#°qÔ"9ðw^ðx 	)©'°#¸qÔ*Aðy^ðB 	™G C°Ô5ðC^ðD 	&¡wØ˜ô(
ðE^ðJ 	 ¡¨°aÔ!8ðK^ðN 	#¡G¨A°rÔ$:ðO^ðP 	+©GØ˜ô-
ðQ^ðV 	'©Ø˜ô)
ðW^ð\ 	/±¸ÀQÔ0Gð]^ðh 	™W S›\òi^ðj 	™w s›|ðk^ðl 	"¡7Ø˜ô$
ðm^ðr 	™W R°Ô3ðs^ðv 	¡¨°2Ô 6ðw^ðx 	'©Ø˜ô)
ðy^ð~ 	#¡G¨B¸Ô$:ð^ð@ 	+©G°BÀÔ,BðA^ðJ 	™W S›\ðK^ðL 	™w s›|ðM^ðN 	™W S›\ðO^ðP 	™w s›|ðQ^ðR 	™g c›lðS^ðT 	‘W˜S“\ðU^ðV 	™' #›,ðW^ðX 	™w s›|ðY^ðZ 	#¡G¨C£Lð[^ð\ 	™W S›\ñ]^ñ^ ! ›Ù$ S›\Ù# C›LÙ$ S›\Ù$ S›\Ù% c›lÙ$+¨B£KÙ")¨#£,Ù#*¨3£<Ù˜S“\Ù ›Ù$ R›[Ù ›Ù% b›kÙ  ¨RÔ0ò{^óa€ñD /¨}Ó=Ð ð ôJ
ˆyó J
ó ðJ
ôZÐ)¨(Ñ3õ r(   