ketcher-core
Version:
Web-based molecule sketcher
95 lines (94 loc) • 4.22 kB
TypeScript
/****************************************************************************
* Copyright 2021 EPAM Systems
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
import { BaseMonomer, Vec2 } from "../../../domain/entities";
import { CoreEditor } from "../internal";
import { BaseTool } from "./Tool";
import { MonomersAlignment } from "./..";
declare class SelectRectangle implements BaseTool {
private editor;
private brush;
private brushArea;
private moveStarted;
private mousePositionAfterMove;
private mousePositionBeforeMove;
private canvasResizeObserver?;
private history;
private previousSelectedEntities;
constructor(editor: CoreEditor);
private createBrush;
private startMoveIfNeeded;
mousedown(event: MouseEvent): void;
static calculateAngleSnap(cursorPosition: Vec2, connectedPosition: Vec2, snapAngle: number, snappedDistance?: number): {
angleSnapPosition: null;
snappedAngleRad?: undefined;
} | {
angleSnapPosition: Vec2;
snappedAngleRad: number;
};
static calculateBondLengthSnap(cursorPosition: Vec2, connectedPosition: Vec2, snappedAngle: number | undefined): {
bondLengthSnapPosition: null;
} | {
bondLengthSnapPosition: Vec2;
};
static determineAlignment(firstPosition: Vec2, secondPosition: Vec2): MonomersAlignment | null;
static checkMonomersAlignment(firstMonomer: BaseMonomer, secondMonomer: BaseMonomer, snapAlignment: MonomersAlignment, distance: number): boolean;
static getNextMonomers(currentMonomer: BaseMonomer, visitedMonomers: Set<number>): (BaseMonomer | undefined)[];
static findRemainingAlignedMonomers(startingMonomer: BaseMonomer, initialState: BaseMonomer[], alignment: MonomersAlignment, distance: number): BaseMonomer[];
static calculateSideDistanceSnap(cursorPosition: Vec2, initialMonomer: BaseMonomer, connectedMonomer: BaseMonomer): {
distanceSnapPosition: null;
snapDistance?: undefined;
alignment?: undefined;
alignedMonomers?: undefined;
} | {
snapDistance: number;
distanceSnapPosition: Vec2;
alignment: "horizontal" | "vertical";
alignedMonomers: BaseMonomer[];
};
static calculateInBetweenDistanceSnap(cursorPosition: Vec2, initialMonomer: BaseMonomer, firstConnectedMonomer: BaseMonomer, secondConnectedMonomer: BaseMonomer, alignment: MonomersAlignment): {
distanceSnapPosition: null;
snapDistance?: undefined;
alignment?: undefined;
alignedMonomers?: undefined;
} | {
snapDistance: number;
distanceSnapPosition: Vec2;
alignment: MonomersAlignment;
alignedMonomers: BaseMonomer[];
};
static calculateDistanceSnap(cursorPosition: Vec2, initialMonomer: BaseMonomer, connectedMonomer: BaseMonomer): {
distanceSnapPosition: null;
snapDistance?: undefined;
alignment?: undefined;
alignedMonomers?: undefined;
} | {
snapDistance: number;
distanceSnapPosition: Vec2;
alignment: "horizontal" | "vertical";
alignedMonomers: BaseMonomer[];
};
private tryToSnap;
mousemove(event: MouseEvent): void;
mouseup(event: MouseEvent): void;
mouseOverDrawingEntity(event: any): void;
mouseLeaveDrawingEntity(event: any): void;
mouseOverPolymerBond(event: any): void;
mouseLeavePolymerBond(event: any): void;
setSelectedEntities(): void;
destroy(): void;
stopMovement(): void;
}
export { SelectRectangle };