import GlobalModel from '../model/Global.js';
|
import { ParsedModelFinder } from '../util/model.js';
|
import ExtensionAPI from '../core/ExtensionAPI.js';
|
import { DimensionDefinitionLoose, ScaleDataValue, DimensionName } from '../util/types.js';
|
import Axis from './Axis.js';
|
import { BoundingRect } from '../util/graphic.js';
|
import { MatrixArray } from 'zrender/lib/core/matrix.js';
|
import ComponentModel from '../model/Component.js';
|
import { RectLike } from 'zrender/lib/core/BoundingRect.js';
|
import type { PrepareCustomInfo } from '../chart/custom/CustomSeries.js';
|
export interface CoordinateSystemCreator {
|
create: (ecModel: GlobalModel, api: ExtensionAPI) => CoordinateSystemMaster[];
|
dimensions?: DimensionName[];
|
getDimensionsInfo?: () => DimensionDefinitionLoose[];
|
}
|
/**
|
* The instance get from `CoordinateSystemManger` is `CoordinateSystemMaster`.
|
*/
|
export interface CoordinateSystemMaster {
|
dimensions: DimensionName[];
|
model?: ComponentModel;
|
update?: (ecModel: GlobalModel, api: ExtensionAPI) => void;
|
convertToPixel?(ecModel: GlobalModel, finder: ParsedModelFinder, value: ScaleDataValue | ScaleDataValue[]): number | number[];
|
convertFromPixel?(ecModel: GlobalModel, finder: ParsedModelFinder, pixelValue: number | number[]): number | number[];
|
containPoint(point: number[]): boolean;
|
getAxes?: () => Axis[];
|
axisPointerEnabled?: boolean;
|
getTooltipAxes?: (dim: DimensionName | 'auto') => {
|
baseAxes: Axis[];
|
otherAxes: Axis[];
|
};
|
/**
|
* Get layout rect or coordinate system
|
*/
|
getRect?: () => RectLike;
|
}
|
/**
|
* For example: cartesian is CoordinateSystem.
|
* series.coordinateSystem is CoordinateSystem.
|
*/
|
export interface CoordinateSystem {
|
type: string;
|
/**
|
* Master of coordinate system. For example:
|
* Grid is master of cartesian.
|
*/
|
master?: CoordinateSystemMaster;
|
dimensions: DimensionName[];
|
model?: ComponentModel;
|
/**
|
* @param data
|
* @param reserved Defined by the coordinate system itself
|
* @param out
|
* @return {Array.<number>} point Point in global pixel coordinate system.
|
*/
|
dataToPoint(data: ScaleDataValue | ScaleDataValue[], reserved?: any, out?: number[]): number[];
|
/**
|
* Some coord sys (like Parallel) might do not have `pointToData`,
|
* or the meaning of this kind of features is not clear yet.
|
* @param point point Point in global pixel coordinate system.
|
* @param clamp Clamp range
|
* @return data
|
*/
|
pointToData?(point: number[], clamp?: boolean): number | number[];
|
containPoint(point: number[]): boolean;
|
getAxis?: (dim?: DimensionName) => Axis;
|
getBaseAxis?: () => Axis;
|
getOtherAxis?: (baseAxis: Axis) => Axis;
|
clampData?: (data: ScaleDataValue[], out?: number[]) => number[];
|
getRoamTransform?: () => MatrixArray;
|
getArea?: () => CoordinateSystemClipArea;
|
getBoundingRect?: () => BoundingRect;
|
getAxesByScale?: (scaleType: string) => Axis[];
|
prepareCustoms?: PrepareCustomInfo;
|
}
|
/**
|
* Like GridModel, PolarModel, ...
|
*/
|
export interface CoordinateSystemHostModel extends ComponentModel {
|
coordinateSystem?: CoordinateSystemMaster;
|
}
|
/**
|
* Clip area will be returned by getArea of CoordinateSystem.
|
* It is used to clip the graphic elements with the contain methods.
|
*/
|
export interface CoordinateSystemClipArea {
|
contain(x: number, y: number): boolean;
|
}
|
export declare function isCoordinateSystemType<T extends CoordinateSystem, S = T['type']>(coordSys: CoordinateSystem, type: S): coordSys is T;
|