scichart
Version:
Fast WebGL JavaScript Charting Library and Framework
130 lines (129 loc) • 5.04 kB
TypeScript
import { Point } from "../../Core/Point";
import { EChart2DModifierType } from "../../types/ChartModifierType";
import { AxisBase2D } from "../Visuals/Axis/AxisBase2D";
import { ChartModifierBase2D, IChartModifierBaseOptions } from "./ChartModifierBase2D";
import { ModifierMouseArgs } from "./ModifierMouseArgs";
/**
* Optional parameters used to configure a {@link PinchZoomModifier} at construct time
*/
export interface IPinchZoomModifierOptions extends IChartModifierBaseOptions {
/**
* Defines the sensitivity of zooming in horizontal direction
*/
horizontalGrowFactor?: number;
/**
* Defines the sensitivity of zooming in vertical direction
*/
verticalGrowFactor?: number;
/**
* A list of Ids for X axis to exclude from this modifier
* @remarks Also see {@link ZoomPanModifier.includeXAxis} function which allows you to include or exclude an axis by instance
*/
excludedXAxisIds?: string[];
/**
* A list of Ids for Y axis to exclude from this modifier
* @remarks Also see {@link ZoomPanModifier.includeYAxis} function which allows you to include or exclude an axis by instance
*/
excludedYAxisIds?: string[];
/**
* A list of Ids for X axis to include to this modifier
* @remarks Also see {@link ZoomPanModifier.includeXAxis} function which allows you to include or exclude an axis by instance
*/
includedXAxisIds?: string[];
/**
* A list of Ids for Y axis to include this modifier
* @remarks Also see {@link ZoomPanModifier.includeYAxis} function which allows you to include or exclude an axis by instance
*/
includedYAxisIds?: string[];
}
/**
* The PinchZoomModifier provides ability to zoom by pinch gesture on a 2D {@link SciChartSurface}
* within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
* @remarks
*
* To apply the PinchZoomModifier to a {@link SciChartSurface} and add pinch zoom behavior,
* use the following code:
*
* ```ts
* const sciChartSurface: SciChartSurface;
* sciChartSurface.chartModifiers.add(new PinchZoomModifier());
* ```
*
* It is also necessary to set “touch-action: none” on the chart div element.
*/
export declare class PinchZoomModifier extends ChartModifierBase2D {
readonly type: EChart2DModifierType;
/**
* Defines the sensitivity of zooming in horizontal direction
*/
horizontalGrowFactor: number;
/**
* Defines the sensitivity of zooming in vertical direction
*/
verticalGrowFactor: number;
protected includedXAxisMap: Map<string, boolean>;
protected includedYAxisMap: Map<string, boolean>;
/**
* touch points X coordinates difference
*/
private previousHorizontalTouchPointsDistance;
/**
* touch points Y coordinates difference
*/
private previousVerticalTouchPointsDistance;
/**
* Creates an instance of a PinchZoomModifier
* @param options Optional parameters used to configure the modifier
*/
constructor(options?: IPinchZoomModifierOptions);
/**
* @inheritDoc
*/
modifierMouseDown(args: ModifierMouseArgs): void;
/**
* @inheritDoc
*/
modifierMouseMove(args: ModifierMouseArgs): void;
/**
* @inheritDoc
*/
modifierMouseUp(args: ModifierMouseArgs): void;
/**
* @inheritDoc
*/
modifierPointerCancel(args: ModifierMouseArgs): void;
toJSON(): {
type: string;
options: Required<Omit<IChartModifierBaseOptions, never>>;
};
/** @inheritDoc */
includeXAxis(axis: AxisBase2D, isIncluded: boolean): void;
/** @inheritDoc */
includeYAxis(axis: AxisBase2D, isIncluded: boolean): void;
/** @inheritDoc */
includeAllAxes(): void;
/** @inheritDoc */
getIncludedXAxis(): AxisBase2D[];
/** @inheritDoc */
getIncludedYAxis(): AxisBase2D[];
/**
* Performs the zoom operation around the mouse point
* @param mousePoint The X,Y location of the mouse at the time of the zoom
* @param horizontalPinchDelta horizontal pinch delta
* @param verticalPinchDelta vertical pinch delta
*/
protected performZoom(mousePoint: Point, horizontalPinchDelta: number, verticalPinchDelta: number, horizontalGrowFactor: number, verticalGrowFactor: number): void;
/**
* Handles pointer event becoming inactive
* @param args pointer event properties
*/
protected removeFromActiveTouchEvents(args: ModifierMouseArgs): void;
protected performModifierAction(args: ModifierMouseArgs): void;
protected getIsActionAllowed(args: ModifierMouseArgs): boolean;
/**
* returns a point equidistant to the provided ones
* @param firstPoint the X,Y location of the first active pointer
* @param secondPoint the X,Y location of the second active pointer
*/
private getMiddlePoint;
}