| /******************************************************************************* |
| * Copyright 2005-2006, CHISEL Group, University of Victoria, Victoria, BC, |
| * Canada. All rights reserved. This program and the accompanying materials are |
| * made available under the terms of the Eclipse Public License v1.0 which |
| * accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: The Chisel Group, University of Victoria |
| *******************************************************************************/ |
| package org.eclipse.zest.core.viewers; |
| |
| /** |
| * An extension to the IEntityConnectinStyleProvider that allows styling |
| * specific to bezier curves. |
| * |
| * Bezier curves are defined by a set of four points: two point in the layout |
| * (start and end), and two related control points (also start and end). The |
| * control points are defined relative to their corresponding layout point. This |
| * definition includes an angle between the layout point and the line between |
| * the two layout points, as well as a ratio distance from the corresponding |
| * layout point. The ratio distance is defined as a fraction between 0 and 1 of |
| * the distance between the two layout points. Using this definition allows |
| * bezier curves to have a consistant look regardless of the actual positions of |
| * the nodes in the layouts. |
| * |
| * @author Del Myers |
| * |
| */ |
| // @tag zest(bug(152530-Bezier(fix))) : users can style bezier curves. |
| interface IEntityConnectionStyleBezierExtension { |
| |
| /** |
| * Gets the angle between the start point, and the line between the start |
| * and end, which will define the position of the start control point. If |
| * the start angle, and the end angle are the same sign, the two control |
| * points are guaranteed to be on the same side of the line. |
| * |
| * @param source |
| * the source node to base on. |
| * @param dest |
| * the destination node to base on. |
| * @return the start angle or <code>Double.NaN</code> for defaults. |
| */ |
| double getStartAngle(Object source, Object dest); |
| |
| /** |
| * Gets the angle between the end point, and the line between the start and |
| * end, which will define the position of the end control point. If the |
| * start angle, and the end angle are the same sign, the two control points |
| * are guaranteed to be on the same side of the line. |
| * |
| * @param source |
| * the source node to base on. |
| * @param dest |
| * the destination node to base on. |
| * @return the end angle or <code>Double.NaN</code> for defaults. |
| */ |
| double getEndAngle(Object source, Object dest); |
| |
| /** |
| * Gets the distance between the start point and the start control point, as |
| * a fraction of the distance between the start point and end point. |
| * |
| * @param source |
| * the source node to base on. |
| * @param dest |
| * the destination node to base on. |
| * @return the start distance or <code>Double.NaN</code> for defaults. |
| */ |
| double getStartDistance(Object source, Object dest); |
| |
| /** |
| * Gets the distance between the end point and the end control point, as a |
| * fraction of the distance between the start point and end point. |
| * |
| * @param source |
| * the source node to base on. |
| * @param dest |
| * the destination node to base on. |
| * @return the end distance or <code>Double.NaN</code> for defaults. |
| */ |
| double getEndDistance(Object source, Object dest); |
| } |