Revision 10476

View differences:

org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/test/resources/README.txt
1
Put into this folder the resources needed by your test classes.
2

  
3
This folder is added to the Tests classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your tests classes.
0 9

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<!-- 
5
Log4J configuration file for unit tests execution.
6
 -->
7
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
8

  
9
	<!-- Appender configuration to show logging messages through the console -->
10
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
11
		<layout class="org.apache.log4j.PatternLayout">
12
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
13
		</layout>
14
	</appender>
15

  
16
	<!-- 
17
	Activate logging messages of DEBUG level of higher only for the
18
	org.gvsig.tools packages.
19
	You can put full classes names or packages instead, to configure
20
	logging for all the classes and subpackages of the package.
21
	-->
22
	<category name="org.gvsig.tools">
23
		<priority value="DEBUG" />
24
	</category>
25
	<category name="org.gvsig.raster">
26
		<priority value="DEBUG" />
27
	</category>
28

  
29
	<!-- 
30
	By default, show only logging messages of INFO level or higher, 
31
	through the previously configured CONSOLE appender. 
32
	-->
33
	<root>
34
		<priority value="INFO" />
35
		<appender-ref ref="CONSOLE" />
36
	</root>
37
</log4j:configuration>
0 38

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/test/java/org/gvsig/raster/app/extension/TestNoDataPanel.java
1
package org.gvsig.raster.app.extension;
2

  
3
import javax.swing.JFrame;
4

  
5
import org.gvsig.raster.tools.app.basic.tool.properties.panel.NoDataPanel;
6

  
7
public class TestNoDataPanel {
8
		private int                          w        = 510;
9
		private int                          h        = 300;
10
		private JFrame                       frame    = new JFrame();
11
		private NoDataPanel               desc     = null;
12

  
13
		public TestNoDataPanel() {
14
			desc = new NoDataPanel();
15
			frame.getContentPane().add(desc);
16
			frame.setSize(w, h);
17
			frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
18
			frame.setVisible(true);
19
		}
20

  
21
		public static void main(String[] args) {
22
			new TestNoDataPanel();
23
		}
24
	}
0 25

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/test/java/org/gvsig/raster/app/extension/TestClipPanel.java
1
package org.gvsig.raster.app.extension;
2

  
3
import javax.swing.JFrame;
4

  
5
import org.gvsig.raster.tools.app.basic.tool.clip.ui.ClippingPanel;
6
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
7

  
8
public class TestClipPanel {
9
		private int                          w        = 510;
10
		private int                          h        = 300;
11
		private JFrame                       frame    = new JFrame();
12
		private ClippingPanel               desc     = null;
13

  
14
		public TestClipPanel() {
15
			new DefaultLibrariesInitializer().fullInitialize(true);
16
			desc = new ClippingPanel(null);
17
			frame.getContentPane().add(desc);
18
			frame.setSize(w, h);
19
			frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
20
			frame.setVisible(true);
21
		}
22

  
23
		public static void main(String[] args) {
24
			new TestClipPanel();
25
		}
26
	}
0 27

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/main/assembly/gvsig-plugin-package.xml
1
<assembly>
2
  <id>gvsig-plugin-package</id>
3
  <formats>
4
    <format>zip</format>
5
  </formats>
6
  <baseDirectory>${project.artifactId}</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
    </file>
16
  </files>
17

  
18
  <fileSets>
19
    <fileSet>
20
      <directory>src/main/resources-plugin</directory>
21
      <outputDirectory>.</outputDirectory>
22
    </fileSet>
23
  </fileSets>
24

  
25

  
26
  <dependencySets>
27
    <dependencySet>
28
      <useProjectArtifact>false</useProjectArtifact>
29
	  <useTransitiveDependencies>false</useTransitiveDependencies>
30
      <outputDirectory>lib</outputDirectory>
31
      <includes> 
32
				<include>org.gvsig:org.gvsig.raster.tools.app.basic:jar</include>
33
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.layerdatatype:jar</include>
34
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.saveraster:jar</include>
35
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.swing.api:jar</include>
36
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.swing.impl:jar</include>
37
				<include>org.gvsig:org.gvsig.raster.tools.toolbox.algorithm:jar</include>
38
	  </includes>
39
	</dependencySet>
40
  </dependencySets>
41
</assembly>
0 42

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/SystemGCExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.app.basic;
23

  
24
import org.gvsig.andami.plugins.Extension;
25

  
26

  
27
/**
28
 * @author Nacho Brodin (nachobrodin@gmail.com)
29
 */
30
public class SystemGCExtension extends Extension {
31

  
32
	public void execute(String actionCommand) {
33
		System.gc();
34
	}
35

  
36
	public void initialize() {
37

  
38
	}
39

  
40
	public boolean isEnabled() {
41
		return true;
42
	}
43

  
44
	public boolean isVisible() {
45
		return true;
46
	}
47

  
48
}
0 49

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/MainWindow.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2011-2012 Prodevelop S.L
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 */
21
package org.gvsig.raster.tools.app.basic;
22

  
23
import java.awt.GridBagConstraints;
24
import java.awt.GridBagLayout;
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionListener;
27

  
28
import javax.swing.JComponent;
29

  
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.andami.ui.mdiManager.WindowInfo;
33
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
34
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
35

  
36

  
37
/**
38
 * Basic frame for a gvSIG <code>IWindow</code> object. This frame adds buttons 
39
 * of Cancel, Accept and others.
40
 * 
41
 * @author Nacho Brodin (nachobrodin@gmail.com)
42
 */
43
public class MainWindow extends DefaultButtonsPanel implements IWindow, ActionListener {
44
    
45
    private static final long  serialVersionUID = -4401123724140025094L;
46
    private ActionListener     listener         = null;
47
    private WindowInfo         info             = null;
48

  
49
    private Object profile = WindowInfo.EDITOR_PROFILE;
50

  
51
    public MainWindow(JComponent panel, JComponent preview, String title, int w, int h, ActionListener actionListener) {
52
    	this.listener = actionListener;
53
    	
54
    	setLayout(new GridBagLayout());
55
		GridBagConstraints gbc = new GridBagConstraints();
56
		gbc.fill = GridBagConstraints.BOTH;
57
		gbc.weightx = 1;
58
		gbc.weighty = 1;
59
		add(panel, gbc);
60
		
61
		if(preview != null) {
62
			gbc.anchor = GridBagConstraints.NORTH;
63
			gbc.fill = GridBagConstraints.NONE;
64
			gbc.weightx = 0;
65
			gbc.weighty = 0;
66
			gbc.gridx = 1;
67
			add(preview, gbc);
68
		}
69

  
70
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).addActionListener(this);
71
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).addActionListener(this);
72
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL).addActionListener(this);
73
        
