Revision 6897

View differences:

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