Ë
    £èhÈn  ã                  óv  — d dl mZ d dl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 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mZmZmZmZ d dlmZm Z 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-m.Z. ddl/m0Z0 ddl1m2Z2 erd dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; dgZ< edi d edejz                  e!¬«      “d edd¬«      “d edd¬«      “d  ed!d ¬«      “d" ed#d$¬«      “d% ed&ej|                  e!¬«      “d' ed(ej|                  e!¬«      “d) ed*ej|                   e dd«      ¬«      “d+ ed,ej|                   e dd«      ¬«      “d- ed.ejz                  e$¬«      “d/ ed0ejz                  e!¬«      “d1 ed2d3¬«      “d4 ed5d ¬«      “d6 ed7d ¬«      “d8 ed9d¬«      “d: ed3d ¬«      “d; ed<d ¬«      “i d= ed>d?¬«      “d@ edAd ¬«      “dB edCdDdE¬F«      “dG eddH¬«      “dI edJd  e
j~                  d dK«      e¬L«      “dM edNd e
j€                  e¬L«      “dO edPd ¬«      “dQ edRejz                  e!¬«      “dS edTejz                  e"e
j‚                  e¬U«      “dV edWejz                  e#e
j‚                  e¬U«      “dX edY«      “dZ ed[dE¬\«      “d] ed^d  e
j~                  d dK«      e¬L«      “d_ ed`d ¬«      “da edbdc e
j~                  d dd«      e¬e«      “df edgdh¬i«      “dj edkdhdE¬l«      “¥ edmdhdE¬l«       edndhdE¬l«       edodhddE¬p«       edqd dhe
j€                  e¬r«       edsdh¬i«       edtdh¬i«       edudhe
j„                  ¬v«       edwdh¬i«       edxdh¬i«       edydhdE¬l«       edzdh¬i«       ed{dh¬i«       ed|dh¬i«       ed}dh¬i«      d~œ¥«      ZC eeC«      ZDdZEe0 G d€„ de-«      «       ZFy)�é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚOptional)ÚSelfN)Ú	validator)Úconst)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)ÚDXFTagÚ	DXFVertex)ÚTags)ÚDXF12ÚSUBCLASS_MARKERÚDXFStructureErrorÚDXFValueErrorÚDXFTableEntryError)ÚVec3ÚVec2ÚNULLVECÚX_AXISÚY_AXISÚZ_AXISÚMatrix44ÚBoundingBox2d)Úset_flag_stateé   )Ú
base_classÚSubclassProcessor)Ú
DXFGraphicÚacdb_entity)Úregister_entity)Údefault_copy)ÚDrawing)ÚDXFNamespaceÚ	DXFEntity)ÚAbstractTagWriter)ÚxrefÚViewportÚAcDbViewportÚcenteré
   )ÚxtypeÚdefaultÚwidthé(   )r2   Úheighté)   ÚstatuséD   ÚidéE   é   Úview_center_pointé   Úsnap_base_pointé   Úsnap_spacingé   Úgrid_spacingé   Úview_direction_vectoré   Úview_target_pointé   Úperspective_lens_lengthé*   é2   Úfront_clip_plane_z_valueé+   Úback_clip_plane_z_valueé,   Úview_heighté-   Ú
snap_angleÚview_twist_angleé3   Úcircle_zooméH   éd   ÚflagséZ   Úclipping_boundary_handleiT  Ú0T)r2   ÚoptionalÚplot_style_nameÚ Úrender_modei  é   )r2   r   ÚfixerÚucs_per_viewportéG   Úucs_iconéJ   Ú
ucs_originén   Ú
ucs_x_axiséo   )r1   r2   r   r`   Ú
ucs_y_axisép   Ú
ucs_handleiY  Úbase_ucs_handleiZ  ©r[   Úucs_ortho_typeéO   Ú	elevationé’   Úshade_plot_modeéª   ÚAC1018é   )Ú
dxfversionr   r`   Úgrid_frequencyé=   ÚAC1021)rv   Úbackground_handleiL  )rv   r[   iM  i\  i$  )rv   r2   r[   i  )r2   rv   r   r`   é�   éŽ   é?   )rv   r   i¥  i¯  ii  iO  iW  iX  é[   )Úshade_plot_handleÚvisual_style_handleÚdefault_lighting_flagÚdefault_lighting_typeÚview_brightnessÚview_contrastÚambient_light_color_1Úambient_light_color_2Úambient_light_color_3Ú
sun_handleÚref_vp_object_1Úref_vp_object_2Úref_vp_object_3Úref_vp_object_4iK  c                  ó„  ‡ — e Zd ZdZdZ eeee«      Z	d ˆ fd„Z
efd!d„Zed"d„«       Zej                  d#d„«       Zd$d„Zd%d„Zd&d	„Zd%d
„Zed'd„«       Z	 d(	 	 	 d)ˆ fd„Zd*ˆ fd„Zd+d„Zd d„Zd,ˆ fd„Zd-d„Zd.d„Zd/ˆ fd„Zd0ˆ fd„Zd d„Zd1d„Zd2d„Z d3d„Z!ed'd„«       Z"d4d„Z#ed'd„«       Z$d5d„Z%d6d„Z&d4d„Z'd7d„Z(ˆ xZ)S )8r-   zDXF VIEWPORT entityÚVIEWPORTc                ó0   •— t         ‰| �  «        g | _        y ©N)ÚsuperÚ__init__Ú_frozen_layers)ÚselfÚ	__class__s    €ú7lib/python3.12/site-packages/ezdxf/entities/viewport.pyr’   zViewport.__init__	  s   ø€ Ü‰ÑÔØ)+ˆÕó    c                ó\   — t        |t        «      sJ ‚t        | j                  «      |_        y r�   )Ú
isinstancer-   Úlistr“   )r”   ÚentityÚcopy_strategys      r–   Ú	copy_datazViewport.copy_data  s%   € Ü˜&¤(Ô+Ð+Ð+Ü $ T×%8Ñ%8Ó 9ˆÕr—   c                ó   — | j                   S )z-Set/get frozen layers as list of layer names.)r“   ©r”   s    r–   Úfrozen_layerszViewport.frozen_layers  s   € ð ×"Ñ"Ð"r—   c                ó$   — t        |«      | _        y r�   )rš   r“   )r”   Únamess     r–   r    zViewport.frozen_layers  s   € ä" 5›kˆÕr—   c                ó    — t        j                  |«      }t        | j                  «      D ]!  \  }}|t        j                  |«      k(  sŒ|c S  y)Néÿÿÿÿ)r   Úmake_table_keyÚ	enumerater“   )r”   Ú
layer_nameÚname_keyÚindexÚnames        r–   Ú_layer_indexzViewport._layer_index  sH   € Ü×+Ñ+¨JÓ7ˆÜ$ T×%8Ñ%8Ö9‰KˆE�4Øœ9×3Ñ3°DÓ9Ó9Ø’ð :ð r—   c                óh   — | j                  |«      }|dk(  r| j                  j                  |«       yy)z%Freeze `layer_name` in this viewport.r¤   N)r«   r“   Úappend©r”   r§   r©   s      r–   ÚfreezezViewport.freeze!  s2   € à×!Ñ! *Ó-ˆØ�BŠ;Ø×Ñ×&Ñ& zÕ2ð r—   c                ó*   — | j                  |«      dk7  S )z<Returns ``True`` if `layer_name` id frozen in this viewport.r¤   )r«   )r”   r§   s     r–   Ú	is_frozenzViewport.is_frozen'  s   € à× Ñ  Ó,°Ñ2Ð2r—   c                óL   — | j                  |«      }|dk7  r| j                  |= yy)z#Thaw `layer_name` in this viewport.r¤   N)r«   r“   r®   s      r–   ÚthawzViewport.thaw+  s,   € à×!Ñ! *Ó-ˆØ�BŠ;Ø×#Ñ# EÑ*ð r—   c                óœ   — | j                   j                  d«      r| j                   j                  dkD  S | j                   j                  dkD  S )Nr7   r   r!   )ÚdxfÚhasattrr7   r9   rŸ   s    r–   Ú
is_visiblezViewport.is_visible1  s;   € ð �8‰8×Ñ˜HÔ%Ø—8‘8—?‘? QÑ&Ð&Ø�x‰x�{‰{˜Q‰Ðr—   c                ó(  •— t         ‰| �  |«      }|r|j                  |t        dd¬«      }|j                  r| j                  «        |S t        |«      r| j                  |«      }t        |«      r!|j                  |t        j                  ¬«       |S )Nr;   F)ÚsubclassÚlog)r¹   )r‘   Úload_dxf_attribsÚfast_load_dxfattribsÚacdb_viewport_group_codesÚr12Úload_xdata_into_dxf_namespaceÚlenÚload_frozen_layer_handlesÚlog_unprocessed_tagsÚacdb_viewportrª   )r”   Ú	processorrµ   Útagsr•   s       €r–   r»   zViewport.load_dxf_attribs=  s�   ø€ ô ‰gÑ& yÓ1ˆÙØ×1Ñ1ØÔ.¸Àð 2ó ˆDð �}Š}Ø×2Ñ2Ô4ð ˆ
ô	 �t”9Ø×9Ñ9¸$Ó?�DÜ�t”9Ø×2Ñ2°4Ä-×BTÑBTÐ2ÔUØˆ
r—   c                óà   •— t         ‰| �  |«       g }|j                  }| j                  D ]+  }	 |j	                  ||   j
                  j                  «       Œ- || _        y # t        $ r Y ŒAw xY wr�   )r‘   Úpost_load_hookÚentitydbr“   r­   rµ   rª   ÚKeyError)r”   ÚdocÚbagÚdbÚhandler•   s        €r–   rÇ   zViewport.post_load_hookN  sk   ø€ Ü‰Ñ˜sÔ#ØˆØ�\‰\ˆØ×)Ô)ˆFðØ—