74
        info = new WindowInfo(WindowInfo.PALETTE | WindowInfo.RESIZABLE);
75
        info.setTitle(title);
76
        info.setWidth(w);
77
        info.setHeight(h);
78
    }
79

  
80
    public WindowInfo getWindowInfo() {
81
        return info;
82
    }
83

  
84
    public Object getWindowProfile() {
85
        return profile;
86
    }
87

  
88
    public void actionPerformed(ActionEvent e) {
89
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
90
    		listener.actionPerformed(e);
91
    		PluginServices.getMDIManager().closeWindow(this);
92
    	}
93
    	
94
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
95
    		listener.actionPerformed(e);
96
    	}
97
    	
98
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
99
    		PluginServices.getMDIManager().closeWindow(this);
100
    	}
101
    }
102
}
0 103

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/RasterExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
*/
22
package org.gvsig.raster.tools.app.basic;
23

  
24
import java.util.ArrayList;
25
import java.util.prefs.Preferences;
26

  
27
import org.gvsig.andami.IconThemeHelper;
28
import org.gvsig.andami.PluginServices;
29
import org.gvsig.andami.plugins.Extension;
30
import org.gvsig.andami.plugins.IExtensionQueryByAction;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.app.ApplicationLocator;
33
import org.gvsig.app.ApplicationManager;
34
import org.gvsig.app.project.documents.view.ViewDocument;
35
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
36
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
37
import org.gvsig.app.project.documents.view.toc.ITocItem;
38
import org.gvsig.fmap.dal.coverage.RasterLibrary;
39
import org.gvsig.fmap.dal.coverage.RasterLocator;
40
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
41
import org.gvsig.fmap.mapcontext.MapContext;
42
import org.gvsig.fmap.mapcontext.layers.FLayer;
43
import org.gvsig.fmap.mapcontext.layers.FLayers;
44
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
45
import org.gvsig.raster.fmap.FmapRasterLibrary;
46
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
47
import org.gvsig.raster.fmap.layers.FLyrRaster;
48
import org.gvsig.raster.mainplugin.config.Configuration;
49
import org.gvsig.raster.mainplugin.config.ConfigurationEvent;
50
import org.gvsig.raster.mainplugin.config.ConfigurationListener;
51
import org.gvsig.raster.tools.app.basic.raster.gui.preference.RasterPreferences;
52
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareDataStoreParametersRaw;
53
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareDataStoreParametersVTR;
54
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareLayerAskWritableDirectory;
55
import org.gvsig.raster.tools.app.basic.raster.process.ClippingProcess;
56
import org.gvsig.raster.tools.app.basic.tool.analysisview.ViewRasterAnalysisTocMenuEntry;
57
import org.gvsig.raster.tools.app.basic.tool.clip.ClippingTocMenuEntry;
58
import org.gvsig.raster.tools.app.basic.tool.colortable.ColorTableTocMenuEntry;
59
import org.gvsig.raster.tools.app.basic.tool.colortable.ui.library.RasterColorTablesFactory;
60
import org.gvsig.raster.tools.app.basic.tool.enhanced.EnhancedTocMenuEntry;
61
import org.gvsig.raster.tools.app.basic.tool.filter.FilterTocMenuEntry;
62
import org.gvsig.raster.tools.app.basic.tool.geolocation.GeoLocationTocMenuEntry;
63
import org.gvsig.raster.tools.app.basic.tool.histogram.HistogramTocMenuEntry;
64
import org.gvsig.raster.tools.app.basic.tool.infobypoint.InfoByRasterPointTocMenuEntry;
65
import org.gvsig.raster.tools.app.basic.tool.layerdatatype.LayerDatatypeTocMenuEntry;
66
import org.gvsig.raster.tools.app.basic.tool.multiresolution.ZoomResolutionLevelTocMenuEntry;
67
import org.gvsig.raster.tools.app.basic.tool.overview.OverviewsTocMenuEntry;
68
import org.gvsig.raster.tools.app.basic.tool.properties.panel.EnhancedPanel;
69
import org.gvsig.raster.tools.app.basic.tool.properties.panel.GeneralPanel;
70
import org.gvsig.raster.tools.app.basic.tool.properties.panel.InfoPanel;
71
import org.gvsig.raster.tools.app.basic.tool.properties.panel.TransparencyPanel;
72
import org.gvsig.raster.tools.app.basic.tool.rasterresolution.ZoomPixelCursorTocMenuEntry;
73
import org.gvsig.raster.tools.app.basic.tool.roi.ROIManagerTocMenuEntry;
74
import org.gvsig.raster.tools.app.basic.tool.saveas.SaveAsTocMenuEntry;
75
import org.gvsig.raster.tools.app.basic.tool.saveviewtoraster.SaveViewToRasterTocMenuEntry;
76
import org.gvsig.raster.tools.app.basic.tool.selectrasterlayer.SelectLayerTocMenuEntry;
77
import org.gvsig.raster.tools.app.basic.tool.setviewprojection.SetViewProjectionTocMenuEntry;
78
import org.gvsig.raster.tools.app.basic.tool.viewexport.SaveViewToImageTocMenuEntry;
79
import org.gvsig.raster.tools.app.basic.toolbox.ToolboxRasterToolsLoader;
80
import org.gvsig.tools.ToolsLocator;
81
import org.gvsig.tools.extensionpoint.ExtensionBuilder;
82
import org.gvsig.tools.extensionpoint.ExtensionPoint;
83
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
84

  
85

  
86
/**
87
 * Extensi?n que adapta a FMap y gvSIG la nueva implementaci?n de raster. Para
88
 * el cuadro de Propiedades de visualizaci?n de raster contiene el contenedor
89
 * base se registran la entrada del men? del TOC y los paneles en el cuadro.
90
 * Para la parte de FMap contiene una nueva capa raster y los drivers
91
 * necesarios.
92
 *
93
 * @author Nacho Brodin (nachobrodin@gmail.com)
94
 */
