Ë
    £èhç/  ã                  ó:  — 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
mZ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  d dl!m"Z" d dl#m$Z$ d dl%m&Z& dgZ' ed e
dejP                  e¬«       e
dejP                  eejR                  e¬«       e
dd¬«       e
ddejT                  e¬«       e
dd ejT                  e¬«       e
dejV                   ejX                  d d«      e¬«       e
d ejZ                   ejX                  d d«      e¬«       e
d!d ¬«       e
d"dej\                  e¬«       e
d#d ejT                  e¬«       e
d$d%¬&«       e
d'd ej^                  e¬«      d(œ«      Z0 ee0«      Z1e G d)„ de«      «       Z2y*)+é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚOptional)Úconst)Ú	validator)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)ÚTags)ÚNULLVECÚZ_AXISé   )ÚAbstractBoundaryPath)Ú
base_class)Úacdb_entity)Úregister_entity)Ú
DXFPolygon)ÚRGB)ÚDrawing)Ú	DXFEntity)ÚAbstractTagWriterÚHatchÚ	AcDbHatché
   )ÚxtypeÚdefaultéÒ   )r   r    r   Úfixeré   ÚSOLID)r    éF   )r    r   r"   éG   éK   é   éL   é4   é)   éM   é/   T)Úoptionaléb   )Ú	elevationÚ	extrusionÚpattern_nameÚ
