scichart
Version:
Fast WebGL JavaScript Charting Library and Framework
103 lines (102 loc) • 4.05 kB
TypeScript
import { Point } from "../../Core/Point";
import { EChart2DModifierType } from "../../types/ChartModifierType";
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;
}
/**
* 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.
*
* ---
* 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/zooming-and-panning/pinch-zoom-modifier/#includeexclude-certain-axis-from-pinch-zoom}
*/
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;
/**
* touch points X coordinates difference
*/
protected previousHorizontalTouchPointsDistance: number | undefined;
/**
* touch points Y coordinates difference
*/
protected previousVerticalTouchPointsDistance: number | undefined;
/**
* Creates an instance of a PinchZoomModifier
* @param options Optional parameters used to configure the modifier
*
* ---
* 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-modifier-api/zooming-and-panning/pinch-zoom-modifier/#includeexclude-certain-axis-from-pinch-zoom}
*/
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>>;
};
/**
* 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): boolean;
/**
* Handles pointer event becoming inactive
* @param args pointer event properties
*/
protected removeFromActiveTouchEvents(args: ModifierMouseArgs): void;
protected performModifierAction(args: ModifierMouseArgs): boolean | 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
*/
protected getMiddlePoint: (firstPoint: Point, secondPoint: Point) => Point;
}