
    pj                     P   d dl Z d dlZd dlZd dlZddlmZ ddlmZ 	 ej                  j                  dd      Z ej                  e      ej                  d<   dZ	 d dlmZ dZdZd Z G d d      Zi ad Zd Zy# e$ r  e j                   d	       d
ZY <w xY w# e$ r d
ZY @w xY w)    N   )
HybridView)meshVTK_MODULE_NAME
vtkmodules
vtk_moduleTzVTK is not installed.F)vtkWebApplicationa+  Your build of VTK does not have the proper web modules enabled.
These modules are typically enabled by default with the
`-DVTK_GROUP_ENABLE_Web:STRING=WANT` build flag.

Conda users: This is a known issue with the conda-forge VTK feedstock.
See https://github.com/conda-forge/vtk-feedstock/pull/258
c                  .    t         st        t              y N)HAS_VTK_WEBImportErrorIMPROPER_VTK_MSG)featuress    K/DATA/.local/lib/python3.12/site-packages/trame_vtk/modules/vtk/__init__.pyhas_capabilitiesr   !   s    *++     c                       e Zd Zd Zd Zd Zd ZddZ	 	 	 	 ddZddZ	dd	Z
d
 Zd ZddZd Zd Zd ZddZd Z	 	 	 	 	 	 ddZd Zd Zy)Helperc                     d | _         || _        t        rMt               | _        | j                  j                  d       i | _        |j                  | j                         y y Nr   )	_root_protocol_trame_serverr   r	   	_vtk_coreSetImageEncoding_hybrid_viewsadd_protocol_to_configureconfigure_protocol)selftrame_servers     r   __init__zHelper.__init__'   sT    ").0DNNN++A.!#D 2243J3JK r   c                     t        |  y r   )r   )r   r   s     r   r   zHelper.has_capabilities2   s
    (#r   c                 l    |syt        | j                  j                         j                  |            S )N )strr   GetObjectIdMapGetGlobalId)r   vtk_objs     r   idz	Helper.id5   s+    4>>002>>wGHHr   c                 f    | j                   j                         j                  t        |            S r   )r   r%   GetVTKObjectint)r   vtk_ids     r   objectzHelper.object:   s$    ~~,,.;;CKHHr   Nc                     |j                  d      r |j                          |j                         }t        ||||      S )NvtkAlgorithm)field_to_keeppoint_arrayscell_arrays)IsAUpdate	GetOutputvtk_mesh)r   datasetr0   r1   r2   s        r   r   zHelper.mesh=   s?    ;;~&NN'')G'%#	
 	
r   c                     | j                   j                  d| j                  |      |||      }|rd|j                  di       d<   |S )Nz viewport.geometry.view.get.statewidgetsorientation_axisr   extraresetCamera)r   protocol_callr(   
setdefault)r   render_windowreset_camera	new_stater:   r;   kwargsscene_states           r   scenezHelper.sceneH   sY     ((66.GGM"- 7 
 ABK""7B/>r   c                 ^    | j                   j                  d| j                  |      ||      S )Nz!viewport.geometry.view.get.exportr9   r   r>   r(   )r   r@   r:   r;   rC   s        r   exportzHelper.export\   s5    !!///GGM"-	 0 
 	
r   c                     |j                         j                          |r+| j                  j                  d| j	                  |             | j                  j                  dd| j	                  |      i      S )Nzviewport.camera.resetzviewport.image.pushview)GetInteractorEnableRenderOffr   r>   r(   )r   r@   rA   s      r   
push_imagezHelper.push_imaged   sj    ##%557,,')? !!//!FDGGM,B#C
 	
r   c                 X    | j                   j                  d| j                  |            S )Nzviewport.image.push.quality.getrG   r   r@   s     r   get_current_image_qualityz Helper.get_current_image_qualityq   s)    !!//-tww}/E
 	