‘
˜2˜f™:Ÿ>™>×.Ñ.Õ/ð *ð
 "ˆÕøô ò Ùðús   ¯(A!Á!	A-Á,A-c                ó¼   — t        «       }|D ]L  }|j                  t        k(  r&| j                  j	                  |j
                  «       Œ<|j	                  |«       ŒN |S r�   )r   ÚcodeÚFROZEN_LAYER_GROUP_CODEr“   r­   Úvalue)r”   rÅ   Úunprocessed_tagsÚtags       r–   rÁ   z"Viewport.load_frozen_layer_handlesY  sO   € Ü›6ÐÛˆCØ�x‰xÔ2Ò2Ø×#Ñ#×*Ñ*¨3¯9©9Õ5à ×'Ñ'¨Õ,ð	 ð
  Ðr—   c                ó  — 	 | j                   j                  dd«      D ��cg c]  \  }}|‘Œ	 }}}|dd }| j                  }d}t	        |t
        j                  t        |d   «      «      }t	        |t
        j                  t        |d   «      «      }t	        |t
        j                  t        |d   «      «      }t	        |t
        j                  t        |d	   «      «      }t	        |t
        j                  t        |d
   «      «      }	 |d   |_        |d   |_        |d   |_        |d   |_        |d   |d   f|_        |d   |_        |d   |_        |d   |_        |d   |_        |d   |_        |d   |_        |d   |_        |d   |d   f|_        |d   |d   f|_        |d   |d   f|_        ||_        |dd  | _        | j                   j?                  d«       y c c}}w # t        $ r Y y w xY w# t6        $ r t9        d«      ‚w xY w)NÚACADÚMVIEWé   éþÿÿÿr   é   r?   rA   rC   é   r!   r;   ru   é   é   r_   é   é	   r0   r=   rG   é   é   é   é   é   é   z&Invalid viewport entity - missing dataé   ) ÚxdataÚ	get_xlistr   rµ   r    r	   ÚVSF_FAST_ZOOMÚboolÚVSF_SNAP_MODEÚVSF_GRID_MODEÚVSF_ISOMETRIC_SNAP_STYLEÚVSF_HIDE_PLOT_MODErF   rD   rR   rO   r<   rH   rK   rM   r^   rT   rc   rQ   r>   r@   rB   Ú