95
public class RasterExtension extends Extension implements ConfigurationListener, IExtensionQueryByAction {
96
	public static final String         CLIPPING_PROCESS_LABEL   = ClippingProcess.PROCESS_LABEL;
97

  
98
	/**
99
	 * Indica si en el panel de preferencias se refresca automaticamente la vista
100
	 * para mostrar los cambios
101
	 */
102
	public static boolean       autoRefreshView = true;
103

  
104
	private ExtensionPoint      genericToolBarMenuExtensionPoint  = null;
105

  
106
	public void execute(String actionCommand) {
107
		//Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que la del actionCommand
108
		//De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar la acci?n a
109
		//trav?s de este.
110
		ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(actionCommand).getBuilder();
111
		if(ext != null && ext instanceof AbstractTocContextMenuAction) {
112
			IWindow w = PluginServices.getMDIManager().getActiveWindow();
113
			if(w instanceof AbstractViewPanel) {
114
				FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
115
				FLayer[] actives = lyrs.getActives();
116
				((AbstractTocContextMenuAction)ext).execute(null, actives);
117
			}
118
		}
119
	}
120

  
121
	public void initialize() {
122
		// Asignamos la configuracion global a FlyrRasterSE
123
		DefaultFLyrRaster.setConfiguration(Configuration.getSingleton());
124

  
125
		Configuration.addValueChangedListener(this);
126
		loadConfigurationValues();
127

  
128
		registerIcons();
129

  
130
		FmapRasterLibrary fmapRaster = new FmapRasterLibrary();
131
		fmapRaster.initialize();
132

  
133
		Preferences prefs = Preferences.userRoot().node("gvsig.foldering");
134
		prefs.put("DataFolder", System.getProperty("user.home"));
135
		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
136

  
137
		// Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
138
		if (!extensionPoints.has("RasterSEPropertiesDialog")) {
139
			ExtensionPoint point = extensionPoints.add("RasterSEPropertiesDialog");
140
			point.setDescription("Raster Properties registrable panels (register instances of javax.swing.JPanel)");
141
		}
142

  
143
		// A?adimos la configuracion de Raster a gvSIG
144

  
145
		ExtensionPoint point = extensionPoints.get("AplicationPreferences");
146
		point.append("RasterPreferences", "", RasterPreferences.class);
147

  
148
		// A?adimos paneles al cuadro de propiedades.
149
		point = extensionPoints.get("RasterSEPropertiesDialog");
150
		point.append("info", "", InfoPanel.class);
151
		point.append("general_panel", "", GeneralPanel.class);
152
		point.append("transparencia", "", TransparencyPanel.class);
153
		point.append("realce", "", EnhancedPanel.class);
154

  
155

  
156
		// A?adimos las entradas del men?  del toc de raster
157
		point = extensionPoints.get("View_TocActions");
158
		//point.append("RasterSEProperties", "Raster Properties", RasterPropertiesTocMenuEntry.getSingleton());
159
		point.append("SaveAs", "Save as raster layer", SaveAsTocMenuEntry.getSingleton());
160
		point.append("ZoomPixelCursor", "zoom to pixel resolution", ZoomPixelCursorTocMenuEntry.getSingleton());
161
		point.append("ROI", "ROIs for a raster layer", ROIManagerTocMenuEntry.getSingleton());
162
		point.append("Color table", "Color table for a raster layer", ColorTableTocMenuEntry.getSingleton());
163
		point.append("Histogram", "Histogram of a raster layer", HistogramTocMenuEntry.getSingleton());
164
		point.append("Overviews", "Build overviews", OverviewsTocMenuEntry.getSingleton());
165

  
166
		ApplicationManager appGvSigMan = ApplicationLocator.getManager();
167

  
168
		appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareLayerAskWritableDirectory());
169
		appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareDataStoreParametersRaw());
170
		appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareDataStoreParametersVTR());
171

  
172
		appGvSigMan.registerColorTablesFactory(new RasterColorTablesFactory());
173

  
174
		registerMenuElements();
175
		registerProcesses();
176
	}
177

  
178
	private void registerProcesses() {
179
    	RasterBaseAlgorithmLibrary.register(CLIPPING_PROCESS_LABEL, ClippingProcess.class);
180
    	ClippingProcess.registerParameters();
181
	}
182

  
183
	/**
184
	 * Registra los iconos a utilizar en andami.
185
	 */
