Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster / org.gvsig.fmap.dal.file.jimi.legend / src / main / java / org / gvsig / fmap / dal / file / jimi / legend / JimiGetColorTable.java @ 6899

History | View | Annotate | Download (3.37 KB)

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

    
3
import java.awt.Color;
4
import java.awt.image.ColorModel;
5
import java.awt.image.ComponentColorModel;
6
import java.awt.image.IndexColorModel;
7
import java.util.ArrayList;
8
import java.util.List;
9

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

    
25
public class JimiGetColorTable implements DynMethod {
26

    
27
    private static Integer code = null;
28

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

    
36
    }
37

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

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

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

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

    
60
             RasterLegendManager legendManager=RasterLegendLocator.getRasterLegendManager();
61
             MemoryImage image=jimiProvider.getMemoryImage();
62

    
63
             ColorModel colorModel=image.colorModel;
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 = legendManager.createColorTableClass(className, value, interpolation, color);
78
                     colorTableClasses.add(colorTableClass);
79
                 }
80
                 String colorTableName=jimiProvider.getName()+"_color_table";
81
                 colorTable=legendManager.createColorTable(colorTableName, colorTableClasses, true);
82

    
83
             }
84

    
85
//        } catch (DynMethodNotSupportedException e) {
86
//            //FIXME
87
//            throw new RuntimeException(e);
88
//        }
89
        return colorTable;
90
    }
91

    
92
    @Override
93
    public Object clone() throws CloneNotSupportedException {
94
        return super.clone();
95
    }
96
}