Skip to content

Commit 5ae993a

Browse files
Reject promise if searchRegion outside screenSize
Prevents a comparatively cryptic OpenCV runtime error.
1 parent 72df841 commit 5ae993a

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

lib/screen.class.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ export class Screen {
8383
params?: LocationParameters,
8484
): Promise<Region> {
8585
const minMatch = (params && params.confidence) || this.config.confidence;
86-
const searchRegion =
87-
(params && params.searchRegion) || await this.vision.screenSize();
86+
const screenSize = await this.vision.screenSize();
87+
const searchRegion = (params && params.searchRegion) || screenSize;
8888
const searchMultipleScales = (params && params.searchMultipleScales)
8989

9090
const fullPathToNeedle = normalize(join(this.config.resourceDirectory, templateImageFilename));
@@ -101,6 +101,9 @@ export class Screen {
101101

102102
return new Promise<Region>(async (resolve, reject) => {
103103
try {
104+
if ( searchRegion.left > await screenSize.width || searchRegion.top > screenSize.height ) {
105+
throw new Error(`Requested search region (${searchRegion.left}, ${searchRegion.top}, ${searchRegion.width}, ${searchRegion.height}) lies beyond screen boundaries (${screenSize.width}, ${screenSize.height})`);
106+
}
104107
const matchResult = await this.vision.findOnScreenRegion(matchRequest);
105108
if (matchResult.confidence >= minMatch) {
106109
const possibleHooks = this.findHooks.get(templateImageFilename) || [];

0 commit comments

Comments
 (0)