IndexErrorr   rW   r“   Údiscard)r”   ÚcÚvrÅ   rµ   rW   s         r–   r¿   z&Viewport.load_xdata_into_dxf_namespaceb  s  € ð	Ø"&§*¡*×"6Ñ"6°v¸wÔ"GÔHÑ"G™$˜!˜Q’AÐ"GˆDÑHð �A�bˆzˆØ�h‰hˆØˆÜ˜u¤e×&9Ñ&9¼4ÀÀRÁ»>ÓJˆÜ˜u¤e×&9Ñ&9¼4ÀÀRÁ»>ÓJˆÜ˜u¤e×&9Ñ&9¼4ÀÀRÁ»>ÓJˆÜ˜u¤e×&DÑ&DÄdÈ4ÐPRÉ8ÃnÓUˆÜ˜u¤e×&>Ñ&>ÄÀTÈ"ÁXÃÓOˆð	NØ$(¨¡GˆCÔ!Ø(,¨Q©ˆCÔ%Ø#'¨¡7ˆCÔ Ø" 1™gˆCŒOØ$(¨¡G¨T°!©WÐ$4ˆCÔ!Ø*.¨q©'ˆCÔ'Ø+/°©7ˆCÔ(Ø*.¨q©'ˆCÔ'Ø" 1™gˆCŒOØ" 2™hˆCŒOà ™8ˆCŒLð
 " "™XˆCŒNØ"& r¡(¨D°©HÐ"4ˆCÔØ# B™x¨¨b©Ð1ˆCÔØ# B™x¨¨b©Ð1ˆCÔð ˆŒ	Ø" 2 3˜iˆÔØ�
‰
×Ñ˜6Õ"ùóK IøÜò 	Ùð	ûô@ ò 	NÜ#Ð$LÓMÐMð	Nús.   ‚G$ ¡G­G$ ÄB*G3 ÇG$ Ç$	G0Ç/G0Ç3Hc                ób  •— t         ‰| �  |«       |j                  t        k(  r| j	                  |«       y|j                  t        t        j                  «       | j                  j                  |g d¢«       t        | j                  «      rv| j                  €J d«       ‚| j                  j                  }| j                  D ]>  }	 |j                  |«      }|j                  t         |j                  j"                  «       Œ@ | j                  j                  |g d¢«       y# t$        $ r Y Œkw xY w)z(Export entity specific data as DXF tags.)r/   r3   r5   r7   r9   r<   r>   r@   rB   rD   rF   rH   rK   rM   rO   rQ   rR   rT   Núvalid DXF document required)rW   rY   r\   r^   ra   rc   re   rg   ri   rk   rl   rn   rp   rr   rw   rz   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   )r‘   Úexport_entityrv   r   Úexport_acdb_viewport_r12Ú
write_tag2r   rÃ   rª   rµ   Úexport_dxf_attribsrÀ   r    rÊ   ÚlayersÚgetrÐ   rÍ   r   )r”   Ú	tagwriterrø   r§   Úlayerr•   s        €r–   rô   zViewport.export_entity‹  s   ø€ ä‰Ñ˜iÔ(Ø×Ñ¤5Ò(Ø×)Ñ)¨)Õ4à× Ñ ¤´-×2DÑ2DÔEØ�H‰H×'Ñ'Øòôô. �4×%Ñ%Ô&Ø—x‘xÐ+ÐJÐ-JÓJÐ+ØŸ™Ÿ™�Ø"&×"4Ô"4�JðXØ &§
¡
¨:Ó 6˜ð "×,Ñ,Ô-DÀeÇiÁi×FVÑFVÕWð #5ð �H‰H×'Ñ'Øòõ"øô .ò Ùðús   ÃD"Ä"	D.Ä-D.c                ó~   — | j                   j                  |g d¢«       |j                  | j                  «       «       y )N)r/   r3   r5   r7   r9   )rµ   r÷   Ú
write_tagsÚdxftags)r”   rú   s     r–   rõ   z!Viewport.export_acdb_viewport_r12Ø  s2   € Ø�‰×#Ñ#Øòô		
ð 	×Ñ˜TŸ\™\›^Õ,r—   c           "     óÚ  ‡ — ˆ fd„}‰ j                   }t        dd«      t        dd«      t        dd«      t        dd	«      t        d
|j                  «      t        d
|j                  «      t        d|j
                  «      t        d|j                  «      t        d|j                  d   «      t        d|j                  d   «      t        d|j                  «      t        d|j                  «      t        d|j                  «      t        d|j                  «      t        d|j                  «      t        d |t        j                  «      «      t        d|j                  «      t        d |t        j                   «      «      t        d |t        j"                  «      «      t        d |t        j$                  «      «      t        dd«      t        d|j&                  «      t        d|j(                  d   «      t        d|j(                  d   «      t        d|j*                  d   «      t        d|j*                  d   «      t        d|j,                  d   «      t        d|j,                  d   «      t        d |t        j.                  «      «      t        dd«      g}|j1                  d„ ‰ j2                  D «       «       |j1                  t        dd«      t        dd«      g«       t5        |«      S )Nc                ó>   •— ‰j                   j                  | z  rdS dS )Nr!   r   )rµ   rW   )Úflagr”   s    €r–   r  zViewport.dxftags.<locals>.flagæ  s   ø€ ØŸ™Ÿ™¨Ò-�1Ð4°1Ð4r—   ié  rÕ   iè  rÖ   iê  Ú{i.  rE   iò  i  r   r!   c              3  ó4   K  — | ]  }t        d |«      –— Œ y­w)ië  N)r   )Ú.0r§   s     r–   Ú	<genexpr>z#Viewport.dxftags.<locals>.<genexpr>  s   è ø€ ÐRÑ?Q°”F˜4 ×,Ñ?Qùs   ‚Ú})rµ   r   r   rF   rD   rR   rO   r<   rH   rK   rM   r^   rT   r	   rè   rc   rê   rë   rì   rQ   r>   r@   rB   rí   Úextendr    r   )r”   r  rµ   rÅ   s   `   r–   rþ   zViewport.dxftagså  s_  ø€ ô	5ð �h‰hˆä�4˜Ó Ü�4˜Ó!Ü�4˜ÓÜ�4˜ÓÜ�d˜C×1Ñ1Ó2Ü�d˜C×5Ñ5Ó6Ü�4˜×-Ñ-Ó.Ü�4˜Ÿ™Ó)Ü�4˜×.Ñ.¨qÑ1Ó2ÜØØ×%Ñ% aÑ(óô �4˜×4Ñ4Ó5Ü�4˜×5Ñ5Ó6Ü�4˜×4Ñ4Ó5Ü�4˜Ÿ™Ó)Ü�4˜Ÿ™Ó)Ü�4™œe×1Ñ1Ó2Ó3Ü�4˜Ÿ™Ó&Ü�4™œe×1Ñ1Ó2Ó3Ü�4™œe×1Ñ1Ó2Ó3Ü�4™œe×<Ñ<Ó=Ó>Ü�4˜‹OÜ�4˜Ÿ™Ó(Ü�4˜×,Ñ,¨QÑ/Ó0Ü�4˜×,Ñ,¨QÑ/Ó0Ü�4˜×)Ñ)¨!Ñ,Ó-Ü�4˜×)Ñ)¨!Ñ,Ó-Ü�4˜×)Ñ)¨!Ñ,Ó-Ü�4˜×)Ñ)¨!Ñ,Ó-Ü�4™œe×6Ñ6Ó7Ó8Ü�4˜ÓðC"
ˆðF 	�‰ÑR¸t×?QÒ?QÓRÔRØ�‰ä�t˜SÓ!Ü�t˜SÓ!ðô	
ô �D‹zÐr—   c                ó8  •— | j                   €J ‚t        ‰| �	  |«       |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       y )Nrk   rl   r€   rz   r   rˆ   )rÊ   r‘   Úregister_resourcesÚ
add_handlerµ   rù   )r”   Úregistryr•   s     €r–   r	  zViewport.register_resources  sÆ   ø€ Ø�x‰xÐ#Ð#Ð#Ü‰Ñ" 8Ô,à×Ñ˜DŸH™HŸL™L¨Ó6Ô7Ø×Ñ˜DŸH™HŸL™LÐ):Ó;Ô<Ø×Ñ˜DŸH™HŸL™LÐ)>Ó?Ô@Ø×Ñ˜DŸH™HŸL™LÐ)<Ó=Ô>Ø×Ñ˜DŸH™HŸL™LÐ)<Ó=Ô>Ø×Ñ˜DŸH™HŸL™L¨Ó6Õ7r—   c                óT  •— t        |t        «      sJ ‚t        ‰| �  ||«       |j	                  | |dd¬«       |j	                  | |dd¬«       |j	                  | |dd¬«       |j	                  | |dd¬«       |j	                  | |dd¬«       |j                  «        | j                  D �cg c]  }|j                  |«      ‘Œ c}|_        |j	                  | |dd¬«       |j	                  | |d	d¬«       t        d
d«      D ]   }|j                  j                  d|› �«       Œ" y c c}w )NrY   Trm   rk   rl   r€   rˆ   rz   r   r!   rÛ   Úref_vp_object_)r™   r-   r‘   Úmap_resourcesÚmap_existing_handleÚtake_sun_ownershipr    Ú	get_layerÚrangerµ   rï   )r”   ÚcloneÚmappingrª   Únumr•   s        €r–   r  zViewport.map_resources!  s9  ø€ Ü˜%¤Ô*Ð*Ð*Ü‰Ñ˜e WÔ-à×#Ñ#Ø�%Ð3¸dð 	$ô 	
ð 	×#Ñ# D¨%°ÈÐ#ÔMØ×#Ñ# D¨%Ð1BÈTÐ#ÔRØ×#Ñ# D¨%Ð1FÐQUÐ#ÔVØ×#Ñ# D¨%°ÈÐ#ÔMà× Ñ Ô"ØCG×CUÒCUÓVÑCU¸4˜w×0Ñ0°Õ6ÐCUÑVˆÔð 	×#Ñ# D¨%Ð1DÈtÐ#ÔTØ×#Ñ# D¨%Ð1DÈtÐ#ÔTô
 ˜˜A–;ˆCØ�I‰I×Ñ ¨s¨eÐ4Õ5ñ ùò Ws   Â+D%c                óì   — | j                   €J ‚| j                   j                  j                  | j                  j                  d«      «      }|r&| j                  j                  |j                  _        y y )Nrˆ   )rÊ   rÈ   rù   rµ   rÍ   Úowner)r”   Úsuns     r–   r  zViewport.take_sun_ownership;  sT   € Ø�x‰xÐ#Ð#Ð#Ø�h‰h×Ñ×#Ñ# D§H¡H§L¡L°Ó$>Ó?ˆÙØ ŸH™HŸO™OˆC�G‰G�Mð r—   c                óÜ   — | j                   €J d«       ‚| j                   j                  j                  } ||«      }| j                  D �cg c]  } ||«      |k7  r|n|‘Œ c}| _        y c c}w )Nró   )rÊ   rø   Úkeyr    )r”   Úold_nameÚnew_namer  Úold_keyrª   s         r–   Úrename_frozen_layerzViewport.rename_frozen_layerA  sl   € Ø�x‰xÐ#ÐBÐ%BÓBÐ#Ø�h‰h�o‰o×!Ñ!ˆÙ�h“-ˆàEI×EWÒEWó
