1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
import sys, re, hashlib, base64
py3 = sys.version_info >= (3,0)
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
]
javascriptMapping = {
'b': 'Int8Array',
'B': 'Uint8Array',
'h': 'Int16Array',
'H': 'Int16Array',
'i': 'Int32Array',
'I': 'Uint32Array',
'l': 'Int32Array',
'L': 'Uint32Array',
'f': 'Float32Array',
'd': 'Float64Array'
}
if py3:
def iteritems(d, **kwargs):
return iter(d.items(**kwargs))
else:
def iteritems(d, **kwargs):
return d.iteritems(**kwargs)
if sys.version_info >= (2,7):
buffer = memoryview
base64Encode = lambda x: base64.b64encode(x).decode('utf-8')
else:
buffer = buffer
base64Encode = lambda x: x.encode('base64')
def hashDataArray(dataArray):
hashedBit = base64Encode(hashlib.md5(buffer(dataArray)).digest()).strip()
md5sum = re.sub('==$', '', hashedBit)
typeCode = arrayTypesMapping[dataArray.GetDataType()]
return '%s_%d%s' % (md5sum, dataArray.GetSize(), typeCode)
def getJSArrayType(dataArray):
return javascriptMapping[arrayTypesMapping[dataArray.GetDataType()]]
|