webglimpse
Version:
Webglimpse is a data visualization library for the web.
95 lines (94 loc) • 4.03 kB
TypeScript
import { BoundsUnmodifiable, Bounds, Size } from './bounds';
import { Notification, Notification1 } from './util/notification';
export declare type Painter = (gl: WebGLRenderingContext, viewport: BoundsUnmodifiable) => void;
export interface PointerEvent {
paneViewport: BoundsUnmodifiable;
i: number;
j: number;
wheelSteps?: number;
clickCount?: number;
mouseEvent?: MouseEvent;
}
export declare function xFrac(ev: PointerEvent): number;
export declare function yFrac(ev: PointerEvent): number;
export interface LayoutEntry {
layoutArg: any;
layoutOptions: any;
viewport: Bounds;
prefSize: Size;
}
export declare type LayoutPhase1 = (parentPrefSize: Size, children?: LayoutEntry[]) => LayoutPhase1;
export declare type LayoutPhase2 = (children: LayoutEntry[], parentViewport: BoundsUnmodifiable) => LayoutPhase2;
export interface Layout {
updatePrefSize?: LayoutPhase1;
updateChildViewports?: LayoutPhase2;
}
export declare type Mask2D = (viewport: BoundsUnmodifiable, i: number, j: number) => boolean;
export declare class Pane {
private painters;
private consumesInputEvents;
private isInside;
private _mouseCursor;
private _mouseCursorChanged;
private _childMouseCursorListener;
private children;
private _layout;
private _viewport;
private _scissor;
private _viewportChanged;
private _dispose;
private _mouseUp;
private _mouseDown;
private _mouseMove;
private _mouseWheel;
private _mouseEnter;
private _mouseExit;
private _contextMenu;
constructor(layout: Layout, consumesInputEvents?: boolean, isInside?: Mask2D);
get layout(): Layout;
set layout(layout: Layout);
get mouseCursor(): string;
set mouseCursor(mouseCursor: string);
get mouseCursorChanged(): Notification;
addPainter(painter: Painter): void;
addPane(pane: Pane, layoutArg?: any, layoutOptions?: any): void;
removePane(pane: Pane): void;
layoutArg(pane: Pane): any;
setLayoutArg(pane: Pane, layoutArg: any): void;
updateLayoutArgs(updateFn: (layoutArg: any, layoutOptions: any) => any): void;
layoutOptions(pane: Pane): any;
private _childFor;
updatePrefSizes(result: Size): void;
updateBounds(viewport: BoundsUnmodifiable, scissor: BoundsUnmodifiable): void;
paint(gl: WebGLRenderingContext): void;
get viewport(): BoundsUnmodifiable;
get scissor(): BoundsUnmodifiable;
get viewportChanged(): Notification;
panesAt(i: number, j: number): Pane[];
private _panesAt;
get mouseUp(): Notification1<PointerEvent>;
get mouseDown(): Notification1<PointerEvent>;
get mouseMove(): Notification1<PointerEvent>;
get mouseWheel(): Notification1<PointerEvent>;
get mouseEnter(): Notification1<PointerEvent>;
get mouseExit(): Notification1<PointerEvent>;
get contextMenu(): Notification1<PointerEvent>;
fireMouseUp(i: number, j: number, clickCount: number, mouseEvent: MouseEvent): any;
fireMouseDown(i: number, j: number, clickCount: number, mouseEvent: MouseEvent): any;
fireMouseMove(i: number, j: number, mouseEvent: MouseEvent): any;
fireMouseWheel(i: number, j: number, wheelSteps: number, mouseEvent: MouseEvent): any;
fireMouseEnter(i: number, j: number, mouseEvent: MouseEvent): any;
fireMouseExit(i: number, j: number, mouseEvent: MouseEvent): any;
fireContextMenu(i: number, j: number, mouseEvent: MouseEvent): any;
get dispose(): Notification;
}
export declare function requireGL(canvasElement: HTMLCanvasElement): WebGLRenderingContext;
export declare function isLeftMouseDown(ev: MouseEvent): boolean;
export declare function isMouseDown(ev: MouseEvent): boolean;
export interface Drawable {
setContentPane(pane: Pane): void;
redraw(): void;
getPrefSize(): Size;
prefSizeChanged(): Notification1<Size>;
}
export declare function newDrawable(canvas: HTMLCanvasElement): Drawable;