ÙEW¸T‘S˜“Y 'Ò)‰T¨xÑ7ÐEWñ
ˆÕùò 
s   Á
A)c                óN  — | j                   j                  }|j                  }|j                  }| j                   j                  dz  }| j                   j
                  dz  }t        ||z
  ||z
  «      t        ||z   ||z
  «      t        ||z   ||z   «      t        ||z
  ||z   «      gS )zÃReturns the default rectangular clipping path as list of
        vertices. Use function :func:`ezdxf.path.make_path` to get also
        non-rectangular shaped clipping paths if defined.
        r;   )rµ   r/   ÚxÚyr3   r5   r   )r”   r/   ÚcxÚcyÚwidth2Úheight2s         r–   Úclipping_rect_cornerszViewport.clipping_rect_cornersI  s™   € ð
 —‘—‘ˆØ�X‰XˆØ�X‰XˆØ—‘—‘ !Ñ#ˆØ—(‘(—/‘/ AÑ%ˆä��f‘˜b 7™lÓ+Ü��f‘˜b 7™lÓ+Ü��f‘˜b 7™lÓ+Ü��f‘˜b 7™lÓ+ð	
ð 	
r—   c                ó6   — | j                  «       }|d   |d   fS )zwReturns the lower left and the upper right corner of the clipping
        rectangle in paperspace coordinates.
        r   r;   )r&  )r”   Úcornerss     r–   Úclipping_rectzViewport.clipping_rectZ  s%   € ð ×,Ñ,Ó.ˆØ�q‰z˜7 1™:Ð%Ð%r—   c                óŒ   — | j                   j                  t        j                  z  }|r| j                   j                  }|dk7  S y)z?Returns ``True`` if a non-rectangular clipping path is defined.rZ   F)rµ   rW   r	   ÚVSF_NON_RECTANGULAR_CLIPPINGrY   )r”   Ú_flagrÍ   s      r–   Úhas_extended_clipping_pathz#Viewport.has_extended_clipping_patha  s;   € ð —‘—‘¤×!CÑ!CÑCˆÙØ—X‘X×6Ñ6ˆFØ˜S‘=Ð Ør—   c                ó‚   — | j                   j                  }t        |«      dk  ry| j                   j                  }||z  S )z7Returns the scaling factor from modelspace to viewport.gê-�™—q=ç        )rµ   rO   Úabsr5   )r”   Ú
