86 lines
1.8 KiB
TypeScript
86 lines
1.8 KiB
TypeScript
/**
|
|
* Represents a rectangular region on the screen.
|
|
* Used for targeted screen capture and element location.
|
|
*/
|
|
export interface ScreenRegion {
|
|
x: number;
|
|
y: number;
|
|
width: number;
|
|
height: number;
|
|
}
|
|
|
|
/**
|
|
* Represents a point on the screen with x,y coordinates.
|
|
*/
|
|
export interface Point {
|
|
x: number;
|
|
y: number;
|
|
}
|
|
|
|
/**
|
|
* Represents the location of a detected UI element on screen.
|
|
* Contains the center point, bounding box, and confidence score.
|
|
*/
|
|
export interface ElementLocation {
|
|
center: Point;
|
|
bounds: ScreenRegion;
|
|
confidence: number;
|
|
}
|
|
|
|
/**
|
|
* Result of login state detection via screen recognition.
|
|
*/
|
|
export interface LoginDetectionResult {
|
|
isLoggedIn: boolean;
|
|
confidence: number;
|
|
detectedIndicators: string[];
|
|
error?: string;
|
|
}
|
|
|
|
/**
|
|
* Create a ScreenRegion from coordinates.
|
|
*/
|
|
export function createScreenRegion(x: number, y: number, width: number, height: number): ScreenRegion {
|
|
return { x, y, width, height };
|
|
}
|
|
|
|
/**
|
|
* Create a Point from coordinates.
|
|
*/
|
|
export function createPoint(x: number, y: number): Point {
|
|
return { x, y };
|
|
}
|
|
|
|
/**
|
|
* Calculate the center point of a ScreenRegion.
|
|
*/
|
|
export function getRegionCenter(region: ScreenRegion): Point {
|
|
return {
|
|
x: region.x + Math.floor(region.width / 2),
|
|
y: region.y + Math.floor(region.height / 2),
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Check if a point is within a screen region.
|
|
*/
|
|
export function isPointInRegion(point: Point, region: ScreenRegion): boolean {
|
|
return (
|
|
point.x >= region.x &&
|
|
point.x <= region.x + region.width &&
|
|
point.y >= region.y &&
|
|
point.y <= region.y + region.height
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Check if two screen regions overlap.
|
|
*/
|
|
export function regionsOverlap(a: ScreenRegion, b: ScreenRegion): boolean {
|
|
return !(
|
|
a.x + a.width < b.x ||
|
|
b.x + b.width < a.x ||
|
|
a.y + a.height < b.y ||
|
|
b.y + b.height < a.y
|
|
);
|
|
} |