Ë
    £èhõi  ã                  óz  — d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dl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mZmZ d dlmZmZmZm Z m!Z! d	d
l"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- er(d dl.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; g d¢Z< ejz                  d«      Z> G d„ de&«      Z? ed eded ¬«       edej€                  ¬«       edej€                  ¬«       edej€                  ¬«       ed ej‚                  ¬«       ed!«       ed"d#¬$«       ed%d ej„                  e¬&«       ed'd( ej†                  d d)«       ejˆ                  d d)«      ¬&«       ed*d( ej†                  d d)«       ejˆ                  d d)«      ¬&«       ed+d  ej†                  d d)«       ejˆ                  d d)«      ¬&«       ed,«       ed-d	 ejŠ                  d	d.h«      e¬&«       ed/«       ed0ed ej„                  e¬1«      d2œ«      ZF eeF«      ZGe+ G d3„ d4e?«      «       ZH ed5 eIeFj”                  «      «      ZK eeK«      ZLe+ G d6„ d7e?«      «       ZM ed8 edd ¬$«       ed	«       edej‚                  ¬«       edej‚                   ed9d9«      ¬:«       ed%d	¬$«       ed'd  ejŠ                  h d;£«      e¬&«      d<œ«      ZN eeN«      ZOe+ G d=„ d>e)«      «       ZP ed? edd.¬$«       ed@«      dAœ«      ZQ eeQ«      ZRe+ G dB„ dCe)«      «       ZS edD edd ¬$«       ed"d ej„                  e¬&«       ed-d	ej„                  e¬&«       edEd# ej†                  d dF«      e¬&«      dGœ«      ZT eeT«      ZUe+ G dH„ dIe)«      «       ZV edJdK ed"d ej„                  e¬&«      i«      ZW eeW«      ZXe+ G dL„ dMe)«      «       ZYy)Né    )ÚannotationsN)ÚTYPE_CHECKINGÚIterableÚcastÚOptionalÚCallableÚUnionÚType)ÚSelf)Ú	validator)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)ÚSUBCLASS_MARKERÚDXF2000ÚDXF2010)ÚVec3ÚVec2ÚBoundingBox2dÚUVecÚMatrix44é   )Ú
base_classÚSubclassProcessor)Ú
DXFGraphicÚacdb_entity)Ú	DXFObject)Úregister_entity)Údefault_copy)ÚAuditor)ÚDXFNamespaceÚ	DXFEntityÚ
Dictionary)ÚAbstractTagWriter)ÚDXFTag)ÚDrawing)Úxref)ÚImageÚImageDefÚImageDefReactorÚRasterVariablesÚWipeoutÚezdxfc                  ó  ‡ — e Zd ZU dZdZ e«       Zded<   dZe	Z
dZdZdZd	Zdˆ fd
„Zefdd„Zdˆ fd„Z	 d	 	 	 dˆ fd„Zdd„Zdˆ fd„Zd d„Zed„ «       Zej2                  d!d„«       Zd!d„Zdd„Zd"d„Zd#d„Zd$d„Zd%d„Zdˆ fd„Z ˆ xZ!S )&Ú	ImageBaseúDXF IMAGE entityÚ	IMAGEBASEz dict[int, Union[str, list[str]]]Ú_CLS_GROUP_CODESÚdummyr   é   é   é   c                ó0   •— t         ‰| �  «        g | _        y ©N)ÚsuperÚ__init__Ú_boundary_path©ÚselfÚ	__class__s    €ú4lib/python3.12/site-packages/ezdxf/entities/image.pyr=   zImageBase.__init__=   s   ø€ Ü‰ÑÔð +-ˆÕó    c                ó\   — t        |t        «      sJ ‚t        | j                  «      |_        y r;   )Ú
isinstancer2   Úlistr>   )r@   ÚentityÚcopy_strategys      rB   Ú	copy_datazImageBase.copy_dataF   s%   € Ü˜&¤)Ô,Ð,Ð,Ü $ T×%8Ñ%8Ó 9ˆÕrC   c                óB   •— t         ‰| �  «        | j                  «        y r;   )r<   Úpost_new_hookÚreset_boundary_pathr?   s    €rB   rK   zImageBase.post_new_hookJ   s   ø€ Ü‰ÑÔØ× Ñ Õ"rC   c                ó&  •— t         ‰| �  |«      }|r~|j                  d   j                  d¬«      }| j	                  |«       |j                  || j                  dd¬«       t        | j                  «      dk  r|| _	        | j                  «        |S )Nr7   )é   )ÚcodesT)Úrecover)r<   Úload_dxf_attribsÚ
subclassesÚpop_tagsÚload_boundary_pathÚfast_load_dxfattribsr5   ÚlenÚboundary_pathÚdxfrL   )r@   Ú	processorrX   Ú	path_tagsrA   s       €rB   rQ   zImageBase.load_dxf_attribsN   sŒ   ø€ ô ‰gÑ& yÓ1ˆÙØ!×,Ñ,¨QÑ/×8Ñ8¸uÐ8ÓEˆIØ×#Ñ# IÔ.Ø×*Ñ*¨3°×0EÑ0EÀqÐRVÐ*ÔWÜ�4×%Ñ%Ó&¨Ò*Ø�”Ø×(Ñ(Ô*Øˆ
rC   c                ób   — |D ��cg c]  \  }}|dk(  sŒt        |«      ‘Œ c}}| _        y c c}}w ©NrN   )r   r>   )r@   ÚtagsÚcodeÚvalues       rB   rT   zImageBase.load_boundary_path[   s*   € Ù>BÔQ¹d©{¨t°UÀdÈbÃjœt E�{¸dÒQˆÕùÓQs   †+”+c                ój  •— t         ‰| �  |«       |j                  t        | j                  «       t        | j                  «      | j                  _        | j                  j                  |g d¢«       | j                  |«       |j                  t        k\  r| j                  j                  |d«       yy)ú(Export entity specific data as DXF tags.)Úclass_versionÚinsertÚu_pixelÚv_pixelÚ
image_sizeÚimage_def_handleÚflagsÚclippingÚ
brightnessÚcontrastÚfadeÚimage_def_reactor_handleÚclipping_boundary_typeÚcount_boundary_pointsÚ	clip_modeN)r<   Úexport_entityÚ
write_tag2r   Ú_SUBCLASS_NAMErV   rW   rX   ro   Úexport_dxf_attribsÚexport_boundary_pathÚ
dxfversionr   ©r@   Ú	tagwriterrA   s     €rB   rq   zImageBase.export_entity^   sŽ   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_¨d×.AÑ.AÔBÜ),¨T×-?Ñ-?Ó)@ˆ�‰Ô&Ø�‰×#Ñ#Øòô	
ð& 	×!Ñ! )Ô,Ø×Ñ¤7Ò*Ø�H‰H×'Ñ'¨	°;Õ?ð +rC   c                óJ   — | j                   D ]  }|j                  d|«       Œ y r\   )rW   Úwrite_vertex)r@   rx   Úvertexs      rB   ru   zImageBase.export_boundary_pathz   s"   € Ø×(Ô(ˆFØ×"Ñ" 2 vÕ.ñ )rC   c                ó   — | j                   S )au  Returns the boundray path in raw form in pixel coordinates.

        A list of vertices as pixel coordinates, Two vertices describe a
        rectangle, lower left corner is (-0.5, -0.5) and upper right corner
        is (ImageSizeX-0.5, ImageSizeY-0.5), more than two vertices is a
        polygon as clipping path. All vertices as pixel coordinates. (read/write)
        )r>   ©r@   s    rB   rW   zImageBase.boundary_path~   s   € ð ×"Ñ"Ð"rC   c                ó&   — | j                  |«       y r;   )Úset_boundary_path)r@   Úverticess     rB   rW   zImageBase.boundary_path‰   s   € à×Ñ˜xÕ(rC   c                óÌ  — t        j                  |«      }t        |«      r´t        |«      dkD  r+|d   j                  |d   «      s|j	                  |d   «       || _        | j                  | j                  d¬«       d| j                  _	        t        |«      dk  rdnd| j                  _
        t        | j
                  «      | j                  _        y| j                  «        y)	z¶Set boundary path to `vertices`. Two vertices describe a rectangle
        (lower left and upper right corner), more than two vertices is a polygon
        as clipping path.
        r7   éÿÿÿÿr   T©Ústater   é   N)r   rF   rV   ÚiscloseÚappendr>   Úset_flag_stateÚUSE_CLIPPING_BOUNDARYrX   ri   rn   ro   rL   )r@   r€   Ú	_verticess      rB   r   zImageBase.set_boundary_path�   sµ   € ô
 —I‘I˜hÓ'ˆ	ÜˆyŒ>Ü�9‹~ Ò!¨)°B©-×*?Ñ*?À	È!ÁÔ*Mà× Ñ  ¨1¡Ô.Ø"+ˆDÔØ×Ñ × :Ñ :À$ÐÔGØ !ˆD�H‰HÔÜ36°y³>ÀAÒ3E©aÈ1ˆD�H‰HÔ+Ü-0°×1DÑ1DÓ-EˆD�H‰HÕ*à×$Ñ$Õ&rC   c                ó  — t        dd«      }t        | j                  j                  «      |z   }||g| _        | j	                  t
        j                  d¬«       d| j                  _        d| j                  _        d| j                  _	        y)zoReset boundary path to the default rectangle [(-0.5, -0.5),
        (ImageSizeX-0.5, ImageSizeY-0.5)].
        g      à¿Frƒ   r   r   r7   N)
r   rX   rf   r>   rˆ   r+   r‰   ri   rn   ro   )r@   Úlower_left_cornerÚupper_right_corners      rB   rL   zImageBase.reset_boundary_pathŸ   sw   € ô !  tÓ,ÐÜ! $§(¡(×"5Ñ"5Ó6Ð9JÑJÐØ0Ð2DÐEˆÔØ×ÑœE×7Ñ7¸uÐÔEØˆ�‰ÔØ*+ˆ�‰Ô'Ø)*ˆ�‰Õ&rC   c                ó`  — |j                  | j                  j                  «      | j                  _        |j                  | j                  j                  «      | j                  _        |j                  | j                  j
                  «      | j                  _        | j                  |«       | S )z<Transform IMAGE entity by transformation matrix `m` inplace.)Ú	transformrX   rc   Útransform_directionrd   re   Úpost_transform©r@   Úms     rB   r�   zImageBase.transform«   ss   € àŸ+™+ d§h¡h§o¡oÓ6ˆ�‰ŒØ×0Ñ0°·±×1AÑ1AÓBˆ�‰ÔØ×0Ñ0°·±×1AÑ1AÓBˆ�‰ÔØ×Ñ˜AÔØˆrC   c                ó4  — t        «       }|j                  dt        | j                  j                  «      «       |j                  dt        | j                  j
                  «      «       |j                  dt        | j                  j                  «      «       |S )Nr   r   r…   )r   Úset_rowr   rX   rd   re   rc   r’   s     rB   Úget_wcs_transformzImageBase.get_wcs_transform³   sc   € Ü‹JˆØ	�	‰	�!”T˜$Ÿ(™(×*Ñ*Ó+Ô,Ø	�	‰	�!”T˜$Ÿ(™(×*Ñ*Ó+Ô,Ø	�	‰	�!”T˜$Ÿ(™(Ÿ/™/Ó*Ô+ØˆrC   c                ó  — | j                   }t        |«      dk(  rG|\  }}|t        |j                  |j                  «      |t        |j                  |j                  «      g}|d   j                  |d   «      s|j                  |d   «       |S )aD  Returns the boundary path as closed loop in pixel coordinates.  Resolves the 
        simple form of two vertices as a rectangle.  The image coordinate system has an 
        inverted y-axis and the top-left corner is (0, 0).

        .. versionchanged:: 1.2.0

            renamed from :meth:`boundray_path_ocs()`

        r7   r   r‚   )rW   rV   r   ÚxÚyr†   r‡   )r@   rW   Úp0Úp1s       rB   Úpixel_boundary_pathzImageBase.pixel_boundary_pathº   s‚   € ð ×*Ñ*ˆÜˆ}Ó Ò"Ø"‰FˆB�Ø¤ b§d¡d¨B¯D©DÓ!1°2´t¸B¿D¹DÀ"Ç$Á$Ó7GÐHˆMØ˜QÑ×'Ñ'¨°bÑ(9Ô:Ø× Ñ  ¨qÑ!1Ô2ØÐrC   c                ó¦  — t        | j                  j                  «      }t        | j                  j                  «      }t        | j                  j                  «      }||dz  |dz  z
  z  }| j                  j
                  j                  }| j                  «       D �cg c]'  }|||j                  z  z   |||j                  z
  z  z   ‘Œ) }}|S c c}w )a[  Returns the boundary/clipping path in WCS coordinates.

        It's recommended to acquire the clipping path as :class:`~ezdxf.path.Path` object
        by the :func:`~ezdxf.path.make_path` function::

            from ezdxf.path import make_path

            image = ...  # get image entity
            clipping_path = make_path(image)

        ç      à?)	r   rX   rd   re   rc   rf   r™   rœ   r˜   )r@   ÚuÚvÚoriginÚheightÚpr€   s          rB   Úboundary_path_wcszImageBase.boundary_path_wcsÌ   sÀ   € ô �—‘×!Ñ!Ó"ˆÜ�—‘×!Ñ!Ó"ˆÜ�d—h‘h—o‘oÓ&ˆØ�!�c‘'˜A ™GÑ#Ñ#ˆØ—‘×$Ñ$×&Ñ&ˆð ×-Ñ-Ô/ó
