
org.pathvisio.libgpml.model.shape.ArrowShape Maven / Gradle / Ivy
/*******************************************************************************
* PathVisio, a tool for data visualization and analysis using biological pathways
* Copyright 2006-2022 BiGCaT Bioinformatics, WikiPathways
*
* 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.
******************************************************************************/
package org.pathvisio.libgpml.model.shape;
import java.awt.Shape;
/**
* ArrowShapes determine how the ending of a line can be drawn. These are arrows
* in a broad sense - they could be T-bars for example.
*
* ArrowShapes have a fill type. FillType can be OPEN, CLOSED or WIRE. The
* fillType determines whether the body of the arrow head is filled with the
* foreground color or with the canvas color.
*
* For the outline, the shape returned by getShape() will be used.
* getFillShape() optionally defines a different shape for the body. If there is
* no separate fillShape defined, the same shape is used for the outline and for
* the body.
*
*
open closed wire
|\ #\ \
______| \ ______##\ _____\
| / ##/ /
|/ #/ /
*
*
* @author unknown, finterly
*/
public class ArrowShape {
/**
* Enumerates possible ways to combine the outline and body.
*/
public enum FillType {
/**
* Open fill-type, where the outline is colored with the foreground color and
* the body is colored with the canvas color.
*/
OPEN,
/**
* Closed fill-type, where both the outline and the body are colored with the
* line color.
*/
CLOSED,
/**
* Wire fill-type, there is only an outline.
*/
WIRE
}
/**
* Normally, this constructor is not called directly. Use
* {@link ShapeRegistry#registerShape} instead to define a new ArrowShape.
*/
public ArrowShape(Shape shape, FillType fillType, int gap) {
this.shape = shape;
this.fillType = fillType;
this.gap = gap;
}
/**
* Normally, this constructor is not called directly. Use
* {@link ShapeRegistry#registerShape} instead to define a new ArrowShape.
*/
public ArrowShape(Shape shape, FillType fillType) {
this.shape = shape;
this.fillType = fillType;
}
/**
* @return one of {@link FillType#OPEN}, {@link FillType#CLOSED} or
* {@link FillType#WIRE}
*/
public FillType getFillType() {
return fillType;
}
/**
* @return the outline for this arrow type.
*/
public Shape getShape() {
return shape;
}
/**
* @return the gap at the end of the line, for arrow shapes that should not
* overlap the thing the line is connected with.
*/
public double getGap() {
return (double) gap;
}
private Shape shape;
private FillType fillType;
private int gap = 0;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy