Revision 6897
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/RasterExtension.java | ||
---|---|---|
1 | 1 |
package org.gvsig.raster.app.mainplugin; |
2 | 2 |
|
3 |
import java.io.File; |
|
4 |
|
|
3 | 5 |
import org.gvsig.andami.IconThemeHelper; |
6 |
import org.gvsig.andami.PluginsLocator; |
|
4 | 7 |
import org.gvsig.andami.plugins.Extension; |
5 | 8 |
import org.gvsig.fmap.mapcontrol.MapControlLocator; |
6 | 9 |
import org.gvsig.propertypage.PropertiesPageManager; |
10 |
import org.gvsig.tools.dynobject.DynObject; |
|
7 | 11 |
|
8 | 12 |
/** |
9 | 13 |
* @author fdiaz |
... | ... | |
20 | 24 |
@Override |
21 | 25 |
public void initialize() { |
22 | 26 |
registerIcons(); |
27 |
DynObject properties = this.getPlugin().getPluginProperties(); |
|
28 |
File defaultColorTableLibraryPath = (File) properties.getDynValue("defaultColorTableLibraryPath"); |
|
29 |
if(defaultColorTableLibraryPath==null){ |
|
30 |
defaultColorTableLibraryPath = new File(PluginsLocator.getManager().getApplicationHomeFolder(),"colortable"); |
|
31 |
properties.setDynValue("defaultColorTableLibraryPath", defaultColorTableLibraryPath); |
|
32 |
} |
|
23 | 33 |
} |
24 | 34 |
|
25 | 35 |
@Override |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/resources-plugin/plugin-persistence.def | ||
---|---|---|
1 |
<?xml version="1.0"?> |
|
2 |
<!-- |
|
3 |
Definitions of plugin persistence org.gvsig.raster |
|
4 |
--> |
|
5 |
<definitions> |
|
6 |
<version>1.0.0</version> |
|
7 |
<classes> |
|
8 |
<class name="org.gvsig.raster.app.mainplugin"> |
|
9 |
<description>Persistence for the gvSIG raster plugin</description> |
|
10 |
<fields> |
|
11 |
|
|
12 |
<field name="defaultColorTableLibraryPath" type="File" classOfValue="" mandatory="false"> |
|
13 |
<description>Default color table library path</description> |
|
14 |
</field> |
|
15 |
|
|
16 |
</fields> |
|
17 |
</class> |
|
18 |
</classes> |
|
19 |
</definitions> |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.api/src/main/java/org/gvsig/raster/lib/legend/api/RasterLegendManager.java | ||
---|---|---|
4 | 4 |
import java.io.File; |
5 | 5 |
import java.util.List; |
6 | 6 |
|
7 |
import org.apache.commons.lang3.tuple.Pair; |
|
8 |
|
|
7 | 9 |
import org.gvsig.raster.lib.buffer.api.FilterList; |
8 | 10 |
|
9 | 11 |
/** |
... | ... | |
116 | 118 |
* Folder of {@link ColorTable} |
117 | 119 |
* @return List of color tables |
118 | 120 |
*/ |
119 |
public List<ColorTable> getColorTables(File folder);
|
|
121 |
public List<Pair<File,ColorTable>> getColorTables(File folder);
|
|
120 | 122 |
|
121 | 123 |
/** |
122 | 124 |
* Registers {@link ColorTableIOFactory}. |
... | ... | |
188 | 190 |
*/ |
189 | 191 |
public TransparencyRange createTransparencyRange(int[] redRange, int[] greenRange, int[] blueRange, int alpha, boolean isAnd); |
190 | 192 |
|
193 |
/** |
|
194 |
* @param minimum |
|
195 |
* @param maximum |
|
196 |
* @param intervals |
|
197 |
* @param fromColor |
|
198 |
* @param toColor |
|
199 |
* @return |
|
200 |
*/ |
|
201 |
List<ColorTableClass> createListColorTableClasses(double minimum, double maximum, int intervals, Color fromColor, |
|
202 |
Color toColor); |
|
203 |
|
|
204 |
/** |
|
205 |
* @param minimum |
|
206 |
* @param maximum |
|
207 |
* @param intervalSize |
|
208 |
* @param fromColor |
|
209 |
* @param toColor |
|
210 |
* @return |
|
211 |
*/ |
|
212 |
List<ColorTableClass> createListColorTableClasses(double minimum, double maximum, double intervalSize, |
|
213 |
Color fromColor, Color toColor); |
|
214 |
|
|
191 | 215 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.api/src/main/java/org/gvsig/raster/lib/legend/api/ColorTableIOFactory.java | ||
---|---|---|
13 | 13 |
* @return the name |
14 | 14 |
*/ |
15 | 15 |
public String getName(); |
16 |
|
|
16 |
|
|
17 | 17 |
/** |
18 | 18 |
* Return true if factory can create a {@link ColorTableIO} from file |
19 |
*
|
|
20 |
* @param file
|
|
19 |
* |
|
20 |
* @param file |
|
21 | 21 |
* @return True if factory accepts file, otherwise false. |
22 | 22 |
*/ |
23 | 23 |
public boolean accept(File file); |
... | ... | |
27 | 27 |
*/ |
28 | 28 |
public ColorTableIO create(); |
29 | 29 |
|
30 |
/** |
|
31 |
* @return |
|
32 |
*/ |
|
33 |
public String getDefaultExtension(); |
|
30 | 34 |
|
35 |
/** |
|
36 |
* @return |
|
37 |
*/ |
|
38 |
public String getDescription(); |
|
39 |
|
|
31 | 40 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegend.java | ||
---|---|---|
26 | 26 |
import org.gvsig.raster.lib.buffer.api.FilterList; |
27 | 27 |
import org.gvsig.raster.lib.buffer.api.NoData; |
28 | 28 |
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException; |
29 |
import org.gvsig.raster.lib.buffer.api.statistics.Statistics; |
|
30 | 29 |
import org.gvsig.raster.lib.legend.api.ColorInterpretation; |
31 | 30 |
import org.gvsig.raster.lib.legend.api.ColorTable; |
32 | 31 |
import org.gvsig.raster.lib.legend.api.RasterLegend; |
... | ... | |
38 | 37 |
import org.gvsig.tools.persistence.PersistenceManager; |
39 | 38 |
import org.gvsig.tools.persistence.PersistentState; |
40 | 39 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
40 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
41 | 41 |
import org.gvsig.tools.task.SimpleTaskStatus; |
42 | 42 |
import org.gvsig.tools.task.TaskStatusManager; |
43 | 43 |
|
... | ... | |
331 | 331 |
BufferedImage image = null; |
332 | 332 |
|
333 | 333 |
if (colorInterpretation.isRGB() || colorInterpretation.isRGBA() || colorInterpretation.hasAnyRGBBand()) { |
334 |
image = |
|
335 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), |
|
334 |
image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(), |
|
336 | 335 |
BufferedImage.TYPE_INT_ARGB); |
337 | 336 |
} else if (colorInterpretation.isBGR()) { |
338 |
image = |
|
339 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), BufferedImage.TYPE_INT_BGR);
|
|
337 |
image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(),
|
|
338 |
BufferedImage.TYPE_INT_BGR); |
|
340 | 339 |
} |
341 | 340 |
|
342 | 341 |
if (image == null) { |
... | ... | |
677 | 676 |
|
678 | 677 |
BufferedImage image = null; |
679 | 678 |
|
680 |
image = |
|
681 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), |
|
682 |
BufferedImage.TYPE_INT_ARGB); |
|
679 |
image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(), |
|
680 |
BufferedImage.TYPE_INT_ARGB); |
|
683 | 681 |
|
684 | 682 |
int hueBandIndex = colorInterpretation.getBand(ColorInterpretation.HUE_BAND); |
685 | 683 |
int saturationBandIndex = colorInterpretation.getBand(ColorInterpretation.SATURATION_BAND); |
... | ... | |
735 | 733 |
|
736 | 734 |
BufferedImage image = null; |
737 | 735 |
|
738 |
image = |
|
739 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), |
|
740 |
BufferedImage.TYPE_INT_ARGB); |
|
736 |
image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(), |
|
737 |
BufferedImage.TYPE_INT_ARGB); |
|
741 | 738 |
|
742 | 739 |
int cyanBandIndex = colorInterpretation.getBand(ColorInterpretation.CYAN_BAND); |
743 | 740 |
int magentaBandIndex = colorInterpretation.getBand(ColorInterpretation.MAGENTA_BAND); |
... | ... | |
802 | 799 |
|
803 | 800 |
BufferedImage image = null; |
804 | 801 |
|
805 |
image = |
|
806 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), |
|
807 |
BufferedImage.TYPE_INT_ARGB); |
|
802 |
image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(), |
|
803 |
BufferedImage.TYPE_INT_ARGB); |
|
808 | 804 |
|
809 | 805 |
int yIndex = colorInterpretation.getBand(ColorInterpretation.YCBCR_Y_BAND); |
810 | 806 |
int cbBandIndex = colorInterpretation.getBand(ColorInterpretation.YCBCR_CB_BAND); |
... | ... | |
868 | 864 |
|
869 | 865 |
BufferedImage image = null; |
870 | 866 |
|
871 |
image = |
|
872 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), BufferedImage.TYPE_INT_ARGB);
|
|
867 |
image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(),
|
|
868 |
BufferedImage.TYPE_INT_ARGB); |
|
873 | 869 |
|
874 | 870 |
Band greyBand = buffer.getBand(0); |
875 | 871 |
|
876 |
Statistics statistics = buffer.getStatistics(null); |
|
872 |
// Statistics statistics = buffer.getStatistics(null);
|
|
877 | 873 |
// double maximum = statistics.getMaximun();// ver drawRGBBuffer |
878 | 874 |
// double minimum = statistics.getMinimun(); |
879 | 875 |
|
... | ... | |
930 | 926 |
private Image drawPaletteBuffer(Graphics graphics, Buffer buffer, ColorTable colorTable, |
931 | 927 |
Transparency transparency, FilterList filters) { |
932 | 928 |
|
933 |
BufferedImage image = |
|
934 |
new BufferedImage(buffer.getColumns(), buffer.getRows(), BufferedImage.TYPE_INT_ARGB);
|
|
929 |
BufferedImage image = ToolsSwingLocator.getToolsSwingManager().createBufferedImage(buffer.getColumns(), buffer.getRows(),
|
|
930 |
BufferedImage.TYPE_INT_ARGB); |
|
935 | 931 |
|
936 | 932 |
for (int i = 0; i < buffer.getRows(); i++) { |
937 | 933 |
for (int j = 0; j < buffer.getColumns(); j++) { |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/io/GimpGradientColorTableIOFactory.java | ||
---|---|---|
3 | 3 |
import java.io.File; |
4 | 4 |
|
5 | 5 |
import org.apache.commons.io.FilenameUtils; |
6 |
|
|
6 | 7 |
import org.gvsig.raster.lib.legend.api.ColorTableIO; |
7 | 8 |
import org.gvsig.raster.lib.legend.api.ColorTableIOFactory; |
8 | 9 |
|
9 | 10 |
/** |
10 | 11 |
* Factory to create {@link GimpGradientColorTableIO}. |
11 |
*
|
|
12 |
* |
|
12 | 13 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
13 | 14 |
* |
14 | 15 |
*/ |
15 | 16 |
public class GimpGradientColorTableIOFactory implements ColorTableIOFactory { |
16 | 17 |
|
18 |
public static final String DESCRIPTION = "Gimp Gradient"; |
|
19 |
public static final String DEFAULT_EXTENSION = "ggr"; |
|
20 |
|
|
17 | 21 |
@Override |
18 | 22 |
public String getName() { |
19 | 23 |
return GimpGradientColorTableIO.NAME; |
... | ... | |
32 | 36 |
} |
33 | 37 |
|
34 | 38 |
String extension = FilenameUtils.getExtension(file.getAbsolutePath()); |
35 |
if (extension.equalsIgnoreCase("ggr")) {
|
|
39 |
if (extension.equalsIgnoreCase(DEFAULT_EXTENSION)) {
|
|
36 | 40 |
return true; |
37 | 41 |
} |
38 | 42 |
|
39 | 43 |
return false; |
40 | 44 |
} |
41 | 45 |
|
46 |
@Override |
|
47 |
public String getDefaultExtension() { |
|
48 |
return DEFAULT_EXTENSION; |
|
49 |
} |
|
50 |
|
|
51 |
@Override |
|
52 |
public String getDescription() { |
|
53 |
return DESCRIPTION; |
|
54 |
} |
|
55 |
|
|
42 | 56 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/io/GimpPaletteColorTableIOFactory.java | ||
---|---|---|
3 | 3 |
import java.io.File; |
4 | 4 |
|
5 | 5 |
import org.apache.commons.io.FilenameUtils; |
6 |
|
|
6 | 7 |
import org.gvsig.raster.lib.legend.api.ColorTableIO; |
7 | 8 |
import org.gvsig.raster.lib.legend.api.ColorTableIOFactory; |
8 | 9 |
|
9 | 10 |
|
10 | 11 |
/** |
11 | 12 |
* Factory to create instances of {@link GimpPaletteColorTableIO}. |
12 |
*
|
|
13 |
* |
|
13 | 14 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
14 | 15 |
* |
15 | 16 |
*/ |
16 | 17 |
public class GimpPaletteColorTableIOFactory implements ColorTableIOFactory { |
17 |
|
|
18 |
|
|
19 |
private static final String DEFAULT_EXTENSION = "gpl"; |
|
20 |
private static final String DESCRIPTION = "Gimp Palette"; |
|
21 |
|
|
18 | 22 |
@Override |
19 | 23 |
public String getName() { |
20 | 24 |
return GimpPaletteColorTableIO.NAME; |
... | ... | |
40 | 44 |
return false; |
41 | 45 |
} |
42 | 46 |
|
47 |
@Override |
|
48 |
public String getDefaultExtension() { |
|
49 |
return DEFAULT_EXTENSION; |
|
50 |
} |
|
51 |
|
|
52 |
@Override |
|
53 |
public String getDescription() { |
|
54 |
return DESCRIPTION; |
|
55 |
} |
|
56 |
|
|
43 | 57 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/io/gvSIGColorTableIOFactory.java | ||
---|---|---|
3 | 3 |
import java.io.File; |
4 | 4 |
|
5 | 5 |
import org.apache.commons.io.FilenameUtils; |
6 |
|
|
6 | 7 |
import org.gvsig.raster.lib.legend.api.ColorTableIO; |
7 | 8 |
import org.gvsig.raster.lib.legend.api.ColorTableIOFactory; |
8 | 9 |
|
9 | 10 |
/** |
10 | 11 |
* Factory to create instances of {@link gvSIGColorTableIO}. |
11 |
*
|
|
12 |
* |
|
12 | 13 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
13 | 14 |
* |
14 | 15 |
*/ |
15 | 16 |
public class gvSIGColorTableIOFactory implements ColorTableIOFactory { |
16 | 17 |
|
18 |
private static final String DEFAULT_EXTENSION = "xml"; |
|
19 |
private static final String DESCRIPTION = "gvSIG Color Table"; |
|
20 |
|
|
17 | 21 |
@Override |
18 | 22 |
public String getName() { |
19 | 23 |
return gvSIGColorTableIO.NAME; |
... | ... | |
37 | 41 |
} |
38 | 42 |
return false; |
39 | 43 |
} |
44 |
|
|
45 |
@Override |
|
46 |
public String getDefaultExtension() { |
|
47 |
return DEFAULT_EXTENSION; |
|
48 |
} |
|
49 |
|
|
50 |
@Override |
|
51 |
public String getDescription() { |
|
52 |
return DESCRIPTION; |
|
53 |
} |
|
40 | 54 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegendManager.java | ||
---|---|---|
19 | 19 |
import org.gvsig.raster.lib.legend.api.Transparency; |
20 | 20 |
import org.gvsig.raster.lib.legend.api.TransparencyRange; |
21 | 21 |
import org.gvsig.raster.lib.legend.impl.io.gvSIGColorTableIO; |
22 |
|
|
23 |
import org.apache.commons.lang3.tuple.ImmutablePair; |
|
24 |
import org.apache.commons.lang3.tuple.Pair; |
|
22 | 25 |
import org.slf4j.Logger; |
23 | 26 |
import org.slf4j.LoggerFactory; |
24 | 27 |
|
... | ... | |
52 | 55 |
} |
53 | 56 |
|
54 | 57 |
@Override |
55 |
public List<ColorTable> getColorTables(File folder) {
|
|
58 |
public List<Pair<File, ColorTable>> getColorTables(File folder) {
|
|
56 | 59 |
|
57 | 60 |
if (folder.isFile()) { |
58 | 61 |
throw new IllegalArgumentException("File object has to be a directory"); |
... | ... | |
63 | 66 |
"It is necessary read permissions to get files and load color tables"); |
64 | 67 |
} |
65 | 68 |
|
66 |
List<ColorTable> colorTables = new ArrayList<ColorTable>();
|
|
69 |
List<Pair<File, ColorTable>> colorTables = new ArrayList<Pair<File, ColorTable>>();
|
|
67 | 70 |
for (File file : listFilesForFolder(folder)) { |
68 | 71 |
|
69 | 72 |
Collection<ColorTableIOFactory> factories = this.colorTableIOFactories.values(); |
... | ... | |
73 | 76 |
ColorTableIO colorTableIO = colorTableIOFactory.create(); |
74 | 77 |
try{ |
75 | 78 |
ColorTable colorTable = colorTableIO.read(file); |
76 |
colorTables.add(colorTable);
|
|
79 |
colorTables.add(new ImmutablePair<File, ColorTable>(file,colorTable));
|
|
77 | 80 |
break; |
78 | 81 |
} catch (Exception e){ |
79 | 82 |
// Log warn but continue reading files. |
... | ... | |
112 | 115 |
} |
113 | 116 |
|
114 | 117 |
@Override |
118 |
public List<ColorTableClass> createListColorTableClasses(double minimum, double maximum, int intervals, Color fromColor, Color toColor){ |
|
119 |
double intervalSize = (maximum-minimum)/intervals; |
|
120 |
return createListColorTableClasses(minimum, maximum, intervalSize, fromColor, toColor); |
|
121 |
|
|
122 |
} |
|
123 |
|
|
124 |
@Override |
|
125 |
public List<ColorTableClass> createListColorTableClasses(double minimum, double maximum, double intervalSize, Color fromColor, Color toColor){ |
|
126 |
List<ColorTableClass> colorTableClasses = new ArrayList<ColorTableClass>(); |
|
127 |
|
|
128 |
int counter = 0; |
|
129 |
double value = minimum; |
|
130 |
|
|
131 |
Color color = fromColor; |
|
132 |
while(value<maximum){ |
|
133 |
double proportion = (value-minimum)/(maximum-minimum); |
|
134 |
color = getInterpolatedColor(fromColor, toColor, proportion); |
|
135 |
ColorTableClass colorTableClass = this.createColorTableClass(new Integer(counter).toString(), value, 50.0, color); |
|
136 |
colorTableClasses.add(colorTableClass); |
|
137 |
value = value + intervalSize; |
|
138 |
counter++; |
|
139 |
} |
|
140 |
value = maximum; |
|
141 |
ColorTableClass colorTableClass = this.createColorTableClass(new Integer(counter).toString(), value, 50.0, toColor); |
|
142 |
colorTableClasses.add(colorTableClass); |
|
143 |
|
|
144 |
return colorTableClasses; |
|
145 |
} |
|
146 |
|
|
147 |
private Color getInterpolatedColor(Color fromColor, Color toColor, double proportion){ |
|
148 |
int red = fromColor.getRed(); |
|
149 |
int green = fromColor.getGreen(); |
|
150 |
int blue = fromColor.getBlue(); |
|
151 |
int alpha = fromColor.getAlpha(); |
|
152 |
|
|
153 |
int rangeRed = toColor.getRed()-fromColor.getRed(); |
|
154 |
red = (int)Math.round(fromColor.getRed()+(rangeRed*proportion)); |
|
155 |
|
|
156 |
int rangeGreen = toColor.getGreen()-fromColor.getGreen(); |
|
157 |
green = (int)Math.round(fromColor.getGreen()+(rangeGreen*proportion)); |
|
158 |
|
|
159 |
int rangeBlue = toColor.getBlue()-fromColor.getBlue(); |
|
160 |
blue = (int)Math.round(fromColor.getBlue()+(rangeBlue*proportion)); |
|
161 |
|
|
162 |
int rangeAlpha = toColor.getAlpha()-fromColor.getAlpha(); |
|
163 |
alpha = (int)Math.round(fromColor.getAlpha()+(rangeAlpha*proportion)); |
|
164 |
|
|
165 |
return new Color(red, green, blue, alpha); |
|
166 |
} |
|
167 |
|
|
168 |
@Override |
|
115 | 169 |
public ColorTableIO getColorTableIO() { |
116 | 170 |
ColorTableIOFactory defaultFactory = this.colorTableIOFactories.get(gvSIGColorTableIO.NAME); |
117 | 171 |
if (defaultFactory == null) { |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/pom.xml | ||
---|---|---|
48 | 48 |
<artifactId>org.gvsig.proj.lib.proj4j</artifactId> |
49 | 49 |
<scope>test</scope> |
50 | 50 |
</dependency> |
51 |
<dependency> |
|
52 |
<groupId>org.gvsig</groupId> |
|
53 |
<artifactId>org.gvsig.tools.swing.api</artifactId> |
|
54 |
</dependency> |
|
51 | 55 |
</dependencies> |
52 | 56 |
</project> |
Also available in: Unified diff