solid_fillÚassociativeÚhatch_styleÚpattern_typeÚpattern_angleÚpattern_scaleÚpattern_doubleÚ
pixel_sizeÚn_seed_pointsc                  óª   ‡ — e Zd ZdZdZ eeee«      Z	e
j                  ZeZdˆ fd„Zdd„Zdd„Zddˆ fd„Zd„ Z	 d	 	 	 	 	 dd„Z	 	 	 	 dd	„Zdd
„Zˆ xZS )r   zDXF HATCH entityÚHATCHc                ó¾  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |g d¢«       | j                  j                  || j                  «       «       | j                  j                  |ddg«       | j                  r9| j                  j                  |g d¢«       | j                  j                  |«       | j                  j                  |dg«       | j                  |«       | j                  r:|j                  t        j                   kD  r| j                  j                  |«       yyy)z(Export entity specific data as DXF tags.)r0   r1   r2   r3   r4   r5   r6   )r7   r8   r9   r:   N)ÚsuperÚexport_entityÚ
write_tag2r   ÚSUBCLASS_MARKERÚ
acdb_hatchÚnameÚdxfÚexport_dxf_attribsÚpathsÚ
export_dxfÚdxftypeÚpatternÚexport_seedsÚgradientÚ
dxfversionÚDXF2000)ÚselfÚ	tagwriterÚ	__class__s     €ú4lib/python3.12/site-packages/ezdxf/entities/hatch.pyr@   zHatch.export_entity²   s  ø€ ä‰Ñ˜iÔ(Ø×ÑœU×2Ñ2´J·O±OÔDØ�‰×#Ñ#Øòô		
ð 	�
‰
×Ñ˜i¨¯©«Ô8Ø�‰×#Ñ# I°¸~Ð/NÔOØ�<Š<Ø�H‰H×'Ñ'ØÒOôð �L‰L×#Ñ# IÔ.Ø�‰×#Ñ# I°¨~Ô>Ø×Ñ˜)Ô$Ø�=Š=˜Y×1Ñ1´E·M±MÒAØ�M‰M×$Ñ$ YÕ/ð Bˆ=ó    c                óþ   — 	 |j                  d«      }|j                  h d£|¬«      }|||t	        |«      z   dz   …= |D ��cg c]  \  }}|dk(  sŒ|‘Œ c}}| _        |S # t        j                  $ r |cY S w xY wc c}}w )Nr/   >   r   é   r/   )Ústartr   r   )Ú	tag_indexr   ÚDXFValueErrorÚcollect_consecutive_tagsÚlenÚseeds)rO   ÚtagsÚstart_indexÚ	seed_dataÚcodeÚvalues         rR   Ú
load_seedszHatch.load_seedsÌ   s–   € ð	ØŸ.™.¨Ó,ˆKð ×1Ñ1Ú ð 2ó 
ˆ	ð
 �˜{¬S°«^Ñ;¸aÑ?Ð?Ð@ñ 09ÔG©y¡  e¸DÀB»J’e¨yÒGˆŒ
Øˆøô ×"Ñ"ò 	ØŠKð	üó Hs   ‚A ÁA9ÁA9ÁA6Á5A6c                óš   — |j                  dt        | j                  «      «       | j                  D ]  }|j                  d|d d «       Œ y )Nr/   r   r#   )rA   rZ   r[   Úwrite_vertex)rO   rP   Úseeds      rR   rK   zHatch.export_seedsÜ   s>   € Ø×Ñ˜R¤ T§Z¡Z£Ô1Ø—J”JˆDØ×"Ñ" 2 t¨B¨Q xÕ0ñ rS   c                ó\   •— | j                   syt        ‰| �	  «        | j                  «        y)z<Remove all dependencies from actual document. (internal API)N)Úis_aliver?   Úremove_dependenciesÚremove_association)rO   ÚotherrQ   s     €rR   rg   zHatch.remove_dependenciesá   s$   ø€ à�}Š}Øä‰Ñ#Ô%Ø×ÑÕ!rS   c                ó„   — | j                   j                  r*d| j                   _        | j                  D ]	  }g |_        Œ yy)z Remove associated path elements.r   N)rE   r4   rG   Úsource_boundary_objects)rO   Úpaths     rR   rh   zHatch.remove_associationé   s6   € à�8‰8×ÒØ#$ˆD�H‰HÔ ØŸ
œ
�Ø/1�Õ,ñ #ð  rS   c                óú   — d| _         d| _        d| j                  _        || j                  _        || j                  _        d| j                  _        t        j                  | j                  _	        |�|| _
        yy)a  Set the solid fill mode and removes all gradient and pattern fill related
        data.

        Args:
            color: :ref:`ACI`, (0 = BYBLOCK; 256 = BYLAYER)
            style: hatch style (0 = normal; 1 = outer; 2 = ignore)
            rgb: true color value as (r, g, b)-tuple - has higher priority
                than `color`. True color support requires DXF R2000.

        Nr   r$   )rL   rJ   rE   r3   Úcolorr5   r2   r   ÚHATCH_TYPE_PREDEFINEDr6   Úrgb)rO   rn   Ústylerp   s       rR   Úset_solid_fillzHatch.set_solid_fillð   sf   € ð ˆŒØˆŒØˆ�‰Ôð ˆ�‰ŒØ$ˆ�‰ÔØ 'ˆ�‰ÔÜ %× ;Ñ ;ˆ�‰ÔØˆ?ØˆD�Hð rS   c                óæ  — | j                   st        j                  d«      ‚| j                  }| j                  j
                  }| j                  j                  }|�|�|€t        j                  d«      ‚|D ]À  }|j                   r|j                  rt        j                  d«      ‚||j                  urt        j                  d«      ‚||j                  j
                  k7  rt        j                  d«      ‚|j                  j                  |j                  j                  «       |j                  |«       ŒÂ t        |j                  «      rd| j                  _        yd| j                  _        y)	að  Set association from hatch boundary `path` to DXF geometry `entities`.

        A HATCH entity can be associative to a base geometry, this association
        is **not** maintained nor verified by `ezdxf`, so if you modify the base
        geometry the geometry of the boundary path is not updated and no
        verification is done to check if the associated geometry matches
        the boundary path, this opens many possibilities to create
        invalid DXF files: USE WITH CARE!

        zHATCH entity is destroyedNz/virtual entity can not have associated entitiesz2associated entity is destroyed or a virtual entityz.associated entity is from a different documentz,associated entity is from a different layoutr   r   )rf   r   ÚDXFStructureErrorÚdocrE   ÚownerÚhandleÚ
is_virtualrk   ÚappendÚappend_reactor_handlerZ   r4   )rO   rl   Úentitiesru   rv   rw   Úentitys          rR   Ú	associatezHatch.associate
  s6  € ð �}Š}Ü×)Ñ)Ð*EÓFÐFà�h‰hˆØ—‘—‘ˆØ—‘—‘ˆØˆ;˜%˜-¨6¨>Ü×)Ñ)ØAóð ó ˆFØ—?’? f×&7Ò&7Ü×-Ñ-ØHóð ð ˜&Ÿ*™*Ñ$Ü×-Ñ-ØDóð ð ˜Ÿ
