
    h                         S SK Jr  S SKJrJrJrJr  S SKJr  S SK	J
r
Jr  S SKJrJr  S SKr\(       a  S SK	JrJrJrJrJr  S/r\R,                  " S	5      rSS
 jrSS jrg)    )annotations)TYPE_CHECKINGcastSequenceAny)chain)factory
MLineStyle)Vec3OCSN)MLine
DXFGraphicHatchLineArcvirtual_entitiesezdxfc                8    U R                  5       nSU;   a  US	 U$ )N
true_color)graphic_properties)mlineattribss     D/var/www/html/env/lib/python3.13/site-packages/ezdxf/render/mline.py_dxfattribsr      s%    &&(GwL!N    c           	     6  ^ ^^^^^^^^^^^^^ SUUUU UUU4S jjnSUUUUUUU4S jjnSUUUUUUU4S jjnSUUUU4S jjm          SUU 4S jjmSUUU U4S jjnUUU4S jnSUUU UU4S jjm/ nT R                   (       a&  T R                  b  [        T R                  5      S	:  a  U$ T R                  mTc  U$ T R                  m[        T R                  R                  5      m[        TR                  5      nT R                  mTR                  5       mTS
   mTS   m/ m/ m/ mT R                   H  nUR                  n	[        U	5      U:w  a2  [        R                  S[        T5       S[        T 5       S35        Us  $ UR                  n
UR                   n/ nU	 H  n US
   nUR%                  XU-  -   5        M!     TR%                  U5        TR%                  UT   5        TR%                  UT   5        M     T(       a<  TR%                  TS
   5        TR%                  TS
   5        TR%                  TS
   5        T(       d  UR'                  U" 5       5        UR'                  U" 5       5        TR)                  TR*                  5      (       a  UR'                  U" 5       5        T(       d  UR'                  U" 5       5        TR)                  TR,                  5      (       a  UR/                  S
U" 5       5        U$ ! ["         a    S
n GNhf = f)zYields '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5      n T
R                  R                  U S'   [        T	R	                  TS   5      5      R                  SSS9U S'   TR                  R                  U S'   [        S[        R                  " SU TS	95      nS/[        T5      S
-  -  n[        [        R                  " T	R                  T5      5      [        R                  " T	R                  [        T5      5      5      5      nT(       dV  T
R                  T
R                   5      (       a  SU[        T5      S-
  '   T
R                  T
R"                  5      (       a  SUS'   S [%        X25       5       nUR&                  R)                  USS9  U$ )Ncolorr   g        xy	elevation	extrusionr   HATCH
dxfattribsdoc   g      ?   c              3  X   #    U  H   u  pUR                   UR                  U4v   M"     g 7fNr   ).0vbulges      r   	<genexpr>4virtual_entities.<locals>.filling.<locals>.<genexpr>8   s#     J6I(!QSS!##u%6Is   (*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   filling!virtual_entities.<locals>.filling&   sO   e$ 99//#CLLq1A$BCKKS  L  
  %yy22Wgkk'g3OP"es='9A'=>MM#--m<=MM#--hz.BCD
 ##EOO4414s=)A-.##E$5$566 r
Jc&6IJ%%h$%?r   c                   > / n TR                  TR                  5      (       a  U R                  T" TS   5      5        TR                  TR                  5      (       a  U R                  T" ST	T5      5        TR                  TR                  5      (       a;  [        TR                  5      S:  a"  TS   nTS   nU R                  T" SX5      5        U $ )Nr      r)   )r<   START_SQUAREextendr>   START_INNER_ARCr8   elements
entitiesstart_index	end_indexbottom_indexcreate_mitermiter_pointsordered_indices
round_capsrI   	top_indexs
      r   	start_cap#virtual_entities.<locals>.start_cap<   s    %' 2 233OOLa9: 1 122OOJq)\BC  !6!677ENN#a')"-K'*IOOJq+ABr   c                   > / n TR                  TR                  5      (       a  U R                  T" TS   5      5        TR                  TR                  5      (       a  U R                  T" STT	5      5        TR                  TR                  5      (       a;  [        TR                  5      S:  a"  TS   nTS   nU R                  T" SX5      5        U $ )Nr*   rN   r)   rO   )r<   
END_SQUARErQ   r=   END_INNER_ARCr8   rS   rT   s
      r   end_cap!virtual_entities.<locals>.end_capK   s    %' 0 011OOLb)9:;00OOJr<CD  !4!455ENN#a')!,K'+IOOJr;BCr   c                   > T
R                   U   R                  nT
R                   U   R                  nT	R                  TU    U   5      nT	R                  TU    U   5      nT" XVX45      $ r,   )rS   r   r5   )miter_indexrV   rW   color1color2startend	_arc_capsrZ   rH   rI   s          r   r\   $virtual_entities.<locals>.round_capsZ   sh    ,22	*00\+6{CDll<4Y?@V44r   c           	     v  > [        T5      nU R                  U5      nX-
  R                  S-  nX-
  R                  nXTS'   XdS'   X$S'   XtS'   XrU:X  a  SOS-   US'   [	        S	[
        R                  " S
UT
S95      nX#:X  a  U4$ US-   US'   US-   US'   X4S'   [	        S	[
        R                  " S
UT
S95      n	X4$ )Ng       @centerradiusr   start_angle   Z   	end_angler   ARCr%   )r   lerp	magnitude	angle_degr   r	   r7   )ri   rj   rg   rh   r   rn   ro   anglearc1arc2r'   r   s             r   rk   #virtual_entities.<locals>._arc_capsa   s     e$C+((3.**""!!&$/?RHE7;;ucJK7N!&$s{!E7;;ucJKzr   c                 4  > S n / n[        T5      nT H  nU by  [        T	R                  5       H`  u  pEX   US'   X4   US'   UR                  US'   UR                  US'   UR                  [        S[        R                  " SUTS95      5        Mb     Un M     U$ Nri   rj   r   linetyper   LINEr%   )	r   	enumeraterS   r   r~   appendr   r	   r7   )
prev_linesr   miterindexelementr'   rZ   r   rI   s
         r   linesvirtual_entities.<locals>.linesv   s    e$!E&/&?NE'+{GG$%*\GEN'.}}GG$*1*:*:GJ'MM"#KK7L '@ D " r   c                    > / n [        5       nUR                  [        T5      S-
  5        T(       d  UR                  S5        [        T5       H#  u  p#X!;  d  M  U R	                  T" U5      5        M%     U $ )Nr)   r   )setaddr8   r   rQ   )r   skipr   r   rG   rY   rZ   s       r   display_miter'virtual_entities.<locals>.display_miter   sb    u\"Q&'HHQK%l3LE l512 4 r   c                  > / n[        T	5      nU T   nU T   nUR                  U5      nT
R                  T   nX2S'   XRS'   UR                  US'   UR                  US'   UR                  [        S[        R                  " SUTS95      5        T
R                  T   nXBS'   XRS'   UR                  US'   UR                  US'   UR                  [        S[        R                  " SUTS95      5        U$ r}   )	r   ru   rS   r   r~   r   r   r	   r7   )r   r   r   topbottomzeror   rX   r'   r   rI   r]   s          r   rY   &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])rf   intrV   r   rW   r   )
ri   r   rj   r   rg   r   rh   r   r   zSequence[Arc])r   z
list[Line])is_aliver'   r8   verticesrI   r   r3   r#   rS   r2   r[   line_paramsloggerdebugstrlocationmiter_direction
IndexErrorr   rQ   r<   MITERFILLinsert)r   rK   r^   rc   r   r   rU   element_countvertexoffsetsr   r   r   offsetlengthrk   rF   rX   rG   rY   r'   rZ   rH   r[   r\   rI   rJ   r]   s   `              @@@@@@@@@@@@@r   r   r      s    ,  5 5(+58	 * *	 0 "$H>>UYY.#enn2E2IE}
))C
eii!!
"C'M__F++-O"1%L#I "MJ%'L..$$w<=(LL:3|;L:M N%j\$ O?? 00F LLf$<<=  	E"%	*+U<01' !* LO,*Q-(]1-.	$OOEGEKK(((	"EJJ''79%O5  s   *LLL)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      sH    # 5 5  .   BB
			7	#Kr   