msp_heightÚ	vp_heights      r–   Ú	get_scalezViewport.get_scalej  s8   € à—X‘X×)Ñ)ˆ
Üˆz‹?˜UÒ"ØØ—H‘H—O‘Oˆ	Ø˜:Ñ%Ð%r—   c                ót   — | j                   j                  }|j                  xs |j                  t        «      S )z/Returns ``True`` if the viewport is a top view.)rµ   rD   Úis_nullÚiscloser   )r”   Úview_directions     r–   Úis_top_viewzViewport.is_top_viewr  s/   € ð  $Ÿx™x×=Ñ=ˆØ×%Ñ%ÒG¨×)?Ñ)?ÄÓ)GÐGr—   c                óš   — t        | j                  j                  «      }|j                  rt        | j                  j                  «      }|S r�   )r   rµ   r<   r5  rF   )r”   Úcenter_points     r–   Úget_view_center_pointzViewport.get_view_center_pointx  s;   € ô ˜DŸH™H×6Ñ6Ó7ˆØ×ÒÜ §¡× :Ñ :Ó;ˆLØÐr—   c                ó†  — | j                  «       }| j                  j                  }| j                  «       }| j                  j                  ||z  z
  }t        j                  |«      }|r+|t        j                  t        j                  |«      «      z  }|t        j                  |j                  |j                  d«      z  S )zLReturns the transformation matrix from modelspace to paperspace coordinates.r   )r3  rµ   rR   r;  r/   r   ÚscaleÚz_rotateÚmathÚradiansÚ	translater   r!  )r”   r=  Úrotation_angleÚmsp_center_pointÚoffsetÚms         r–   Úget_transformation_matrixz"Viewport.get_transformation_matrix€  s—   € ð —‘Ó ˆØ $§¡× 9Ñ 9ˆØ!%×!;Ñ!;Ó!=ÐØ—x‘x—‘Ð*:¸UÑ*BÑCˆÜ�N‰N˜5Ó!ˆÙØ”×"Ñ"¤4§<¡<°Ó#?Ó@Ñ@ˆAØ”8×%Ñ% f§h¡h°·±¸!Ó<Ñ<Ð<r—   c                ó|   — 	 | j                   j                  | j                   j                  z  S # t        $ r Y yw xY w)zaReturns the aspect ratio of the viewport, return 0.0 if width or
        height is zero.
        r/  )rµ   r3   r5   ÚZeroDivisionErrorrŸ   s    r–   Úget_aspect_ratiozViewport.get_aspect_ratioŒ  s4   € ð	Ø—8‘8—>‘> D§H¡H§O¡OÑ3Ð3øÜ ò 	Ùð	ús   ‚,/ ¯	;º;c                óV  ‡‡— | j                  «       Š| j                  j                  }| j                  j                  }| j	                  «       }|dk(  rt        d«      ‚||z  dz  }|dz  }|r¥t        j                  | | f|| f||f| |ff«      }t        j                  |«      Št        ˆˆfd„|D «       «      }|j                  j                  |j                  j                  |j                  j                  |j                  j                  fS ‰\  }}	}
||z
  |	|z
  ||z   |	|z   fS )zuReturns the limits of the modelspace to view in drawing units
        as tuple (min_x, min_y, max_x, max_y).
        r/  z+invalid viewport parameters width or heightg      à?c              3  óF   •K  — | ]  }|j                  ‰«      ‰z   –— Œ y ­wr�   )Úrotate)r  rñ   ÚanglerC  s     €€r–   r  z1Viewport.get_modelspace_limits.<locals>.<genexpr>¥  s    øè ø€ Ð SÉUÈ §¡¨%£Ð3CÕ!CÉUùs   ƒ!)r;  rµ   rO   rR   rI  Ú
ValueErrorr   rš   r?  r@  r   Úextminr   r!  Úextmax)r”   r1  rB  ÚratioÚw2Úh2ÚframeÚbboxÚmxÚmyÚ_rM  rC  s              @@r–   Úget_modelspace_limitszViewport.get_modelspace_limits•  s  ù€ ð "&×!;Ñ!;Ó!=ÐØ ŸH™H×0Ñ0ˆ
Ø $§¡× 9Ñ 9ˆØ×%Ñ%Ó'ˆØ�CŠ<ÜÐJÓKÐKà˜%Ñ #Ñ%ˆØ˜#ÑˆÙÜ—I‘I   b S˜z¨B°°¨9°r¸2°hÀ"ÀÀbÀ	ÐJÓKˆEÜ—L‘L Ó0ˆEÜ Ô SÉUÓ SÓSˆDØ—;‘;—=‘= $§+¡+§-¡-°·±·±ÀÇÁÇÁÐMÐMà(‰IˆB��AØ˜‘7˜B ™G R¨"¡W¨b°2©gÐ5Ð5r—   )ÚreturnÚNone)r›   r   rZ  r[  )rZ  z	list[str])r¢   zIterable[str])r§   ÚstrrZ  Úint)r§   r\  rZ  r[  )r§   r\  rZ  ré   )rZ  ré   r�   )rÄ   zOptional[SubclassProcessor]rZ  r)   )rÊ   r(   )rÅ   r   rZ  r   )rú   r+   rZ  r[  )rú   r+   )rZ  r   )r  zxref.RegistryrZ  r[  )r  r   r  zxref.ResourceMapperrZ  r[  )r  r\  r  r\  rZ  r[  )rZ  z
list[Vec2])rZ  ztuple[Vec2, Vec2])rZ  Úfloat)rZ  r   )rZ  r   )rZ  z!tuple[float, float, float, float])*Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr   r"   r%   rÃ   Ú
DXFATTRIBSr’   r'   r�   Úpropertyr    Úsetterr«   r¯   r±   r³   r·   r»   rÇ   rÁ   r¿   rô   rõ   rþ   r	  r  r  r  r&  r)  r-  r3  r8  r;  rF  rI  rY  Ú__classcell__)r•   s   @r–   r-   r-   ý   s  ø„ áà€GÙ˜z¨;¸ÓF€Jõ,ð 5Aô :ð ò#ó ð#ð ×Ñò*ó ð*óó3ó3ó+ð ò	ó ð	ð 8<ðØ4ðà	õõ"	"ó ó'#õRKóZ-ó/õb	8õ6ó4,ó
ó
ó"&ð òó ðó&ð òHó ðHó
ó
=ó÷6r—   )GÚ
__future__r   Útypingr   r   r   Útyping_extensionsr   r?  Úezdxf.lldxfr   r	   Úezdxf.lldxf.attributesr
   r   r   r   r   r   Úezdxf.lldxf.typesr   r   Úezdxf.lldxf.tagsr   Úezdxf.lldxf.constr   r   r   r   r   Ú
