Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.raster.legend / org.gvsig.raster.legend.imageio / src / main / java / org / gvsig / fmap / dal / file / imageio / legend / ImageIOGetColorTable.java @ 44831

History | View | Annotate | Download (2.97 KB)

1
package org.gvsig.fmap.dal.file.imageio.legend;
2

    
3
import java.awt.Color;
4
import java.awt.image.ColorModel;
5
import java.awt.image.IndexColorModel;
6
import java.util.ArrayList;
7
import java.util.List;
8
import org.gvsig.fmap.dal.file.imageio.ImageIOStoreProvider;
9

    
10
import org.gvsig.fmap.dal.raster.RasterStore;
11
import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
12
import org.gvsig.raster.lib.legend.api.RasterLegendManager;
13
import org.gvsig.raster.lib.legend.api.colortable.ColorTable;
14
import org.gvsig.raster.lib.legend.api.colortable.colortableclass.ColorTableClass;
15
import org.gvsig.tools.ToolsLocator;
16
import org.gvsig.tools.dynobject.DynClass;
17
import org.gvsig.tools.dynobject.DynMethod;
18
import org.gvsig.tools.dynobject.DynObject;
19
import org.gvsig.tools.dynobject.exception.DynMethodException;
20
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
21

    
22

    
23
public class ImageIOGetColorTable implements DynMethod {
24

    
25
    private int code;
26

    
27
    static public void register(DynClass storeClass) {
28
      ImageIOGetColorTable method = new ImageIOGetColorTable();
29
      method.code = ToolsLocator.getDynObjectManager().registerDynMethod(storeClass,method);
30
    }
31

    
32
    @Override
33
    public int getCode() throws DynMethodNotSupportedException {
34
        return code;
35
    }
36

    
37
    @Override
38
    public String getDescription() {
39
        return "ImageIO based color table";
40
    }
41

    
42
    @Override
43
    public String getName() {
44
        return RasterStore.DYNMETHOD_GETCOLORTABLE_NAME;
45
    }
46

    
47
    @Override
48
    public Object invoke(DynObject self, Object[] args)
49
 throws DynMethodException {
50
        ColorTable colorTable = null;
51
        // try {
52
        ImageIOStoreProvider provider = (ImageIOStoreProvider) self;
53

    
54
        RasterLegendManager legendManager = RasterLegendLocator.getRasterLegendManager();
55
        ColorModel colorModel = provider.getImage().getColorModel();
56

    
57
        if (colorModel instanceof IndexColorModel) {
58
            IndexColorModel indexColorModel = (IndexColorModel) colorModel;
59
            int[] rgbs = new int[indexColorModel.getMapSize()];
60
            boolean hasalpha = indexColorModel.hasAlpha();
61
            indexColorModel.getRGBs(rgbs);
62

    
63
            List<ColorTableClass> colorTableClasses = new ArrayList<>();
64

    
65
            for (int i = 0; i < rgbs.length; i++) {
66
                String className = i + "";
67
                double value = ((byte) i);
68
                double interpolation = 50.0;
69
                Color color = new Color(rgbs[i], hasalpha);
70
                ColorTableClass colorTableClass =
71
                    legendManager.createColorTableClass(className, value, interpolation, color);
72
                colorTableClasses.add(colorTableClass);
73
            }
74
            String colorTableName = provider.getName() + "_color_table";
75
            colorTable = legendManager.createColorTable(colorTableName, colorTableClasses, true);
76

    
77
        }
78

    
79
        return colorTable;
80
    }
81

    
82
    @Override
83
    public Object clone() throws CloneNotSupportedException {
84
        return super.clone();
85
    }
86
}