á/�ð �a˜!Ÿ#™#‘gÑ ! v°·±¡|Ñ"4Ó5Ø/ð 	ð 
ð ˆùò	
s   Â,Cc                ó@   •— | j                   sy | `t        ‰| �  «        y r;   )Úis_aliver>   r<   Údestroyr?   s    €rB   r§   zImageBase.destroyå   s   ø€ Ø�}Š}ØàÐÜ‰‰ÕrC   ©ÚreturnÚNone©rG   r   r©   rª   r;   ©rY   zOptional[SubclassProcessor]r©   r$   )r]   zIterable[DXFTag]©rx   r'   r©   rª   )rx   r'   ©r€   zIterable[UVec]r©   rª   )r“   r   r©   r   )r©   r   )r©   z
list[Vec2])r©   z
list[Vec3])"Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEÚdictr5   Ú__annotations__rs   r   ÚMIN_DXF_VERSION_FOR_EXPORTÚ
SHOW_IMAGEÚSHOW_IMAGE_WHEN_NOT_ALIGNEDr‰   ÚUSE_TRANSPARENCYr=   r"   rI   rK   rQ   rT   rq   ru   ÚpropertyrW   Úsetterr   rL   r�   r–   rœ   r¤   r§   Ú__classcell__©rA   s   @rB   r2   r2   0   sÑ   ø… Ùà€GÙ9=»ÐÐ6Ó?Ø€NØ!(Ðà€JØ"#ÐØÐØÐõ-ð 5Aô :õ#ð
 8<ðØ4ðà	õóRõ@ó8/ð ñ#ó ð#ð ×Ñò)ó ð)ó'ó$
+óóóó$÷2ñ rC   r2   ÚAcDbRasterImageéZ   )rv   Údefaulté
   )Úxtypeé   é   é   iT  éF   r…   )rÀ   i  )rÀ   r   Úfixeri  é2   ée   i  i  ih  éG   r7   é[   i"  )rv   rÀ   r   rÇ   )rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   c                  óJ  ‡ — e Zd ZdZdZ eeee«      Z	e
Zej                  ZdddœZdˆ fd„Ze	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„«       Zefdˆ fd„Zdd	„Zdˆ fd
„Zd„ Zd„ Zdˆ fd„Zdˆ fd„Zdd„Zedd„«       Zej:                  dd„«       Zedd„«       Zdˆ fd„Zd ˆ fd„Z ˆ xZ!S )!r+   r3   ÚIMAGEÚ0r…   )Úlayerrh   c                óL   •— t         ‰| �  «        g | _        d | _        d | _        y r;   )r<   r=   r>   Ú
_image_defÚ_image_def_reactorr?   s    €rB   r=   zImage.__init__G  s%   ø€ Ü‰ÑÔØ*,ˆÔØ.2ˆŒØ=AˆÕrC   c           	     óî   •— |xs i }|j                  dd «      }d}|r"|j                  r|j                  j                  }|j	                  d|«       t        dt        ‰| �  ||||«      «      }||_        |S )NÚ	image_def©r   r   rf   r+   )	Úpopr¦   rX   rf   Ú
setdefaultr   r<   ÚnewrÔ   )	ÚclsÚhandleÚownerÚ
dxfattribsÚdocrÔ   rf   ÚimagerA   s	           €rB   rØ   z	Image.newM  su   ø€ ð  Ò% 2ˆ
à—N‘N ;°Ó5ˆ	Øˆ
Ù˜×+Ò+Ø"Ÿ™×1Ñ1ˆJØ×Ñ˜l¨JÔ7ä�Wœe™g™k¨&°%¸ÀSÓIÓJˆØ#ˆŒØˆrC   c                ó²   •— t        |t        «      sJ ‚t        ‰| �  ||¬«       |j                  j                  d«       d |_        | j                  |_        y )N)rH   rm   )rE   r+   r<   rI   rX   ÚdiscardrÒ   rÑ   )r@   rG   rH   rA   s      €rB   rI   zImage.copy_dataa  sN   ø€ Ü˜&¤%Ô(Ð(Ð(Ü‰Ñ˜&°ÐÔ>ð 	�
‰
×ÑÐ5Ô6Ø$(ˆÔ!à ŸO™OˆÕrC   c                ól   — | j                   j                  ry | j                  ry | j                  «        y r;   )rÝ   Ú
is_loadingrÒ   Ú_create_image_def_reactorr}   s    rB   Úpost_bind_hookzImage.post_bind_hookk  s,   € à�8‰8×ÒØØ×"Ò"Øð 	×&Ñ&Õ(rC   c                óf  •— t         ‰| �  |«       |j                  }|j                  | j                  j                  dd «      «      | _        | j
                  €| j                  «        y |j                  | j                  j                  dd «      «      | _        | j                  €| j                  S y )Nrg   rm   )	r<   Úpost_load_hookÚentitydbÚgetrX   rÑ   r§   rÒ   Ú_fix_missing_image_def_reactor)r@   rÝ   ÚdbrA   s      €rB   ræ   zImage.post_load_hooku  s’   ø€ Ü‰Ñ˜sÔ#Ø�\‰\ˆØŸ&™& §¡§¡Ð.@À$Ó!GÓHˆŒØ�?‰?Ð"à�L‰LŒNØà"$§&¡&Ø�H‰H�L‰LÐ3°TÓ:ó#
ˆÔð ×"Ñ"Ð*ð ×6Ñ6Ð6ØrC   c                óü   — 	 | j                  «        t        j                  dt	        | «      › �«       y # t        $ r>}t        j                  dt	        | «      › d�|¬«       | j                  «        Y d }~y d }~ww xY w)Nz9An exception occurred while executing fixing command for z, destroying entity.)Úexc_infoz$Created missing ImageDefReactor for )rã   Ú	ExceptionÚloggerÚ	exceptionÚstrr§   Údebug)r@   Úes     rB   ré   z$Image._fix_missing_image_def_reactorˆ  sw   € ð		Ø×*Ñ*Ô,ô 	�‰Ð;¼CÀ»I¸;ÐGÕHøô ò 	Ü×ÑØKÜ�t“9�+Ð1ð3àð ô ð
 �L‰LŒNÜûð	ús   ‚4 ´	A;½4A6Á6A;c                óN  — | j                   j                  j                  | j                  j                  «      }|j                  j                  }|| j                  _        || _        | j                   | j                  j                   u r| j                  j                  |«       y y r;   )	rÝ   ÚobjectsÚadd_image_def_reactorrX   rÚ   rm   rÒ   rÑ   Úappend_reactor_handle)r@   Úimage_def_reactorÚreactor_handles      rB   rã   zImage._create_image_def_reactor•  sw   € à ŸH™H×,Ñ,×BÑBÀ4Ç8Á8Ç?Á?ÓSÐØ*×.Ñ.×5Ñ5ˆà,:ˆ�‰Ô)Ø"3ˆÔà�8‰8�t—‘×*Ñ*Ñ*Ø�O‰O×1Ñ1°.ÕAð +rC   c                ó¸   •— t         ‰| �  |«       t        | j                  t        «      r0|j                  | j                  j                  j                  «       yy)z5Register required resources to the resource registry.N)r<   Úregister_resourcesrE   rÔ   r,   Ú
add_handlerX   rÚ   )r@   ÚregistryrA   s     €rB   rú   zImage.register_resources   sA   ø€ ä‰Ñ" 8Ô,Ü�d—n‘n¤hÔ/Ø×Ñ §¡× 2Ñ 2× 9Ñ 9Õ:ð 0rC   c                ó”  •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  }t        |t
        «      r‰| j                  «       }|j                  d||«      \  }}t        |t
        «      rR||_        t        |j                  t        «      r0|j                  |j                  j                  j                  «       yyyy)z3Translate resources from self to the copied entity.ÚACAD_IMAGE_DICTN)rE   r+   r<   Úmap_resourcesrÔ   r,   Úget_image_def_nameÚmap_acad_dict_entryrÒ   r-   rö   rX   rÚ   )r@   ÚcloneÚmappingÚsource_image_defÚnameÚclone_image_defrA   s         €rB   rÿ   zImage.map_resources¦  s¸   ø€ ä˜%¤Ô'Ð'Ð'Ü‰Ñ˜e WÔ-ØŸ>™>ÐÜÐ&¬Ô1Ø×*Ñ*Ó,ˆDØ$+×$?Ñ$?Ø! 4Ð)9ó%Ñ!ˆD�/ô ˜/¬8Ô4Ø"1�”Ü˜e×6Ñ6¼ÔHØ#×9Ñ9Ø×0Ñ0×4Ñ4×;Ñ;õð Ið 5ð 2rC   c                ó¼   — | j                   €y| j                   j                  j                  d«      }|j                  «       D ]  \  }}|| j                  u sŒ|c S  y)zAReturns the name of the `image_def` entry in the ACAD_IMAGE_DICT.Ú rþ   )rÝ   ÚrootdictÚget_required_dictÚitemsrÑ   )r@   Ú
image_dictr  Úentrys       rB   r   zImage.get_image_def_name¼  sW   € à�8‰8ÐØØ—X‘X×&Ñ&×8Ñ8Ð9JÓKˆ
Ø%×+Ñ+Ö-‰KˆD�%Ø˜Ÿ™Ò'Ø’ð .ð rC   c                ó   — | j                   S )z>Returns the associated IMAGEDEF entity, see :class:`ImageDef`.)rÑ   r}   s    rB   rÔ   zImage.image_defÆ  s   € ð �‰ÐrC   c                ó¾   — |r9|j                   r-|j                  j                  | j                  _        || _        y | j                  j                  d«       d | _        y )Nrg   )r¦   rX   rÚ   rg   rÑ   rà   )r@   rÔ   s     rB   rÔ   zImage.image_defË  sD   € á˜×+Ò+Ø(1¯©×(<Ñ(<ˆD�H‰HÔ%Ø'ˆD�Oà�H‰H×ÑÐ/Ô0Ø"ˆD�OrC   c                ó   — | j                   S )z/Returns the associated IMAGEDEF_REACTOR entity.)rÒ   r}   s    rB   r÷   zImage.image_def_reactorÔ  s   € ð ×&Ñ&Ð&rC   c                ó  •— | j                   sy | j                  }|r[|j                   rO| j                  }|r1|j                   r%|j                  |j                  j
                  «       |j                  «        t        ‰| �  «        y r;   )r¦   rÒ   rÔ   Údiscard_reactor_handlerX   rÚ   r§   r<   )r@   ÚreactorrÔ   rA   s      €rB   r§   zImage.destroyÙ  sc   ø€ Ø�}Š}Øà×)Ñ)ˆÙ�w×'Ò'ØŸ™ˆIÙ˜Y×/Ò/Ø×0Ñ0°·±×1CÑ1CÔDØ�O‰OÔÜ‰‰ÕrC   c                ó$   •— t         ‰| �  |«       y r;   )r<   Úaudit©r@   ÚauditorrA   s     €rB   r  zImage.auditå  s   ø€ Ü‰‰�gÕrC   r¨   )NNNN)rÙ   zType[Image]rÚ   úOptional[str]rÛ   r  rÜ   zOptional[dict]rÝ   zOptional[Drawing]r©   r+   r«   )rÝ   r)   r©   zOptional[Callable])rü   zxref.Registryr©   rª   )r  r   r  zxref.ResourceMapperr©   rª   )r©   rð   )r©   zOptional[ImageDef])rÔ   r,   r©   rª   )r©   zOptional[ImageDefReactor]©r  r#   r©   rª   )"r¯   r°   r±   r²   r³   r   r   r   Ú
acdb_imageÚ
DXFATTRIBSÚacdb_image_group_codesr5   r  rs   ÚDEFAULT_ATTRIBSr=   ÚclassmethodrØ   r"   rI   rä   ræ   ré   rã   rú   rÿ   r   rº   rÔ   r»   r÷   r§   r  r¼   r½   s   @rB   r+   r+   =  s  ø„ áà€GÙ˜z¨;¸
ÓC€JØ-ÐØ—_‘_€NØ #¨aÑ0€OõBð ð !%Ø#Ø%)Ø!%ðØðàðð ðð #ð	ð
 ðð 
ôó ðð& 5Aö ,ó)õò&Iò	Bõ;õó,ð òó ðð ×Ñò#ó ð#ð ò'ó ð'õ
÷ñ rC   r+   ÚAcDbWipeoutc                  óŒ   ‡ — e Zd ZdZdZ eeee«      Z	ddddddddddd	œ
Z
eZej                  Zdd
„Zd„ Zdˆ fd„Zdˆ fd„Zˆ xZS )r/   zDXF WIPEOUT entityÚWIPEOUTrÎ   é   r   rÈ   r   rÕ   )
rÏ   rh   ri   rj   rk   rl   rf   rg   rm   rp   c                óp  ‡‡‡‡— | j                  | j                  «       t        j                  ‰«      Št	        ‰«      Š‰j
                  \  ŠŠ| j                  }t        ‰j                  «      |_	        t        ‰dd«      |_
        t        d‰d«      |_        ˆˆˆˆfd„}| j                   |«       «       y)zBSet a new masking area, the area is placed in the layout xy-plane.r   c               3  óš   •K  — ‰j                   } ‰D ]5  }|| z
  }t        |j                  ‰z  dz
  d|j                  ‰z  z
  «      –— Œ7 y ­w)Nrž   )Úextminr   r˜   r™   )r%  r{   r    Úboundsr€   Úx_sizeÚy_sizes      €€€€rB   rW   z/Wipeout.set_masking_area.<locals>.boundary_path  sJ   øè ø€ Ø—]‘]ˆFÛ"�Ø˜V‘O�Ü˜1Ÿ3™3 ™<¨#Ñ-¨s°Q·S±S¸6±\Ñ/AÓBÓBñ #ùs   ƒAAN)Úupdate_dxf_attribsr  r   rF   r   ÚsizerX   r   r%  rc   rd   re   r   )r@   r€   rX   rW   r&  r'  r(  s    `  @@@rB   Úset_masking_areazWipeout.set_masking_area  s�   û€ à×Ñ × 4Ñ 4Ô5Ü—9‘9˜XÓ&ˆÜ˜xÓ(ˆØŸ™‰ˆ�à�h‰hˆÜ˜&Ÿ-™-Ó(ˆŒ
Ü˜6 1 aÓ(ˆŒÜ˜1˜f aÓ(ˆŒ÷	Cð 	×Ñ™}›Õ/rC   c                óH   — d| j                   _        d| j                   _        y )NrÎ   )rX   rm   rg   r}   s    rB   Ú_reset_handleszWipeout._reset_handles  s   € Ø,/ˆ�‰Ô)Ø$'ˆ�‰Õ!rC   c                óD   •— | j                  «        t        ‰| �	  |«       y r;   )r-  r<   r  r  s     €rB   r  zWipeout.audit  s   ø€ Ø×ÑÔÜ‰‰�gÕrC   c                óD   •— | j                  «        t        ‰| �	  |«       y)ra   N)r-  r<   rq   rw   s     €rB   rq   zWipeout.export_entity  s   ø€ à×ÑÔÜ‰Ñ˜iÕ(rC   r®   r  r­   )r¯   r°   r±   r²   r³   r   r   r   Úacdb_wipeoutr  r  Úacdb_wipeout_group_codesr5   r  rs   r+  r-  r  rq   r¼   r½   s   @rB   r/   r/   î  sj   ø„ áà€GÙ˜z¨;¸ÓE€JàØØØØØØØØ$'Øñ€Oð 0ÐØ!×&Ñ&€Nó0ò((õ÷)ñ )rC   r/   ÚAcDbRasterImageDefg{®Gáz„?)rÂ   rÀ   >   r   r7   é   ©rb   Úfilenamerf   Ú
pixel_sizeÚloadedÚresolution_unitsc                  óT   ‡ — e Zd ZdZdZ eee«      Ze	Z
	 d	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )r,   zDXF IMAGEDEF entityÚIMAGEDEFc                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S ©Nr   )r<   rQ   rU   Úacdb_image_def_group_codes©r@   rY   rX   rA   s      €rB   rQ   zImageDef.load_dxf_attribsM  s/   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*¨3Ô0JÈAÔNØˆ
