Revision 47476 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/symbol/marker/impl/ArrowMarkerSymbol.java

View differences:

ArrowMarkerSymbol.java
25 25

  
26 26
import java.awt.BasicStroke;
27 27
import java.awt.Graphics2D;
28
import java.awt.Rectangle;
28 29
import java.awt.geom.AffineTransform;
29

  
30 30
import org.gvsig.fmap.dal.feature.Feature;
31 31
import org.gvsig.fmap.geom.Geometry;
32 32
import org.gvsig.fmap.geom.primitive.GeneralPathX;
......
56 56
	private ArrowMarkerSymbol symSel;
57 57
	private double sharpeness;
58 58

  
59
	public ISymbol getSymbolForSelection() {
60
		if (symSel == null) {
61
			//symSel = new ArrowMarkerSymbol();
62
		    symSel = (ArrowMarkerSymbol)this.cloneForSelection();
63
			symSel.setColor(MapContext.getSelectionColor());
64
		}else{
65
		    symSel.setColor(MapContext.getSelectionColor());
66
		}
59
        @Override
60
    public ISymbol getSymbolForSelection() {
61
        if (symSel == null) {
62
            //symSel = new ArrowMarkerSymbol();
63
            symSel = (ArrowMarkerSymbol) this.cloneForSelection();
64
            symSel.setColor(MapContext.getSelectionColor());
65
        } else {
66
            symSel.setColor(MapContext.getSelectionColor());
67
        }
68
        if (symSel instanceof CartographicSupport) {
69
            ((CartographicSupport) symSel).setUnit(this.getUnit());
70
        }
67 71

  
68
		return symSel;
69
	}
72
        return symSel;
73
    }
70 74

  
71 75
	public String getClassName() {
72 76
		return getClass().getName();
......
76 80
	 * To get the sharpeness attribute.It will determine the final form of the arrow
77 81
	 * @return
78 82
	 */
83
        @Override
79 84
	public double getSharpness() {
80 85
		return sharpeness;
81 86
	}
......
85 90
	 * @param sharpeness, the value of the arrow's edge angle IN RADIANS
86 91
	 * @see #getSharpeness()
87 92
	 */
93
        @Override
88 94
	public void setSharpness(double sharpeness) {
89 95
		this.sharpeness = sharpeness;
90 96
	}
91 97

  
92
	public void draw(Graphics2D g, AffineTransform affineTransform,
93
			Geometry geom, Feature feature, Cancellable cancel) {
98
    @Override
99
    public void draw(Graphics2D g, AffineTransform affineTransform, Geometry geom, Feature f, Cancellable cancel, Rectangle r) {
100
        double size_d = getEfectiveSize(f);
101
        size_d = this.getAdjustedSize(r, size_d);
94 102

  
95
		if (geom == null) {
96
			return;
97
		}
103
        if(r != null){
104
            geom = getSampleGeometry(r);
105
        }
106

  
107
        if (geom == null) {
108
            return;
109
        }
98 110
        Point p;
99 111
        try {
100 112
            p = geom.centroid();
101
        } catch(Exception ex) {
113
        } catch (Exception ex) {
102 114
            return;
103
        }        
104
		double radian_half_sharpeness = Math.toRadians(getSharpness()*.5); //
115
        }
116
        double radian_half_sharpeness = Math.toRadians(getSharpness() * .5); //
105 117

  
106
		double size = getSize();
107
		double halfHeight = size * Math.tan(radian_half_sharpeness);
108
		double theta = getRotation();
118
        double halfHeight = size_d * Math.tan(radian_half_sharpeness);
119
        double theta = getRotation();
109 120

  
110
		g.setColor(getColor());
121
        g.setColor(getColor());
111 122

  
112
		g.setStroke(new BasicStroke());
123
        g.setStroke(new BasicStroke());
113 124

  
114
		AffineTransform newAf = (AffineTransform)affineTransform.clone();
125
        AffineTransform newAf = (AffineTransform) affineTransform.clone();
115 126

  
116
		newAf.translate(p.getX(), p.getY());
117
		newAf.rotate(theta);
127
        newAf.translate(p.getX(), p.getY());
128
        newAf.rotate(theta);
118 129

  
119
		GeneralPathX gp = new GeneralPathX();
120
		gp.moveTo(0, 0);
121
		gp.lineTo(size, -halfHeight);
122
		gp.lineTo(size, halfHeight);
123
		gp.closePath();
130
        GeneralPathX gp = new GeneralPathX();
131
        gp.moveTo(0, 0);
132
        gp.lineTo(size_d, -halfHeight);
133
        gp.lineTo(size_d, halfHeight);
134
        gp.closePath();
124 135

  
125
		gp.transform(newAf);
136
        gp.transform(newAf);
126 137

  
127
		g.fill(gp);
128
	}
138
        g.fill(gp);
139
    }
129 140

  
141
        @Override
130 142
	public Object clone() throws CloneNotSupportedException {
131 143
		ArrowMarkerSymbol copy  = (ArrowMarkerSymbol) super.clone();
132 144

  
......
137 149
		return copy;
138 150
	}
139 151

  
152
        @Override
140 153
	public void loadFromState(PersistentState state)
141 154
			throws PersistenceException {
142 155
		// Set parent fill symbol properties
......
146 159
		setSharpness(state.getDouble(FIELD_SHARPNESS));
147 160
	}
148 161

  
162
        @Override
149 163
	public void saveToState(PersistentState state) throws PersistenceException {
150 164
		// Save parent fill symbol properties
151 165
		super.saveToState(state);
......
156 170

  
157 171
	public static class RegisterPersistence implements Callable {
158 172

  
173
                @Override
159 174
		public Object call() throws Exception {
160 175
			PersistenceManager manager = ToolsLocator.getPersistenceManager();
161 176
			if( manager.getDefinition(ARROW_MARKER_SYMBOL_DYNCLASS_NAME)==null ) {

Also available in: Unified diff