From 83a8b27b028a8488b52bed2d284d990bdabf37ea Mon Sep 17 00:00:00 2001 From: Zach Bjornson Date: Thu, 19 Nov 2015 12:14:06 -0800 Subject: [PATCH] #637 use Nan::TypedArrayContents, fix a signed/unsigned comp warning --- package.json | 2 +- src/CanvasRenderingContext2d.cc | 15 ++++----------- src/ImageData.cc | 12 ++++-------- 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 2ebcb94..e928080 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "test-server": "node test/server.js" }, "dependencies": { - "nan": "^2.0.9" + "nan": "^2.1.0" }, "devDependencies": { "body-parser": "^1.13.3", diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 163cef1..5e7b8d1 100755 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -736,22 +736,15 @@ NAN_METHOD(Context2d::GetImageData) { Local global = Context::GetCurrent()->Global(); Local sizeHandle = Nan::New(size); - Local bufargv[] = { sizeHandle }; - Local buffer = global->Get(Nan::New("ArrayBuffer").ToLocalChecked()).As()->NewInstance(1, bufargv); - - Local zeroHandle = Nan::New(0); - Local caargv[] = { buffer, zeroHandle, sizeHandle }; + Local caargv[] = { sizeHandle }; Local clampedArray = global->Get(Nan::New("Uint8ClampedArray").ToLocalChecked()).As()->NewInstance(3, caargv); - uint8_t *dst = (uint8_t *) clampedArray->GetIndexedPropertiesExternalArrayData(); #else Local buffer = ArrayBuffer::New(Isolate::GetCurrent(), size); Local 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 + + Nan::TypedArrayContents typedArrayContents(clampedArray); + uint8_t* dst = *typedArrayContents; // Normalize data (argb -> rgba) for (int y = 0; y < sh; ++y) { diff --git a/src/ImageData.cc b/src/ImageData.cc index b5d047d..6d6f082 100644 --- a/src/ImageData.cc +++ b/src/ImageData.cc @@ -42,8 +42,8 @@ NAN_METHOD(ImageData::New) { Local clampedArray; #endif - int width; - int height; + uint32_t width; + uint32_t height; int length; if (info[0]->IsUint32() && info[1]->IsUint32()) { @@ -104,13 +104,9 @@ NAN_METHOD(ImageData::New) { return; } -#if NODE_MAJOR_VERSION < 3 - void *dataPtr = clampedArray->GetIndexedPropertiesExternalArrayData(); -#else - void *dataPtr = clampedArray->Buffer()->GetContents().Data(); -#endif + Nan::TypedArrayContents dataPtr(clampedArray); - ImageData *imageData = new ImageData(reinterpret_cast(dataPtr), width, height); + ImageData *imageData = new ImageData(reinterpret_cast(*dataPtr), width, height); imageData->Wrap(info.This()); info.This()->Set(Nan::New("data").ToLocalChecked(), clampedArray); info.GetReturnValue().Set(info.This());