package edu.ucdavis.cstars.client.symbol;
import com.google.gwt.core.client.JavaScriptObject;
import edu.ucdavis.cstars.client.dojo.Color;
/**
* Line symbols are used to draw linear features on the graphics layer. CartographicLineSymbol, like SimpleLineSymbol,
* is either a solid line or a predefined pattern of dashes and dots. Line joins and line caps can be added to further
* define the line symbol.
*
* @author Justin Merz
*/
public class CartographicLineSymbol extends SimpleLineSymbol {
public static enum CapType {
NOT_SET(""),
CAP_BUTT("butt"),
CAP_SQUARE("round"),
CAP_ROUND("square");
private String val;
private CapType(String value){
val = value;
}
public String getValue(){
return val;
}
}
public static enum JoinType {
NOT_SET(""),
JOIN_BUTT("bevel"),
JOIN_SQUARE("miter"),
JOIN_ROUND("round");
private String val;
private JoinType(String value){
val = value;
}
public String getValue(){
return val;
}
}
protected CartographicLineSymbol() {}
/**
* Creates a new empty CartographicLineSymbol object.
*
* @return CartographicLineSymbol
*/
public static native CartographicLineSymbol create() /*-{
return new $wnd.esri.symbol.CartographicLineSymbol();
}-*/;
/**
* Creates a new CartographicLineSymbol object using a JSON object.
*
* @param json - JSON object representing the CartographicLineSymbol.
* @return CartographicLineSymbol
*/
public static native CartographicLineSymbol create(JavaScriptObject json) /*-{
return new $wnd.esri.symbol.CartographicLineSymbol(json);
}-*/;
/**
* Creates a new CartographicLineSymbol object with parameters.
*
* @param style - symbol style
* @param color - symbol color
* @param width - Width of line in pixels.
* @param cap - Line cap.
* @param join - Line join.
* @param miterLimit - Size threshold for showing mitered line joins.
* @return CartographicLineSymbol
*/
public static CartographicLineSymbol create(StyleType style, Color color, int width, CapType cap, JoinType join,int miterLimit ) {
return _create(style.getValue(), color, width, cap.getValue(), join.getValue(), miterLimit);
}
private static native CartographicLineSymbol _create(String style, Color color, int width, String cap, String join, int miterLimit) /*-{
return new $wnd.esri.symbol.CartographicLineSymbol(style, color, width, cap, join, miterLimit);
}-*/;
/**
* The cap style. The default value is CAP_BUTT.
*
* @return CapType
*/
public final CapType getCap() {
String c = _getCap();
for( int i = 0 ; i < CapType.values().length; i++ ){
if( CapType.values()[i].getValue().contentEquals(c) )
return CapType.values()[i];
}
return CapType.NOT_SET;
};
private final native String _getCap() /*-{
return this.cap;
}-*/;
/**
* The join style. The default value is JOIN_MITER.
*
* @return JoinType
*/
public final JoinType getJoin() {
String j = _getJoin();
for( int i = 0 ; i < JoinType.values().length; i++ ){
if( JoinType.values()[i].getValue().contentEquals(j) )
return JoinType.values()[i];
}
return JoinType.NOT_SET;
};
private final native String _getJoin() /*-{
return this.join;
}-*/;
/**
* Size threshold for showing mitered line joins.
*
* @return int
*/
public final native int getMiterLimit() /*-{
return this.miterLimit;
}-*/;
/**
* Sets the cap style.
*
* @param cap - Cap style.
* @return CartographicLineSymbol
*/
public final CartographicLineSymbol setCap(CapType cap) {
return _setCap(cap.getValue());
};
private final native CartographicLineSymbol _setCap(String cap) /*-{
return this.setCap(cap);
}-*/;
/**
* Sets the join style.
*
* @param join - Join style.
* @return CartographicLineSymbol
*/
public final CartographicLineSymbol setJoin(JoinType join) {
return _setJoin(join.getValue());
};
private final native CartographicLineSymbol _setJoin(String join) /*-{
return this.setCap(cap);
}-*/;
/**
* Sets the size threshold for showing mitered line joins.
*
* @param miterLimit - Miter limit.
* @return CartographicLineSymbol
*/
public final native CartographicLineSymbol setMiterLimit(int miterLimit) /*-{
return this.setMiterLimit(cap);
}-*/;
}