Statistics
| Revision:

svn-gvsig-desktop / branches / org.gvsig.desktop-2018a / 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 @ 43876

History | View | Annotate | Download (3.01 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 static Integer code = null;
26

    
27
    static public void register(DynClass storeClass) {
28
        if (code != null) {
29
            return;
30
        }
31
        code = ToolsLocator.getDynObjectManager()
32
                .registerDynMethod(storeClass, new ImageIOGetColorTable());
33

    
34
    }
35

    
36
    @Override
37
    public int getCode() throws DynMethodNotSupportedException {
38
        return code;
39
    }
40

    
41
    @Override
42
    public String getDescription() {
43
        return "ImageIO based color table";
44
    }
45

    
46
    @Override
47
    public String getName() {
48
        return RasterStore.DYNMETHOD_GETCOLORTABLE_NAME;
49
    }
50

    
51
    @Override
52
    public Object invoke(DynObject self, Object[] args)
53
 throws DynMethodException {
54
        ColorTable colorTable = null;
55
        // try {
56
        ImageIOStoreProvider provider = (ImageIOStoreProvider) self;
57

    
58
        RasterLegendManager legendManager = RasterLegendLocator.getRasterLegendManager();
59
        ColorModel colorModel = provider.getImage().getColorModel();
60

    
61
        if (colorModel instanceof IndexColorModel) {
62
            IndexColorModel indexColorModel = (IndexColorModel) colorModel;
63
            int[] rgbs = new int[indexColorModel.getMapSize()];
64
            boolean hasalpha = indexColorModel.hasAlpha();
65
            indexColorModel.getRGBs(rgbs);
66

    
67
            List<ColorTableClass> colorTableClasses = new ArrayList<>();
68

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

    
81
        }
82

    
83
        return colorTable;
84
    }
85

    
86
    @Override
87
    public Object clone() throws CloneNotSupportedException {
88
        return super.clone();
89
    }
90
}