1 |
|
package org.gvsig.publish.impl.mapserver.converters;
|
2 |
|
|
3 |
|
import java.awt.Color;
|
4 |
|
import java.awt.Paint;
|
5 |
|
import java.io.File;
|
6 |
|
|
7 |
|
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
|
8 |
|
import org.gvsig.publish.PublishSymbolConverter;
|
9 |
|
import org.gvsig.publish.PublishSymbolConverterFactory;
|
10 |
|
import org.gvsig.publish.impl.mapserver.MapserverService;
|
11 |
|
import org.gvsig.publish.impl.mapserver.utils.MapServerUtils;
|
12 |
|
import org.gvsig.publish.impl.mapserver.utils.MapserverSymbol;
|
13 |
|
import org.gvsig.publish.mapserver641.AlignEnum;
|
14 |
|
import org.gvsig.publish.mapserver641.Style;
|
15 |
|
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.impl.FSymbol;
|
16 |
|
|
17 |
|
public class FSymbolToMapserverConverter extends ISymbolToMapserverConverter {
|
18 |
|
|
19 |
|
public static class Factory implements PublishSymbolConverterFactory{
|
20 |
|
|
21 |
|
public String getName() {
|
22 |
|
return MapserverService.NAME;
|
23 |
|
}
|
24 |
|
|
25 |
|
public int canConvert(ISymbol symbol) {
|
26 |
|
if(!(symbol instanceof FSymbol)){
|
27 |
|
return 0;
|
28 |
|
}
|
29 |
|
return 100;
|
30 |
|
}
|
31 |
|
|
32 |
|
public PublishSymbolConverter createConverter(ISymbol symbol) {
|
33 |
|
return new FSymbolToMapserverConverter();
|
34 |
|
}
|
35 |
|
|
36 |
|
}
|
37 |
|
|
38 |
|
|
39 |
|
@Override
|
40 |
|
public MapserverSymbol convert(ISymbol symbol, MapserverSymbol tempSymbol) {
|
41 |
|
MapserverSymbol s = super.convert(symbol, tempSymbol);
|
42 |
|
|
43 |
|
if(symbol instanceof FSymbol){
|
44 |
|
FSymbol fSym = (FSymbol) symbol;
|
45 |
|
if(s.getStyle() != null){
|
46 |
|
for(int i=0; i<s.getStyle().size(); i++){
|
47 |
|
Style st = s.getStyle().get(i);
|
48 |
|
Paint paint = fSym.getFill();
|
49 |
|
if(paint instanceof Color){
|
50 |
|
Color color = (Color) paint;
|
51 |
|
|
52 |
|
st.setColor(MapServerUtils.getRgbColorType(color));
|
53 |
|
st.setOpacity(MapServerUtils.getOpacity(color.getAlpha()));
|
54 |
|
}
|
55 |
|
st.setOutlineColor(MapServerUtils.getRgbColorType(fSym.getOutlineColor()));
|
56 |
|
st.setAngle(""+fSym.getRotation());
|
57 |
|
st.setSize(fSym.getSize()+"");
|
58 |
|
}
|
59 |
|
}
|
60 |
|
|
61 |
|
if(fSym.getFont() != null){
|
62 |
|
s.getLabel().setFont(fSym.getFont().getName());
|
63 |
|
}
|
64 |
|
s.getLabel().setAlign(getCorrectAlignEnum(fSym.getAlingHoriz()));
|
65 |
|
s.getLabel().setColor(MapServerUtils.getRgbColorType(fSym.getColor()));
|
66 |
|
s.getLabel().setSize(fSym.getFontSize()+"");
|
67 |
|
|
68 |
|
if(fSym.getIconURI() != null){
|
69 |
|
s.getSymbol().setImage(fSym.getIconURI().getPath().replace(File.separator, "/"));
|
70 |
|
}
|
71 |
|
|
72 |
|
}
|
73 |
|
|
74 |
|
return s;
|
75 |
|
}
|
76 |
|
|
77 |
|
private AlignEnum getCorrectAlignEnum(int align){
|
78 |
|
return AlignEnum.CENTER;
|
79 |
|
}
|
80 |
|
|
81 |
|
}
|