camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
97 lines (96 loc) • 3.39 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import { CamOverlayDrawingAPI, TAlign, TCairoCreateResponse, TUploadImageResponse } from '../CamOverlayDrawingAPI';
import ResourceManager from './ResourceManager';
export type TRgb = [number, number, number];
export type TRgba = [number, number, number, number];
export type TTmf = 'TFM_OVERFLOW' | 'TFM_SCALE' | 'TFM_TRUNCATE';
export type TObjectFitType = 'fill' | 'fit' | 'none';
export type TFrameOptions = {
enabled?: boolean;
x: number;
y: number;
width: number;
height: number;
text?: string;
fontColor?: TRgb;
font?: string;
bgColor?: TRgba;
bgImage?: string;
bgType?: TObjectFitType;
borderRadius?: number;
borderWidth?: number;
borderColor?: TRgba;
customDraw?: TDrawingCallback;
layer?: number;
};
export type TFrameInfo = {
width: number;
height: number;
};
export type TDrawingCallback = (cod: CamOverlayDrawingAPI, cairo: string, info: TFrameInfo) => Promise<void>;
export interface Frame {
on(event: 'open', listener: () => void): this;
on(event: 'close', listener: () => void): this;
on(event: 'layoutChanged', listener: () => void): this;
emit(event: 'open'): boolean;
emit(event: 'close'): boolean;
emit(event: 'layoutChanged'): boolean;
}
export declare class Frame extends EventEmitter {
protected enabled: boolean;
protected posX: number;
protected posY: number;
protected width: number;
protected height: number;
private text;
private fontColor;
private fontName?;
private font?;
private align;
private textType;
private bgColor?;
private bgImageName?;
private bgImage?;
private bgType?;
private borderRadius;
private borderWidth;
private borderColor;
private customDraw?;
private layer;
protected children: Frame[];
constructor(opt: TFrameOptions);
enable(): void;
disable(): void;
setFramePosition(x: number, y: number): void;
setFrameSize(width: number, height: number): void;
setText(text: string, align: TAlign, textType?: TTmf, fontColor?: TRgb): void;
setFontColor(fontColor: TRgb): void;
setFont(fontName: string): void;
setFontData(fontData: TCairoCreateResponse): void;
setBgColor(color: TRgba): void;
setBgImage(imageName: string, type?: TObjectFitType): void;
setBgImageData(imageData: TUploadImageResponse, type?: TObjectFitType): void;
setBgType(type: TObjectFitType): void;
setBorderRadius(radius: number): void;
setBorderWidth(width: number): void;
setBorderColor(color: TRgba): void;
setCustomDraw(customDraw: TDrawingCallback): void;
resetFont(): void;
resetBgColor(): void;
resetBgImage(): void;
resetCustomDraw(): void;
clear(): void;
insert(...frames: Frame[]): void;
getLayers(): Set<number>;
protected layoutChanged(): void;
displayImage(cod: CamOverlayDrawingAPI, resourceManager: ResourceManager, cairo: string, ppX: number, ppY: number, scale: number, layer: number): Promise<void>;
private prepareResources;
protected displayOwnImage(cod: CamOverlayDrawingAPI, cairo: string, ppX: number, ppY: number, scale: number): Promise<void>;
private clipDrawing;
private drawFrame;
private drawImage;
private drawText;
private drawBorder;
private drawRectPath;
}