Ë
    £èh  ã                  ó   — U d dl 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 g d¢ZdZeeee   ee   ee   f   Zd	ed
<   ee   Zd	ed<   ddd„Z	 d	 	 	 	 	 	 	 dd„Zddd„Zdd„Zdd„Z G d„ d«      Z ed ¬«      Zd d„Zd!d„Z G d„ d«      Zy)"é    )Úannotations)ÚSequenceÚTupleÚOptional)Ú	TypeAlias)ÚVec2é   )ÚISO_PATTERN)	ÚloadÚscale_patternÚ	scale_allÚparser
   ÚIMPERIAL_PATTERNÚHatchPatternLineTypeÚHatchPatternTypeÚPatternAnalyserg
…B¡P(¤?r   r   r   Nc                óT   — |€| dk(  rdnt         }t        }|dk7  rt        ||¬«      }|S )aÚ  Load hatch pattern definition, default scaling is like the iso.pat of
    BricsCAD, set `measurement` to 0 to use the imperial (US) scaled pattern,
    which has a scaling factor of 1/25.4 = ~0.03937.

    Args:
        measurement: like the $MEASUREMENT header variable, 0 to user imperial
            scaled pattern, 1 to use ISO scaled pattern.
        factor: hatch pattern scaling factor, overrides `measurement`

    Returns: hatch pattern dict of scaled pattern

    r	   g      ð?)Úfactor)ÚIMPERIAL_SCALE_FACTORr
   r   )Úmeasurementr   Úpatterns      ú3lib/python3.12/site-packages/ezdxf/tools/pattern.pyr   r      s5   € ð €~Ø# qÒ(‘Ô.CˆÜ€GØ�‚}Ü˜G¨FÔ3ˆØ€Nó    c                ób   ‡‡‡‡— dŠdˆˆfd„Šdˆˆˆfd„}| D �cg c]
  } ||«      ‘Œ c}S c c}w )Né
   c                óH   •— | D �cg c]  }t        |‰z  ‰«      ‘Œ c}S c c}w ©N©Úround)ÚiterableÚir   Úndigitss     €€r   Ú_scalezscale_pattern.<locals>._scale9   s&   ø€ Ù4<Ó=±H¨q”�a˜&‘j 'Õ*°HÑ=Ð=ùÒ=s   †c                óö   •— | \  }}}}‰r<t        |«      j                  ‰«      }t        |«      j                  ‰«      }|‰z   dz  }t        |‰«      t         ‰|«      «      t         ‰|«      «       ‰|«      gS )Ng     €v@)r   Ú
rotate_degr   Útuple)ÚlineÚangle0Ú
base_pointÚoffsetÚdash_length_itemsr#   Úangler"   s        €€€r   Ú_scale_linez"scale_pattern.<locals>._scale_line<   s„   ø€ Ø8<Ñ5ˆ�
˜FÐ$5ÙÜ˜jÓ)×4Ñ4°UÓ;ˆJÜ˜&“\×,Ñ,¨UÓ3ˆFØ˜u‘n¨Ñ-ˆFô �&˜'Ó"Ü‘&˜Ó$Ó%Ü‘&˜“.Ó!ÙÐ$Ó%ð	
ð 	
r   )ÚreturnúSequence[float])r.   r   © )r   r   r,   r-   r'   r#   r"   s    ``  @@r   r   r   4   s3   û€ ð €Gö>÷
ñ +2Ó2©' $‰K˜Õ¨'Ñ2Ð2ùÒ2s   š,c           
     ól   — | j                  «       D ��ci c]  \  }}|t        |||«      “Œ c}}S c c}}w r   )Úitemsr   )r   r   r,   ÚnameÚps        r   r   r   N   s2   € ØAHÇÁÄÔQÁ±g°d¸AˆD”-  6¨5Ó1Ñ1ÀÒQÐQùÓQs   ”0c                ój   — 	 t        | «      }|j                  «       S # t        $ r t        d«      ‚w xY w)Nz Incompatible pattern definition.)ÚPatternFileCompilerÚcompile_patternÚ	ExceptionÚ
