63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
import hashlib, base64
|
|
|
|
arrayTypesMapping = [
|
|
" ", # VTK_VOID 0
|
|
" ", # VTK_BIT 1
|
|
"b", # VTK_CHAR 2
|
|
"B", # VTK_UNSIGNED_CHAR 3
|
|
"h", # VTK_SHORT 4
|
|
"H", # VTK_UNSIGNED_SHORT 5
|
|
"i", # VTK_INT 6
|
|
"I", # VTK_UNSIGNED_INT 7
|
|
"l", # VTK_LONG 8
|
|
"L", # VTK_UNSIGNED_LONG 9
|
|
"f", # VTK_FLOAT 10
|
|
"d", # VTK_DOUBLE 11
|
|
"L", # VTK_ID_TYPE 12
|
|
" ", # unspecified 13
|
|
" ", # unspecified 14
|
|
"b", # signed_char 15
|
|
]
|
|
|
|
javascriptMapping = {
|
|
"b": "Int8Array",
|
|
"B": "Uint8Array",
|
|
"h": "Int16Array",
|
|
"H": "Int16Array",
|
|
"i": "Int32Array",
|
|
"I": "Uint32Array",
|
|
"l": "Int32Array",
|
|
"L": "Uint32Array",
|
|
"f": "Float32Array",
|
|
"d": "Float64Array",
|
|
}
|
|
|
|
|
|
def iteritems(d, **kwargs):
|
|
return iter(d.items(**kwargs))
|
|
|
|
|
|
def base64Encode(x):
|
|
return base64.b64encode(x).decode("utf-8")
|
|
|
|
|
|
def hashDataArray(dataArray):
|
|
hashedBit = hashlib.md5(memoryview(dataArray)).hexdigest()
|
|
typeCode = arrayTypesMapping[dataArray.GetDataType()]
|
|
return "%s_%d%s" % (hashedBit, dataArray.GetSize(), typeCode)
|
|
|
|
|
|
def getJSArrayType(dataArray):
|
|
return javascriptMapping[arrayTypesMapping[dataArray.GetDataType()]]
|
|
|
|
|
|
def getReferenceId(ref):
|
|
if ref:
|
|
try:
|
|
return ref.__this__[1:17]
|
|
except:
|
|
idStr = str(ref)[-12:-1]
|
|
# print('====> fallback ID %s for %s' % (idStr, ref))
|
|
return idStr
|
|
return "0x0"
|