You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.7 KiB

14 years ago
//
// ImageData.cc
//
// Copyright (c) 2010 LearnBoost <tj@learnboost.com>
//
#include "ImageData.h"
Persistent<FunctionTemplate> ImageData::constructor;
14 years ago
/*
* 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"));
14 years ago
// Prototype
Local<ObjectTemplate> proto = constructor->PrototypeTemplate();
14 years ago
proto->SetAccessor(String::NewSymbol("width"), GetWidth);
proto->SetAccessor(String::NewSymbol("height"), GetHeight);
target->Set(String::NewSymbol("ImageData"), constructor->GetFunction());
14 years ago
}
/*
* 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]);
14 years ago
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());
14 years ago
}
/*
* 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());
}