Ë
    £èhù   ã                  ó¶   — 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mZ d dlZerd dl	mZmZmZmZmZ dgZ ej,                  d	«      Zdd
„Zdd„Zy)é    )Úannotations)ÚTYPE_CHECKINGÚcastÚSequenceÚAny)Úchain)ÚfactoryÚ
MLineStyle)ÚVec3ÚOCSN)ÚMLineÚ
DXFGraphicÚHatchÚLineÚArcÚvirtual_entitiesÚezdxfc                ó4   — | j                  «       }d|v r|d= |S )NÚ
true_color)Úgraphic_properties)ÚmlineÚattribss     ú2lib/python3.12/site-packages/ezdxf/render/mline.pyÚ_dxfattribsr      s%   € Ø×&Ñ&Ó(€Gà�wÑØ�LÐ!Ø€Nó    c           	     óÌ  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡‡— dˆˆˆˆ ˆˆˆfd„}dˆˆˆˆˆˆˆfd„}dˆˆˆˆˆˆˆfd„}dˆˆˆˆfd„Š	 	 	 	 	 	 	 	 	 	 dˆˆ fd„Šdˆˆˆ ˆfd„}ˆˆˆfd„}dˆˆˆ ˆˆfd„Šg }‰ j                   r$‰ j                  �t        ‰ j                  «      d	k  r|S ‰ j                  Š‰€|S ‰ j                  Št        ‰ j                  j                  «      Št        ‰j                  «      }‰ j                  Š‰j                  «       Š‰d
   Š‰d   Šg Šg Šg Š‰ j                  D ]Å  }|j                  }	t        |	«      |k7  r2t        j                  dt        ‰«      › dt        ‰ «      › d�«       |c S |j                  }
|j                   }g }|	D ]  }	 |d
   }|j%                  |
||z  z   «       Œ! ‰j%                  |«       ‰j%                  |‰   «       ‰j%                  |‰   «       ŒÇ ‰r<‰j%                  ‰d
   «       ‰j%                  ‰d
   «       ‰j%                  ‰d
   «       ‰s|j'                   |«       «       |j'                   |«       «       ‰j)                  ‰j*                  «      r|j'                   |«       «       ‰s|j'                   |«       «       ‰j)                  ‰j,                  «      r|j/                  d
 |«       «       |S # t"        $ r d
}Y �ŒKw xY w)zæYields 'virtual' parts of MLINE as LINE, ARC and HATCH entities.

    These entities are located at the original positions, but are not stored
    in the entity database, have no handle and are not assigned to any
    layout.
    c            
     óú  •— t        ‰«      } ‰
j                  j                  | d<   t        ‰	j	                  ‰d   «      «      j                  dd¬«      | d<   ‰j                  j                  | d<   t        dt        j                  d| ‰¬	«      «      }dgt        ‰«      d
z  z  }t        t        j                  ‰	j                  ‰«      «      t        j                  ‰	j                  t        ‰«      «      «      «      }‰sL‰
j                  ‰
j                   «      rd|t        ‰«      dz
  <   ‰
