
    Og                        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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.

    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     \/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/mpolygon.pypreprocess_exportzMPolygon.preprocess_export   s&    ::$$NN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)forceN   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2M4F4FGhh		
 	

i8 	
 >>Q""O 	$	
 >>Q||''	'>$$R+%--/""9l;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    %--/== $!;DM  +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     !aQ\5H5H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;FJ!&/-(^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// 	
] 	WRu}}gF] 	W--22 
]$ 	2.%]( 	gMM22 
)]< 	g// 	
=]P 	w,,3i33Aq9 
Q]` 	//3i33Aq9 	
a]n 	Q/o]r 	++ 	
s]D 	g// 
E]T 	'// 	
U]b 	gb40c]d 	88 	
e]r 	5==&Is]x 	WR3y]`B .m<  o#z o# o#rN   