Revision 2333

View differences:

org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.algorithm/src/main/java/org/gvsig/raster/roimask/algorithm/ROIMaskProcess.java
30 30
	public static String      NODATA            = "NoData";
31 31
	public static String      EXPORT            = "Export";
32 32
	
33
	public static String      TEST_EXTENT       = "TestExtent";
34
	public static String      TEST_WIDTH        = "TestWidth";
35
	public static String      TEST_HEIGHT       = "TestHeight";
33
	public static String      TEST              = "Test";
34
	public static String      EXTENT            = "Extent";
35
	public static String      OUTPUT_WIDTH      = "OutputWidth";
36
	public static String      OUTPUT_HEIGHT     = "OutputHeight";
36 37
	
37 38
	private RasterDataStore   store             = null;
38 39
	private String            filename          = null;
39 40
	
40
	private Extent            testExtent        = null;
41
	private int               testWidth         = 0;
42
	private int               testHeight        = 0;
41
	private boolean           test              = false;
42
	private Extent            extent            = null;
43
	private int               outputWidth       = 0;
44
	private int               outputHeight      = 0;
43 45
	private ROI[]             rois              = null;  
44 46
	private boolean           inverse           = false;
45 47
	private boolean           export            = true;
......
54 56
	public static void registerParameters() {
55 57
		registerInputParameter(RASTER_STORE1, RasterDataStore.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
56 58
		registerInputParameter(PATH, String.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
57
		registerInputParameter(TEST_EXTENT, Extent.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
58
		registerInputParameter(TEST_WIDTH, Integer.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
59
		registerInputParameter(TEST_HEIGHT, Integer.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
59
		registerInputParameter(EXTENT, Extent.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
60
		registerInputParameter(TEST, Boolean.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
61
		registerInputParameter(OUTPUT_WIDTH, Integer.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
62
		registerInputParameter(OUTPUT_HEIGHT, Integer.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
60 63
		registerInputParameter(ROIS, ROI[].class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
61 64
		registerInputParameter(INVERSE, Boolean.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
62 65
		registerInputParameter(ALPHA, Integer.class, ROIMaskAlgorithmLibrary.PROCESS_LABEL);
......
74 77
		inverse = getBooleanParam(INVERSE);
75 78
		export = getBooleanParam(EXPORT);
76 79
		alpha = getIntParam(ALPHA);
77
		testExtent = getParam(TEST_EXTENT) != null ? (Extent)getParam(TEST_EXTENT) : null;
78
		testWidth = getIntParam(TEST_WIDTH);
79
		testHeight = getIntParam(TEST_HEIGHT);
80
		test = getBooleanParam(TEST);
81
		extent = getParam(EXTENT) != null ? (Extent)getParam(EXTENT) : null;
82
		outputWidth = getIntParam(OUTPUT_WIDTH);
83
		outputHeight = getIntParam(OUTPUT_HEIGHT);
80 84
		nodata = getParam(NODATA) != null ? (NoData)getParam(NODATA) : null;
81 85
		rois = getParam(ROIS) != null ? (ROI[])getParam(ROIS) : null;
82 86
	}
......
91 95
			int w = (int)store.getWidth();
92 96
			int h = (int)store.getHeight();
93 97
			double cellSize = store.getCellSize();
98
			
94 99
			RasterQuery query = RasterLocator.getManager().createQuery();
95 100
			
96
			if(testExtent != null) {
97
				windowExtent = testExtent;
98
				w = testWidth;
99
				h = testHeight;
100
				cellSize = testExtent.width() / w;
101
			if(extent != null) {
102
				windowExtent = extent;
103
				w = outputWidth;
104
				h = outputHeight;
105
				cellSize = windowExtent.width() / w;
101 106
				query.setSupersamplingOption(true);
107
			} else {
108
				query.setSupersamplingOption(false);
109
			}
110

  
111
			if(test) {
102 112
				query.setReadOnly(false);
103 113
				query.forceRGBRequest();
104 114
				query.setDrawableBands(store.getRender().getRenderColorInterpretation().buildRenderBands());
105 115
			} else {
106 116
				query.setAllDrawableBands();
107
				query.setSupersamplingOption(false);
108 117
				query.setReadOnly(true);
109 118
			}
110 119
			
111
			
112 120
			query.setAreaOfInterest(windowExtent, w, h);
113 121
			Buffer sourceBuffer = null;
114 122
			try {
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.raster.roimask.ROIMaskSextanteLibrary
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources/org/gvsig/raster/roimask/roimask.properties
1
applying_mask=Aplicando m?scara
2
mask_process=Proceso de m?scara
3
mask=M?scara por ROI
4
basic_raster_algorithms=Capas r?ster
5
alpha=Transparencia
6
inverse=Inversa
0 7

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources/org/gvsig/raster/roimask/roimask_en.properties
1
applying_mask=Applying mask
2
mask_process=Mask process
3
mask=ROI mask
4
basic_raster_algorithms=Raster layer
5
alpha=Alpha
6
inverse=Inverse
0 7

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/java/org/gvsig/raster/roimask/ROIMaskSextanteLibrary.java
1
package org.gvsig.raster.roimask;
2

  
3
import org.gvsig.geoprocess.algorithm.base.core.AlgorithmAbstractLibrary;
4
import org.gvsig.i18n.Messages;
5
import org.gvsig.tools.library.LibraryException;
6

  
7
/**
8
 * Initialization of <code>ROIMaskSextanteLibrary</code> library.
9
 */
10
public class ROIMaskSextanteLibrary extends AlgorithmAbstractLibrary {
11

  
12
    @Override
13
    protected void doInitialize() throws LibraryException {
14
        // Nothing to do
15
    }
16

  
17
    @Override
18
    protected void doPostInitialize() throws LibraryException {
19
        Messages.addResourceFamily(
20
            "org.gvsig.raster.roimask.roimask", ROIMaskSextanteLibrary.class
21
                .getClassLoader(), ROIMaskSextanteLibrary.class.getClass().getName());
22
        registerGeoProcess(new ROIMaskSextanteAlgorithm());
23
    }
24

  
25
}
0 26

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/java/org/gvsig/raster/roimask/ROIMaskSextanteAlgorithm.java
1
package org.gvsig.raster.roimask;
2

  
3
import org.gvsig.fmap.dal.coverage.RasterLocator;
4
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
5
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
6
import org.gvsig.fmap.dal.coverage.exception.ROIException;
7
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
8
import org.gvsig.geoprocess.lib.sextante.dataObjects.FLyrRasterIRasterLayer;
9
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
10
import org.gvsig.raster.algorithm.process.DataProcess;
11
import org.gvsig.raster.algorithm.process.ProcessException;
12
import org.gvsig.raster.fmap.layers.FLyrRaster;
13
import org.gvsig.raster.roi.ROI;
14
import org.gvsig.raster.roimask.algorithm.ROIMaskProcess;
15

  
16
import es.unex.sextante.additionalInfo.AdditionalInfoNumericalValue;
17
import es.unex.sextante.core.AnalysisExtent;
18
import es.unex.sextante.core.Sextante;
19
import es.unex.sextante.dataObjects.IRasterLayer;
20
import es.unex.sextante.exceptions.GeoAlgorithmExecutionException;
21
import es.unex.sextante.exceptions.RepeatedParameterNameException;
22

  
23
/**
24
 * ...
25
 */
26
public class ROIMaskSextanteAlgorithm extends AbstractSextanteGeoProcess {
27

  
28
    public static final String RESULT            = "RESULT";
29
    public static final String LAYER             = ROIMaskProcess.RASTER_STORE1;
30
    public static final String ALPHA             = ROIMaskProcess.ALPHA;
31
    public static final String INVERSE           = ROIMaskProcess.INVERSE;
32
    public static final String NODATA            = ROIMaskProcess.NODATA;
33
    
34

  
35
    public void defineCharacteristics() {
36
        setName(getTranslation("mask"));
37
        setGroup(getTranslation("basic_raster_algorithms"));
38
        // setGeneratesUserDefinedRasterOutput(false);
39
       
40
        try {
41
            m_Parameters.addInputRasterLayer(LAYER, getTranslation("Input_layer"), true);
42
            m_Parameters.addNumericalValue(ALPHA, getTranslation("alpha"), 0,
43
                AdditionalInfoNumericalValue.NUMERICAL_VALUE_INTEGER);
44
            m_Parameters.addBoolean(INVERSE, getTranslation("Inverse"), false);
45
        } catch (RepeatedParameterNameException e) {
46
            Sextante.addErrorToLog(e);
47
        }
48
        addOutputRasterLayer(RESULT, getTranslation("mask"));
49
    }
50

  
51
    public boolean processAlgorithm() throws GeoAlgorithmExecutionException {
52

  
53
    	if(existsOutPutFile(ROIMaskSextanteAlgorithm.RESULT, 0)) {
54
    		throw new GeoAlgorithmExecutionException(getTranslation("file_exists"));
55
    	}
56
    	
57
    	IRasterLayer input = m_Parameters.getParameterValueAsRasterLayer(LAYER);
58
    	int alpha = m_Parameters.getParameterValueAsInt(ALPHA);
59
    	boolean inverse = m_Parameters.getParameterValueAsBoolean(INVERSE);
60
    	FLyrRaster lyrRaster = ((FLyrRaster)input.getBaseDataObject());
61
    	ROI[] rois = null;
62
    	IRasterLayer output = null;
63
    	DataProcess task = null;
64
    	AnalysisExtent ext = getAnalysisExtent();
65
    	Extent bbox = RasterLocator.getManager().getDataStructFactory().createExtent(
66
    			ext.getXMin(), ext.getYMax(), ext.getXMax(), ext.getYMin());
67
		try {
68
			output = getNewRORasterLayer(
69
					RESULT, 
70
					Sextante.getText("Mask_image"), 
71
					input.getDataType(), 
72
					input.getBandsCount());
73
			rois = lyrRaster.getRois().toArray(new ROI[lyrRaster.getRois().size()]);
74
			task = RasterBaseAlgorithmLibrary.getManager().createRasterTask("ROIMaskProcess");
75
		} catch (ProcessException e1) {
76
			 Sextante.addErrorToLog(e1);
77
		} catch (ROIException e1) {
78
			 Sextante.addErrorToLog(e1);
79
		}
80
    	
81
    	String fileName = ((FLyrRasterIRasterLayer)output).getFileName(); //getOutPutFile(RESULT);
82
    	task.addParam(ROIMaskProcess.PATH, fileName);
83
		task.addParam(ROIMaskProcess.RASTER_STORE1, lyrRaster.getDataStore());
84
		task.addParam(ROIMaskProcess.ROIS, rois);
85
		task.addParam(ROIMaskProcess.ALPHA, alpha);
86
		task.addParam(ROIMaskProcess.INVERSE, inverse);
87
		task.addParam(ROIMaskProcess.NODATA, lyrRaster.getNoDataValue());
88
		task.addParam(ROIMaskProcess.EXPORT, true);
89
		task.addParam(ROIMaskProcess.EXTENT, bbox);
90
		task.addParam(ROIMaskProcess.OUTPUT_WIDTH, ext.getNX());
91
		task.addParam(ROIMaskProcess.OUTPUT_HEIGHT, ext.getNY());
92
		
93
		try {
94
			task.execute();
95
			((FLyrRasterIRasterLayer)output).setBaseDataObject(fileName);
96
		} catch (ProcessInterruptedException e) {
97
			Sextante.addErrorToLog(e);
98
		} catch (ProcessException e) {
99
			Sextante.addErrorToLog(e);
100
		} 
101

  
102
		if(getTaskMonitor().isCanceled())
103
			return false;
104

  
105
        return true;
106
    }
107
    
108
    /*
109
     * TODO: Customized panels
110
    @Override
111
    public Class<? extends GeoAlgorithmParametersPanel> getCustomParametersPanelClass() {
112
        return BufferParametersPanel.class;
113
    }*/
114
}
0 115

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources-plugin/org/gvsig/raster/roimask/sextante/i18n/text.properties
1
basic_raster_algorithms=Capas raster
2
mask=M?scara por ROI
0 3

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources-plugin/org/gvsig/raster/roimask/sextante/i18n/text_en.properties
1
basic_raster_algorithms=Raster layers
2
mask=ROI mask
0 3

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources-plugin/help/ROIMaskAlgorithm.xml
1
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
2
<help>
3
	<element name="DESCRIPTION"
4
		text=""
5
		description="Descripci&#243;n" type="0">
6
		<image description="" file="">
7
		</image>
8
	</element>
9
	<element name="ADDITIONAL_INFO" text=""
10
		description="Informaci&#243;n adicional" type="0">
11
	</element>
12
	<element name="EXTENSION_AUTHOR" text=""
13
		description="Algoritmo creado por" type="0">
14
	</element>
15
	<element name="HELP_AUTHOR" text="" description="Ayuda creada por"
16
		type="0">
17
	</element>
18
	<element name="USER_NOTES" text="" description="Notas de usuario"
19
		type="0">
20
	</element>
21
</help>
0 22

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/src/main/resources-plugin/help/ROIMaskAlgorithm_en.xml
1
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
2
<help>
3
	<element name="DESCRIPTION"
4
		text=""
5
		description="Descripci&#243;n" type="0">
6
		<image description="" file="">
7
		</image>
8
	</element>
9
	<element name="ADDITIONAL_INFO" text=""
10
		description="Informaci&#243;n adicional" type="0">
11
	</element>
12
	<element name="EXTENSION_AUTHOR" text=""
13
		description="Algoritmo creado por" type="0">
14
	</element>
15
	<element name="HELP_AUTHOR" text="" description="Ayuda creada por"
16
		type="0">
17
	</element>
18
	<element name="USER_NOTES" text="" description="Notas de usuario"
19
		type="0">
20
	</element>
21
</help>
0 22

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.toolbox/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4
		 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5

  
6
	<modelVersion>4.0.0</modelVersion>
7
	<artifactId>org.gvsig.raster.roimask.toolbox</artifactId>
8
	<packaging>jar</packaging>
9
	<name>org.gvsig.raster.roimask.toolbox</name>
10
	<parent>
11
		<groupId>org.gvsig</groupId>
12
		<artifactId>org.gvsig.raster.roimask</artifactId>
13
		<version>2.2.0-SNAPSHOT</version>
14
	</parent>
15
	<dependencies>
16
		<dependency>
17
		    <groupId>org.gvsig</groupId>
18
   			<artifactId>org.gvsig.geoprocess.algorithm.base</artifactId>
19
            <scope>compile</scope>
20
   		</dependency>
21
   		<dependency>
22
			<groupId>org.gvsig</groupId>
23
			<artifactId>org.gvsig.raster.algorithm</artifactId>
24
			<scope>compile</scope>
25
		</dependency>
26
		<dependency>
27
			<groupId>org.gvsig</groupId>
28
			<artifactId>org.gvsig.raster.roimask.algorithm</artifactId>
29
			<scope>compile</scope>
30
		</dependency>
31
		<dependency>
32
			<groupId>org.gvsig</groupId>
33
			<artifactId>org.gvsig.geoprocess.lib.sextante</artifactId>
34
			<scope>compile</scope>
35
		</dependency>
36
		<dependency>
37
			<groupId>org.gvsig</groupId>
38
			<artifactId>org.gvsig.tools.lib</artifactId>
39
			<scope>compile</scope>
40
		</dependency>
41
		<dependency>
42
			<groupId>org.gvsig</groupId>
43
			<artifactId>org.gvsig.ui</artifactId>
44
			<scope>compile</scope>
45
		</dependency>
46
	    <dependency>
47
			<groupId>org.gvsig</groupId>
48
			<artifactId>org.gvsig.i18n</artifactId>
49
			<scope>compile</scope>
50
		</dependency>
51
		<dependency>
52
            <groupId>org.gvsig</groupId>
53
            <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
54
            <scope>compile</scope>
55
        </dependency>
56
        <dependency>
57
            <groupId>org.gvsig</groupId>
58
            <artifactId>org.gvsig.fmap.mapcontext.impl</artifactId>
59
            <scope>runtime</scope>
60
        </dependency>
61
		<dependency>
62
            <groupId>org.gvsig</groupId>
63
            <artifactId>org.gvsig.projection.api</artifactId>
64
            <scope>compile</scope>
65
        </dependency>
66
        <dependency>
67
            <groupId>org.gvsig</groupId>
68
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
69
            <scope>runtime</scope>
70
        </dependency>
71
   		<dependency>
72
            <groupId>org.gvsig</groupId>
73
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
74
            <scope>compile</scope>
75
        </dependency>
76
	</dependencies>
77
</project>
0 78

  
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/assembly/gvsig-plugin-package.xml
35 35
			<include>org.gvsig:org.gvsig.raster.roimask.swing.api:jar</include>
36 36
			<include>org.gvsig:org.gvsig.raster.roimask.swing.impl:jar</include>
37 37
			<include>org.gvsig:org.gvsig.raster.roimask.algorithm:jar</include>
38
			<include>org.gvsig:org.gvsig.raster.roimask.sextante:jar</include>
38
			<include>org.gvsig:org.gvsig.raster.roimask.toolbox:jar</include>
39 39
	  </includes>
40 40
	</dependencySet>
41 41
  </dependencySets>
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/ROIMaskPreview.java
131 131
		try {
132 132
			task = RasterBaseAlgorithmLibrary.getManager().createRasterTask("ROIMaskProcess");
133 133
			task.addParam(ROIMaskProcess.RASTER_STORE1, inputLyr.getDataStore());
134
			task.addParam(ROIMaskProcess.TEST_EXTENT, ext);
135
			task.addParam(ROIMaskProcess.TEST_WIDTH, w);
136
			task.addParam(ROIMaskProcess.TEST_HEIGHT, h);
134
			task.addParam(ROIMaskProcess.TEST, true);
135
			task.addParam(ROIMaskProcess.EXTENT, ext);
136
			task.addParam(ROIMaskProcess.OUTPUT_WIDTH, w);
137
			task.addParam(ROIMaskProcess.OUTPUT_HEIGHT, h);
137 138
			task.addParam(ROIMaskProcess.ROIS, getROIsSelected());
138 139
			task.addParam(ROIMaskProcess.ALPHA, data.getAlpha());
139 140
			task.addParam(ROIMaskProcess.INVERSE, data.isInverse());
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/resources-plugin/org/gvsig/raster/roimask/app/i18n/text.properties
1
roimask=M?scara por regi?n de inter?s
1
roimask=M?scara por regi?n de inter?s
2
applying_mask=Aplicando m?scara
3
mask_process=Proceso de m?scara
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/resources-plugin/org/gvsig/raster/roimask/app/i18n/text_en.properties
1
roimask=Mask by region of interest
1
roimask=Mask by region of interest
2
applying_mask=Applying mask
3
mask_process=Mask process
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/pom.xml
96 96
		</dependency>
97 97
		<dependency>
98 98
			<groupId>org.gvsig</groupId>
99
			<artifactId>org.gvsig.raster.roimask.sextante</artifactId>
99
			<artifactId>org.gvsig.raster.roimask.toolbox</artifactId>
100 100
			<scope>runtime</scope>
101 101
		</dependency>
102 102
		
......
173 173
	</dependencies>
174 174
	<properties>
175 175
		<gvsig.package.info.state>devel</gvsig.package.info.state>
176
		<gvsig.package.info.dependencies>required: org.gvsig.raster.tilecache.app -ge 2, required: org.gvsig.raster.tools.app.basic -ge 2</gvsig.package.info.dependencies>
176
		<gvsig.package.info.dependencies>required: org.gvsig.raster.tilecache.app -ge 2</gvsig.package.info.dependencies>
177 177
		<gvsig.package.info.poolURL>http://devel.gvsig.org/download/projects/Raster/pool</gvsig.package.info.poolURL>
178
		<gvsig.package.info.categories>OGC,Remote Services,Raster</gvsig.package.info.categories>
178
		<gvsig.package.info.categories>Raster</gvsig.package.info.categories>
179 179
	</properties>
180 180
</project>
org.gvsig.raster.roimask/trunk/org.gvsig.raster.roimask/pom.xml
104 104
			</dependency>
105 105
   			<dependency>
106 106
				<groupId>org.gvsig</groupId>
107
				<artifactId>org.gvsig.raster.roimask.sextante</artifactId>
107
				<artifactId>org.gvsig.raster.roimask.toolbox</artifactId>
108 108
				<version>2.2.0-SNAPSHOT</version>
109 109
			</dependency>
110 110
		</dependencies>
111 111
	</dependencyManagement>
112 112
	<modules>
113 113
		<module>org.gvsig.raster.roimask.algorithm</module>
114
		<module>org.gvsig.raster.roimask.sextante</module>
114
		<module>org.gvsig.raster.roimask.toolbox</module>
115 115
		<module>org.gvsig.raster.roimask.lib</module>
116 116
		<module>org.gvsig.raster.roimask.swing</module>
117 117
		<module>org.gvsig.raster.roimask.app</module>

Also available in: Unified diff