rC   c                ó¨   •— t         ‰| �  |«       |j                  t        t        j
                  «       | j                  j                  |g d¢«       y)ra   r4  N)r<   rq   rr   r   Úacdb_image_defr  rX   rt   rw   s     €rB   rq   zImageDef.export_entityU  s@   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_¬n×.AÑ.AÔBØ�‰×#Ñ#Øòõ
	
rC   r;   r¬   r­   )r¯   r°   r±   r²   r³   r   r   r@  r  r   r¶   rQ   rq   r¼   r½   s   @rB   r,   r,   E  sA   ø„ áà€GÙ˜z¨>Ó:€JØ!(Ðð 8<ðØ4ðà	õ÷
ñ 
rC   r,   ÚAcDbRasterImageDefReactoréJ  )rb   Úimage_handlec                  óT   ‡ — e Zd ZdZdZ eee«      Ze	Z
	 d	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )r-   zDXF IMAGEDEF_REACTOR entityÚIMAGEDEF_REACTORc                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S r<  )r<   rQ   rU   Ú"acdb_image_def_reactor_group_codesr>  s      €rB   rQ   z ImageDefReactor.load_dxf_attribsy  ó0   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*¨3Ô0RÐTUÔVØˆ
rC   c                ó  •— t         ‰| �  |«       |j                  t        t        j
                  «       |j                  d| j                  j                  «       |j                  d| j                  j                  «       y)ra   r¿   rB  N)	r<   rq   rr   r   Úacdb_image_def_reactorr  rX   rb   rC  rw   s     €rB   rq   zImageDefReactor.export_entity�  s[   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_Ô.D×.IÑ.IÔJØ×Ñ˜R §¡×!7Ñ!7Ô8Ø×Ñ˜S $§(¡(×"7Ñ"7Õ8rC   r;   r¬   r­   )r¯   r°   r±   r²   r³   r   r   rJ  r  r   r¶   rQ   rq   r¼   r½   s   @rB   r-   r-   q  sB   ø„ á%à €GÙ˜zÐ+AÓB€JØ!(Ðð 8<ðØ4ðà	õ÷9ñ 9rC   r-   ÚAcDbRasterVariableséH   é	   ©rb   ÚframeÚqualityÚunitsc                  óT   ‡ — e Zd ZdZdZ eee«      Ze	Z
	 d	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )r.   zDXF RASTERVARIABLES entityÚRASTERVARIABLESc                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S r<  )r<   rQ   rU   Ú!acdb_raster_variables_group_codesr>  s      €rB   rQ   z RasterVariables.load_dxf_attribs¼  s0   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*¨3Ô0QÐSTÔUØˆ
rC   c                ó¨   •— t         ‰| �  |«       |j                  t        t        j
                  «       | j                  j                  |g d¢«       y)ra   rN  N)r<   rq   rr   r   Úacdb_raster_variablesr  rX   rt   rw   s     €rB   rq   zRasterVariables.export_entityÄ  sA   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_Ô.C×.HÑ.HÔIØ�‰×#Ñ#Øòõ	
