view java/src/uk/ac/qmul/eecs/ccmi/gui/LineStyle.java @ 3:9e67171477bc

PHANTOM Omni Heptic device release
author Fiore Martin <fiore@eecs.qmul.ac.uk>
date Wed, 25 Apr 2012 17:09:09 +0100
parents 9418ab7b7f3f
children d66dd5880081
line wrap: on
line source
/*  
 CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool
  
 Copyright (C) 2011  Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/)

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package uk.ac.qmul.eecs.ccmi.gui;

import java.awt.BasicStroke;
import java.awt.Stroke;

/**
 * Defines the possible values for the stroke of lines painted on the graph when drawing an {@link Edge}. 
 * It can be <i>Solid</i>, <i>Dotted</i> or <i>Dashed</i>.
 *
 */
public enum LineStyle {
	Solid(new BasicStroke(),0xFFFF),
	Dotted(new BasicStroke(1.0f, 
			BasicStroke.CAP_ROUND, 
			BasicStroke.JOIN_ROUND, 
			0.0f, 
			new float[]{1.0f,3.0f}, 
			0.0f),0xF0F0),
	Dashed(new BasicStroke(1.0f, 
			BasicStroke.CAP_ROUND, 
			BasicStroke.JOIN_ROUND, 
			0.0f, 
			new float[]{5.0f,5.0f}, 
			0.0f),0xAAAA);
	
	private LineStyle(BasicStroke stroke, int stipplePattern){
		this.stroke = stroke;
		this.stipplePattern = stipplePattern;
	}

	/**
	 * returns the stroke of this line style. The stroke is used to paint 
	 * the edge that has this line style on a graphics.  
	 *  
	 * @return the stroke for this line style
	 */
	public Stroke getStroke(){
		return stroke;
	}
	
	/**
	 * Returns an a bit representation of the stippling of this edge. 
	 * This value can be used by openGL like libraries to draw the edge and it's used by 
	 * the OmniHaptic device native code to paint the edge visually and haptically.  
	 * See also {@link http://www.opengl.org/sdk/docs/man/xhtml/glLineStipple.xml}
	 *
	 * 
	 * @return an int with the bit representation of the stipple pattern
	 */
	public int getStipplePattern(){
		return stipplePattern;
	}
	
	private Stroke stroke;
	private int stipplePattern; 
}