Skip to content

Commit ec4f953

Browse files
committed
Implemented captureScreen. #13
1 parent 679989c commit ec4f953

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/robotjs.cc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,28 @@ NAN_METHOD(getScreenSize)
593593
info.GetReturnValue().Set(obj);
594594
}
595595

596+
NAN_METHOD(captureScreen)
597+
{
598+
MMSize displaySize = getMainDisplaySize();
599+
600+
MMBitmapRef bitmap = copyMMBitmapFromDisplayInRect(MMRectMake(0, 0, displaySize.width, displaySize.height));
601+
602+
uint32_t bufferSize = bitmap->bytesPerPixel * bitmap->width * bitmap->height;
603+
Local<Object> buffer = Nan::NewBuffer((char*)bitmap->imageBuffer, bufferSize).ToLocalChecked();
604+
605+
Local<Object> obj = Nan::New<Object>();
606+
Nan::Set(obj, Nan::New("width").ToLocalChecked(), Nan::New<Number>(bitmap->width));
607+
Nan::Set(obj, Nan::New("height").ToLocalChecked(), Nan::New<Number>(bitmap->height));
608+
Nan::Set(obj, Nan::New("byteWidth").ToLocalChecked(), Nan::New<Number>(bitmap->bytewidth));
609+
Nan::Set(obj, Nan::New("bitsPerPixel").ToLocalChecked(), Nan::New<Number>(bitmap->bitsPerPixel));
610+
Nan::Set(obj, Nan::New("bytesPerPixel").ToLocalChecked(), Nan::New<Number>(bitmap->bytesPerPixel));
611+
Nan::Set(obj, Nan::New("image").ToLocalChecked(), buffer);
612+
613+
destroyMMBitmap(bitmap);
614+
615+
info.GetReturnValue().Set(obj);
616+
}
617+
596618
NAN_MODULE_INIT(InitAll)
597619
{
598620

@@ -634,6 +656,9 @@ NAN_MODULE_INIT(InitAll)
634656

635657
Nan::Set(target, Nan::New("getScreenSize").ToLocalChecked(),
636658
Nan::GetFunction(Nan::New<FunctionTemplate>(getScreenSize)).ToLocalChecked());
659+
660+
Nan::Set(target, Nan::New("captureScreen").ToLocalChecked(),
661+
Nan::GetFunction(Nan::New<FunctionTemplate>(captureScreen)).ToLocalChecked());
637662
}
638663

639664
NODE_MODULE(robotjs, InitAll)

0 commit comments

Comments
 (0)