186
	private void registerIcons() {
187
		//Actions
188
		IconThemeHelper.registerIcon("action", "menu-layer-icon", this);
189
		IconThemeHelper.registerIcon("action", "menu-process-icon", this);
190
		IconThemeHelper.registerIcon("action", "menu-transgeo-icon", this);
191
		IconThemeHelper.registerIcon("action", "menu-raster-export", this);
192

  
193
		IconThemeHelper.registerIcon("action", "layer-modify-roi", this);
194
		IconThemeHelper.registerIcon("action", "layer-histogram", this);
195
		IconThemeHelper.registerIcon("action", "layer-color-table", this);
196
		IconThemeHelper.registerIcon("action", "layer-modify-overviews", this);
197
		IconThemeHelper.registerIcon("action", "layer-properties-raster", this);
198
		IconThemeHelper.registerIcon("action", "layer-filter-raster", this);
199
		IconThemeHelper.registerIcon("action", "layer-enhanced", this);
200
		IconThemeHelper.registerIcon("action", "view-raster-analysis", this);
201
		IconThemeHelper.registerIcon("action", "view-select-raster-layer", this);
202
		IconThemeHelper.registerIcon("action", "layer-geolocalization", this);
203
		IconThemeHelper.registerIcon("action", "tools-raster-reproject", this);
204
		IconThemeHelper.registerIcon("action", "view-export-georeferenced-raster", this);
205
		IconThemeHelper.registerIcon("action", "layer-saveas", this);
206
		IconThemeHelper.registerIcon("action", "layer-clip-raster", this);
207
		IconThemeHelper.registerIcon("action", "layer-zoom-res-level", this);
208
		IconThemeHelper.registerIcon("action", "layer-info-by-pixel", this);
209
		IconThemeHelper.registerIcon("action", "layer-vectorization", this);
210
		IconThemeHelper.registerIcon("action", "view-export-image", this);
211

  
212
		//Cursor
213
		IconThemeHelper.registerIcon("cursor", "zoom-pixel-cursor", this);
214
		IconThemeHelper.registerIcon("cursor", "hor-arrow-cursor", this);
215
		IconThemeHelper.registerIcon("cursor", "ver-arrow-cursor", this);
216
		IconThemeHelper.registerIcon("cursor", "inclder-arrow-cursor", this);
217
		IconThemeHelper.registerIcon("cursor", "inclizq-arrow-cursor", this);
218
		IconThemeHelper.registerIcon("cursor", "shear-y-cursor", this);
219
		IconThemeHelper.registerIcon("cursor", "shear-x-cursor", this);
220
		IconThemeHelper.registerIcon("cursor", "rotate-cursor", this);
221
		IconThemeHelper.registerIcon("cursor", "rot-inf-der-cursor", this);
222
		IconThemeHelper.registerIcon("cursor", "rot-inf-izq-cursor", this);
223
		IconThemeHelper.registerIcon("cursor", "rot-sup-der-cursor", this);
224
		IconThemeHelper.registerIcon("cursor", "rot-sup-izq-cursor", this);
225
		IconThemeHelper.registerIcon("cursor", "point-select-cursor", this);
226
		IconThemeHelper.registerIcon("cursor", "hand-cursor", this);
227
		IconThemeHelper.registerIcon("cursor", "rectangle-select-cursor", this);
228
		IconThemeHelper.registerIcon("cursor", "not-valid-cursor", this);
229
		IconThemeHelper.registerIcon("cursor", "line-cursor", this);
230
		IconThemeHelper.registerIcon("cursor", "polygon-cursor", this);
231
		IconThemeHelper.registerIcon("cursor", "point-cursor", this);
232

  
233
		//Other
234
		IconThemeHelper.registerIcon(null, "forward-icon", this);
235
		IconThemeHelper.registerIcon(null, "backward-icon", this);
236
		IconThemeHelper.registerIcon(null, "blank-icon", this);
237
		IconThemeHelper.registerIcon(null, "addlayer-icon", this);
238
		IconThemeHelper.registerIcon(null, "delall-icon", this);
239
		IconThemeHelper.registerIcon(null, "back-icon", this);
240
		IconThemeHelper.registerIcon(null, "next-icon", this);
241
		IconThemeHelper.registerIcon(null, "undo-icon", this);
242
		IconThemeHelper.registerIcon(null, "pixel-increase", this);
243
		IconThemeHelper.registerIcon(null, "pref-raster-icon", this);
244
		IconThemeHelper.registerIcon(null, "back-icon", this);
245
		IconThemeHelper.registerIcon(null, "next-icon", this);
246
		IconThemeHelper.registerIcon(null, "undo-icon", this);
247
		//IconThemeHelper.registerIcon(null, "save-raster", this);
248
		IconThemeHelper.registerIcon(null, "pixel-increase", this);
249
		//IconThemeHelper.registerIcon(null, "select-raster", this);
250
		IconThemeHelper.registerIcon(null, "pref-raster-icon", this);
251
		IconThemeHelper.registerIcon(null, "reset-icon", this);
252
		IconThemeHelper.registerIcon(null, "tfwload-icon", this);
253
		IconThemeHelper.registerIcon(null, "centerraster-icon", this);
254
		IconThemeHelper.registerIcon(null, "increase-icon", this);
255
		IconThemeHelper.registerIcon(null, "decrease-icon", this);
256
		IconThemeHelper.registerIcon(null, "selectzoomarea-icon", this);
257
		IconThemeHelper.registerIcon(null, "prevzoom-icon", this);
258
		IconThemeHelper.registerIcon(null, "fullview-icon", this);
259
		IconThemeHelper.registerIcon(null, "exporttoascii-icon", this);
260
		IconThemeHelper.registerIcon(null, "exporttocsv-icon", this);
261
		IconThemeHelper.registerIcon(null, "importfromcsv-icon", this);
262
		IconThemeHelper.registerIcon(null, "exit-icon", this);
263
		IconThemeHelper.registerIcon(null, "options-icon", this);
264
		IconThemeHelper.registerIcon(null, "add-icon", this);
265
		IconThemeHelper.registerIcon(null, "centerpoint-icon", this);
266
		IconThemeHelper.registerIcon(null, "selectrgb-icon", this);
267
		IconThemeHelper.registerIcon(null, "focus-icon", this);
268
		IconThemeHelper.registerIcon(null, "point-icon", this);
269
		IconThemeHelper.registerIcon(null, "line-icon", this);
270
		IconThemeHelper.registerIcon(null, "polygon-icon", this);
271
		IconThemeHelper.registerIcon(null, "import-icon", this);
272
		IconThemeHelper.registerIcon(null, "round-icon", this);
273
		//IconThemeHelper.registerIcon(null, "rois-icon", this);
274
		IconThemeHelper.registerIcon(null, "fullextent-icon", this);
275
		IconThemeHelper.registerIcon(null, "selecttool-icon", this);
276
		IconThemeHelper.registerIcon(null, "forward-icon", this);
277
		IconThemeHelper.registerIcon(null, "backward-icon", this);
278
		IconThemeHelper.registerIcon(null, "datatype-icon", this);
279
		IconThemeHelper.registerIcon(null, "setviewprojection-raster-icon", this);
280
		IconThemeHelper.registerIcon(null, "gvsig-icon", this);
281
		IconThemeHelper.registerIcon(null, "gvsig-icon16x16", this);
282
	}
