Statistics
| Revision:

svn-gvsig-desktop / branches / org.gvsig.desktop-2018a / org.gvsig.desktop.library / org.gvsig.raster.legend / org.gvsig.raster.legend.jpg / src / main / java / org / gvsig / fmap / dal / file / jpg / legend / JpgGetColorTable.java @ 43803

History | View | Annotate | Download (3.01 KB)

1
package org.gvsig.fmap.dal.file.jpg.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

    
9
import org.gvsig.fmap.dal.file.jpg.JpgStoreProvider;
10
import org.gvsig.fmap.dal.raster.api.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
 * @author fdiaz
24
 *
25
 */
26
public class JpgGetColorTable implements DynMethod {
27

    
28
    private static Integer code = null;
29

    
30
    static void register(DynClass storeClass) {
31
        if (code != null) {
32
            return;
33
        }
34
        code = ToolsLocator.getDynObjectManager()
35
                .registerDynMethod(storeClass, new JpgGetColorTable());
36

    
37
    }
38

    
39
    @Override
40
    public int getCode() throws DynMethodNotSupportedException {
41
        return code;
42
    }
43

    
44
    @Override
45
    public String getDescription() {
46
        return "JPG Color Table";
47
    }
48

    
49
    @Override
50
    public String getName() {
51
        return RasterStore.DYNMETHOD_GETCOLORTABLE_NAME;
52
    }
53

    
54
    @Override
55
    public Object invoke(DynObject self, Object[] args)
56
 throws DynMethodException {
57
        ColorTable colorTable = null;
58
        // try {
59
        JpgStoreProvider provider = (JpgStoreProvider) self;
60

    
61
        RasterLegendManager legendManager = RasterLegendLocator.getRasterLegendManager();
62
        ColorModel colorModel = provider.getImage().getColorModel();
63

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

    
70
            List<ColorTableClass> colorTableClasses = new ArrayList<ColorTableClass>();
71

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

    
84
        }
85

    
86
        return colorTable;
87
    }
88

    
89
    @Override
90
    public Object clone() throws CloneNotSupportedException {
91
        return super.clone();
92
    }
93
}