private JSTypedArray(JavaScriptTypedArrayType type, uint position, uint unitCount, Action <SharedMemoryBuffer> init) : base(SharedBufferSourceEnum.CreateInJavascript, unitCount * GetUnitByteSizeByArrayType(type)) { ArrayType = type; Position = position; UnitSize = GetUnitByteSizeByArrayType(type); UnitCount = unitCount; }
public static uint GetUnitByteSizeByArrayType(JavaScriptTypedArrayType type) { switch (type) { case JavaScriptTypedArrayType.Int8: case JavaScriptTypedArrayType.Uint8: case JavaScriptTypedArrayType.Uint8Clamped: return(1); case JavaScriptTypedArrayType.Int16: case JavaScriptTypedArrayType.Uint16: return(2); case JavaScriptTypedArrayType.Int32: case JavaScriptTypedArrayType.Uint32: case JavaScriptTypedArrayType.Float32: return(4); case JavaScriptTypedArrayType.Float64: return(8); default: throw new ArgumentException("not a valid TypedArrayType", nameof(ArrayType)); } }
public static JSTypedArray CreateFromArrayBuffer(JavaScriptTypedArrayType type, JSArrayBuffer source, uint position, uint unitCount) { JSTypedArray result = new JSTypedArray(type, source, position, unitCount); result.InitWindow(source.Buffer, position); return(result); }
internal static JSTypedArray CreateFromJS(JavaScriptTypedArrayType type, IntPtr data, uint unitCount, JavaScriptValue source, IContextSwitchService context) { JSTypedArray result = new JSTypedArray(type, 0, unitCount); result.SetJSSource(source, context); result.InitWindow(data, false); return(result); }
private JSTypedArray(JavaScriptTypedArrayType type, JSArrayBuffer source, uint position, uint unitCount) : base(SharedBufferSourceEnum.CreateByDotnet, unitCount * GetUnitByteSizeByArrayType(type)) { ArrayType = type; Position = position; UnitSize = GetUnitByteSizeByArrayType(type); UnitCount = unitCount; ArrayBuffer = source; }
public static JSTypedArray CreateInJS(JavaScriptTypedArrayType type, uint unitCount, Action <SharedMemoryBuffer> init) { var result = new JSTypedArray(type, 0, unitCount, init); if (init != null) { result.SetupInitValueAction(init); } return(result); }
internal static extern JavaScriptErrorCode JsGetTypedArrayInfo(JavaScriptValue typedArray, out JavaScriptTypedArrayType arrayType, out JavaScriptValue arrayBuffer, out uint byteOffset, out uint byteLength);
internal static extern JavaScriptErrorCode JsGetIndexedPropertiesExternalData(JavaScriptValue obj, IntPtr data, out JavaScriptTypedArrayType arrayType, out uint elementLength);
internal static extern JavaScriptErrorCode JsGetTypedArrayStorage(JavaScriptValue typedArray, out byte[] buffer, out uint bufferLength, out JavaScriptTypedArrayType arrayType, out int elementSize);
internal static extern JavaScriptErrorCode JsCreateTypedArray(JavaScriptTypedArrayType arrayType, JavaScriptValue arrayBuffer, uint byteOffset, uint elementLength, out JavaScriptValue result);
internal static extern JsErrorCode JsSetIndexedPropertiesToExternalData(JsValue obj, IntPtr data, JavaScriptTypedArrayType arrayType, uint elementLength);
public static void GetTypedArrayStorage(JavaScriptValue typedArray, out IntPtr data, out uint bufferLength, out JavaScriptTypedArrayType arrayType, out int elementSize) { Native.ThrowIfError(Native.JsGetTypedArrayStorage(typedArray, out IntPtr _data, out uint _bufferLength, out JavaScriptTypedArrayType _arrayType, out int _elementSize)); data = _data; bufferLength = _bufferLength; arrayType = _arrayType; elementSize = _elementSize; }
public static JavaScriptValue CreateTypedArray(JavaScriptTypedArrayType arrayType, JavaScriptValue arrayBuffer, uint byteOffset, uint elementLength) { Native.ThrowIfError(Native.JsCreateTypedArray(arrayType, arrayBuffer, byteOffset, elementLength, out JavaScriptValue result)); return(result); }
public static extern JavaScriptErrorCode JsGetTypedArrayStorage(JavaScriptValue typedArray, out IntPtr data, out uint bufferLength, out JavaScriptTypedArrayType arrayType, out int elementSize);
internal static extern JsErrorCode JsGetTypedArrayStorage(JsValue typedArray, out IntPtr buffer, out uint bufferLength, out JavaScriptTypedArrayType arrayType, out int elementSize);