283

  
284
	public void registerMenuElements() {
285
		// Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
286
		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
287
		ExtensionPoint point = extensionPoints.get("GenericToolBarGroup");
288
		point.setDescription("Punto de extension para los grupos de menus del GenericToolBarPanel");
289

  
290
		point = extensionPoints.get("GenericToolBarMenu");
291
		point.setDescription("Punto de extension para los submenus del GenericToolBarPanel");
292
		//point.append("RasterProperties", "", RasterPropertiesTocMenuEntry.getSingleton());
293
		point.append("SelectLayer", "", SelectLayerTocMenuEntry.getSingleton());
294
		point.append("HistogramPanel", "", HistogramTocMenuEntry.getSingleton());
295
		point.append("ViewColorTable", "",ColorTableTocMenuEntry.getSingleton());
296
		if(RasterLocator.getManager().isOverviewBuilderSupported())
297
			point.append("Overviews", "", OverviewsTocMenuEntry.getSingleton());
298
		point.append("RoisManager", "", ROIManagerTocMenuEntry.getSingleton());
299
		point.append("ViewRasterAnalysis", "", ViewRasterAnalysisTocMenuEntry.getSingleton());
300
		point.append("ZoomResolutionLevel", "", ZoomResolutionLevelTocMenuEntry.getSingleton());
301

  
302
		//point.append("SaveRaster", "", SaveViewToRasterTocMenuEntry.getSingleton());
303
		point.append("SaveAs", "", SaveAsTocMenuEntry.getSingleton());
304
		point.append("ClippingPanel", "", ClippingTocMenuEntry.getSingleton());
305
		point.append("SaveViewToRaster", "", SaveViewToRasterTocMenuEntry.getSingleton());
306
		point.append("SaveViewToImageRaster", "", SaveViewToImageTocMenuEntry.getSingleton());
307

  
308
		point.append("FilterPanel", "", FilterTocMenuEntry.getSingleton());
309
		point.append("EnhancedPanel", "", EnhancedTocMenuEntry.getSingleton());
310
		point.append("InfoByPoint", "", InfoByRasterPointTocMenuEntry.getSingleton());
311
		point.append("LayerDatatype", "", LayerDatatypeTocMenuEntry.getSingleton());
312

  
313
		point.append("GeoLocation", "", GeoLocationTocMenuEntry.getSingleton());
314
		point.append("SetProjection", "", SetViewProjectionTocMenuEntry.getSingleton());
315

  
316
	}
317

  
318
	public boolean isEnabled() {
319
		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
320
		if (f == null)
321
			return false;
322
		if (f instanceof AbstractViewPanel) {
323
			FLayers lyrs = ((AbstractViewPanel)f).getMapControl().getMapContext().getLayers();
324
			for (int i = 0; i < lyrs.getLayersCount(); i++)
325
				if (lyrs.getLayer(i) instanceof FLyrRaster)
326
					return true;
327
		}
328
		return false;
329
	}
330

  
331
	/**
332
	 * Mostramos el control si hay alguna capa cargada.
333
	 */
334
	public boolean isVisible() {
335
		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
336
		if (f == null)
337
			return false;
338

  
339
		if (f instanceof AbstractViewPanel) {
340
			FLayers lyrs = ((AbstractViewPanel)f).getMapControl().getMapContext().getLayers();
341
			if (lyrs.getLayersCount() > 0)
342
				return true;
343
		}
344

  
345
		return false;
346
	}
347

  
348
	/**
349
	 * Carga los valores de configuracion iniciales
350
	 */
351
	private void loadConfigurationValues() {
352
		autoRefreshView = Configuration.getValue("general_auto_preview", Boolean.TRUE).booleanValue();
353
		RasterLibrary.defaultNumberOfClasses = Configuration.getValue("general_defaultNumberOfClasses", Integer.valueOf(RasterLibrary.defaultNumberOfClasses)).intValue();
354
		RasterLibrary.cacheSize = Configuration.getValue("cache_size", Long.valueOf(RasterLibrary.cacheSize)).longValue();
355
		RasterLibrary.pageSize = Configuration.getValue("cache_pagesize", Double.valueOf(RasterLibrary.pageSize)).doubleValue();
356
		RasterLibrary.pagsPerGroup = Configuration.getValue("cache_pagspergroup", Integer.valueOf(RasterLibrary.pagsPerGroup)).intValue();
357
		RasterLibrary.blockHeight = Configuration.getValue("cache_blockheight", Integer.valueOf(RasterLibrary.blockHeight)).intValue();
358
		//RasterLibrary.defaultNoDataValue = Configuration.getValue("nodata_value", Double.valueOf(RasterLibrary.defaultNoDataValue)).doubleValue();
359
	}
360

  
361
	@SuppressWarnings("deprecation")
362
	public void actionConfigurationChanged(ConfigurationEvent e) {
363
		if (e.getKey().equals("nodata_transparency_enabled")) {
364
			boolean noDataTransparent = ((Boolean) e.getValue()).booleanValue();
365
			IWindow[] f = PluginServices.getMDIManager().getAllWindows();
366
			if (f == null)
367
				return;
368
			for (int i = 0; i < f.length; i++)
369
				if (f[i] instanceof AbstractViewPanel) {
370
					AbstractViewPanel vista = (AbstractViewPanel) f[i];
371
					ViewDocument model = vista.getModel();
372
					MapContext map = model.getMapContext();
373
					FLayers lyrs = map.getLayers();
374

  
375
					ArrayList<FLayer> list = RasterToolsUtil.getRasterLayerList(lyrs, null);
376
					for (int j = 0; j < list.size(); j++)
377
						if(list.get(j) instanceof FLyrRaster)
378
							((RasterDataStore)((FLyrRaster)list.get(j)).getDataStore()).getNoDataValue().setNoDataTransparent(noDataTransparent);
379
				}
380

  
381
			return;
382
		}
383

  
384
		if (e.getKey().equals("general_auto_preview")) {
385
			if(e.getValue() instanceof String)
386
				autoRefreshView = new Boolean((String) e.getValue()).booleanValue();
387
			if(e.getValue() instanceof Boolean)
388
				autoRefreshView = ((Boolean) e.getValue()).booleanValue();
389
			return;
390
		}
391

  
392
		if (e.getKey().equals("general_defaultNumberOfClasses")) {
393
			if(e.getValue() instanceof String)
394
				try {
395
					RasterLibrary.defaultNumberOfClasses = new Integer(
396
							(String) e.getValue()).intValue();
397
				} catch (NumberFormatException exc) {
398
					//Valor por defecto en el n?mero de clases
399
				}
400

  
401
			if(e.getValue() instanceof Integer)
402
				RasterLibrary.defaultNumberOfClasses = ((Integer) e.getValue()).intValue();
403
			return;
404
		}
405

  
406
		if (e.getKey().equals("cache_size")) {
407
			if(e.getValue() instanceof String)
408
				try {
409
					RasterLibrary.cacheSize = new Long((String) e.getValue()).longValue();
410
				} catch (NumberFormatException exc) {
411
					//Valor por defecto en la cache
412
				}
413
			if(e.getValue() instanceof Long)
414
				RasterLibrary.cacheSize = ((Long) e.getValue()).longValue();
415
			return;
416
		}
417

  
418
		if (e.getKey().equals("cache_pagesize")) {
419
			if(e.getValue() instanceof String)
420
				try {
421
					RasterLibrary.pageSize = new Double((String) e.getValue())
422
							.doubleValue();
423
				} catch (NumberFormatException exc) {
424
					//Valor por defecto en la cache
425
				}
426

  
427
			if(e.getValue() instanceof Double)
428
				RasterLibrary.pageSize = ((Double) e.getValue()).doubleValue();
429
			return;
430
		}
431

  
432
		if (e.getKey().equals("cache_pagspergroup")) {
433
			if(e.getValue() instanceof String)
434
				try {
435
					RasterLibrary.pagsPerGroup = new Integer((String) e
436
							.getValue()).intValue();
437
				} catch (NumberFormatException exc) {
438
					//Valor por defecto en la cache
439
				}
440

  
441
			if(e.getValue() instanceof Integer)
442
				RasterLibrary.pagsPerGroup = ((Integer) e.getValue()).intValue();
443
			return;
444
		}
445

  
446
		if (e.getKey().equals("cache_blockheight")) {
447
			if(e.getValue() instanceof String)
448
				try {
449
					RasterLibrary.blockHeight = new Integer((String) e
450
							.getValue()).intValue();
451
				} catch (NumberFormatException exc) {
452
					//Valor por defecto en la cache
453
				}
454
			if(e.getValue() instanceof Integer)
455
				RasterLibrary.blockHeight = ((Integer) e.getValue()).intValue();
456
			return;
457
		}
458

  
459
		/*if (e.getKey().equals("nodata_value")) {
460
			if(e.getValue() instanceof String)
461
				try {
462
					RasterLibrary.defaultNoDataValue = new Double((String) e
463
							.getValue()).doubleValue();
464
				} catch (NumberFormatException exc) {
465
					//Valor por defecto en valor nodata
466
				}
467

  
468
			if(e.getValue() instanceof Double)
469
				RasterLibrary.defaultNoDataValue = ((Double) e.getValue()).doubleValue();
470
			return;
471
		}*/
472

  
473
	}
474

  
475
	public void execute(ITocItem item, FLayer[] selectedItems) {
476
		this.execute("SELECTIMAGE");
477
	}
478

  
479
	public void postInitialize() {
480
		super.postInitialize();
481
		new ToolboxRasterToolsLoader().registerTool();
482
	}
483

  
484
	public boolean canQueryByAction() {
485
		return true;
486
	}
487

  
488
	public boolean isEnabled(String action) {
489
		//Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que el actionCommand
490
		//De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar isEnable a
491
		//trav?s de este.
492
		if(getGenericToolBarMenuExtensionPoint() != null && getGenericToolBarMenuExtensionPoint().get(action) != null) {
493
			ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(action).getBuilder();
494
			if(ext != null && ext instanceof AbstractTocContextMenuAction) {
495
				IWindow w = PluginServices.getMDIManager().getActiveWindow();
496
				if(w instanceof AbstractViewPanel) {
497
					FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
498
					FLayer[] actives = lyrs.getActives();
499
					return ((AbstractTocContextMenuAction)ext).isEnabled(null, actives);
500
				}
501
			}
502
		}
503
		return false;
504
	}
505

  
506
	public boolean isVisible(String action) {
507
		//Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que el actionCommand
508
		//De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar isVisible a
509
		//trav?s de este.
510
		if(getGenericToolBarMenuExtensionPoint() != null && getGenericToolBarMenuExtensionPoint().get(action) != null) {
511
			ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(action).getBuilder();
512
			if(ext != null && ext instanceof AbstractTocContextMenuAction) {
513
				IWindow w = PluginServices.getMDIManager().getActiveWindow();
514
				if(w instanceof AbstractViewPanel) {
515
					FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
516
					FLayer[] actives = lyrs.getActives();
517
					return ((AbstractTocContextMenuAction)ext).isVisible(null, actives);
518
				}
519
			}
520
		}
521
		return false;
522
	}
523

  
524
	public ExtensionPoint getGenericToolBarMenuExtensionPoint() {
525
		if(genericToolBarMenuExtensionPoint == null) {
526
			ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
527
			genericToolBarMenuExtensionPoint = extensionPoints.get("GenericToolBarMenu");
528
		}
529
		return genericToolBarMenuExtensionPoint;
530
	}
531
}
0 532

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/raw/tool/VRTFormatUtils.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.app.basic.tool.raw.tool;
23
/**
24
 * This class has some utils to create a VRT file. It has methods to obtaint the
25
 * VRT parameters that will be written in the file
26
 * 
27
 * @author Jorge Piera Llodr? (piera_jor@gva.es)
28
 */
29
public class VRTFormatUtils {
30

  
31
	/**
32
	 * It calculates the ImageOffSet parameter value.
33
	 * @param dataSize Type of each pixel
34
	 * @param headerSize Header file size
35
	 * @param interLeaving Type of interleaving
36
	 * @param band Band number
37
	 * @param numBands Number of bands
38
	 * @param width Image width
39
	 * @param height Image height
40
	 * @return ImageOffSet parameter value
41
	 */
42
	public static String getImageOffset(int dataSize, int headerSize,
43
			String interLeaving, int band, int numBands, int width, int height) {
44
		int imageOffSet = 0;
45
		if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_PIXEL)) {
46
			imageOffSet = 1;
47

  
48
		} else
49
			if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_BAND)) {
50
				imageOffSet = width * height;
51

  
52
			} else
53
				if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_LINE)) {
54
					imageOffSet = width * numBands;
55
				}
56
		imageOffSet = imageOffSet * (dataSize / 8);
57
		imageOffSet = imageOffSet * (band - 1);
58
		imageOffSet = imageOffSet + headerSize;
59
		return String.valueOf(imageOffSet);
60
	}
61
	
62
	/**
63
	 * It calculates the ImageOffSet parameter value.
64
	 * @param fileCreator
65
	 * Contains all the params
66
	 * @param band
67
	 * Band to obtain the image offset
68
	 * @return
69
	 */
70
	public static String getImageOffset(VRTFileCreator fileCreator, int band) {
71
		return getImageOffset(fileCreator.getDataSize(), fileCreator.getHeaderSize(),
72
				fileCreator.getInterleaving(), band, fileCreator.getBands(),
73
				fileCreator.getImageWidth(), fileCreator.getImageHeight());
74
	}
75
	
76
	/**
77
	 * It calculates the ImageOffSet parameter value.
78
	 * @param dataSize Type of each pixel
79
	 * @param interLeaving Type of interleaving Band number
80
	 * @param numBands Number of bands
81
	 * @param width Image width
82
	 * @return ImageOffSet parameter value
83
	 */