ValueError)r   Úcomps     r   r   r   R   s;   € ð=Ü" 7Ó+ˆØ×#Ñ#Ó%Ð%øÜò =ÜÐ;Ó<Ð<ð=ús   ‚ �2c                óX   — | j                  d| j                  d«      rd¬«      S d¬«      S )NÚ,Ú*r	   éÿÿÿÿ)Úmaxsplit)ÚsplitÚ
startswith)r'   s    r   Ú_tokenize_pattern_linerB   Z   s*   € Ø�:‰:�c¨¯©¸Ô)= Aˆ:ÓFÐFÀ2ˆ:ÓFÐFr   c                  ó$   — e Zd Zdd„Zd„ Zddd„Zy)r6   c                óŠ   — d„ |j                  d«      D «       D �cg c]  }|r|d   dk7  rt        |«      ‘Œ c}| _        y c c}w )Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr   )Ústrip)Ú.0r'   s     r   Ú	<genexpr>z/PatternFileCompiler.__init__.<locals>.<genexpr>b   s   è ø€ ÐFÑ2E¨$˜Ÿ™ŸÑ2Eùs   ‚Ú
r   Ú;)r@   rB   Ú_lines)ÚselfÚcontentr'   s      r   Ú__init__zPatternFileCompiler.__init___   sI   € ñ G°'·-±-ÀÔ2EÔFó
áF�Ù˜˜Q™ 3šô # 4Õ(ØFñ
ˆ�ùò 
s   ›A c           	   #  óì   K  — g }| j                   D ]S  }|d   j                  d«      r|r|–— |d   dd  |d   gg}Œ,|j                  |D �cg c]  }t        |«      ‘Œ c}«       ŒU |r|–— y y c c}w ­w)Nr   r=   r	   )rK   rA   ÚappendÚfloat)rL   r   r'   Úes       r   Ú_parse_patternz"PatternFileCompiler._parse_patternf   s�   è ø€ ØˆØ—K”KˆDØ�A‰w×!Ñ! #Ô&ÙØ!’MØ  ™G A B˜K¨¨a©Ð1Ð2‘à—‘±$Ó7±$¨Q¤ a¥°$Ñ7Õ8ð  ñ Ø‹Mð ùò  8ùs   ‚A
A4ÁA/
ÁA4c           	     ó  — t        «       }| j                  «       D ]æ  }g }|dd  D ]Ï  }t        |d   |d   «      }|D �cg c]  }t        ||«      ‘Œ }}g }|d   }	|j	                  |	«       |j	                  |d   |d   f«       |j                  |	«      }|j	                  t        |j                  |«      t        |j                  |«      f«       |j	                  |dd  «       |j	                  |«       ŒÑ |||d   d   <   Œè |S c c}w )Nr	   é   é   r   é   é   )ÚdictrS   r   r   rP   r%   ÚxÚy)
rL   r"   r   r4   Úpatr'   r*   rR   Úpat_liner,   s
             r   r7   z#PatternFileCompiler.compile_patterns   s  € Ü“&ˆØ×$Ñ$Ö&ˆAØˆCØ˜!˜"›�ä˜d 1™g t¨A¡wÓ/�ñ 48Ó8±4¨aœ˜a Õ)°4�Ð8Ø�à˜Q™�Ø—‘ Ô&ð —‘  a¡¨$¨q©'Ð 2Ô3ð  ×*Ñ*¨5Ó1�Ø—‘¤ v§x¡x°Ó!9¼5ÀÇÁÈ7Ó;SÐ TÔUð —‘  Q R Ô)Ø—
‘
˜8Õ$ð) ð*  #ˆG�A�a‘D˜‘GÒð/ 'ð0 ˆùò# 9s   ¾DN)rM   Ústr)r   )r"   Úintr.   rY   )Ú__name__Ú
__module__Ú__qualname__rN   rS   r7   r0   r   r   r6   r6   ^   s   „ ó
òõr   r6   )r   c                ó,   — t        t        | «      «       S r   )ÚboolÚlen)r   s    r   Úis_solidrf   “   s   € Ü”C˜“LÓ!Ð!Ð!r   c                ó*   — t        | dz  dz  «      dz  S )Né´   é   r   )r,   s    r   Úround_angle_15_degrj   —   s   € Ü�%˜#‘+ Ñ#Ó$ rÑ)Ð)r   c                  óT   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zy
)r   c           	     óv   — |D ���cg c]  \  }}}}t        |«      t        |«      f‘Œ c}}}| _        y c c}}}w r   )rj   rf   rK   )rL   r   r,   Ú_Úline_patterns        r   rN   zPatternAnalyser.__init__œ   s@   € ñ
 .5õ/
