import Scale from '../scale/Scale.js';
|
import { AxisBaseModel } from './AxisBaseModel.js';
|
import { ScaleDataValue } from '../util/types.js';
|
export interface ScaleRawExtentResult {
|
readonly min: number;
|
readonly max: number;
|
readonly minFixed: boolean;
|
readonly maxFixed: boolean;
|
readonly isBlank: boolean;
|
}
|
export declare class ScaleRawExtentInfo {
|
private _needCrossZero;
|
private _isOrdinal;
|
private _axisDataLen;
|
private _boundaryGapInner;
|
private _modelMinRaw;
|
private _modelMaxRaw;
|
private _modelMinNum;
|
private _modelMaxNum;
|
private _dataMin;
|
private _dataMax;
|
private _determinedMin;
|
private _determinedMax;
|
readonly frozen: boolean;
|
constructor(scale: Scale, model: AxisBaseModel, originalExtent: number[]);
|
/**
|
* Parameters depending on ouside (like model, user callback)
|
* are prepared and fixed here.
|
*/
|
private _prepareParams;
|
/**
|
* Calculate extent by prepared parameters.
|
* This method has no external dependency and can be called duplicatedly,
|
* getting the same result.
|
* If parameters changed, should call this method to recalcuate.
|
*/
|
calculate(): ScaleRawExtentResult;
|
modifyDataMinMax(minMaxName: 'min' | 'max', val: number): void;
|
setDeterminedMinMax(minMaxName: 'min' | 'max', val: number): void;
|
freeze(): void;
|
}
|
/**
|
* Get scale min max and related info only depends on model settings.
|
* This method can be called after coordinate system created.
|
* For example, in data processing stage.
|
*
|
* Scale extent info probably be required multiple times during a workflow.
|
* For example:
|
* (1) `dataZoom` depends it to get the axis extent in "100%" state.
|
* (2) `processor/extentCalculator` depends it to make sure whether axis extent is specified.
|
* (3) `coordSys.update` use it to finally decide the scale extent.
|
* But the callback of `min`/`max` should not be called multiple times.
|
* The code below should not be implemented repeatedly either.
|
* So we cache the result in the scale instance, which will be recreated at the begining
|
* of the workflow (because `scale` instance will be recreated each round of the workflow).
|
*/
|
export declare function ensureScaleRawExtentInfo(scale: Scale, model: AxisBaseModel, originalExtent: number[]): ScaleRawExtentInfo;
|
export declare function parseAxisModelMinMax(scale: Scale, minMax: ScaleDataValue): number;
|