
    +jl                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ  ej        e          Ze                    ej                   d Zd Zd	 Z G d
 d          Zi ai adZd Zd Zd Z d Z!d Z"d Z#d Z$i Z%d Z&d Z'd Z(ddgfdZ)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d  Z1d! Z2d" Z3ddgfd#Z4ddgfd$Z5ddgfd%Z6d& Z7d' Z8d( Z9d) Z:d* Z;d+ Z<d, Z=d- Z>d. Z?d/ Z@dS )0    N)base64EncodehashDataArraygetJSArrayTypearrayTypesMappinggetReferenceId)vtkTypeUInt32Array)vtkCompositeDataGeometryFilter)vtkDataSetSurfaceFilter)vtkColorTransferFunctionc                 R   t          j                    5 }t          j        |d          5 }|                    d| z  |t          j                   d d d            n# 1 swxY w Y   |                    d           |                                cd d d            S # 1 swxY w Y   d S )Nw)modezdata/%sr   )ioBytesIOzipfileZipFilewritestrZIP_DEFLATEDseekread)namedata	in_memoryzfs       a/DATA/AppData/hermes/venv/lib/python3.11/site-packages/vtkmodules/web/render_window_serializer.pyzipCompressionr      s#   	  _YS111 	FRKK	D($0DEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fq~~	                                   s4   B%ABA 	 B#A 	$+BB #B c           	         t           |                                          }t          j        |          }|                                 }|                                 ||z  }|dk    rt          j        t          |                     5 }t          t          j
        ||z  |                    |                              d d d            n# 1 swxY w Y   fdt          |z            D             S d S )N c                 6    g | ]}|z  |d z   z           S )    ).0idxr   nbComponentss     r   
<listcomp>z#dataTableToList.<locals>.<listcomp>-   sA     
 
 
 |#sQw,&>>?
 
 
    )r   GetDataTypestructcalcsizeGetNumberOfValuesGetNumberOfComponentsr   r   
memoryviewlistunpackr   range)	dataTabledataTypeelementSizenbValuesnbytesstreamr   r$   s         @@r   dataTableToListr6   $   sF    !6!6!8!89H/(++K**,,H2244L8#F3Z
9--.. 	Q&h&96;;v;N;NOOPPD	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q
 
 
 
 
X566
 
 
 	

 4s   
9CCCc                 T     | z
  |dz
  z   fdt          |          D             S )Nr    c                      g | ]
}|z  z   S r!   r!   )r"   ideltastarts     r   r%   zlinspace.<locals>.<listcomp>:   s"    222!EAI222r&   r/   )r;   stopnumr:   s   `  @r   linspacer?   8   s9    E\cAg&E22222uSzz2222r&   c                   B    e Zd Zd Zd Zd ZddZddZd Zd	 Z	d
 Z
dS )SynchronizationContextc                 0    i | _         i | _        d| _        d S )NF)dataArrayCachelastDependenciesMappingingoreLastDependencies)selfs    r   __init__zSynchronizationContext.__init__D   s      ')$&+###r&   c                     || _         d S N)rE   )rF   forces     r   setIgnoreLastDependenciesz0SynchronizationContext.setIgnoreLastDependenciesI   s    &+###r&   c                     || j         |<   d S rI   )rC   )rF   pMd5r   s      r   cacheDataArrayz%SynchronizationContext.cacheDataArrayL   s    $(D!!!r&   Fc                 ,   | j         |         }|d         }|d         }||                                k    rt                              d           |                                dk    r|                                |                                z  }t                      }|                    |           t          |          D ]F}	|
                    |	|                    |	          dk     rdn|                    |	                     Gt          |          }
nt          |          }
|r8|s|
                                n!t          ||
                                          S t          |s|
n!t          ||
                                                    S )NarraymTimez4 ***** ERROR: you asked for an old cache key! *****    r   )rC   GetMTimeloggerdebugr'   GetNumberOfTuplesr+   r   SetNumberOfTuplesr/   SetValueGetValuer,   tobytesr   r   )rF   rM   binarycompressioncacheObjrP   	cacheTime	arraySizenewArrayr9   pBuffers              r   getCachedDataArrayz)SynchronizationContext.getCachedDataArrayO   s   &t,!W%	((((LLOPPP"$$//11E4O4O4Q4QQI)++H&&y1119%% Y Y!!!5>>!+<+<q+@+@RRennUVFWFWXXXX **GG ''G 	
 #=!!!#D'//*;*;<< &SGGN4ARAR,S,S
 
 	
r&      c                    t          j                     |z
  }g }| j        D ]R}| j        |         }|d         }|                                }|dk    r!|d         |k     r|                    |           S|D ]
}| j        |= d S )NrP   r    ts)timerC   GetReferenceCountappend)rF   
timeWindow
cutOffTimeshasToDeletesharecordrP   counts           r   checkForArraysToReleasez.SynchronizationContext.checkForArraysToReleaseo   s    Y[[:-
& 	) 	)C(-F7OE++--EzzfTlZ77##C((( 	) 	)C#C((	) 	)r&   c                 D    g }|| j         v r| j        s| j         |         }|S rI   )rD   rE   )rF   idstrlastDepss      r   getLastDependencyListz,SynchronizationContext.getLastDependencyList}   s/    D0009T03E:Hr&   c                     || j         |<   d S rI   )rD   )rF   rr   depLists      r   setNewDependencyListz+SynchronizationContext.setNewDependencyList   s    .5$U+++r&   c                     |                      |          g }|fdD             z  }|fdD             z  }|                     |           |S )Nc                 <    g | ]}|vt          |          ggS r!   wrapId)r"   x	addMethodoldLists     r   r%   zBSynchronizationContext.buildDependencyCallList.<locals>.<listcomp>   s0    PPPqq?O?O9vayyk*?O?O?Or&   c                 <    g | ]}|vt          |          ggS r!   rz   )r"   r|   newListremoveMethods     r   r%   zBSynchronizationContext.buildDependencyCallList.<locals>.<listcomp>   s0    SSS!!7BRBR<&))-BRBRBRr&   )rt   rw   )rF   rr   r   r}   r   callsr~   s     ``` @r   buildDependencyCallListz.SynchronizationContext.buildDependencyCallList   s}    ,,U33PPPPPGPPPPSSSSSwSSSS!!%111r&   N)FF)rd   )__name__
__module____qualname__rG   rK   rN   rc   rp   rt   rw   r   r!   r&   r   rA   rA   C   s        , , ,
, , ,) ) )
 
 
 
@) ) ) )  6 6 6    r&   rA   c                     |t           | <   d S rI   )SERIALIZERS)r   methods     r   registerInstanceSerializerr      s    Kr&   c                     |t           | <   d S rI   )JS_CLASS_MAPPING)	vtk_classjs_classs     r   registerJSClassr      s    "*Yr&   c                 Z    |                                  }|t          v rt          |         S |S rI   )GetClassNamer   )vtk_objr   s     r   
class_namer      s0    $$&&I$$$	**r&   c                     t          |          }|t          v rt          |         nd }|r || ||||          S t                              d| d|            d S )Nz!!!No serializer for z	 with id )r   r   rU   error)parentinstance
instanceIdcontextdepthinstanceType
serializers          r   serializeInstancer      sq    h''L.:k.I.I\**tJ Hz&(JGGG
LLLLL
LLMMM4r&   c                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          d	t                     t          d
t                     t	          dd           t	          dd           t	          d	d           t	          d
d           t          dt
                     t          dt
                     t	          dd           t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t          dt                     t	          dd           t          dt                      t          dt                      t          dt                      t          dt                      t          dt                      t          d t                      t          d!t                      t          d"t                      t          d#t                      t          d$t                      t          d%t                      t          d&t                      t          d't                      t          d(t"                     t          d)t"                     t          d*t$                     t          d+t$                     t          d,t&                     t          d-t&                     t          d.t&                     t          d/t(                     t          d0t*                     d S )1NvtkActorvtkOpenGLActorvtkPVLODActor	vtkVolume	vtkMappervtkDataSetMappervtkPolyDataMappervtkImageDataMappervtkOpenGLPolyDataMappervtkCompositePolyDataMapper2vtkVolumeMapper vtkFixedPointVolumeRayCastMappervtkLookupTable'vtkPVDiscretizableColorTransferFunctionr   vtkPiecewiseFunction
vtkTexturevtkOpenGLTexturevtkPropertyvtkOpenGLPropertyvtkVolumePropertyvtkPolyDatavtkImageDatavtkUnstructuredGridvtkMultiBlockDataSetvtkStructuredPointsvtkRenderWindowvtkCocoaRenderWindowvtkXOpenGLRenderWindowvtkWin32OpenGLRenderWindowvtkEGLRenderWindowvtkOpenVRRenderWindowvtkOpenXRRenderWindowvtkGenericOpenGLRenderWindowvtkOSOpenGLRenderWindowvtkOpenGLRenderWindowvtkIOSRenderWindowvtkExternalOpenGLRenderWindowvtkOffscreenOpenGLRenderWindowvtkRenderervtkOpenGLRenderer	vtkCameravtkOpenGLCameravtkLight
vtkPVLightvtkOpenGLLightvtkCubeAxesActorvtkScalarBarActor)r   genericActorSerializergenericVolumeSerializergenericMapperSerializerr   genericVolumeMapperSerializerlookupTableSerializer2,discretizableColorTransferFunctionSerializercolorTransferFunctionSerializerpwfSerializertextureSerializerpropertySerializervolumePropertySerializerpolydataSerializerimagedataSerializermergeToPolydataSerializerrenderWindowSerializerrendererSerializercameraSerializerlightSerializercubeAxesSerializerscalarBarActorSerializerr!   r&   r   initializeSerializersr      s   z+ABBB/1GHHH0FGGG {,CDDD {,CDDD13JKKK24KLLL35LMMM8:QRRR<>UVVV'555&444-{;;;1;???02OPPPAC`aaa68IJJJ /1GHHH13_   "$C   5}EEE |->???13DEEE }.@AAA24FGGG 24LMMM }.@AAA~/BCCC46OPPP57PQQQ46IJJJ)>::: 02HIII57MNNN79OPPP;=STTT35KLLL68NOOO68NOOO=?UVVV8:PQQQ68NOOO35KLLL>@VWWW?AWXXX }.@AAA24FGGG {,<===02BCCC z?;;;|_===/AAA 13EFFF24LMMMMMr&   c                 8    d}t          |           D ]}|dz  }|S )N z  r<   )r   padding_s      r   padr     s,    G5\\  4Nr&   c                     d| z  S )Nzinstance:${%s}r!   )idStrs    r   r{   r{   '  s    e##r&   c                    t          |           }d }|t          v rt          |         }|r&|d         |                                 k    r|d         S t          |           |                                 d}|t          |<   |d         S )Nmtimerm   )rm   r   )r   dataArrayShaMappingrT   r   )rP   objIdrn   s      r   digestr   0  s    5!!EF###$U+ &/U^^%5%555e}"5))ENN4D4DEEF!'%=r&   c                     |                      |          }i }|d         |d<   |d         |d<   |                     |          |d<   |S )Nr   minr    max	component)GetRangeGetComponentName)rP   r   r	compRanges       r   getRangeInfor   C  sR    y!!AItIetIe"33I>>Ikr&   c                    | sd S t          |           }|                    || |                                 t          j                    d           i }||d<   d|d<   |                                 |d<   t          |           |d<   |                                 |d<   |                                 |                                 z  |d<   g |d	<   |d         d
k    rkt          |d                   D ]+}|d	         	                    t          | |                     ,|d	         	                    t          | d                     n)|d	         	                    t          | d                     |S )N)rP   rQ   rf   hashvtkDataArrayvtkClassr   r1   numberOfComponentssizerangesr    rS   r   )r   rN   rT   rg   GetNamer   r+   rW   r/   ri   r   )rP   r   rM   rootr9   s        r   getArrayDescriptionr  O  ss    t%==D(8(8	LL   DDL%D==??DL%e,,D!&!<!<!>!>D	..0053J3J3L3LLDLDN !A%%t0122 	: 	:AN!!,ua"8"89999Xl5"556666Xl5!44555Kr&   NormalsTCoordsc                    t                      }d|v }|s[|r|                    d          r|}|                                }|                                }	|	dk    r|                                n|                                }
|                                }|rh|dv rd                                                    |
          }|&                                	                                }|
                    |           |rh|dv rd                                                    |
          }|&                                	                                }|
                    |           |ri|dk    rc                                	                                }|&                                	                                }|
                    |           |rt|                    d          r_                                	                                r9|
                                                    	                                           |                    fd|D                        d	                                fd
                                ffD ]\  }}t          |                                          D ]}|                    |          }|s||v rdt          ||          }|rR||d<   |                    |          }|dk    rd|                    |          z   nd|d<   |                     |           d S )N*r   r    )r       )      r   r   c                 n    g | ]1} t                                          d |z   d                       2S )Getc                      d S rI   r!   r!   r&   r   <lambda>z2extractRequiredFields.<locals>.<listcomp>.<lambda>  s    PT r&   )getattrGetPointData)r"   requestedFielddatasets     r   r%   z)extractRequiredFields.<locals>.<listcomp>  sQ       " V,,..0FUUWW  r&   	pointDatacellDatalocationsetaddArrayregistration)r  IsAGetScalarVisibilityGetArrayAccessModeGetArrayName
GetArrayIdGetScalarModer  GetArray
GetScalarsaddGetCellDataupdater/   GetNumberOfArraysr  IsArrayAnAttributeGetAttributeTypeAsStringri   )extractedFieldsr   r  r   requestedFieldsarrays_to_export
export_allmapperscalarVisibilityarrayAccessModecolorArrayName
scalarModearray_to_exportr  
field_dataarray_indexrP   	arrayMeta	attributes     `                r   extractRequiredFieldsr3  m  s    uu'J #
 	6fjj-- 	6F%99;;$7799O)8A)=)=##%%%6CTCTCVCV   --//J 6J&$8$8")"6"6"8"8"A"A."Q"Q"*&-&:&:&<&<&G&G&I&IO $$_555 6J&$8$8")"5"5"7"7"@"@"P"P"*&-&9&9&;&;&F&F&H&HO $$_555 6J!OO")"6"6"8"8"C"C"E"E"*&-&9&9&;&;&F&F&H&HO $$_555 	Ffjj.. 	F73G3G3I3I3T3T3V3V 	F  !5!5!7!7!B!B!D!DEEE   &5  	
 	
 	
 
g**,,-	W((**+! 6 6* !!=!=!?!?@@ 	6 	6K''44E 
6U&666/w??	 6,4Ij) * = =k J JI %>> 
 C CI N NNN' n-
 $**9555	6	6 6r&   c                    |                                 }d }d }g }g }	|rd }
t          |d          st                              d           n|                                }
|
rat          |
          }t          ||
|||dz             }|r:|	                    |           |                    dt          |          gg           d }t          |d          r|	                                }nt                              d           |rat          |          }t          |||||dz             }|r:|	                    |           |                    dt          |          gg           d }t          |d          r|
                                }nt                              d	           |rat          |          }t          |||||dz             }|r:|	                    |           |                    d
t          |          gg           |dk    s|r|rt          |           |t          |          ||                                |                                |                                |                                |                                |                                |                                |                                d	||	dS d S )N	GetMapper+This actor does not have a GetMapper methodr    	setMapperGetProperty-This actor does not have a GetProperty methodsetProperty
GetTexturez,This actor does not have a GetTexture method
addTexturer   )	
visibilitypickabledragable	useBoundsoriginpositionscaleforceOpaqueforceTranslucentr   idtype
propertiesr   dependencies)GetVisibilityhasattrrU   rV   r5  r   r   ri   r{   r8  r;  r   GetPickableGetDragableGetUseBounds	GetOriginGetPositionGetScaleGetForceOpaqueGetForceTranslucent)r   actoractorIdr   r   actorVisibilitymapperInstancepropertyInstancer   rJ  r)  mapperIdproppropIdtexture	textureIdtextureInstances                    r   r   r     s    ))++ONEL -Buk** 	'LLFGGGG__&&F 	@%f--H.vx%!) N  @##N333kF8,<,<+=>???5-(( 	J$$&&DDLLHIII 	@#D))F0tVWeai      @##$4555mfVnn-=>??? 5,'' 	I&&((GGLLGHHH 	B&w//I/w	7EAI O  B##O444lVI->->,?@AAA!3C$V,,u%% .!--//!--//"//11//++!--//))$3355$)$=$=$?$?  ('
 
 	
, 4r&   c                    |                                 }d }d }g }g }	|rHd }
t          |d          st                              d           n|                                }
|
rat          |
          }t          ||
|||dz             }|r:|	                    |           |                    dt          |          gg           d }t          |d          r|	                                }nt                              d           |rat          |          }t          |||||dz             }|r:|	                    |           |                    dt          |          gg           |dk    s|r|rt          |           |t          |          ||                                |                                |                                |                                |                                |                                d	||	d
S d S )Nr5  r6  r    r7  r8  r9  r:  r   )r=  r>  r?  r@  rA  rB  rC  rF  )rK  rL  rU   rV   r5  r   r   ri   r{   r8  r   rM  rN  rO  rP  rQ  rR  )r   rU  rV  r   r   rW  rX  rY  r   rJ  r)  rZ  r[  r\  s                 r   r   r     sI    ))++ONEL @uk** 	'LLFGGGG__&&F 	@%f--H.vx%!) N  @##N333kF8,<,<+=>???5-(( 	J$$&&DDLLHIII 	@#D))F0tVWeai      @##$4555mfVnn-=>???!3C$V,,u%% .!--//!--//"//11//++!--//))
 
 (!
 
 	
& 4r&   c                    d }d }g }g }t          |d          r|                                }nt                              d           |rWd|z  }	t	          |||	||dz             }|r:|                    |           |                    dt          |	          gg           |rPt          |           |d|                                |	                                |
                                d||dS d S )	NGetInputz*This texture does not have GetInput methodz
%s-texturer    setInputDatar   )interpolaterepeat	edgeClamprF  )rL  rb  rU   rV   r   ri   r{   r   GetInterpolate	GetRepeatGetEdgeClamp)
r   r]  r^  r   r   
dataObjectdataObjectInstancer   rJ  dataObjectIds
             r   r   r   F  s4    JELw
## C%%''

ABBB C#i/.Zw	
 
  	C 2333LL.6,+?+?*@ABBB 
$V,, &5577!++--$1133 
 (
 
 	
 4r&   c                    d }d }d }g }g }	t          |d          r=|                                                                 |                    dd          }nt                              d           |r|                    d          rKt                      }
|
                    |           |
                                 |
	                                }d|z  }t          |||||dz             }|r:|	                    |           |                    dt          |          gg           d }t          |d          r|                                }nt                              d	           |rat          |          }t          |||||dz             }|r:|	                    |           |                    d
t          |          gg           |r|                                dk    r|                                n|                                }t          |           |t%          |          |                                |                                |                                |                                |                                rdnd|                                ||                                |                                |                                rdndd
||	dS d S )NGetInputDataObjectr   3This mapper does not have GetInputDataObject method
vtkDataSet
%s-datasetr    rc  GetLookupTablez/This mapper does not have GetLookupTable methodsetLookupTable)
resolveCoincidentTopology
renderTimer+  scalarRangeuseLookupTableScalarRanger*  colorByArrayName	colorModer-  interpolateScalarsBeforeMappingrF  )rL  GetInputAlgorithmUpdatern  rU   rV   r  r
   SetInputData	GetOutputr   ri   r{   rr  r   r  r  r  r   GetResolveCoincidentTopologyGetRenderTimeGetScalarRangeGetUseLookupTableScalarRanger  GetColorModer  "GetInterpolateScalarsBeforeMapping)r   r)  rZ  r   r   rj  rk  lookupTableInstancer   rJ  algrl  lookupTablelookupTableIdr,  s                  r   r   r   p  s'    JELv+,, L  ""))+++..q!44

JKKK C>>,'' 	))++CZ(((JJLLLJ#h..Jguqy
 
  	C 2333LL.6,+?+?*@ABBBKv'(( H++--FGGG 	&{33/K
 
  	 3444LL!F=$9$9#:;    
 ((**a// !!!""$$ 	 %V,,v&&-3-P-P-R-R$2244#)#<#<#>#>%44666688.QQ$*$>$>$@$@$2#0022$2244<<>>411   (+
 
 	
0 4r&   c                 ~   d }d }d }g }g }	t          |d          r=|                                                                 |                    dd          }nt                              d           |rWd|z  }
t          |||
||dz             }|r:|	                    |           |                    dt          |
          gg           |rpt          |           |t          |          |                                |                                |                                |                                d||	dS d S )	Nrn  r   ro  rq  r    rc  )sampleDistanceimageSampleDistanceautoAdjustSampleDistances	blendModerF  )rL  r{  r|  rn  rU   rV   r   ri   r{   r   r   GetSampleDistanceGetImageSampleDistanceGetAutoAdjustSampleDistancesGetBlendMode)r   r)  rZ  r   r   rj  rk  r  r   rJ  rl  s              r   r   r     sv    JELv+,, L  ""))+++..q!44

JKKK C#h..Jguqy
 
  	C 2333LL.6,+?+?*@ABBB 
$V,,v&& #)":":"<"<'-'D'D'F'F-3-P-P-R-R#0022
 
 (!
 
 	
& 4r&   c                    |                                 }ddg}t          |d          r.	 |                    |           n# t          $ r
}Y d }~nd }~ww xY w|                                }|                                }	t          |           |t          |          |                                ||||	                                |
                                |                                |                                rdnd|                                rdnd|                                |                                |                                |                                |                                ddS )Ng      ?r   GetHueRangeTF)numberOfColors
valueRangehueRangesaturationRangenanColorbelowRangeColoraboveRangeColoruseAboveRangeColoruseBelowRangeColoralpha
vectorSizevectorComponent
vectorModeindexedLookupr   rG  rH  rI  )r   rL  r  	ExceptionGetSaturationRangeGetAlphaRanger   r   GetNumberOfColorsGetNanColorGetBelowRangeColorGetAboveRangeColorGetUseAboveRangeColorGetUseBelowRangeColorGetAlphaGetVectorSizeGetVectorComponentGetVectorModeGetIndexedLookup)
r   r  r  r   r   lookupTableRangelookupTableHueRangeinstlutSatRangelutAlphaRanges
             r   lookupTableSerializerr    s    #++--({M** 	##$78888 	 	 	DDDD	 0022K--//M !((;'');;==*+*#//11*==??*==??0022#$$0022#$$ ))++%3355*==??%3355(99;;'
 
	  s   A   
AAc                 6   |                                  }t          |          }|rst                      }|                                 }t	          |dt          |          i}t          ||          D ]%\  }} |j        |gd |d d         D             R   &|S d S )Nr>   c                     g | ]}|d z  S )   r!   )r"   r|   s     r   r%   z6lookupTableToColorTransferFunction.<locals>.<listcomp>.  s     ; ; ;QS ; ; ;r&   r  )GetTabler6   r   GetTableRanger?   lenzipAddRGBPoint)r  r0   tablectf
tableRangepointsr|   rgbas           r   "lookupTableToColorTransferFunctionr  &  s    $$&&II&&E &(( ..00
:63u::6665)) 	= 	=GAtCOA< ; ;$rr( ; ; ;<<<<<
4r&   c                 N    t          |          }|rt          | ||||          S d S rI   )r  r   )r   r  r  r   r   r  s         r   r   r   5  s;    
,[
9
9C
 
.C
 
 	
 4r&   c                    t          |d          r|                                nd}t          |d          r|                                ng d}|dk    r$t          |d          r|                                }t	          |           |t          |          i d|d|d	|                                d
|                                d|                                d|                                d|	                                d|
                                d|                                d|                                d|                                d|                                d|                                rdndd|                                rdndd|                                rdndd|                                d|                                d|                                rdndidS )NGetRepresentationr  GetDiffuseColor)r    r    r    r    GetColorrepresentationdiffuseColorcolorambientColorspecularColor	edgeColorambientdiffusespecularspecularPoweropacityinterpolationedgeVisibilityr   backfaceCullingfrontfaceCulling	pointSize	lineWidthlightingr  )rL  r  r  r  r   r   GetAmbientColorGetSpecularColorGetEdgeColor
GetAmbient
GetDiffuseGetSpecularGetSpecularPower
GetOpacityGetInterpolationGetEdgeVisibilityGetBackfaceCullingGetFrontfaceCullingGetPointSizeGetLineWidthGetLighting)r   propObj	propObjIdr   r   r  
colorToUses          r   r   r   B  st   '.w8K'L'LS!!###RS  &-W6G%H%HW!!!iii  ww
;;%%''
 !((7##
n
J
 W%%''
 G3355	

 W5577
 --//
 w))++
 w))++
 ++--
 W5577
 w))++
 W5577
 7#<#<#>#>EaaA
 G$>$>$@$@Gqqa
 W%@%@%B%B I
  --//!
" --//#
$ W00229%
 
	  r&   c                 <   g }g }|                                 }|rbt          |          }t          |||||dz             }	|	r;|                    |	           |                    ddt	          |          gg           |                                }
|
rbt          |
          }t          ||
|||dz             }|r;|                    |           |                    ddt	          |          gg           t          |           |t          |          |                                |                                |	                                |
                                |                                |                                |                                d||dS )Nr    setRGBTransferFunctionr   setScalarOpacity)independentComponentsinterpolationTypeshader  r  r  r  rF  )GetRGBTransferFunctionr   r   ri   r{   GetScalarOpacityr   GetIndependentComponentsGetInterpolationTypeGetShader  r  r  r  )r   r  r  r   r   r   rJ  lutr  r  pwfpwfIdpwfInstances                r   r   r   f  s   EL 
(
(
*
*C
 Q&s++/S-%!)
 
  	Q 3444LL2Q}8M8M4NOPPP 
"
"
$
$C
 Cs##'S%%!)
 
  	C,,,LL,q&--.@ABBB !((7##%,%E%E%G%G!(!=!=!?!?%%''))++))++++--$5577

 

 $!  r&   c           	      H   t          d          rfdt          d          D             }ng d}g }t          || |d           t          |           |t	                                                                                                                    ||ddS )NGetDirectionMatrixc                 `    g | ]*}                                                     d |          +S )r   )r  
GetElement)r"   r9   r  s     r   r%   z'imagedataSerializer.<locals>.<listcomp>  s5    UUUqW//11<<QBBUUUr&   	   )	r    r   r   r   r    r   r   r   r    r  )spacingrA  
dimensions	directionfieldsr  )rL  r/   r3  r   r   
GetSpacingrP  GetDimensions)r   r  	datasetIdr   r   requested_fieldsr  r  s    `      r   r   r     s    w,-- 0UUUUERSHHUUU		///	 F&&'7C@@@ !((7##))++''))!//11"
 
	  r&   c                    |r|                                 ri }t          |                                                                 |          }d|d<   ||d<   |                                r|                                                                                                dk    rDt          |                                                                |          }||d<   d|d         d<   |                                r|                                                                                                dk    rDt          |                                                                |          }	|	|d<   d|d         d<   |                                r|                                                                                                dk    rDt          |                                                                |          }
|
|d<   d|d         d<   |                                r|                                                                                                dk    rDt          |                                                                |          }||d	<   d|d	         d<   g |d
<   t          |d
         | |||           t          |           |t          |          |dS t                              d           d S )N	vtkPointsr   r  r   vertsvtkCellArraylinespolysstripsr  r  zThis dataset has no points!)	GetPointsr  GetDataGetVertsrW   GetLinesGetPolys	GetStripsr3  r   r   rU   rV   )r   r  r  r   r   r	  rI  r  _verts_lines_polys_stripss               r   r   r     s    ,
7$$&& ,

 %W%6%6%8%8%@%@%B%BGLL(z%
8  	='"2"2"4"4"<"<">">"P"P"R"RUV"V"V()9)9););)C)C)E)EwOOF"(Jw.<Jw
+  	='"2"2"4"4"<"<">">"P"P"R"RUV"V"V()9)9););)C)C)E)EwOOF"(Jw.<Jw
+  	='"2"2"4"4"<"<">">"P"P"R"RUV"V"V()9)9););)C)C)E)EwOOF"(Jw.<Jw
+ 	>!!##++--??AAAEE)'*;*;*=*=*E*E*G*GQQG#*Jx /=Jx ,  "
8j2FGWN^___ %V,,w''$	
 
 	
 LL.///4r&   c                    d }|                     d          rLt                      }|                    |           |                                 |                                }nz|                     d          rLt                      }|                    |           |                                 |                                }nt                                          }t          | |||||          S )NvtkCompositeDataSetr   )	r  r	   r}  r|  r~  r
   r)  rb  r   )r   rj  rl  r   r   r	  r  gfs           r   r   r     s    G~~+,, $+--

###
		,,..	-	.	. $$&&

###
		,,..//##fg|WeM]^^^r&   c                 `   g }t          |                                          D ]1}g d}|                    ||           |                    |           2t	          |           |t          |          |                                rdnd|                                |                                rdnd|	                                rdnd|
                                |                                |                                |                                |                                |d
dS )N)r   r   r   r   r   r   r    r   )
clamping
colorSpacehSVWrapallowDuplicateScalarsr  r  r  r  r  nodesr  )r/   GetSizeGetNodeValueri   r   r   GetClampingGetColorSpace
GetHSVWrapGetAllowDuplicateScalarsr  r  r  r  r  r   r   r   r   r   r#  r9   nodes           r   r   r     s<   E8##%%&&  !!!a&&&T !((8$$%1133:"0022$//118qqq +3*K*K*M*M%TQQST&&(('::<<"0022"0022%6688
 
	  r&   c                     t          | ||||          }|                                |d         d<   |                                |d         d<   |S )NrI  
discretizenumberOfValues)r   GetDiscretizer*   )r   r   r   r   r   r  s         r   r   r     sS    
)&(E7E
R
RC&.&<&<&>&>Cl#*2*D*D*F*FC&'Jr&   c                 ~   g }t          |                                          D ]1}g d}|                    ||           |                    |           2t	          |           |t          |          t          |                                          |                                |	                                |ddS )N)r   r   r   r   )r/   r  r"  r#  r  )
r/   r$  r%  ri   r   r   r-   r   r&  r)  r*  s           r   r   r   '  s    E8##%%&&  ||a&&&T !((8$$(++--.. ,,..%-%F%F%H%H	
 
	
 
 
r&   c                 z   g d}|                                 r|                                |d<   |                                r|                                |d<   |                                r|                                |d<   t          |           |di d|                                d|                                d|	                                d	|
                                d
|                                d|                                d|                                d|                                d|                                d|                                ddddd|dddddddddddddd ddd!t#          t          |                                                    gggg d"S )#a  
    Possible add-on properties for vtk.js:
        gridLines: True,
        axisLabels: None,
        axisTitlePixelOffset: 35.0,
        axisTextStyle: {
            fontColor: 'white',
            fontStyle: 'normal',
            fontSize: 18,
            fontFamily: 'serif',
        },
        tickLabelPixelOffset: 12.0,
        tickTextStyle: {
            fontColor: 'white',
            fontStyle: 'normal',
            fontSize: 14,
            fontFamily: 'serif',
        },
    )r   r   r   r   r    r  r   r=  r>  r?  r@  rA  rB  rC  rD  rE  
dataBoundsfaceVisibilityAngle   	gridLinesT
axisLabelsaxisTitlePixelOffsetg     A@axisTextStylewhitenormal   serif	fontColor	fontStylefontSize
fontFamilytickLabelPixelOffsetg      (@tickTextStyle   	setCamerarF  )GetXAxisLabelVisibility	GetXTitleGetYAxisLabelVisibility	GetYTitleGetZAxisLabelVisibility	GetZTitler   rK  rM  rN  rO  rP  rQ  rR  rS  rT  	GetBoundsr{   	GetCamera)r   rU  rV  r   r   r6  s         r   r   r   >  s<   ( J$$&& *))
1$$&& *))
1$$&& *))
1 !((" 
%--// 
 ))++ 
 ))++	 

 ++-- 
 eoo'' 
 ))++ 
 U^^%% 
 5//11 
  9 9 ; ; 
 %//++ 
 "1 
  ! 
" *# 
$ #D% 
& $%%	 ' 
2 #D3 
4 $%%	 5 
B u7H7H(I(I!J!J KLMM' ' 'r&   c                    g }g }|                                 }|sd S t          |          }t          |||||dz             }	|	sd S |                    |	           |                    dt	          |          gg           d }
t          |d          r|                                }
n}t                              d           |
rat          |
          }t          ||
|||dz             }|r:|                    |           |                    dt	          |          gg           |	                                }|
                                }|                                }t          |           |d|                                |                                |                                |                                d|dd	g||gd
|                                                                ddddd|                                                                dddd|                                |                                |                                d||dS )Nr    setScalarsToColorsr8  z6This scalarBarActor does not have a GetProperty methodr:  r   Tg)\(?gq=
ףpg      B@r:  r;  r<  r=  g      ,@rD  )r=  r>  r?  r@  	automated	axisLabelboxPositionboxSizer7  r8  rB  rC  drawNanAnnotationdrawBelowRangeSwatchdrawAboveRangeSwatchrF  )rr  r   r   ri   r{   rL  r8  rU   rV   GetTitleGetWidth	GetHeightrK  rM  rN  rO  GetTitleTextPropertyr  GetDrawNanAnnotationGetDrawBelowRangeSwatchGetDrawAboveRangeSwatch)r   rU  rV  r   r   rJ  r   r  lutIdlutInstancer[  r\  rY  rQ  widthheights                   r   r   r     s   LE



 
 C t3E#E3w	JJK t$$$	LL&8999Dum$$ @  ""MNNN 	@#D))F0tVWeai      @##$4555mfVnn-=>???  INNE__F !((#  --//))++))++++-- " !%=v$("7799BBDD%%	  %)"7799BBDD%%	  "'!;!;!=!=$)$A$A$C$C$)$A$A$C$CE#
 #
H $S* * *r&   c                    g }g }g }g }|                                 }	t          |	          }
t          ||	|
||dz             }|r:|                    |           |                    dt	          |
          gg           |                                }t          |                                          D ]h}|                    |          }t          |          }t          |||||dz             }|r*|                    |           |                    |           i||	                    d|z  |dd          z  }|
                                }t          |                                          D ]h}|                    |          }t          |          }t          |||||dz             }|r*|                    |           |                    |           i||	                    d|z  |dd          z  }t          |          dk    rAt          |           |t          |          |                                |                                |                                |                                |                                |                                |                                |                                |                                |                                |                                |                                |                                |                                |                                d	||d
S d S )Nr    setActiveCameraz%s-propsaddViewPropremoveViewPropz	%s-lightsaddLightremoveLight)
backgroundbackground2viewporttwoSidedLightinglightFollowCameralayerpreserveColorBufferpreserveDepthBuffernearClippingPlaneToleranceclippingRangeExpansion
useShadowsuseDepthPeelingocclusionRatiomaximumNumberOfPeelsinteractive)r   rG  rH  rI  rJ  r   )GetActiveCamerar   r   ri   r{   GetViewPropsr/   GetNumberOfItemsGetItemAsObjectr   	GetLightsr  r   GetBackgroundGetBackground2GetViewportGetTwoSidedLightingGetLightFollowCameraGetLayerGetPreserveColorBufferGetPreserveDepthBufferGetNearClippingPlaneToleranceGetClippingRangeExpansionGetUseShadowsGetUseDepthPeelingGetOcclusionRatioGetMaximumNumberOfPeelsGetInteractive)r   r   r   r   r   rJ  viewPropIds	lightsIdsr   cameracameraIdcameraInstanceviewPropCollectionrpIdxviewProp
viewPropIdviewPropInstancelightCollectionlightIdxlightlightIdlightInstances                         r   r   r     si   LKIE %%''Ff%%H&x7ETUIVVN >N+++'&*:*:);<=== "..00)::<<== 	+ 	+%55e<<#H--
,h
GUQY
 
  	+ 0111z***	W,,UK8H  E
 ((**O/::<<== & &//99 '')(E7GUUVYWW 	&...W%%%	W,,eY
M  E <1$V,,x((&4466'6688$0022 %-$@$@$B$B%-%B%B%D%D!**,,'/'F'F'H'H'/'F'F'H'H.6.T.T.V.V*2*L*L*N*N&4466#+#>#>#@#@"*"<"<">">(0(H(H(J(J'6688) , )7
 
 	
< 4r&   c                     t          |           |t          |          |                                |                                |                                |                                ddS )N)
focalPointrB  viewUpclippingRanger  )r   r   GetFocalPointrQ  	GetViewUpGetClippingRanger   r   r   r   r   s        r   r   r   )  sp     ((8$$"0022 ,,..((**%6688	
 
	
 
 
r&   c                 &    | dk    rdS | dk    rdS dS )z
    #define VTK_LIGHT_TYPE_HEADLIGHT    1
    #define VTK_LIGHT_TYPE_CAMERA_LIGHT 2
    #define VTK_LIGHT_TYPE_SCENE_LIGHT  3

    'HeadLight';
    'SceneLight';
    'CameraLight'
    r    	HeadLightr  CameraLight
SceneLightr!   )values    r   lightTypeToStringr  :  s%     zz{	!}<r&   c                    t          |           |t          |          |                                |                                |                                |                                |                                |                                |                                |	                                |
                                t          |                                          |                                ddS )N)switch	intensityr  rB  r  
positionalexponent	coneAngleattenuationValues	lightTypeshadowAttenuationr  )r   r   	GetSwitchGetIntensityr  rQ  r  GetPositionalGetExponentGetConeAngleGetAttenuationValuesr  GetLightTypeGetShadowAttenuationr  s        r   r   r   L  s     ((8$$ ((**!..00--// ,,.."0022"0022 ,,..!..00!)!>!>!@!@*8+@+@+B+BCC!)!>!>!@!@
 
	  r&   c           	      
   g }g }|                                 }t          |                                          D ]h}|                    |          }	t	          |	          }
t          ||	|
||dz             }|r*|                    |           |                    |
           i|                    ||dd          }t	          |           |t          |          d|	                                i|||
                                dS )Nr    addRendererremoveRenderernumberOfLayers)r   rG  rH  rI  rJ  r   r   )GetRenderersr/   ry  rz  r   r   ri   r   r   GetNumberOfLayersrT   )r   r   r   r   r   rJ  rendererIdsrendererCollectionrIdxrenderer
rendererIdrendererInstancer   s                r   r   r   f  s'   LK!..00(99;;<< 	+ 	+%55d;;#H--
,h
GUQY
 
  	+ 0111z***++{M+; E
 !((8$$')C)C)E)EF$""$$  r&   )Ar   loggingr(   rg   r   vtkmodules.webr   r   r   r   r   vtkmodules.vtkCommonCorer   vtkmodules.vtkFiltersGeometryr	   r
   vtkmodules.vtkRenderingCorer   	getLoggerr   rU   setLevelDEBUGr   r6   r?   rA   r   r   r   r   r   r   r   r   r   r{   r   r   r   r  r3  r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r!   r&   r   <module>r     s   				                  8 7 7 7 7 7 H H H H H H A A A A A A @ @ @ @ @ @		8	$	$           (3 3 3K K K K K K K Kd  
  + + +  	 	 	UN UN UNz  $ $ $    &    > AJ9?U<6 <6 <6 <6FO O Oj< < <B$ $ $TO O Oj- - -d) ) )^    " " "H- - -d YbclWm    6 XabkVl 0 0 0 0l clmvaw _ _ _ _,  @    .C C CNL L LbM M Mf  "  $  4    r&   