™
×(Ñ(Ò(Ü×-Ñ-ØBóð ð ×(Ñ(×/Ñ/°·
±
×0AÑ0AÔBØ×(Ñ(¨Õ0ð ô  %(¨×(DÑ(DÔ$E˜qˆ�‰ÕÈ1ˆ�‰ÕrS   c                óÈ   — t        |«      }t        |«      dk  rt        j                  d«      ‚t        |«      | _        t        | j                  «      | j
                  _        y)zÒSet seed points, `points` is an iterable of (x, y)-tuples.
        I don't know why there can be more than one seed point.
        All points in :ref:`OCS` (:attr:`Hatch.dxf.elevation` is the Z value)

        r   zSArgument points should be an iterable of 2D points and requires at least one point.N)ÚlistrZ   r   rX   r[   rE   r;   )rO   Úpointss     rR   Úset_seed_pointszHatch.set_seed_points6  sQ   € ô �f“ˆÜˆv‹;˜Š?Ü×%Ñ%ð'óð ô ˜&“\ˆŒ
Ü!$ T§Z¡Z£ˆ�‰ÕrS   )rP   r   ÚreturnÚNone)r\   r   r‚   r   )rP   r   )N)ri   zOptional[Drawing]r‚   rƒ   )é   r   N)rn   Úintrq   r…   rp   zOptional[RGB])rl   r   r{   zIterable[DXFEntity])r€   zIterable[tuple[float, float]]r‚   rƒ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr
   r   r   rC   Ú
DXFATTRIBSr   rN   ÚMIN_DXF_VERSION_FOR_EXPORTÚacdb_hatch_group_codeÚLOAD_GROUP_CODESr@   ra   rK   rg   rh   rr   r}   r�   Ú__classcell__)rQ   s   @rR   r   r   ©   s„   ø„ áà€GÙ˜z¨;¸
ÓC€JØ!&§¡ÐØ,Ðõ0ó4ó 1ö
"ò2ð DHðØðØ%(ðØ3@óð4*MØ(ð*MØ4Gó*M÷X1rS   N)3Ú
__future__r   Útypingr   r   r   Úezdxf.lldxfr   r   Úezdxf.lldxf.attributesr	   r
   r   r   r   r   Úezdxf.lldxf.tagsr   Ú
ezdxf.mathr   r   Úboundary_pathsr   Ú	dxfentityr   Údxfgfxr   Úfactoryr   Úpolygonr   Úezdxf.colorsr   Úezdxf.documentr   Úezdxf.entitiesr   Úezdxf.lldxf.tagwriterr   Ú__all__Úpoint3dÚis_not_null_vectorÚis_integer_boolÚHATCH_STYLE_NESTEDÚis_in_integer_rangero   Úis_not_zeroÚis_greater_or_equal_zerorC   r�   r   © rS   rR   Ú<module>r¨      sÇ  ðõ #ß 4Ñ 4å Ý !÷÷ õ "ß &Ý 0Ý !Ý Ý $Ý áÝ Ý&Ý(Ý7ð ˆ)€ñ Øñ
 ˜R u§}¡}¸gÔFÙØØ—-‘-ØØ×2Ñ2Ø ô
ñ   ¨7Ô3ñ ØØØ×/Ñ/Ø ô	
ñ ØØØ×/Ñ/Ø ô	
ñ ØØ×,Ñ,Ø3�i×3Ñ3°A°qÓ9Ø ô	
ñ  ØØ×/Ñ/Ø3�i×3Ñ3°A°qÓ9Ø ô	
ñ ! ¨QÔ/á ØØØ×+Ñ+Ø ô	
ñ "ØØØ×/Ñ/Ø ô	
ñ ˜b¨4Ô0á ØØØ×8Ñ8Ø ô	
ñc@óC€
ñH +¨:Ó6Ð ð ôY1ˆJó Y1ó ñY1rS   