
    Ogf                        d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
mZ d dlmZ erd dlmZ ddgZ G d	 d      Z G d
 d      Zy)    )annotations)IterableTYPE_CHECKINGOptional)Tags
group_tags)Vec2UVec)pattern)AbstractTagWriterPatternPatternLinec                  x    e Zd Zd
ddZedd       ZddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZdddZddZ	ddZ
ddd	Zy)r   Nc                8    |rt        |      | _        y g | _        y N)listlines)selfr   s     [/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/pattern.py__init__zPattern.__init__   s    7<U
"
    c                :    t        |d      } | d |D              S )N5   )	splitcodec              3  F   K   | ]  }t         j                  |        y wr   )r   	load_tags).0	line_tagss     r   	<genexpr>z$Pattern.load_tags.<locals>.<genexpr>   s       
1:K!!),
s   !)r   )clstagsgrouped_line_tagss      r   r   zPattern.load_tags   s)    &tr: 
>O
 
 	
r   c                    g | _         y)z$Delete all pattern definition lines.N)r   r   s    r   clearzPattern.clear   s	    
r   c                d    |J d       | j                   j                  t        ||||             y)zoCreate a new pattern definition line and add the line to the
        :attr:`Pattern.lines` attribute.

        Nz$argument 'dash_length_items' is None)r   appendr   r   angle
base_pointoffsetdash_length_itemss        r   add_linezPattern.add_line   s;     )	21	2)

z63DE	
r   c                    t        | j                        s|rH|j                  dt        | j                               | j                  D ]  }|j                  |        y y )NN   )lenr   
write_tag2
export_dxf)r   	tagwriterforcelines       r   r2   zPattern.export_dxf1   sK    tzz?e  S_5

 +	*+ $r   c                R    ddj                  d | j                  D              z   dz   S )N[,c              3  2   K   | ]  }t        |        y wr   )str)r   r5   s     r   r   z"Pattern.__str__.<locals>.<genexpr>8   s     ?Dc$i?s   ])joinr   r$   s    r   __str__zPattern.__str__7   s%    SXX?DJJ???#EEr   c                \    | j                   D cg c]  }|j                          c}S c c}w r   )r   as_list)r   r5   s     r   r?   zPattern.as_list:   s     +/::64666s   )c                    t        j                  | j                         ||      }| j                          |D ]  } | j                  |   y)a  Scale and rotate pattern.

        Be careful, this changes the base pattern definition, maybe better use
        :meth:`Hatch.set_pattern_scale` or :meth:`Hatch.set_pattern_angle`.

        Args:
            factor: scaling factor
            angle: rotation angle in degrees

        )factorr)   N)r   scale_patternr?   r%   r-   )r   rA   r)   scaled_patternr5   s        r   scalezPattern.scale=   sI     !..LLN6
 	

" 	!DDMM4 	!r   r   )r   zOptional[Iterable[PatternLine]])r!   r   returnr   )rE   Noner   r   r   rH   N)
r)   floatr*   r
   r+   r
   r,   Optional[Iterable[float]]rE   rF   )Fr3   r   rE   rF   )rE   r:   rE   r   )   r   )rA   rI   r)   rI   rE   rF   )__name__
__module____qualname__r   classmethodr   r%   r-   r2   r=   r?   rD    r   r   r   r      sy    E 
 
 !7;

 
 	

 5
 

$+F7!r   c                  T    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 ddZed	d       Zd
dZd ZddZy)r   Nc                    t        |      | _        t        |      | _        t        |      | _        |g | _        y t        |      | _        y r   )rI   r)   r	   r*   r+   r   r,   r(   s        r   r   zPatternLine.__init__Q   sG     "%L
 $Z 0 L#+B 	156G1H 	r   c                    dddddd}g }| D ]#  }|\  }}|dk(  r|j                  |       |||<   % t        |d   |d   |d   f|d   |d   f|      S )	Nr   )r   +   ,   -   .   1   r   rV   rW   rX   rY   )r'   r   )r!   pr,   tagcodevalues         r   r   zPatternLine.load_tagsa   s    qaQ/ 	 CKD%rz!((/$	  bEAbE1R5>AbE1R5>3D
 	
r   c                   |j                   } |d| j                          |d| j                  j                          |d| j                  j                          |d| j
                  j                          |d| j
                  j                          |dt        | j                               | j                  D ]  } |d|        y )Nr   rV   rW   rX   rY   O   rZ   )r1   r)   r*   xyr+   r0   r,   )r   r3   	write_tagitems       r   r2   zPatternLine.export_dxfo   s    ((	"djj!"doo''("doo''("dkkmm$"dkkmm$"c$0012** 	 Db$	 r   c           	     p    d| j                    d| j                   d| j                   d| j                   d	S )Nr7   z, r;   r)   r*   r+   r,   r$   s    r   r=   zPatternLine.__str__z   s<    

|2doo.bR%%&a)	
r   c                ^    | j                   | j                  | j                  | j                  gS r   rf   r$   s    r   r?   zPatternLine.as_list   s*    JJOOKK""	
 	
r   rG   )r)   rI   r*   r
   r+   r
   r,   rJ   )r!   r   rE   r   rK   rL   )	rN   rO   rP   r   staticmethodr   r2   r=   r?   rR   r   r   r   r   P   s^     !7;

 
 	

 5
  
 
	 

r   N)
__future__r   typingr   r   r   ezdxf.lldxf.tagsr   r   
ezdxf.mathr	   r
   ezdxf.toolsr   ezdxf.lldxf.tagwriterr   __all__r   r   rR   r   r   <module>rp      s>    # 4 4 - ! 7m
$=! =!@6
 6
r   