Revision 20024 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/core/symbols/MultiLayerMarkerSymbol.java
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