r   c                 ^    | j                   j                  d| j                  |      ||       y )Nzviewport.image.push.qualityrG   )r   r@   qualityratios       r   set_image_qualityzHelper.set_image_qualityv   s+    (()GGM"		
r   c                     | j                   j                  d|       | j                  |||       | j                   j                  d| j                  |             y )Nz viewport.image.animation.fps.maxzviewport.image.animation.start)r   r>   rT   r(   )r   r@   fpsrR   rS   s        r   start_animationzHelper.start_animation~   sM    (()KSQ}gu=((,dggm.D	
r   c                 Z    | j                   j                  d| j                  |             y )Nzviewport.image.animation.stoprG   rO   s     r   stop_animationzHelper.stop_animation   s$    ((+TWW]-C	
r   c           
      z   |j                         j                         j                         }t        |j	                               |j                         |j                         t        |j                               |j                         t        |j                               t        |j	                               dS )N)
focalPointparallelProjectionparallelScaleposition	viewAngleviewUpcenterOfRotation)
GetRenderersGetFirstRendererGetActiveCameralistGetFocalPointGetParallelProjectionGetParallelScaleGetPositionGetViewAngle	GetViewUp)r   r@   cameras      r   rl   zHelper.camera   s    ++->>@PPRv3356"(">">"@#446V//12,,.6++-. $V%9%9%; <
 	
r   c                     |j                         j                         j                         }ddddddd}|j                         D ]  \  }}||v s t	        ||      ||          ! y )NSetFocalPointSetParallelProjectionSetParallelScaleSetPositionSetViewAngle	SetViewUp)r[   r\   r]   r^   r_   r`   )rb   rc   rd   itemsgetattr)r   r@   rC   rl   key_to_setterkeysetters          r   
set_camerazHelper.set_camera   sp    ++->>@PPR)"9/%'!
 )..0KCf}''s4 1r   c                 *     | j                   ||fi |S r   )add_hybrid_view)r   rJ   namerC   s       r   rJ   zHelper.view   s    #t##D$9&99r   c                 z   || _         ddlm}m}m}m} | j                   j                  d| j                         | j                   j                   |              | j                   j                   |              | j                   j                   |d             | j                   j                   |              y )Nr   )vtkWebLocalRenderingvtkWebMouseHandlervtkWebPublishImageDeliveryvtkWebViewPortappF)decode)	r   	protocolsr~   r   r   r   setSharedObjectr   registerLinkProtocol)r   protocolr~   r   r   r   s         r   r   zHelper.configure_protocol   s    &	
 	
 	++E4>>B 	001C1EF001AB00&e4	

 	001E1GHr   c	           
          || j                   v rJ|r| j                   |   j                  |       nt        d| d       t        d       | j                   |   S t        | |||||||      }
|
| j                   |<   |
S )NzA view with name (z) is already registeredz => returning previous one)r   replace_viewprintr   )r   r|   rJ   modeinteractive_ratiointeractive_qualitystill_ratiostill_qualityforce_replacerC   view_helpers              r   r{   zHelper.add_hybrid_view   s     4%%%""4(55d;*4&0GHI23%%d++ 	
 $/4 r   c                 X    || j                   v r| j                   j                  |       y y r   )r   pop)r   r|   s     r   remove_hybrid_viewzHelper.remove_hybrid_view   s)    4%%%""4( &r   c                     i | _         y r   )r   )r   s    r   
reload_appzHelper.reload_app   s
    r   )NNN)FFNr   r   )F)   d   r   )rJ   )localr   <   r   b   F)__name__
__module____qualname__r    r   r(   r-   r   rE   rH   rM   rP   rT   rW   rY   rl   ry   rJ   r   r{   r   r    r   r   r   r   &   s    	L$I
I	
 (









5:I4 B) r   r   c                 J    t         rt        |       t        | j                  <   y y r   )r   r   HELPERS_PER_SERVERr|   )r   rC   s     r   setupr      s     06|0D<,,- r   c                 @    t         j                  | j                        S r   )r   getr|   )servers    r   
get_helperr      s    !!&++..r   )warnings	importlibossyscorer   serializersr   r6   environr   vtk_module_nameimport_modulemodulesHAS_VTKr   warnvtk_module.vtkWebCorer	   r   r   r   r   r   r   r   r   r   r   <module>r      s      	 
  )jjnn%6EO 7	 7 7 HCKKG
7K ,
}  } H  E/M  HMM)*G  Ks#   =A< B <BBB%$B%