import { Generic } from "cmf.core/src/core";
import * as ng from "@angular/core";
import { ZoomAndPanNavigationService } from "./zoomAndPanNavigationService";
/**
* @What it does
* This directive allows a specific element in the DOM to become panoramic (allowing zoom and pan with the mouse)
*
* @HotToUse
* There must be two Elements. The parent plays the role of the viewport and the child, the role of the paper.
* It will allow to have a panoramic view of the paper. Note that the paper must be much bigger than viewport.
* IMPORTANT: child element must have this attribute: **cmf-core-controls-zoomAndPan-paper**
*
* ## Inputs
*
* ## Outputs
* * `{x: number, y: number}` : **localMousePointChange** - Returns the current local mouse point in the paper
*
* ## Example
*
* Assume this HTML Template
*
* ```html
*
*
* ```
*/
export declare class ZoomAndPan extends Generic implements ng.OnDestroy, ng.AfterViewInit {
private el;
private _ngZone;
private navigationService;
private transformController;
private viewport;
private paper;
private paperInitialWidth;
private paperInitialHeight;
private mouseCurrentX;
private mouseCurrentY;
private dragStartX;
private dragStartY;
private mouseCurrentTransformedX;
private mouseCurrentTransformedY;
private isMousePressed;
private navigationMapCanvas;
private navigationMapCanvasContext;
private paperScreenshot;
private dragSubscription;
private zoomSubscription;
/**
* Local mouse point change
* @event localMousePointChange
*/
localMousePointChange: ng.EventEmitter<{
x: number;
y: number;
}>;
/**
* Constructor
*/
constructor(el: ng.ElementRef, _ngZone: ng.NgZone, navigationService: ZoomAndPanNavigationService);
/**
* Fix transformations to fit paper in viewport
*/
private fixTransform;
/**
* Get viewport center
*/
private getViewportCenter;
/**
* Get mouse coordinates
*/
private getMouseCoordinates;
/**
* On mouse wheel
* @param {MouseEvent} event
*/
private mouseWheel;
/**
* On mouse move
* @param {MouseEvent} event
*/
private mouseMove;
/**
* On mouse down
* @param {MouseEvent} event
*/
private mouseDown;
/**
* On mouse up
* @param {MouseEvent} event
*/
private mouseUp;
/**
* Zoom from service
*/
private zoomFromService;
/**
* Drag from service
*/
private dragFromService;
/**
* Zoom
* @param {number} amount
*/
private setZoom;
/**
* Drag by
* @param {number} x
* @param {number} y
*/
private drag;
/**
* Update paper
*/
private updatePaper;
/**
* Update navigation map
*/
private updateNavigationMap;
/**
* Update screenshot of paper
*/
updatePaperScreenshot(screenshotURL: string): void;
/**
* Get local mouse coordinates
*/
getLocalMouseCoordinates(event: any): {
x: number;
y: number;
};
/**
* Set transform
*/
setTransform(matrix: number[]): void;
/**
* Get transform
*/
getTransform(): number[];
/**
* Refresh size
*/
refreshSize(): void;
/**
* Zoom in from viewport center
*/
zoomIn(amount?: number): void;
/**
* Zoom out from viewport center
*/
zoomOut(amount?: number): void;
/**
* Fit to viewport
*/
fitToViewport(getContentBBox: () => {
x: number;
y: number;
width: number;
height: number;
}): void;
/**
* On component destruction - unsubscribe event.
*/
ngOnDestroy(): void;
/**
* After view init
*/
ngAfterViewInit(): void;
}
export declare class ZoomAndPanModule {
}