/******************************************************************************** * Copyright (c) 2022-2026 Imixs Software Solutions GmbH. * Copyright (c) 2026 EclipseSource and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * This Source Code may also be made available under the following Secondary * Licenses when the conditions for such availability set forth in the Eclipse * Public License v. 2.0 are satisfied: GNU General Public License, version 2 * with the GNU Classpath Exception which is available at * https://www.gnu.org/software/classpath/license.html. * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ import { IntersectingRoutedPoint, IViewArgs, Point } from '@eclipse-glsp/sprotty'; import { GEdge } from '../model'; import { GEdgeViewWithGapsOnIntersections } from './gedge-view-with-gaps-on-intersections'; /** * Manhattan edge view with rounded bends rendered as quadratic Béziers. * Non-orthogonal inputs render as sharp corners. Radius is clamped per corner; * override {@link cornerRadius} or {@link computeMaxRadius} to tune. * * Inherits gap / line-jump rendering from {@link GEdgeViewWithGapsOnIntersections}. * The rendered line splices intersection fragments between points; the mouse- * handle overlay skips them so the hit area stays contiguous. * * Based on Ralph Soika's `BPMNEdgeView`; see * https://github.com/eclipse-glsp/glsp/discussions/1642. */ export declare class RoundedCornerManhattanEdgeView extends GEdgeViewWithGapsOnIntersections { /** Target corner radius in pixels. The effective radius is clamped per corner. */ protected readonly cornerRadius: number; /** Lower bound for the effective radius, even on very short adjacent segments. */ protected readonly minCornerRadius: number; /** Upper fraction of the shorter adjacent segment to use for the radius. */ protected readonly maxRadiusFactor: number; /** Segment length (px) below which {@link shortSegmentRadiusFactor} tightens the radius further. */ protected readonly shortSegmentThreshold: number; /** Fraction of the shorter adjacent segment to use as the radius below {@link shortSegmentThreshold}. */ protected readonly shortSegmentRadiusFactor: number; protected createPathForSegments(segments: Point[], edge: GEdge, addIntersectionPoints: boolean, args?: IViewArgs): string; /** * Drops intersections inside either endpoint's rounded-corner zone (padded * by the gap's skip-offset). The gap fragment can't be placed there without * drawing backward into the curve on one side, and the crossing is hidden * behind the curve anyway. */ protected filterCornerZoneIntersections(intersectingPoint: IntersectingRoutedPoint, segments: Point[], pointIndex: number): IntersectingRoutedPoint; /** Curve radius at `segments[cornerIndex]`, or 0 for source / target. */ protected getCornerRadius(segments: Point[], cornerIndex: number): number; /** SVG fragment for one rounded corner; falls back to `L` if not a right angle. */ protected renderRoundedCorner(corner: Point, prev: Point, next: Point, radius: number): string; /** Clamps {@link cornerRadius} to a fraction of the shorter adjacent segment. */ protected computeMaxRadius(corner: Point, prev: Point, next: Point): number; } //# sourceMappingURL=rounded-corner-manhattan-edge-view.d.ts.map