84
	public static String getLineOffset(int dataSize, String interLeaving, int numBands, int width) {
85

  
86
		int lineOffSet = 0;
87
		if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_PIXEL)) {
88
			lineOffSet = width * numBands;
89

  
90
		} else
91
			if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_BAND)) {
92
				lineOffSet = width;
93

  
94
			} else
95
				if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_LINE)) {
96
					lineOffSet = width * numBands;
97
				}
98

  
99
		lineOffSet = lineOffSet * (dataSize / 8);
100
		return String.valueOf(lineOffSet); 
101
	}
102
	
103
	/**
104
	 * It calculates the LineOffSet parameter value.
105
	 * @param fileCreator Contains all the params
106
	 * @return
107
	 */
108
	public static String getLineOffset(VRTFileCreator fileCreator) {
109
		return getLineOffset(fileCreator.getDataSize(), fileCreator.getInterleaving(), fileCreator.getBands(), fileCreator.getImageWidth());
110
	}
111
	
112
	/**
113
	 * It calculates the ImageOffSet parameter value.
114
	 * @param dataSize Type of each pixel
115
	 * @param interLeaving Type of interleaving
116
	 * @param numBands Number of bands
117
	 * @return ImageOffSet parameter value
118
	 */
119
	public static String getPixelOffset(int dataSize, String interLeaving, int numBands) {
120
		int pixelOffSet = 0;
121
		if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_PIXEL)) {
122
			pixelOffSet = numBands;
123

  
124
		} else
125
			if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_BAND)) {
126
				pixelOffSet = 1;
127

  
128
			} else
129
				if (interLeaving.equals(VRTFormatOptions.INTERLEAVING_LINE)) {
130
					pixelOffSet = 1;
131
				}
132

  
133
		pixelOffSet = pixelOffSet * (dataSize / 8);
134
		return String.valueOf(pixelOffSet);
135
	}
136
	
137
	/**
138
	 * It calculates the PixelOffSet parameter value.
139
	 * @param fileCreator Contains all the params
140
	 * @return
141
	 */
142
	public static String getPixelOffset(VRTFileCreator fileCreator) {
143
		return getPixelOffset(fileCreator.getDataSize(), fileCreator.getInterleaving(), fileCreator.getBands());
144
	}
145
}
0 146

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.89/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/raw/tool/VRTFileCreator.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.app.basic.tool.raw.tool;
23

  
24
import java.io.File;
25
import java.io.FileWriter;
26
import java.io.IOException;
27
import java.io.Writer;
28
/**
29
 * This class is user to create a VRT file. It writes the file when the
30
 * "writeFile" method is called. If some params are not seted the deafult values
31
 * will bi used.
32
 * 
33
 * @author Jorge Piera Llodr? (piera_jor@gva.es)
34
 */
