forked from Automattic/node-canvas
/
ImageData.cc
69 lines (54 loc) · 1.72 KB
/
ImageData.cc
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//
// ImageData.cc
//
// Copyright (c) 2010 LearnBoost <tj@learnboost.com>
//
#include "ImageData.h"
Persistent<FunctionTemplate> ImageData::constructor;
/*
* Initialize ImageData.
*/
void
ImageData::Initialize(Handle<Object> target) {
HandleScope scope;
// Constructor
constructor = Persistent<FunctionTemplate>::New(FunctionTemplate::New(ImageData::New));
constructor->InstanceTemplate()->SetInternalFieldCount(1);
constructor->SetClassName(String::NewSymbol("ImageData"));
// Prototype
Local<ObjectTemplate> proto = constructor->PrototypeTemplate();
proto->SetAccessor(String::NewSymbol("width"), GetWidth);
proto->SetAccessor(String::NewSymbol("height"), GetHeight);
target->Set(String::NewSymbol("ImageData"), constructor->GetFunction());
}
/*
* Initialize a new ImageData object.
*/
Handle<Value>
ImageData::New(const Arguments &args) {
HandleScope scope;
Local<Object> obj = args[0]->ToObject();
if (!PixelArray::constructor->HasInstance(obj))
return ThrowException(Exception::TypeError(String::New("CanvasPixelArray expected")));
PixelArray *arr = ObjectWrap::Unwrap<PixelArray>(obj);
ImageData *imageData = new ImageData(arr);
args.This()->Set(String::NewSymbol("data"), args[0]);
imageData->Wrap(args.This());
return args.This();
}
/*
* Get width.
*/
Handle<Value>
ImageData::GetWidth(Local<String> prop, const AccessorInfo &info) {
ImageData *imageData = ObjectWrap::Unwrap<ImageData>(info.This());
return Number::New(imageData->pixelArray()->width());
}
/*
* Get height.
*/
Handle<Value>
ImageData::GetHeight(Local<String> prop, const AccessorInfo &info) {
ImageData *imageData = ObjectWrap::Unwrap<ImageData>(info.This());
return Number::New(imageData->pixelArray()->height());
}