á-4Ñ)��q˜!˜\ô   Ó&¬°Ó(>Ò?Ø-4ó/
ˆ�ùô /
s   ‡"4c                ó@   ‡— t        ˆfd„| j                  D «       «      S )Nc              3  ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr   r0   ©rG   Úangle_rm   r,   s      €r   rH   z,PatternAnalyser.has_angle.<locals>.<genexpr>¥   ó   øè ø€ Ð@±K¡y v¨q�6˜U•?±Kùó   ƒ©ÚanyrK   ©rL   r,   s    `r   Ú	has_anglezPatternAnalyser.has_angle¤   ó   ø€ ÜÓ@°D·K²KÓ@Ó@Ð@r   c                ó@   ‡— t        ˆfd„| j                  D «       «      S )Nc              3  ó.   •K  — | ]  \  }}|‰k(  –— Œ y ­wr   r0   rq   s      €r   rH   z-PatternAnalyser.all_angles.<locals>.<genexpr>¨   rs   rt   ©ÚallrK   rw   s    `r   Ú
all_angleszPatternAnalyser.all_angles§   ry   r   c                óD   ‡‡— t        ˆˆfd„| j                  D «       «      S )Nc              3  ó<   •K  — | ]  \  }}|‰k(  xr |‰k(  –— Œ y ­wr   r0   ©rG   rr   Úsolid_r,   Úsolids      €€r   rH   z+PatternAnalyser.has_line.<locals>.<genexpr>«   ó)   øè ø€ ð 
ÙFQ±N°F¸FˆF�e‰OÒ/ ¨%¡Ó/Ákùó   ƒru   ©rL   r,   rƒ   s    ``r   Úhas_linezPatternAnalyser.has_lineª   ó!   ù€ Üô 
ØFJÇkÂkó
ó 
ð 	
r   c                óD   ‡‡— t        ˆˆfd„| j                  D «       «      S )Nc              3  ó<   •K  — | ]  \  }}|‰k(  xr |‰k(  –— Œ y ­wr   r0   r�   s      €€r   rH   z,PatternAnalyser.all_lines.<locals>.<genexpr>°   r„   r…   r|   r†   s    ``r   Ú	all_lineszPatternAnalyser.all_lines¯   rˆ   r   c                ó:   — t        d„ | j                  D «       «      S )Nc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr   r0   ©rG   rm   rƒ   s      r   rH   z1PatternAnalyser.has_solid_line.<locals>.<genexpr>µ   ó   è ø€ Ð5©™X˜Q ”5©ùó   ‚ru   ©rL   s    r   Úhas_solid_linezPatternAnalyser.has_solid_line´   ó   € ÜÑ5¨¯ªÓ5Ó5Ð5r   c                ó:   — t        d„ | j                  D «       «      S )Nc              3  ó(   K  — | ]
  \  }}| –— Œ y ­wr   r0   rŽ   s      r   rH   z2PatternAnalyser.has_dashed_line.<locals>.<genexpr>¸   ó   è ø€ Ð9©[¡  E�u”9©[ùó   ‚ru   r‘   s    r   Úhas_dashed_linezPatternAnalyser.has_dashed_line·   ó   € ÜÑ9¨T¯[ª[Ó9Ó9Ð9r   c                ó:   — t        d„ | j                  D «       «      S )Nc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr   r0   rŽ   s      r   rH   z2PatternAnalyser.all_solid_lines.<locals>.<genexpr>»   r�   r�   r|   r‘   s    r   Úall_solid_lineszPatternAnalyser.all_solid_linesº   r“   r   c                ó:   — t        d„ | j                  D «       «      S )Nc              3  ó(   K  — | ]
  \  }}| –— Œ y ­wr   r0   rŽ   s      r   rH   z3PatternAnalyser.all_dashed_lines.<locals>.<genexpr>¾   r–   r—   r|   r‘   s    r   Úall_dashed_linesz PatternAnalyser.all_dashed_lines½   r™   r   N)r   r   )r,   r_   r.   rd   )r,   r_   rƒ   rd   r.   rd   )r.   rd   )r`   ra   rb   rN   rx   r~   r‡   r‹   r’   r˜   rœ   rŸ   r0   r   r   r   r   ›   s1   „ ó
óAóAó
ó

ó
6ó:ó6ô:r   r   )r	   N)r   r_   r   zOptional[float])r	   r   )r   r   r   rQ   r,   rQ   r.   r   )r   rY   r   rQ   r,   rQ   )r   r^   r.   rY   )r'   r^   r.   Úlist)r   r/   r.   rd   )r,   rQ   r.   r_   )Ú
__future__r   Útypingr   r   r   Útyping_extensionsr   Ú
ezdxf.mathr   Ú_iso_patternr
   Ú__all__r   rQ   r   Ú__annotations__r   r   r   r   r   rB   r6   r   rf   rj   r   r0   r   r   Ú<module>r¨      sÓ   ðö #ß ,Ñ ,Ý 'Ý Ý %ò
€ð #Ð Ø"'Ø	ˆ8�E‰?˜H U™O¨X°e©_Ð<ñ#Ð �ió ð 'Ð';Ñ<Ð �)Ó <ôð, BCð3Øð3Ø',ð3Ø9>ð3àó3ô4Ró=óG÷/ñ /ñd  AÔ&Ð ó"ó*÷#:ò #:r   