j                  ‰
j"                  «      rd|d<   d„ t%        ||«      D «       }|j&                  j)                  |d¬«       |S )NÚcolorr   g        ©ÚxÚyÚ	elevationÚ	extrusionr   ÚHATCH©Ú
dxfattribsÚdocé   g      ð?é   éÿÿÿÿc              3  óT   K  — | ]   \  }}|j                   |j                  |f–— Œ" y ­w©Nr   )Ú.0ÚvÚbulges      r   Ú	<genexpr>z4virtual_entities.<locals>.filling.<locals>.<genexpr>8   s&   è ø€ ÐJÑ6I©(¨!¨U�Q—S‘S˜!Ÿ#™#˜uÔ%Ñ6Iùs   ‚&(T)Ú	is_closed)r   ÚdxfÚ
fill_colorr   Úfrom_wcsÚreplacer#   r   r	   ÚnewÚlenr   ÚgenerateÚpoints_from_wcsÚreversedÚget_flag_stateÚ	END_ROUNDÚSTART_ROUNDÚzipÚpathsÚadd_polyline_path)r   ÚhatchÚbulgesÚpointsÚlwpointsÚbottom_borderÚclosedr'   r   ÚocsÚstyleÚ
top_borders        €€€€€€€r   Úfillingz!virtual_entities.<locals>.filling&   sK  ø€ Ü˜eÓ$ˆØ Ÿ9™9×/Ñ/ˆ�ÑÜ# C§L¡L°¸qÑ1AÓ$BÓC×KÑKØ�Sð  Ló  
ˆ�Ñð  %Ÿy™y×2Ñ2ˆ�ÑÜ�WœgŸk™k¨'¸gÈ3ÔOÓPˆØ"˜e¤s¨=Ó'9¸AÑ'=Ñ>ˆÜÜ�M‰M˜#×-Ñ-¨mÓ<Ó=Ü�M‰M˜#×-Ñ-¬h°zÓ.BÓCÓDó
ˆñ Ø×#Ñ# E§O¡OÔ4Ø14�”s˜=Ó)¨AÑ-Ñ.Ø×#Ñ# E×$5Ñ$5Ô6Ø ��r‘
ÙJ´c¸&À&Ô6IÓJˆØ�‰×%Ñ% h¸$Ð%Ô?Øˆr   c                 óŠ  •— g } ‰j                  ‰j                  «      r| j                   ‰‰d   «      «       ‰j                  ‰j                  «      r| j                   ‰d‰	‰«      «       ‰j                  ‰j                  «      r;t        ‰j                  «      dkD  r#‰d   }‰d   }| j                   ‰d||«      «       | S )Nr   é   éþÿÿÿr)   )r;   ÚSTART_SQUAREÚextendr=   ÚSTART_INNER_ARCr7   Úelements©
ÚentitiesÚstart_indexÚ	end_indexÚbottom_indexÚcreate_miterÚmiter_pointsÚordered_indicesÚ
round_capsrH   Ú	top_indexs
      €€€€€€€r   Ú	start_capz#virtual_entities.<locals>.start_cap<   s­   ø€ Ø%'ˆØ×Ñ × 2Ñ 2Ô3Ø�O‰O™L¨°a©Ó9Ô:Ø×Ñ × 1Ñ 1Ô2Ø�O‰O™J q¨)°\ÓBÔCà× Ñ  ×!6Ñ!6Ô7Ü�E—N‘NÓ# aÒ'à)¨"Ñ-ˆKØ'¨Ñ*ˆIØ�O‰O™J q¨+°yÓAÔBØˆr   c                 óŠ  •— g } ‰j                  ‰j                  «      r| j                   ‰‰d   «      «       ‰j                  ‰j                  «      r| j                   ‰d‰‰	«      «       ‰j                  ‰j                  «      r;t        ‰j                  «      dkD  r#‰d   }‰d   }| j                   ‰d||«      «       | S )Nr*   rL   r)   rM   )r;   Ú
END_SQUARErO   r<   ÚEND_INNER_ARCr7   rQ   rR   s
      €€€€€€€r   Úend_capz!virtual_entities.<locals>.end_capK   s¬   ø€ Ø%'ˆØ×Ñ × 0Ñ 0Ô1Ø�O‰O™L¨°bÑ)9Ó:Ô;Ø×Ñ §¡Ô0Ø�O‰O™J r¨<¸ÓCÔDà× Ñ  ×!4Ñ!4Ô5Ü�E—N‘NÓ# aÒ'à)¨!Ñ,ˆKØ'¨Ñ+ˆIØ�O‰O™J r¨;¸	ÓBÔCØˆr   c                óÚ   •— ‰
j                   |   j                  }‰
j                   |   j                  }‰	j                  ‰|    |   «      }‰	j                  ‰|    |   «      } ‰||||«      S r,   )rQ   r   r4   )Úmiter_indexrT   rU   Úcolor1Úcolor2ÚstartÚendÚ	_arc_capsrX   rG   rH   s          €€€€r   rZ   z$virtual_entities.<locals>.round_capsZ   sl   ø€ Ø—‘ Ñ,×2Ñ2ˆØ—‘ 	Ñ*×0Ñ0ˆØ—‘˜\¨+Ñ6°{ÑCÓDˆØ�l‰l˜<¨Ñ4°YÑ?Ó@ˆÙ˜  V¨VÓ4Ð4r   c                óŽ  •— t        ‰«      }| j                  |«      }|| z
  j                  dz  }| |z
  j                  }||d<   ||d<   ||d<   ||d<   |||k(  rdndz   |d<   t	        d	t        j                  d
|‰
¬«      «      }||k(  r|fS |dz   |d<   |dz   |d<   ||d<   t	        d	t        j                  d
|‰
¬«      «      }	||	fS )Ng       @ÚcenterÚradiusr   Ústart_angleé´   éZ   Ú	end_angler   ÚARCr%   )r   ÚlerpÚ	magnitudeÚ	angle_degr   r	   r6   )re   rf   rc   rd   r   ri   rj   ÚangleÚarc1Úarc2r'   r   s             €€r   rg   z#virtual_entities.<locals>._arc_capsa   sð   ø€ ô ˜eÓ$ˆØ—‘˜C“ˆØ˜‘+×(Ñ(¨3Ñ.ˆØ˜‘×*Ñ*ˆØ"ˆ�ÑØ"ˆ�ÑØ!ˆ�ÑØ!&ˆ�ÑØ$¨v¸Ò/?©ÀRÑHˆ�ÑÜ�Eœ7Ÿ;™; u¸ÀcÔJÓKˆØ�VÒØ�7ˆNØ!&¨¡ˆ�ÑØ$ s™{ˆ�ÑØ!ˆ�ÑÜ�Eœ7Ÿ;™; u¸ÀcÔJÓKˆØ�TˆzÐr   c                 ó4  •— d } g }t        ‰«      }‰D ]‚  }| �|t        ‰	j                  «      D ]d  \  }}| |   |d<   ||   |d<   |j                  |d<   |j                  |d<   |j                  t        dt        j                  d|‰¬«      «      «       Œf |} Œ„ |S ©Nre   rf   r   Úlinetyper   ÚLINEr%   )	r   Ú	enumeraterQ   r   rx   Úappendr   r	   r6   )
ÚprevÚ_linesr   ÚmiterÚindexÚelementr'   rX   r   rH   s
         €€€€r   Úlineszvirtual_entities.<locals>.linesv   s­   ø€ ØˆØˆÜ˜eÓ$ˆã!ˆEØÐÜ&/°·±Ö&?‘N�E˜7Ø'+¨E¡{�G˜GÑ$Ø%*¨5¡\�G˜E‘NØ'.§}¡}�G˜GÑ$Ø*1×*:Ñ*:�G˜JÑ'Ø—M‘MÜØ"Ü#ŸK™K¨¸7ÈÔLóõð '@ð ‰Dð "ð ˆr   c                 óÞ   •— g } t        «       }|j                  t        ‰«      dz
  «       ‰s|j                  d«       t        ‰«      D ]!  \  }}||vsŒ| j	                   ‰|«      «       Œ# | S )Nr)   r   )ÚsetÚaddr7   rz   rO   )r}   Úskipr   r~   rF   rW   rX   s       €€€r   Údisplay_miterz'virtual_entities.<locals>.display_miter‹   sf   ø€ ØˆÜ‹uˆØ�‰”�\Ó" QÑ&Ô'ÙØ�H‰H�QŒKÜ% lÖ3‰LˆE�5Ø˜DÒ Ø—‘™l¨5Ó1Õ2ð 4ð ˆr   c           
     óø  •— g }t        ‰	«      }| ‰   }| ‰   }|j                  |«      }‰
j                  ‰   }||d<   ||d<   |j                  |d<   |j                  |d<   |j                  t        dt        j                  d|‰¬«      «      «       ‰
j                  ‰   }||d<   ||d<   |j                  |d<   |j                  |d<   |j                  t        dt        j                  d|‰¬«      «      «       |S rw   )	r   rp   rQ   r   rx   r{   r   r	   r6   )r~   r}   r   ÚtopÚbottomÚzeror€   rV   r'   r   rH   r[   s          €€€€€r   rW   z&virtual_entities.<locals>.create_miter–   s  ø€ ØˆÜ˜eÓ$ˆØ�IÑˆØ�|Ñ$ˆØ�{‰{˜3ÓˆØ—.‘. Ñ+ˆØˆ�ÑØˆ�‰Ø"Ÿ=™=ˆ�ÑØ%×.Ñ.ˆ�
ÑØ�‰Ü�œŸ™ V¸ÀSÔIÓJô	
ð —.‘. Ñ.ˆØ!ˆ�ÑØˆ�‰Ø"Ÿ=™=ˆ�ÑØ%×.Ñ.ˆ�
ÑØ�‰Ü�œŸ™ V¸ÀSÔIÓJô	
ð ˆr   r(   r   r*   z(Invalid line parametrization for vertex z in Ú.)Úreturnr   )rŒ   úlist[DXFGraphic])rb   ÚintrT   rŽ   rU   rŽ   )
re   r   rf   r   rc   rŽ   rd   rŽ   rŒ   zSequence[Arc])rŒ   z
list[Line])Úis_aliver'   r7   ÚverticesrH   r   r2   r#   rQ   r1   rY   Úline_paramsÚloggerÚdebugÚstrÚlocationÚmiter_directionÚ
IndexErrorr{   rO   r;   ÚMITERÚFILLÚinsert)r   rJ   r\   r`   r�   r†   rS   Úelement_countÚvertexÚoffsetsr•   r–   r~   ÚoffsetÚlengthrg   rE   rV   rF   rW   r'   rX   rG   rY   rZ   rH   rI   r[   s   `              @@@@@@@@@@@@@r   r   r      s¹  ÿý€ ÷ó ÷,ó ÷ó ÷5ð 5ðØðØðØ(+ðØ58ðà	ö÷*ð ö*	÷ñ ð0 "$€HØ�>Š>˜UŸY™YÐ.´#°e·n±nÓ2EÈÒ2IØˆàŸ™€EØ€}Øˆà
�)‰)€CÜ
ˆe�i‰i×!Ñ!Ó
"€CÜ˜Ÿ™Ó'€MØ�_‰_€FØ×+Ñ+Ó-€OØ" 1Ñ%€LØ Ñ#€IØ "€MØ€JØ%'€Là—.”.ˆØ×$Ñ$ˆÜˆw‹<˜=Ò(Ü�L‰LØ:¼3¸|Ó;LÐ:Mð NÜ˜%“j�\ ð$ôð ŠOØ—?‘?ˆØ ×0Ñ0ˆØˆÛˆFðØ ™�ð �L‰L˜ O°fÑ$<Ñ<Õ=ð ð 	×Ñ˜EÔ"Ø×Ñ˜% 	Ñ*Ô+Ø×Ñ˜U <Ñ0Õ1ð' !ñ* Ø×Ñ˜L¨™OÔ,Ø×Ñ˜* Q™-Ô(Ø×Ñ˜]¨1Ñ-Ô.áØ�‰™	›Ô$à‡O�O‘E“GÔà×Ñ˜EŸK™KÔ(Ø�‰™›Ô(áØ�‰™›	Ô"à×Ñ˜EŸJ™JÔ'Ø�‰˜™7›9Ô%à€Oøô5 ò Ø“ðús   ÆKËK#Ë"K#)rŒ   zdict[str, Any])r   r   rŒ   r�   )Ú
__future__r   Útypingr   r   r   r   Ú	itertoolsr   Úezdxf.entitiesr	   r
   Ú
ezdxf.mathr   r   Úloggingr   r   r   r   r   Ú__all__Ú	getLoggerr’   r   r   © r   r   Ú<module>r©      sJ   ðõ #ß 5Ó 5Ý ß .ß  Û áßBÕBàÐ
€Ø	ˆ×	Ñ	˜7Ó	#€óôKr   