
    tj+                         	 d dl Zd dlZd dlmZ d dlmZ ddddd	d
d	d
ddd
Zd Z	ddZ
d ZddZddZddZd Zy# e$ r	  ed      w xY w)    NzWThis module depends on the numpy module. Please makesure that it is installed properly.)vtk_to_numpy)vtkDataSetSurfaceFilter	Int8Array
Uint8Array
Int16ArrayUint16Array
Int32ArrayUint32ArrayFloat32ArrayFloat64Array)
int8uint8int16uint16int32uint32int64uint64float32float64c                    t        |       dk(  r| j                         S | j                  }|j                  dk(  rt	        |       S |j                  dk(  rt	        | t
        j                        S |j                  dv r t        j                  |       }t        j                  |       }|dk  }t        ||       }|r|t        j                  t
        j                        k  rt	        | t
        j                        S |t        j                  t
        j                        j                  k  rt	        | t
        j                        S |t        j                  t
        j                        j                  k  rt	        | t
        j                        S | j                         S |t        j                  t
        j                        j                  k  rt	        | t
        j                        S |t        j                  t
        j                        j                  k  rt	        | t
        j                        S |t        j                  t
        j                        j                  k  rt	        | t
        j                        S | j                         S )Nr   fb)ui)lentolistdtypekind	np_encodenpr   amaxaminmaxiinfor   r   r   r   r   )objr   	max_value	min_valuesigned
test_values         A/DATA/.local/lib/python3.12/site-packages/vtkmodules/web/utils.pyb64_encode_numpyr,      s    3x1}zz|IIEzzS~	s	bhh''	z	!GGCL	GGCL	QYJ/
BHHRWW-- bgg..BHHRXX.222 bhh//BHHRXX.222 bhh// ::< BHHRXX.222 bhh//BHHRYY/333 bii00BHHRYY/333 bii00 ::<    c                    |rx| j                  |      j                  d      }t        j                  t	        |            j                  d      t        |j                        t        | j                        dS t        j                  t	        | j                  d                  j                  d      t        | j                        t        | j                        dS )NC)orderzutf-8)bvalsr   shape)
astyperavelbase64	b64encode
memoryviewdecodestrr   listr2   )arraynp_typen_arrays      r+   r    r    A   s    ,,w'--C-8%%j&9:AA'J'%++&
 	
 !!*U[[s[-C"DELLWUU[[!ekk" r-   c                 L    | r"t        t        | j                                     S y N)r,   r   GetData)r;   s    r+   
mesh_arrayrA   P   s     U]]_ =>> r-   c                     | rl| j                  d      }| j                         }t        |       }t        t	        |j
                           }|r|n| j                         t        |      ||||dS y )N)namevaluesnumberOfComponentstypelocation	dataRange)GetRangeGetNumberOfComponentsr   
to_js_typer9   r   GetNamer,   )
data_arrayrH   rD   rI   nb_comprE   js_typess          r+   rN   rN   U   ss    ''+	224j)c&,,/0 Dj&8&8&:&v.") "
 	
 r-   c                 |    g }|D ]4  }| j                  |      }t        |||      }|s$|j                  |       6 |S r?   )GetArrayrN   append)
field_datanamesrH   fieldsrD   r;   js_arrays          r+   rT   rT   e   sE    F##D)eXt4MM(#	  Mr-   c                    | yd}| j                  d      r| }n;t               }|j                  |        |j                          |j	                         }|j                         ydi i}t        |j                               }|r||d   d<   t        |j                               }|r||d   d<   t        |j                               }	|	r|	|d   d<   t        |j                               }
|
r|
|d   d<   t        |j                               }|r||d   d<   |ud}|j                         j                  |      }|j                         j                  |      }|rt        |d	|
      }|rt        |d|
      }|r|j                  d|i       |r9t!        |j                         |d      }t#        |      r|j                  d|i       |r9t!        |j                         |d	      }t#        |      r|j                  d|i       |S )zNExpect any dataset and extract its surface into a dash_vtk.Mesh state propertyNvtkPolyDatameshpointsvertslinespolysstripsCellData)rH   rD   	PointDatafieldpointArrays
cellArrays)IsAr   SetInputDataUpdate	GetOutput	GetPointsrA   GetVertsGetLinesGetPolys	GetStripsGetPointDatarR   GetCellDatarN   updaterT   r   )datasetfield_to_keeppoint_arrayscell_arrayspolydataextractSkinFilterstater[   r\   r]   r^   r_   rb   p_arrayc_array
point_data	cell_datas                    r+   rZ   rZ   p   s    H{{=!35&&w/  "$..0# RLE**,-F"(fhx((*+E!&fgx((*+E!&fgx((*+E!&fg**,-F"(fh  '')22=A&&(11-@w-PEw=QELL'5)*  5 5 7{S
z?LL-45 x335{JO	y>LL,	23Lr-   c                    | | j                  d      syd| j                         | j                         | j                         di}t	        | d      r[| j                         }g }t        d      D ]3  }t        d      D ]#  }|j                  |j                  ||             % 5 ||d   d<   | j                         j                         }t        |d	      }|r||d
<   |S )zKExpect a vtkImageData and extract its setting for the dash_vtk.Volume stateNvtkImageDataimage)
dimensionsspacingoriginGetDirectionMatrix   	directionra   )rH   rb   )re   GetDimensions
GetSpacing	GetOriginhasattrr   rangerS   
GetElementrn   
GetScalarsrN   )rq   rw   matrixjs_matjr   scalarsrb   s           r+   volumer      s    gkk.9 	!//1))+'')
E w,-++-qA1Xf//156   '-g{#""$//1Gw5EgLr-   r?   )ra   N)ra   )NNN)numpyr!   ImportErrorr5   vtkmodules.util.numpy_supportr   vtkmodules.vtkFiltersGeometryr   rL   r,   r    rA   rN   rT   rZ   r    r-   r+   <module>r      s     6 A 
!H?

 DNi  
	% s	   = A