|
@ -736,23 +736,16 @@ NAN_METHOD(Context2d::GetImageData) { |
|
|
Local<Object> global = Context::GetCurrent()->Global(); |
|
|
Local<Object> global = Context::GetCurrent()->Global(); |
|
|
|
|
|
|
|
|
Local<Int32> sizeHandle = Nan::New(size); |
|
|
Local<Int32> sizeHandle = Nan::New(size); |
|
|
Local<Value> bufargv[] = { sizeHandle }; |
|
|
Local<Value> caargv[] = { sizeHandle }; |
|
|
Local<Object> buffer = global->Get(Nan::New("ArrayBuffer").ToLocalChecked()).As<Function>()->NewInstance(1, bufargv); |
|
|
|
|
|
|
|
|
|
|
|
Local<Int32> zeroHandle = Nan::New(0); |
|
|
|
|
|
Local<Value> caargv[] = { buffer, zeroHandle, sizeHandle }; |
|
|
|
|
|
Local<Object> clampedArray = global->Get(Nan::New("Uint8ClampedArray").ToLocalChecked()).As<Function>()->NewInstance(3, caargv); |
|
|
Local<Object> clampedArray = global->Get(Nan::New("Uint8ClampedArray").ToLocalChecked()).As<Function>()->NewInstance(3, caargv); |
|
|
uint8_t *dst = (uint8_t *) clampedArray->GetIndexedPropertiesExternalArrayData(); |
|
|
|
|
|
#else |
|
|
#else |
|
|
Local<ArrayBuffer> buffer = ArrayBuffer::New(Isolate::GetCurrent(), size); |
|
|
Local<ArrayBuffer> buffer = ArrayBuffer::New(Isolate::GetCurrent(), size); |
|
|
Local<Uint8ClampedArray> clampedArray = Uint8ClampedArray::New(buffer, 0, size); |
|
|
Local<Uint8ClampedArray> clampedArray = Uint8ClampedArray::New(buffer, 0, size); |
|
|
#if NODE_MAJOR_VERSION < 3 |
|
|
|
|
|
uint8_t *dst = (uint8_t *)clampedArray->GetIndexedPropertiesExternalArrayData(); |
|
|
|
|
|
#else |
|
|
|
|
|
uint8_t *dst = (uint8_t *)buffer->GetContents().Data(); |
|
|
|
|
|
#endif |
|
|
|
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
Nan::TypedArrayContents<uint8_t> typedArrayContents(clampedArray); |
|
|
|
|
|
uint8_t* dst = *typedArrayContents; |
|
|
|
|
|
|
|
|
// Normalize data (argb -> rgba)
|
|
|
// Normalize data (argb -> rgba)
|
|
|
for (int y = 0; y < sh; ++y) { |
|
|
for (int y = 0; y < sh; ++y) { |
|
|
uint32_t *row = (uint32_t *)(src + srcStride * (y + sy)); |
|
|
uint32_t *row = (uint32_t *)(src + srcStride * (y + sy)); |
|
|