35
public class VRTFileCreator {
36
	private Writer writer             = null;
37
	private File   m_File             = null;
38
	private int    width              = 0;
39
	private int    height             = 0;
40
	private int    bands              = 0;
41
	private int    headerSize         = 0;
42
	private int    fileSize           = 0;
43
	private String rawFile            = null;
44
	private String dataType           = null;
45
	private int    dataSize           = 0;
46
	private String byteOrder          = null;
47
	private String interleaving       = null;
48
	private String outputHeaderFormat = null;
49
	
50
	public VRTFileCreator(File m_File) {
51
		super();		
52
		this.m_File = m_File;
53
	}
54
	
55
	public VRTFileCreator(String file) {
56
		super();		
57
		this.m_File = new File(file);
58
	}
59
	
60
	/**
61
	 * It writes the VRT file
62
	 * @throws IOException
63
	 */
64
	public void writeFile() throws IOException{
65
		if (!m_File.exists()){
66
			m_File.createNewFile();
67
		}
68
		writer = new FileWriter(m_File);
69
		createVRTFile();
70
		writer.close();	
71
	}
72
	
73
	/**
74
	 * It creates the VRT File
75
	 * @throws IOException
76
	 */
77
	private void createVRTFile() throws IOException{
78
		writer.write(getXMLVRTDatasetHeaderTag());
79
		
80
		for (int i=0 ; i<getBands() ; i++){
81
			createOneBand(i+1);
82
		}
83
		
84
		writer.write(getXMLVRTDatasetEndTag());
85
	}
86
	
87
	/**
88
	 * IT creates all the XML tags for one band
89
	 * @param band Band number
90
	 * @throws IOException
91
	 */
92
	private void createOneBand(int band) throws IOException {
93
		writer.write(getXMLVRTRasterBandHeaderTag(band));
94
		writer.write(getXMLSourceFilenameTag());
95
		writer.write(getXMLByteOrderTag());
96
		writer.write(getXMLImageOffsetTag(band));
97
		writer.write(getXMLPixelOffsetTag());
98
		writer.write(getXMLLineOffsetTag());
99
		writer.write(getXMLVRTRasterBandEndTag());
100
	}
101

  
102
	/**
103
	 * Creates the header of the VRTDataset XML tag. It contains the width and the
104
	 * height.
105
	 * @return The VRTDataset XML tag
106
	 */
107
	private String getXMLVRTDatasetHeaderTag() {
108
		StringBuffer buffer = new StringBuffer();
109
		buffer.append("<VRTDataset rasterXSize=\"" + getImageWidth() + "\" ");
110
		buffer.append("rasterYSize=\"" + getImageHeight() + "\">\n");
111
		return buffer.toString();
112
	}	
113
	
114
	/**
115
	 * Creates the end of the VRTDataset XML tag
116
	 * @return The VRTDataset XML tag
117
	 */
118
	private String getXMLVRTDatasetEndTag() {
119
		StringBuffer buffer = new StringBuffer();
120
		buffer.append("</VRTDataset>\n");
121
		return buffer.toString();
122
	}
123
	
124
	/**
125
	 * Creates the header of the VRTRasterBand XML tag. It contains the image data
126
	 * type.
127
	 * @return The VRTRasterBand XML tag
128
	 */
129
	private String getXMLVRTRasterBandHeaderTag(int band) {
130
		StringBuffer buffer = new StringBuffer();
131
		buffer.append("\t<VRTRasterBand dataType=\"" + getDataType() + "\" ");
132
		buffer.append("band=\"" + band + "\" ");
133
		buffer.append("subClass=\"VRTRawRasterBand\">\n");
134
		return buffer.toString();
135
	}
136

  
137
	/**
138
	 * Creates the end of the VRTRasterBand XML tag
139
	 * @return The VRTRasterBand XML tag
140
	 */
141
	private String getXMLVRTRasterBandEndTag() {
142
		StringBuffer buffer = new StringBuffer();
143
		buffer.append("\t</VRTRasterBand>\n");
144
		return buffer.toString();
145
	}		
146
	
147
	
148
	/**
149
	 * Creates the SourceFilename XML tag: The raw file path
150
	 * @return The SourceFilename XML tag
151
	 */
152
	private String getXMLSourceFilenameTag() {
153
		StringBuffer buffer = new StringBuffer();
154
		buffer.append("\t\t<SourceFilename relativetoVRT=\"1\">");
155
		buffer.append(getRawFile());
156
		buffer.append("</SourceFilename>\n");
157
		return buffer.toString();
158
	}
159

  
160
	/**
161
	 * Creates the ByteOrder XML tag. Possible values are specified in
162
	 * VRTFileOptions class.
163
	 * @return The ByteOrder XML tag
164
	 */
165
	private String getXMLByteOrderTag() {
166
		StringBuffer buffer = new StringBuffer();
167
		buffer.append("\t\t<ByteOrder>");
168
		buffer.append(getByteOrder());
169
		buffer.append("</ByteOrder>\n");
170
		return buffer.toString();
171
	}	
172
	
173
	/**
174
	 * Creates the ImageOffset XML tag: The image data starts from the byte number
175
	 * specified by this value
176
	 * @return The ImageOffset XML tag
177
	 */
178
	private String getXMLImageOffsetTag(int band) {
179
		StringBuffer buffer = new StringBuffer();
180
		buffer.append("\t\t<ImageOffset>");
181
		buffer.append(VRTFormatUtils.getImageOffset(this, band));
182
		buffer.append("</ImageOffset>\n");
183
		return buffer.toString();
184
	}
185

  
186
	/**
187
	 * Creates the PixelOffset XML tag: The byte offeset between pixels
188
	 * @return The PixelOffset XML tag
189
	 */
190
	private String getXMLPixelOffsetTag() {
191
		StringBuffer buffer = new StringBuffer();
192
		buffer.append("\t\t<PixelOffset>");
193
		buffer.append(VRTFormatUtils.getPixelOffset(this));
194
		buffer.append("</PixelOffset>\n");
195
		return buffer.toString();
196
	}
197

  
198
	/**
199
	 * Creates the LineOffset XML tag.
200
	 * @return The LineOffset XML tag
201
	 */
202
	private String getXMLLineOffsetTag() {
203
		StringBuffer buffer = new StringBuffer();
204
		buffer.append("\t\t<LineOffset>");
205
		buffer.append(VRTFormatUtils.getLineOffset(this));
206
		buffer.append("</LineOffset>\n");
207
		return buffer.toString();
208
	}
209

  
210
	/**
211
	 * @return Returns the bands.
212
	 */
213
	public int getBands() {
214
		return bands;
215
	}
216

  
217
	/**
218
	 * @param bands The bands to set.
219
	 */
220
	public void setBands(int bands) {
221
		this.bands = bands;
222
	}
223

  
224
	/**
225
	 * @return Returns the byteOrder.
226
	 */
227
	public String getByteOrder() {
228
		return byteOrder;
229
	}
230

  
231
	/**
232
	 * @param byteOrder The byteOrder to set.
233
	 */
234
	public void setByteOrder(String byteOrder) {
235
		this.byteOrder = byteOrder;
236
	}
237

  
238
	/**
239
	 * @return Returns the dataType.
240
	 */
241
	public String getDataType() {
242
		return dataType;
243
	}
244

  
245
	/**
246
	 * @param dataType The dataType to set.
247
	 */
248
	public void setDataType(String dataType) {
249
		this.dataType = dataType;
250
	}
251

  
252
	/**
253
	 * @return Returns the fileSize.
254
	 */
255
	public int getFileSize() {
256
		return fileSize;
257
	}
258

  
259
	/**
260
	 * @param fileSize The fileSize to set.
261
	 */
262
	public void setFileSize(int fileSize) {
263
		this.fileSize = fileSize;
264
	}
265

  
266
	/**
267
	 * @return Returns the headerSize.
268
	 */
269
	public int getHeaderSize() {
270
		return headerSize;
271
	}
272

  
273
	/**
274
	 * @param headerSize The headerSize to set.
275
	 */
276
	public void setHeaderSize(int headerSize) {
277
		this.headerSize = headerSize;
278
	}
279

  
280
	/**
281
	 * @return Returns the height.
282
	 */
283
	public int getImageHeight() {
284
		return height;
285
	}
286

  
287
	/**
288
	 * @param height The height to set.
289
	 */
290
	public void setImageHeight(int height) {
291
		this.height = height;
292
	}
293

  
294
	/**
295
	 * @return Returns the interleaving.
296
	 */
297
	public String getInterleaving() {
298
		return interleaving;
299
	}
300

  
301
	/**
302
	 * @param interleaving The interleaving to set.
303
	 */
304
	public void setInterleaving(String interleaving) {
305
		this.interleaving = interleaving;
306
	}
307

  
308
	/**
309
	 * @return Returns the outputHeaderFormat.
310
	 */
311
	public String getOutputHeaderFormat() {
312
		return outputHeaderFormat;
313
	}
314

  
315
	/**
316
	 * @param outputHeaderFormat The outputHeaderFormat to set.
317
	 */
318
	public void setOutputHeaderFormat(String outputHeaderFormat) {
319
		this.outputHeaderFormat = outputHeaderFormat;
320
	}
321

  
322
	/**
323
	 * @return Returns the width.
324
	 */
325
	public int getImageWidth() {
326
		return width;
327
	}
328

  
329
	/**
330
	 * @param width The width to set.
331
	 */
332
	public void setImageWidth(int width) {
333
		this.width = width;
334
	}
335

  
336
	/**
337
	 * @return Returns the rawFile.
338
	 */
339
	public String getRawFile() {
340
		return rawFile;
341
	}
342

  
343
	/**
344
	 * @param rawFile The rawFile to set.
345
	 */
346
	public void setRawFile(String rawFile) {
347
		this.rawFile = rawFile;
348
	}
349

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff