
    'j                       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j#        d          Z$ edi d eddej%        e          d edej&        e          d edej&        eej'        e          d edd          d ed ej(        d!ej)        e"          d# ed$d ej%        e          d% ed&ej*         ej+        d d'          ed!(          d) ed*ej,         ej+        d d'          e          d+ ed,d           d- ed.dej-        e          d/ ed0d d!ej%        e"          d1 ed2d ej%        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                      Z2dS )>    )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versionF   )defaultr   fixer	elevation
   )xtyper   	extrusion   )r"   r   r   r   pattern_name    )r   
fill_color?   T)r   optionalr   r   
solid_fillG   hatch_styleK      )r   r   r   r*   pattern_typeL   pattern_angle4   pattern_scale)   annotated_boundaryI   pattern_doubleM   
pixel_size/   )r*   n_seed_pointsb   offset_vector   )r   r   degenerated_loopsc   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.

    MPOLYGON	tagwriterr   returnboolc                V    | j         j        rt                              d           dS dS )Nz8MPOLYGON including edge paths are not exported by ezdxf!FT)pathshas_edge_pathsloggerwarningselfrD   s     Q/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/mpolygon.pypreprocess_exportzMPolygon.preprocess_export   s4    :$ 	NNJ   5t    Nonec                :   t                                          |           |                    t          j        t
          j                   | j        }|                    |g d           | j	        
                    ||                                            |                    |dg           |j        dk    r|                    |g d           |                    |ddg           |j        dk    r:| j        r| j        
                    |d           n|                    d	d           |j        t          j        k    r|                    |d
           |                    |d           |                     |           |                     |           dS )z(Export entity specific data as DXF tags.)r   r    r#   r%   r+   r0   r   )r2   r4   r8   r6   r:   T)forceN   r(   r>   N)superexport_entity
write_tag2r   SUBCLASS_MARKERacdb_mpolygonnamedxfexport_dxf_attribsrH   
export_dxfdxftyper+   pattern
dxfversionDXF2000export_degenerated_loopsexport_gradient)rM   rD   r[   	__class__s      rN   rV   zMPolygon.export_entity   s   i(((U2M4FGGGh  		
 		
 		
 	
i888 	
 	
 	
 >Q""OOO   	$	
 	
 	
 >Q| ,''	'>>>>$$R+++%-//""9l;;;y/:::%%i000Y'''''rP   c                <    | j                             |d           d S )Nr@   )r[   r\   rL   s     rN   rb   z!MPolygon.export_degenerated_loops   s!    ##I/BCCCCCrP   c                    |j         t          j        k     rd S | j        t	          ddd          | _        | j                            |           d S )Nr   kindnumtype)r`   r   DXF2004gradientr   r]   rL   s     rN   rc   zMPolygon.export_gradient   sQ    %-//F= $!;;;DM  +++++rP      r   NcolorintstylergbOptional[RGB]c                    d| _         d| _        d| j        _        || j        _        d| j        _        t          j        | j        _        || 	                    |           dS dS )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)
rl   r_   r[   r+   r(   r%   r   HATCH_TYPE_PREDEFINEDr0   set_solid_rgb_gradient)rM   rn   rp   rq   s       rN   set_solid_fillzMPolygon.set_solid_fill   se      $ ' % ;?'',,,,, ?rP   r   c                x    t          ddt          j                  | _        || j        _        || j        _        dS )z|Set solid fill color as gradient of a single RGB color.
        This disables pattern fill!

        (internal API)
        r   r&   rg   N)r   r   LINEARrl   color1color2)rM   rq   s     rN   rv   zMPolygon.set_solid_rgb_gradient   s7     !aQ\5HIII""rP   )rD   r   rE   rF   )rD   r   rE   rQ   )rD   r   )rm   r   N)rn   ro   rp   ro   rq   rr   )rq   r   )__name__
__module____qualname____doc__DXFTYPEr   r   r   rY   
DXFATTRIBSr   ra   MIN_DXF_VERSION_FOR_EXPORTacdb_mpolygon_group_codeLOAD_GROUP_CODESrO   rV   rb   rc   rw   rv   __classcell__)rd   s   @rN   r   r      s          Gz;FFJ!&/   -( -( -( -( -( -(^D D D D, , , , DH- - - - -4# # # # # # # #rP   )3
__future__r   typingr   r   loggingezdxf.lldxfr   r   ezdxf.lldxf.attributesr   r	   r
   r   r   r   
ezdxf.mathr   r   	dxfentityr   dxfgfxr   factoryr   polygonr   rl   r   r   ezdxf.lldxf.tagwriterr   ezdxf.colorsr   __all__	getLoggerrJ   is_integer_boolpoint3dis_not_null_vectorBYLAYERis_valid_aci_colorHATCH_STYLE_NESTEDis_in_integer_rangeru   is_not_zerois_greater_or_equal_zeropoint2drY   r   r    rP   rN   <module>r      s   # " " " " " * * * * * * * *  ( ( ( ( ( ( ( (                ' & & & & & & & ! ! ! ! ! !       $ $ $ $ $ $       , , , , , , , , !777777      ,		7	#	#]77/ 	
 
 
] 	WWRu}gFFF] 	WW-2 
 
 
]$ 	2...%]( 	ggM2 
 
 
)]< 	gg/ 	
 
 
=]P 	ww,3i3Aq99 
 
 
Q]` 	/3i3Aq99 	
 
 
a]n 	Q///o]r 	+ 	
 
 
s]D 	gg/ 
 
 
E]T 	''/ 	
 
 
U]b 	ggb4000c]d 	8 	
 
 
e]r 	5=&IIIs]x 	WWR333y]` `B .-m<<  o# o# o# o# o#z o# o# o# o# o#rP   