Ë
    £èhÁ   ã                  ó   — d dl mZ d dlmZmZ d dlZd dlmZmZ d dl	m
Z
mZmZmZmZ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mZ erd dlmZ d dl m!Z! dgZ" ejF                  d«      Z$ edi d eddejJ                  e¬«      “d edejL                  e¬«      “d edejL                  eejN                  e¬«      “d edd¬«      “d ed ejP                  d!ejR                  e¬"«      “d# ed$d ejJ                  e¬«      “d% ed&ejT                   ejV                  d d'«      ed!¬(«      “d) ed*ejX                   ejV                  d d'«      e¬«      “d+ ed,d ¬«      “d- ed.dejZ                  e¬«      “d/ ed0d d!ejJ                  e¬"«      “d1 ed2d ejJ                  e¬«      “d3 ed4d!¬5«      “d6 ed7d ej\                  e¬«      “d8 ed9ej^                  d:¬«      “d; ed<d ¬«      “«      Z0 ee0«      Z1e G d=„ de«      «       Z2y)>é    )Úannotations)ÚTYPE_CHECKINGÚOptionalN)Ú	validatorÚconst)ÚDXFAttributesÚDefSubclassÚDXFAttrÚRETURN_DEFAULTÚXTypeÚgroup_code_mapping)ÚNULLVECÚZ_AXISé   )Ú
base_class)Úacdb_entity)Úregister_entity)Ú
DXFPolygon)ÚGradientÚGradientType)ÚAbstractTagWriter)ÚRGBÚMPolygonÚezdxfÚAcDbMPolygonÚversionéF   )Údefaultr   ÚfixerÚ	elevationé
   )Úxtyper   Ú	extrusionéÒ   )r"   r   r   r   Úpattern_nameé   Ú )r   Ú
fill_coloré?   T)r   Úoptionalr   r   Ú
solid_filléG   Úhatch_styleéK   é   )r   r   r   r*   Úpattern_typeéL   Úpattern_angleé4   Úpattern_scaleé)   Úannotated_boundaryéI   Úpattern_doubleéM   Ú
pixel_sizeé/   )r*   Ún_seed_pointséb   Úoffset_vectoré   )r   r   Údegenerated_loopséc   c                  óŽ   ‡ — e Zd ZdZdZ eeee«      Z	e
j                  ZeZd	d„Zd
ˆ fd„Zdd„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Zˆ xZS )r   zfDXF MPOLYGON entity

    The MPOLYGON is not a core DXF entity, and requires a CLASS definition.

    ÚMPOLYGONc                ó\   — | j                   j                  rt        j                  d«       yy)Nz8MPOLYGON including edge paths are not exported by ezdxf!FT)ÚpathsÚhas_edge_pathsÚloggerÚwarning©ÚselfÚ	tagwriters     ú7lib/python3.12/site-packages/ezdxf/entities/mpolygon.pyÚpreprocess_exportzMPolygon.preprocess_exportŽ   s&   € Ø�:‰:×$Ò$Ü�N‰NØJôð Øó    c                ó  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  }|j                  |g d¢«       | j                  j                  || j                  «       «       |j                  |dg«       |j                  dk(  r|j                  |g d¢«       |j                  |ddg«       |j                  dk(  r<| j                  r| j                  j                  |d¬«       n|j                  d	d«       |j                  t        j                  kD  r|j                  |d
«       |j                  |d«       | j!                  |«       | j#                  |«       y)z(Export entity specific data as DXF tags.)r   r    r#   r%   r+   r0   r   )r2   r4   r8   r6   r:   T)ÚforceéN   r(   r>   N)ÚsuperÚexport_entityÚ
write_tag2r   ÚSUBCLASS_MARKERÚacdb_mpolygonÚnameÚdxfÚexport_dxf_attribsrE   Ú
export_dxfÚdxftyper+   ÚpatternÚ
dxfversionÚDXF2000Úexport_degenerated_loopsÚexport_gradient)rJ   rK   rX   Ú	__class__s      €rL   rS   zMPolygon.export_entity–   sL  ø€ ä‰Ñ˜iÔ(Ø×ÑœU×2Ñ2´M×4FÑ4FÔGØ�h‰hˆØ×ÑØòô		
ð 	�
‰
×Ñ˜i¨¯©«Ô8à×ÑØð ðô	
ð �>‰>˜QÒØ×"Ñ"ØÒOôð 	×ÑØà$Øðô	
ð �>‰>˜QÒØ�|Š|Ø—‘×'Ñ'¨	¸Ð'Õ>à×$Ñ$ R¨Ô+Ø×Ñ¤%§-¡-Ò/Ø×"Ñ" 9¨lÔ;Ø×Ñ˜y¨/Ô:Ø×%Ñ% iÔ0Ø×Ñ˜YÕ'rN   c                ó<   — | j                   j                  |d«       y )Nr@   )rX   rY   rI   s     rL   r_   z!MPolygon.export_degenerated_loopsÅ   s   € Ø�‰×#Ñ# IÐ/BÕCrN   c                ó´   — |j                   t        j                  k  ry | j                  €t	        ddd¬«      | _        | j                  j                  |«       y )Nr   ©ÚkindÚnumÚtype)r]   r   ÚDXF2004Úgradientr   rZ   rI   s     rL   r`   zMPolygon.export_gradientÈ   sC   € Ø×Ñ¤%§-¡-Ò/ØØ�=‰=Ð Ü$¨!°¸Ô;ˆDŒMØ�‰× Ñ  Õ+rN   c                óì   — d| _         d| _        d| j                  _        || j                  _        d| j                  _        t        j                  | j                  _        |�| j                  |«       yy)aµ  Set :class:`MPolygon` to solid fill mode and removes all gradient and
        pattern fill related data.

        Args:
            color: :ref:`ACI`, (0 = BYBLOCK; 256 = BYLAYER)
            style: hatch style is not supported by MPOLYGON, just for symmetry
                to HATCH
            rgb: true color value as (r, g, b)-tuple - has higher priority
                than `color`. True color support requires DXF R2004+

        Nr   ÚSOLID)
