/** @ignore */ /** */ import type { IPoint } from "../../util/IPoint"; import type { IBounds } from "../../util/IBounds"; import type { ILayer } from "../backend/Renderer"; import { SceneNode, SceneGraphics, SceneRadialText, SceneImage } from "./SceneNode"; /** * @ignore */ interface IHitEntry { node: SceneNode; clips: Array | undefined; bounds?: IBounds; } /** * @ignore */ interface IImageAlpha { image: HTMLImageElement; width: number; height: number; data: Uint8ClampedArray | null; } /** * Answers "what is under this point" from geometry, the way the canvas * renderer's ghost canvas does, without painting one. * * Nodes are tested top-down in ghost paint order: layer 0 in tree order, * then each positive layer in ascending order (negative layers are never on * the ghost). A node counts only where the ghost would paint it: graphics * when interactive, text only when explicitly interactive (by its layout * box rather than glyph pixels), circular text per glyph, pictures by their * opaque pixels. Masks clip as they clip the ghost. * * @ignore */ export declare class GeometricHitTester { protected _entries: Array | undefined; protected _context: CanvasRenderingContext2D | undefined; protected _force: number; protected _clipPaths: Map; protected _images: WeakMap; /** * Call after every render: the scene may have changed. */ invalidate(): void; hit(root: SceneNode, defaultLayer: ILayer, point: IPoint): SceneNode | undefined; protected _getContext(): CanvasRenderingContext2D; protected _collect(root: SceneNode, defaultLayer: ILayer): Array; protected _walk(node: SceneNode, inactive: boolean | null, layer: ILayer, clips: Array | undefined, byOrder: { [order: number]: Array; }): void; /** * Whether an interactive node paints on the ghost at all. */ protected _onGhost(node: SceneNode): boolean; protected _hitNode(entry: IHitEntry, point: IPoint): boolean; protected _hitGraphics(entry: IHitEntry, graphics: SceneGraphics, x: number, y: number): boolean; protected _hitCircularText(text: SceneRadialText, x: number, y: number): boolean; protected _hitImage(node: SceneImage, x: number, y: number): boolean; protected _inClips(clips: Array | undefined, point: IPoint): boolean; } export {}; //# sourceMappingURL=HitTest.d.ts.map