Image *Image::New(FIBITMAP* dib) { HandleScope scope; Local<Value> arg = Integer::NewFromUnsigned(0); Local<Object> obj = constructor_template->GetFunction()->NewInstance(1, &arg); Image *image = ObjectWrap::Unwrap<Image>(obj); image->dib = dib; int w,h,pitch; FREE_IMAGE_TYPE type = FreeImage_GetImageType(dib); obj->SetInternalField(0, External::New(dib)); obj->Set(JS_STR("width"), JS_INT(w=FreeImage_GetWidth(dib))); obj->Set(JS_STR("height"), JS_INT(h=FreeImage_GetHeight(dib))); obj->Set(JS_STR("bpp"), JS_INT((int)FreeImage_GetBPP(dib))); obj->Set(JS_STR("pitch"), JS_INT(pitch=FreeImage_GetPitch(dib))); obj->Set(JS_STR("type"), JS_INT(type)); obj->Set(JS_STR("redMask"), JS_INT((int)FreeImage_GetRedMask(dib))); obj->Set(JS_STR("greenMask"), JS_INT((int)FreeImage_GetGreenMask(dib))); obj->Set(JS_STR("blueMask"), JS_INT((int)FreeImage_GetBlueMask(dib))); BYTE *bits=FreeImage_GetBits(dib); node::Buffer *buf = node::Buffer::New((char*)bits,h*pitch); obj->Set(JS_STR("buffer"), buf->handle_); return image; }
void FreeImage::Initialize(Handle<Object> target) { HandleScope scope; Local<FunctionTemplate> t = FunctionTemplate::New(New); constructor_template = Persistent<FunctionTemplate>::New(t); constructor_template->InstanceTemplate()->SetInternalFieldCount(1); constructor_template->SetClassName(JS_STR("FreeImage")); NODE_SET_PROTOTYPE_METHOD(constructor_template, "getVersion", getVersion); NODE_SET_PROTOTYPE_METHOD(constructor_template, "load", load); NODE_SET_PROTOTYPE_METHOD(constructor_template, "save", save); target->Set(JS_STR("FreeImage"), constructor_template->GetFunction()); }
void FreeImage::Initialize(Handle<Object> target) { NanScope(); // constructor Local<FunctionTemplate> ctor = FunctionTemplate::New(FreeImage::New); NanAssignPersistent(FunctionTemplate, constructor_template, ctor); ctor->InstanceTemplate()->SetInternalFieldCount(1); ctor->SetClassName(JS_STR("FreeImage")); // prototype Local<ObjectTemplate> proto = ctor->PrototypeTemplate(); NODE_SET_PROTOTYPE_METHOD(ctor, "load", load); NODE_SET_PROTOTYPE_METHOD(ctor, "save", save); proto->SetAccessor(JS_STR("getVersion"), getVersion); target->Set(JS_STR("FreeImage"), ctor->GetFunction()); }