
    +j+                         	 d dl Zn# e$ r  ed          w xY w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dS )    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|                                 S | j        }|j        dk    rt	          |           S |j        dk    rt	          | t
          j                  S |j        dv rt          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 n|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 |                                 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         N/DATA/AppData/hermes/venv/lib/python3.11/site-packages/vtkmodules/web/utils.pyb64_encode_numpyr,      s    3xx1}}zz||IEzS~~	s		bh'''	z	!	!GCLL	GCLL	QYJ//
 	1BHRW---- bg...BHRX..222 bh///BHRX..222 bh/// 3 BHRX..222 bh///BHRY//333 bi000BHRY//333 bi000 ::<<    c                    |r|                      |                              d          }t          j        t	          |                                        d          t          |j                  t          | j	                  dS t          j        t	          |                     d                                                  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8%j&9&9::AA'JJ''%+&&
 
 	
 !*U[[s[-C-C"D"DEELLWUUU[!!ek""  r-   c                 f    | r.t          t          |                                                     S d S N)r,   r   GetData)r;   s    r+   
mesh_arrayrA   P   s2     ?U]]__ = =>>>? ?r-   	PointDatac                    | r|                      d          }|                                 }t          |           }t          t	          |j                           }|r|n|                                 t          |          ||||dS d S )N)namevaluesnumberOfComponentstypelocation	dataRange)GetRangeGetNumberOfComponentsr   
to_js_typer9   r   GetNamer,   )
data_arrayrI   rE   rJ   nb_comprF   js_typess          r+   rO   rO   U   s     
''++	2244j))c&,//0 :DDj&8&8&:&:&v..") "
 
 	

 
r-   c                     g }|D ]?}|                      |          }t          |||          }|r|                    |           @|S r?   )GetArrayrO   append)
field_datanamesrI   fieldsrE   r;   js_arrays          r+   rU   rU   e   sZ    F $ $##D))eXt44 	$MM(###Mr-   c                 *   | dS d}|                      d          r| }nKt                      }|                    |            |                                 |                                }|                                dS di i}t          |                                          }|r||d         d<   t          |                                          }|r||d         d<   t          |                                          }	|	r|	|d         d<   t          |	                                          }
|
r|
|d         d<   t          |
                                          }|r||d         d<   |d}|                                                    |          }|                                                    |          }|rt          |d	|
          }|rt          |d|
          }|r|                    d|i           |rIt!          |                                |d          }t#          |          r|                    d|i           |rIt!          |                                |d	          }t#          |          r|                    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)rI   rE   rB   fieldpointArrays
cellArrays)IsAr   SetInputDataUpdate	GetOutput	GetPointsrA   GetVertsGetLinesGetPolys	GetStripsGetPointDatarS   GetCellDatarO   updaterU   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+   r[   r[   p   s   t H{{=!! 1355&&w///  """$..00#t RLE**,,--F )"(fhx((**++E '!&fgx((**++E '!&fgx((**++E '!&fg**,,--F )"(fh  ''))22=AA&&((11-@@ 	Qw-PPPE 	Rw=QQQE 	+LL'5)***  6 5 5 7 7{SS
z?? 	6LL-4555  4x3355{JOO	y>> 	4LL,	2333Lr-   c                 ,   | |                      d          sdS d|                                 |                                 |                                 di}t	          | d          rn|                                 }g }t          d          D ]=}t          d          D ]+}|                    |                    ||                     ,>||d         d<   | 	                                
                                }t          |d	          }|r||d
<   |S )zKExpect a vtkImageData and extract its setting for the dash_vtk.Volume stateNvtkImageDataimage)
dimensionsspacingoriginGetDirectionMatrix   	directionrB   )rI   rb   )re   GetDimensions
GetSpacing	GetOriginhasattrr   rangerT   
GetElementrn   
GetScalarsrO   )rq   rw   matrixjs_matjr   scalarsrb   s           r+   volumer      s3   gkk.99t 	!//11))++''))
 
E w,-- -++--q 	7 	7A1XX 7 7f//15566667 '-g{#""$$//11Gw555E gLr-   r?   )rB   N)rB   )NNN)numpyr!   ImportErrorr5   vtkmodules.util.numpy_supportr   vtkmodules.vtkFiltersGeometryr   rM   r,   r    rA   rO   rU   r[   r    r-   r+   <module>r      s5     
+	%    6 6 6 6 6 6 A A A A A A  
! ! !H   ? ? ?

 
 
 
    D D D DN    s    