@antv/g2plot
Version:
G2 Plot, a market of plots built with the Grammar of Graphics'
114 lines (113 loc) • 2.82 kB
TypeScript
import EventEmitter from '@antv/event-emitter';
import * as G from '@antv/g';
import { Point } from '../interface/config';
export interface LayerConfig {
id?: string;
/** the top-left-x of layer, local position relative to the parent layer */
x?: number;
/** the top-left-y of layer, local position relative to the parent layer */
y?: number;
/** layer width */
width?: number;
/** layer height */
height?: number;
/** the parent node of layer */
parent?: any;
canvas?: G.Canvas;
name?: string;
}
export interface Region {
/** the top-left corner of layer-range, range from 0 to 1, relative to parent layer's range */
readonly start: Point;
/** the bottom-right corner of layer-range, range from 0 to 1, relative to parent layer's range */
readonly end: Point;
}
export interface Range {
x?: number;
y?: number;
width?: number;
height?: number;
}
export default class Layer<T extends LayerConfig = LayerConfig> extends EventEmitter {
id: string;
x: number;
y: number;
width: number;
height: number;
parent: Layer;
canvas: G.Canvas;
layerBBox: G.BBox;
layers: Layer[];
container: G.Group;
destroyed: boolean;
protected visibility: boolean;
protected layerRegion: Region;
private rendered;
private eventHandlers;
options: T;
/**
* layer base for g2plot
*/
constructor(props: T);
processOptions(options: any): void;
updateConfig(cfg: Partial<T>): void;
beforeInit(): void;
/**
* init life cycle
*/
init(): void;
afterInit(): void;
/**
* render layer recursively
*/
render(): void;
/**
* clear layer content
*/
clear(): void;
/**
* destroy layer recursively, remove the container of layer
*/
destroy(): void;
/**
* display layer
*/
show(): void;
/**
* hide layer
*/
hide(): void;
/**
* add children layer
* @param layer
*/
addLayer(layer: Layer<any>): void;
/**
* remove children layer
* @param layer
*/
removeLayer(layer: Layer<any>): void;
/**
* update layer's display range
* @param props
* @param recursive whether update children layers or not
*/
updateBBox(props: Range, recursive?: boolean): void;
/**
* update display range according to parent layer's range
*/
updateBBoxByParent(): void;
/**
* get global position of layer
*/
getGlobalPosition(): {
x: number;
y: number;
};
getGlobalBBox(): G.BBox;
getOptions(props: T): T;
eachLayer(cb: (layer: Layer<any>) => void): void;
protected parseEvents(eventParser?: any): void;
private getLayerBBox;
private getLayerRegion;
}