ri   r\   rX   r+   r(   r%   r   ÚHATCH_TYPE_PREDEFINEDr0   Úset_solid_rgb_gradient)rJ   ÚcolorÚstyleÚrgbs       rL   Úset_solid_fillzMPolygon.set_solid_fillÏ   sb   € ð ˆŒØˆŒØˆ�‰Ôð $ˆ�‰ÔØ 'ˆ�‰ÔÜ %× ;Ñ ;ˆ�‰ÔØˆ?Ø×'Ñ'¨Õ,ð rN   c                óŠ   — t        ddt        j                  ¬«      | _        || j                  _        || j                  _        y)z|Set solid fill color as gradient of a single RGB color.
        This disables pattern fill!

        (internal API)
        r   r&   rd   N)r   r   ÚLINEARri   Úcolor1Úcolor2)rJ   rp   s     rL   rm   zMPolygon.set_solid_rgb_gradienté   s2   € ô ! a¨Q´\×5HÑ5HÔIˆŒØ"ˆ�‰ÔØ"ˆ�‰ÕrN   )rK   r   ÚreturnÚbool)rK   r   rv   ÚNone)rK   r   )é   r   N)rn   Úintro   rz   rp   zOptional[RGB])rp   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr   r   r   rV   Ú
DXFATTRIBSr   r^   ÚMIN_DXF_VERSION_FOR_EXPORTÚacdb_mpolygon_group_codeÚLOAD_GROUP_CODESrM   rS   r_   r`   rq   rm   Ú__classcell__)ra   s   @rL   r   r   �   sl   ø„ ñð €GÙ˜z¨;¸ÓF€JØ!&§¡ÐØ/Ðóõ-(ó^Dó,ð DHð-Øð-Ø%(ð-Ø3@ó-÷4#rN   )3Ú
__future__r   Útypingr   r   ÚloggingÚezdxf.lldxfr   r   Úezdxf.lldxf.attributesr   r	   r
   r   r   r   Ú
ezdxf.mathr   r   Ú	dxfentityr   Údxfgfxr   Úfactoryr   Úpolygonr   ri   r   r   Úezdxf.lldxf.tagwriterr   Úezdxf.colorsr   Ú__all__Ú	getLoggerrG   Úis_integer_boolÚpoint3dÚis_not_null_vectorÚBYLAYERÚis_valid_aci_colorÚHATCH_STYLE_NESTEDÚis_in_integer_rangerl   Úis_not_zeroÚis_greater_or_equal_zeroÚpoint2drV   r‚   r   © rN   rL   Ú<module>rž      sÃ  ðõ #ß *Û ß (÷÷ ÷ 'Ý !Ý Ý $Ý ß ,áÝ7Ý àˆ,€Ø	ˆ×	Ñ	˜7Ó	#€áØð]à‘7ØØØ×/Ñ/Ø ô	
ð]ð 	‘W˜R u§}¡}¸gÔFð]ð 	‘WØØ—-‘-ØØ×2Ñ2Ø ô
ð]ð$ 	™ ¨2Ô.ð%]ð( 	‘gØØ—M‘MØØ×2Ñ2Ø ô
ð)]ð< 	‘gØØØ×/Ñ/Ø ô	
ð=]ðP 	‘wØØ×,Ñ,Ø3�i×3Ñ3°A°qÓ9Ø Øô
ðQ]ð` 	™ØØ×/Ñ/Ø3�i×3Ñ3°A°qÓ9Ø ô	
ða]ðn 	™ ¨QÔ/ðo]ðr 	™ØØØ×+Ñ+Ø ô	
ðs]ðD 	™gØØØØ×/Ñ/Ø ô
ðE]ðT 	™'ØØØ×/Ñ/Ø ô	
ðU]ðb 	‘g˜b¨4Ô0ðc]ðd 	™ØØØ×8Ñ8Ø ô	
ðe]ðr 	™ ¨5¯=©=À&ÔIðs]ðx 	™W R°Ô3ðy]ó`€ñB .¨mÓ<Ð ð ôo#ˆzó o#ó ño#rN   