///
import { EventEmitter } from 'events';
import { Dot, Mouse, RectRenderQueue, Stroke, Text, TooltipField, TriangleDirections } from '../types';
import { OffscreenRenderEngine } from './offscreen-render-engine';
import { RenderEngine } from './render-engine';
import { DefaultPatterns, Pattern, PatternCreator } from '../patterns';
export type RenderOptions = {
tooltip?: ((data: any, renderEngine: RenderEngine | OffscreenRenderEngine, mouse: Mouse | null) => boolean | void) | boolean;
timeUnits: string;
};
export type RenderStyles = {
blockHeight: number;
blockPaddingLeftRight: number;
backgroundColor: string;
font: string;
fontColor: string;
badgeSize: number;
tooltipHeaderFontColor: string;
tooltipBodyFontColor: string;
tooltipBackgroundColor: string;
tooltipShadowColor: string;
tooltipShadowBlur: number;
tooltipShadowOffsetX: number;
tooltipShadowOffsetY: number;
headerHeight: number;
headerColor: string;
headerStrokeColor: string;
headerTitleLeftPadding: number;
};
export type CustomPattern = {
name: string;
creator: PatternCreator;
};
export type RenderPatterns = Array;
export type RenderSettings = {
options?: Partial;
styles?: Partial;
patterns?: RenderPatterns;
};
export declare const defaultRenderSettings: RenderOptions;
export declare const defaultRenderStyles: RenderStyles;
export type Shadow = {
color: string;
blur: number;
offsetX?: number;
offsetY?: number;
};
export declare class BasicRenderEngine extends EventEmitter {
width: number;
height: number;
isSafari: boolean;
canvas: HTMLCanvasElement;
ctx: CanvasRenderingContext2D;
pixelRatio: number;
options: RenderOptions;
timeUnits: string;
styles: RenderStyles;
blockPaddingLeftRight: number;
blockHeight: number;
blockPaddingTopBottom: number;
charHeight: number;
placeholderWidth: number;
avgCharWidth: number;
minTextWidth: number;
queue: Record;
zoom: number;
positionX: number;
min: number;
max: number;
patterns: Record;
ctxCachedSettings: {};
ctxCachedCalls: {};
constructor(canvas: HTMLCanvasElement, settings: RenderSettings);
setSettings({ options, styles, patterns }: RenderSettings): void;
reset(): void;
setCtxValue: (field: string, value: number | string) => void;
callCtx: (fn: any, value: any) => void;
setCtxShadow(shadow: Shadow): void;
setCtxFont(font: string): void;
fillRect(x: number, y: number, w: number, h: number): void;
fillText(text: string, x: number, y: number): void;
renderBlock(x: number, y: number, w: number, h?: number): void;
renderStroke(color: string, x: number, y: number, w: number, h: number): void;
clear(w?: number, h?: number, x?: number, y?: number): void;
timeToPosition(time: number): number;
pixelToTime(width: number): number;
setZoom(zoom: number): void;
setPositionX(x: number): number;
getQueue(priority?: number): {
text: Text[];
stroke: Stroke[];
rect: RectRenderQueue;
};
addRect(rect: {
color: string;
pattern?: string;
x: number;
y: number;
w: number;
h?: number;
}, priority?: number): void;
addText({ text, x, y, w }: {
text: string;
x: number;
y: number;
w: number;
}, priority?: number): void;
addStroke(stroke: {
color: string;
x: number;
y: number;
w: number;
h: number;
}, priority?: number): void;
resolveQueue(): void;
renderRects(rects: RectRenderQueue): void;
renderTexts(texts: Text[]): void;
renderStrokes(strokes: Stroke[]): void;
setMinMax(min: number, max: number): void;
getTimeUnits(): string;
tryToChangePosition(positionDelta: number): void;
getInitialZoom(): number;
getRealView(): number;
resetView(): void;
resize(width?: number, height?: number): boolean;
applyCanvasSize(): void;
copy(engine: OffscreenRenderEngine): void;
createDefaultPattern({ name, type, config }: DefaultPatterns): void;
createCachedDefaultPattern(pattern: DefaultPatterns): void;
createBlockPattern({ name, creator }: {
name: string;
creator: PatternCreator;
}): void;
renderTooltipFromData(fields: TooltipField[], mouse: Mouse): void;
renderShape(color: string, dots: Dot[], posX: number, posY: number): void;
renderTriangle({ color, x, y, width, height, direction, }: {
color: string;
x: number;
y: number;
width: number;
height: number;
direction: TriangleDirections;
}): void;
renderCircle(color: string, x: number, y: number, radius: number): void;
}