rC   r;   r¬   r­   )r¯   r°   r±   r²   r³   r   r   rW  r  r   r¶   rQ   rq   r¼   r½   s   @rB   r.   r.   ´  sB   ø„ á$à€GÙ˜zÐ+@ÓA€JØ!(Ðð 8<ðØ4ðà	õ÷
ñ 
rC   r.   ÚAcDbWipeoutVariablesrO  c                  óT   ‡ — e Zd ZdZdZ eee«      Ze	Z
	 d	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )ÚWipeoutVariableszDXF WIPEOUTVARIABLES entityÚWIPEOUTVARIABLESc                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S r<  )r<   rQ   rU   Ú"acdb_wipeout_variables_group_codesr>  s      €rB   rQ   z!WipeoutVariables.load_dxf_attribsì  rH  rC   c                ó¤   •— t         ‰| �  |«       |j                  t        t        j
                  «       | j                  j                  |d«       y)ra   rO  N)r<   rq   rr   r   Úacdb_wipeout_variablesr  rX   rt   rw   s     €rB   rq   zWipeoutVariables.export_entityô  s;   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_Ô.D×.IÑ.IÔJØ�‰×#Ñ# I¨wÕ7rC   r;   r¬   r­   )r¯   r°   r±   r²   r³   r   r   r_  r  r   r¶   rQ   rq   r¼   r½   s   @rB   rZ  rZ  ä  sB   ø„ á%à €GÙ˜zÐ+AÓB€JØ!(Ðð 8<ðØ4ðà	õ÷8ñ 8rC   rZ  )ZÚ
__future__r   ÚosÚpathlibÚtypingr   r   r   r   r   r	   r
   Útyping_extensionsr   ÚloggingÚezdxf.lldxfr   Úezdxf.lldxf.attributesr   r   r   r   r   r   Úezdxf.lldxf.constr   r   r   Ú
ezdxf.mathr   r   r   r   r   Ú	dxfentityr   r   Údxfgfxr   r   Údxfobjr    Úfactoryr!   Úcopyr"   Úezdxf.auditr#   Úezdxf.entitiesr$   r%   r&   Úezdxf.lldxf.tagwriterr'   Úezdxf.lldxf.typesr(   Úezdxf.documentr)   r0   r*   Ú__all__Ú	getLoggerrî   r2   Úpoint3dÚpoint2dÚis_integer_boolÚis_in_integer_rangeÚfit_into_integer_rangeÚ	is_one_ofr  r  r+   r´   Úattribsr0  r1  r/   r@  r=  r,   rJ  rG  r-   rW  rU  r.   r_  r]  rZ  © rC   rB   Ú<module>r~     sp  ðõ #ã 	Û ÷÷ ñ õ #ã Ý !÷÷ ÷ @Ñ ?ß @Õ @ß 4ß +Ý Ý $Ý áÝ#ßBÑBÝ7Ý(Ý&Ýâ
P€Ø	ˆ×	Ñ	˜7Ó	#€ôz�
ô zñz Øá  °ÀÔCÙ˜" E§M¡MÔ2ñ ˜2 U§]¡]Ô3ñ ˜2 U§]¡]Ô3á˜b¨¯©Ô6á# C›Lñ ˜ QÔ'ñ ØØØ×/Ñ/Ø ô	
ñ ØØØ3�i×3Ñ3°A°sÓ;Ø2�)×2Ñ2°1°cÓ:ô	
ñ ØØØ3�i×3Ñ3°A°sÓ;Ø2�)×2Ñ2°1°cÓ:ô	
ñ ØØØ3�i×3Ñ3°A°sÓ;Ø2�)×2Ñ2°1°cÓ:ô	
ñ %,¨C£Lñ #*ØØØ)�i×)Ñ)¨1¨a¨&Ó1Ø ô	#
ñ ")¨£ñ ØØØØ×/Ñ/Ø ô
ñCIóL€
ñZ ,¨JÓ7Ð ð ôhˆIó hó ðhñX ˜=©$¨z×/AÑ/AÓ*BÓC€Ù-¨lÓ;Ð ð ô3)ˆió 3)ó ð3)ñt Øá  ¨QÔ/á˜A“Já˜b¨¯©Ô6á˜b¨¯©¹tÀDÈ$Ó?OÔPÙ˜# qÔ)ñ $ØØØ)�i×)Ñ)ª)Ó4Ø ô	
ñó€ñ2 0°Ó?Ð ð ô
ˆyó 
ó ð
ñ@ %Øá  ¨QÔ/á ›ñóÐ ñ &8Ð8NÓ%OÐ "ð ô9�ió 9ó ð9ñ. $Øá  ¨QÔ/ñ ØØØ×/Ñ/Ø ô	
ñ ØØØ×/Ñ/Ø ô	
ñ  ØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ñ=$ó'Ð ñP %7Ð7LÓ$MÐ !ð ô
�ió 
ó ð
ñ< %Øð
 	‘ØØØ×/Ñ/Ø ô	
ð	
óÐ ñ &8Ð8NÓ%OÐ "ð ô8�yó 8ó ñ8rC   