/******************************************************************************* | |
* Copyright (c) 2005, 2012 IBM Corporation and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.bpel.ui.figures; | |
/** | |
* This is a hack to get the vertical connection lines perfectly | |
* straight. Relies on assumption | |
* that vertical lines are sometimes crooked by 1 pixel depending | |
* on the magnification. | |
*/ | |
public class ConnectionCoordHistory { | |
private static ConnectionCoordHistory instance; | |
// x-coord of 1st anchor in aligned vertical parts | |
private static int firstX = 0; | |
// y-coord of 1st anchor in aligned horizontal parts | |
private static int firstY = 0; | |
private ConnectionCoordHistory(){} | |
public static ConnectionCoordHistory getInstance() { | |
if (instance == null) instance = new ConnectionCoordHistory(); | |
return instance; | |
} | |
public int adjustX(int x){ | |
if (firstX ==0 ){ | |
firstX = x; | |
return x; | |
}else if (Math.abs(firstX - x) > 2){ | |
/* assume any anchor point outside 2px of firstX means | |
* that the anchor is at the start of a new container | |
*/ | |
firstX = x; | |
return x; | |
} | |
return firstX; | |
} | |
public int adjustY(int y){ | |
if (firstY ==0 ){ | |
firstY = y; | |
return y; | |
}else if (Math.abs(firstY - y) > 2){ | |
/* assume any anchor point outside 2px of firstY means | |
* that the anchor is at the start of a new container | |
*/ | |
firstY = y; | |
return y; | |
} | |
return firstY; | |
} | |
} |