@google/model-viewer
Version:
Easily display interactive 3D models on the web and in AR!
99 lines (98 loc) • 2.84 kB
TypeScript
export interface OffscreenCanvas extends HTMLCanvasElement {
}
export declare const COMPONENTS_PER_PIXEL: number;
export declare const MAX_COLOR_DISTANCE: number;
export interface ImageComparisonAnalysis {
matchingRatio: number;
averageDistanceRatio: number;
mismatchingAverageDistanceRatio: number;
}
export interface ImageComparisonResults {
analysis: ImageComparisonAnalysis;
imageBuffers: {
delta: ArrayBuffer | null;
blackWhite: ArrayBuffer | null;
};
}
export interface ImageComparisonMessage {
type: 'canvases-ready' | 'images-assigned' | 'threshold-changed' | 'analysis-completed';
}
export interface CanvasesReadyMessage extends ImageComparisonMessage {
candidateCanvas: OffscreenCanvas;
goldenCanvas: OffscreenCanvas;
blackWhiteCanvas: OffscreenCanvas;
deltaCanvas: OffscreenCanvas;
}
export interface ImagesAssignedMessage extends ImageComparisonMessage {
candidateImageBuffer: ArrayBuffer;
goldenImageBuffer: ArrayBuffer;
dimensions: Dimensions;
}
export interface ThresholdChangedMessage extends ImageComparisonMessage {
threshold: number;
}
export interface AnalysisCompletedMessage extends ImageComparisonMessage {
result: ImageComparisonResults;
}
export interface Dimensions {
width: number;
height: number;
}
export interface Pixel {
x: number;
y: number;
}
export interface Rect extends Dimensions {
x: number;
y: number;
}
export interface ScenarioConfig {
name: string;
model: string;
lighting: string;
dimensions: Dimensions;
target: {
x: number;
y: number;
z: number;
};
orbit: {
theta: number;
phi: number;
radius: number;
};
verticalFoV: number;
exclude?: Array<string>;
}
export interface RendererConfig {
name: string;
description: string;
scripts?: {
setup: string;
};
}
export interface GoldenConfig extends RendererConfig {
file: string;
}
export interface ImageComparisonConfig {
rootDirectory: string;
analysisThresholds: Array<number>;
renderers: Array<RendererConfig>;
scenarios: Array<ScenarioConfig>;
}
export interface ComparableImage {
[index: number]: number;
length: number;
}
export interface AnalysisOptions {
generateVisuals: boolean;
}
export declare class ImageComparator {
protected candidateImage: ComparableImage;
protected goldenImage: ComparableImage;
readonly dimensions: Dimensions;
protected imagePixels: number;
constructor(candidateImage: ComparableImage, goldenImage: ComparableImage, dimensions: Dimensions);
protected drawPixel(image: ComparableImage, position: number, r: number, g: number, b: number, a?: number): void;
analyze(threshold: number, options?: AnalysisOptions): ImageComparisonResults;
}