ezdxf.mathr   r   r   r   r   r   r   r   Úezdxf.toolsr    Ú	dxfentityr"   r#   Údxfgfxr$   r%   Úfactoryr&   Úcopyr'   Úezdxf.documentr(   Úezdxf.entitiesr)   r*   Úezdxf.lldxf.tagwriterr+   Úezdxfr,   Ú__all__Úpoint3dÚpoint2dÚis_in_integer_rangeÚis_integer_boolÚis_not_null_vectorÚis_valid_aci_colorrÃ   r½   rÐ   r-   © r—   r–   Ú<module>r‚     s)  ðõ #ß 4Ñ 4Ý "Û Ý !Ý ÷÷ ÷ 0Ý !÷õ ÷	÷ 	ó 	õ 'ß 4ß +Ý $Ý áÝ&ß6Ý7Ýàˆ,€áØðð
 	‘'˜" E§M¡M¸7ÔCðð 	‘˜ QÔ'ðð 	‘'˜" aÔ(ðð$ 	‘'˜" aÔ(ð%ð6 	‰g�b !Ô$ð7ð@ 	™W R¨u¯}©}ÀgÔNðAðB 	™7 2¨U¯]©]ÀGÔLðCðD 	™ ¨%¯-©-ÁÀbÈ"ÃÔNðEðF 	™ ¨%¯-©-ÁÀbÈ"ÃÔNðGðJ 	 ¡¨°5·=±=È&Ô!QðKðN 	™W R¨u¯}©}ÀgÔNðOðP 	"¡7¨2°rÔ#:ðQðR 	#¡G¨B¸Ô$:ðSðT 	"¡7¨2°qÔ#9ðUðX 	‘w˜r¨1Ô-ðYðZ 	‘g˜b¨!Ô,ð[ð\ 	™G B°Ô2ñ]ð^ 	‘w˜r¨3Ô/ð_ðZ 	‘˜ QÔ'ð[ðd 	#¡G¨C¸ÀtÔ$Lðeðh 	™7 1¨bÔ1ðiðz 	‘wØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ð{ðF 	™GØØØ×/Ñ/Ø ô	
ðGðR 	‘G˜B¨Ô*ðSðT 	‘g˜c¨¯©ÀÔHðUðV 	‘gØØ—-‘-ØØ×2Ñ2Ø ô
ðWðd 	‘gØØ—-‘-ØØ×2Ñ2Ø ô
ðeðv 	‘g˜c“lðwð~ 	™7 3°Ô6ððP 	™'ØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ðQð\ 	‘W˜S¨!Ô,ð]ðh 	™7ØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ðiðv 	™' "°Ô:ðwðx 	™W S°XÈÔMñyñz % S°XÈÔMÙ& s°xÈ$ÔOÙ!(Ø˜H¨a¸$ô"
ñ ")ØØØØ×/Ñ/Ø ô"
ñ # 3°8Ô<Ù  °Ô:á!(ØØØ×2Ñ2ô"
ñ ")¨¸Ô!Bá!(¨¸Ô!BÙ˜c¨hÀÔFñ # 3°8Ô<Ù" 3°8Ô<Ù" 3°8Ô<Ù" 2°(Ô;ò}óB€ñF /¨}Ó=Ð ð
 Ð ð ôk6ˆzó k6ó ñk6r—   