Revision 20024 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/core/symbols/MultiLayerMarkerSymbol.java

View differences:

MultiLayerMarkerSymbol.java
106 106

  
107 107
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
108 108
import com.iver.cit.gvsig.fmap.ViewPort;
109
import com.iver.cit.gvsig.fmap.core.FPoint2D;
109 110
import com.iver.cit.gvsig.fmap.core.FShape;
110 111
import com.iver.cit.gvsig.fmap.core.IGeometry;
111 112
import com.iver.cit.gvsig.fmap.core.SymbologyFactory;
......
158 159

  
159 160
	public void setSize(double size) {
160 161
		if (size > 0 && size != getSize()) {
161
			
162

  
162 163
			double scale = size / getSize();
163 164
			super.setSize(size);
164 165
			for (int i = 0; i < layers.length; i++) {
......
169 170
	}
170 171

  
171 172
	public void draw(Graphics2D g, AffineTransform affineTransform, FShape shp, Cancellable cancel) {
173
		FPoint2D p = (FPoint2D) shp;
174
		g.rotate(rotation, p.getX(), p.getY());
172 175
		for (int i = 0; (cancel==null || !cancel.isCanceled()) && i < layers.length; i++) {
173 176
			layers[i].draw(g, affineTransform, shp, cancel);
174 177
		}
178
		g.rotate(-rotation, p.getX(), p.getY());
175 179
	}
176 180

  
177 181
	public void drawInsideRectangle(Graphics2D g, AffineTransform scaleInstance, Rectangle r) throws SymbolDrawingException {
182
		g.rotate(rotation, r.getCenterX(), r.getCenterY());
178 183
		for (int i = 0; i < layers.length; i++) {
179 184
			layers[i].drawInsideRectangle(g, scaleInstance, r);
180 185
		}
186
		g.rotate(-rotation, r.getCenterX(), r.getCenterY());
181 187
	}
182 188

  
183 189
	public int getOnePointRgb() {
......
290 296
		IMarkerSymbol newMarker = (IMarkerSymbol) newLayer;
291 297
		if (getLayerCount() == 0) {
292 298
			// apply the new layer properties to this multilayer
293
			
299

  
294 300
			setReferenceSystem(newMarker.getReferenceSystem());
295 301
			setSize(newMarker.getSize());
296 302
			setUnit(newMarker.getUnit());
......
300 306
			}
301 307
			newMarker.setReferenceSystem(getReferenceSystem());
302 308
			newMarker.setUnit(getUnit());
303
		}		
309
		}
304 310
		selectionSymbol = null; /* forces the selection symbol to be re-created
305 311
		 						 * next time it is required
306 312
		 						 */
......
326 332
		layers = (IMarkerSymbol[])lst.toArray(new IMarkerSymbol[0]);
327 333
		return contains;
328 334
	}
329
	
335

  
330 336
	@Override
331 337
	public void setUnit(int unit) {
332 338
		super.setUnit(unit);
......
360 366
			int r = layers[i].getColor().getRed();
361 367
			int g = layers[i].getColor().getGreen();
362 368
			int b = layers[i].getColor().getBlue();
363
			
369

  
364 370
			if (i!=maxAlphaLayerIndex) {
365 371
				double scaledAlpha = (double) layers[i].getColor().getAlpha()/maxAlpha;
366 372
				int myAlpha = (int) (alpha*scaledAlpha);

Also available in: Unified diff