Fix getArrayData
This commit is contained in:
parent
f72cc86fc5
commit
2ae137d034
|
@ -306,11 +306,14 @@ inline Type* getArrayData(Napi::Env env, Napi::Object obj, int *num = nullptr) {
|
||||||
Type *data = nullptr;
|
Type *data = nullptr;
|
||||||
|
|
||||||
if (data.IsTypedArray()) {
|
if (data.IsTypedArray()) {
|
||||||
Napi::ArrayBuffer arr = obj.As<Napi::TypedArray>().ArrayBuffer();
|
Napi::TypedArray ta = obj.As<Napi::TypedArray>();
|
||||||
|
size_t offset = ta.ByteOffset();
|
||||||
|
Napi::ArrayBuffer arr = ta.ArrayBuffer();
|
||||||
if (num) {
|
if (num) {
|
||||||
*num = arr.ByteLength() / sizeof(Type);
|
*num = arr.ByteLength() / sizeof(Type);
|
||||||
}
|
}
|
||||||
data = static_cast<Type *>(arr.Data());
|
uint8_t *base = arr.Data();
|
||||||
|
data = static_cast<Type *>(base + offset);
|
||||||
} else if (data.IsArrayBuffer()) {
|
} else if (data.IsArrayBuffer()) {
|
||||||
Napi::ArrayBuffer arr = obj.As<Napi::ArrayBuffer>();
|
Napi::ArrayBuffer arr = obj.As<Napi::ArrayBuffer>();
|
||||||
if (num) {
|
if (num) {
|
||||||
|
@ -357,24 +360,14 @@ inline void *getData(Napi::Env env, Napi::Object obj) {
|
||||||
|
|
||||||
void *pixels = nullptr;
|
void *pixels = nullptr;
|
||||||
|
|
||||||
if (obj.IsArrayBuffer()) {
|
if (obj.IsTypedArray() || obj.IsArrayBuffer()) {
|
||||||
pixels = getArrayData<unsigned char>(env, obj);
|
pixels = getArrayData<uint8_t>(env, obj);
|
||||||
} else if (obj.IsTypedArray()) {
|
|
||||||
pixels = getArrayData<unsigned char>(
|
|
||||||
env,
|
|
||||||
obj.As<Napi::TypedArray>().ArrayBuffer()
|
|
||||||
);
|
|
||||||
} else if (obj.Has("data")) {
|
} else if (obj.Has("data")) {
|
||||||
Napi::Object data = obj.Get("data").As<Napi::Object>();
|
Napi::Object data = obj.Get("data").As<Napi::Object>();
|
||||||
if (data.IsArrayBuffer()) {
|
if (data.IsTypedArray() || data.IsArrayBuffer()) {
|
||||||
pixels = getArrayData<unsigned char>(env, data);
|
pixels = getArrayData<uint8_t>(env, data);
|
||||||
} else if (data.IsBuffer()) {
|
} else if (data.IsBuffer()) {
|
||||||
pixels = getBufferData<unsigned char>(env, data);
|
pixels = getBufferData<uint8_t>(env, data);
|
||||||
} else if (data.IsTypedArray()) {
|
|
||||||
pixels = getArrayData<unsigned char>(
|
|
||||||
env,
|
|
||||||
data.As<Napi::TypedArray>().ArrayBuffer()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue