@@ -593,6 +593,28 @@ NAN_METHOD(getScreenSize)
593
593
info.GetReturnValue ().Set (obj);
594
594
}
595
595
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
+
596
618
NAN_MODULE_INIT (InitAll)
597
619
{
598
620
@@ -634,6 +656,9 @@ NAN_MODULE_INIT(InitAll)
634
656
635
657
Nan::Set (target, Nan::New (" getScreenSize" ).ToLocalChecked (),
636
658
Nan::GetFunction (Nan::New<FunctionTemplate>(getScreenSize)).ToLocalChecked ());
659
+
660
+ Nan::Set (target, Nan::New (" captureScreen" ).ToLocalChecked (),
661
+ Nan::GetFunction (Nan::New<FunctionTemplate>(captureScreen)).ToLocalChecked ());
637
662
}
638
663
639
664
NODE_MODULE (robotjs, InitAll)
0 commit comments