source: ether_megapoli/trunk/service/implementation/gov2/noaa/pmel/util/ColorMap.java @ 192

Last change on this file since 192 was 192, checked in by vmipsl, 13 years ago

Servlet _ Contour en cours _ package gov2

File size: 3.0 KB
Line 
1package gov.noaa.pmel.util;
2
3import java.util.*;
4import java.awt.*;
5import gov.noaa.pmel.sgt.Transform;
6
7public class ColorMap {
8        protected String mParamName;
9        Vector mPieceRanges = new Vector();             // stores the physical ranges (Range2D) for each of the pieces of the colormap
10        Vector mRedTransforms = new Vector();   // stores the transforms from physical to user coords for the red component
11        Vector mGreenTransforms = new Vector(); // stores the transforms from physical to user coords for the green component
12        Vector mBlueTransforms = new Vector();  // stores the transforms from physical to user coords for blue component
13       
14        public ColorMap() {
15                // zero argument ctor
16        }
17       
18        public ColorMap(ColorMap inMap) {
19                // copy constructor
20       
21        }
22       
23        // public methods
24        public Color getColor(double inVal) {
25                // find the appropriate transform by testing what Range2D it's in
26                int foundPiece = -99;
27                int numPieces = mPieceRanges.size();
28               
29                // first test whether it's out of range
30                double sVal =((Range2D)mPieceRanges.elementAt(0)).start;
31                double eVal =((Range2D)mPieceRanges.elementAt(numPieces - 1)).end;
32                if (inVal <= sVal) {
33                        float red = (float)(((Transform)mRedTransforms.elementAt(0)).getTransU(sVal));
34                        float green = (float)(((Transform)mGreenTransforms.elementAt(0)).getTransU(sVal));
35                        float blue = (float)(((Transform)mBlueTransforms.elementAt(0)).getTransU(sVal));
36                        return new Color(red, green, blue);
37                }
38                else if (inVal >= eVal) {
39                        float red = (float)(((Transform)mRedTransforms.elementAt(numPieces - 1)).getTransU(eVal));
40                        float green = (float)(((Transform)mGreenTransforms.elementAt(numPieces - 1)).getTransU(eVal));
41                        float blue = (float)(((Transform)mBlueTransforms.elementAt(numPieces - 1)).getTransU(eVal));
42                        System.out.println(red + " " + green + " " + blue);
43                        return new Color(red, green, blue);
44                }
45               
46                // value is in range
47                for (int i=0; i<mPieceRanges.size(); i++) {
48                        Range2D range = (Range2D)mPieceRanges.elementAt(i);
49                        sVal = range.start;
50                        eVal = range.end;
51                        if (inVal >= sVal && inVal <= eVal) {
52                                foundPiece = i;
53                                break;
54                        }
55                }
56                float red = (float)(((Transform)mRedTransforms.elementAt(foundPiece)).getTransU(eVal));
57                float green = (float)(((Transform)mGreenTransforms.elementAt(foundPiece)).getTransU(eVal));
58                float blue = (float)(((Transform)mBlueTransforms.elementAt(foundPiece)).getTransU(eVal));
59                return new Color(red, green, blue);
60        }
61       
62        public void addTransform(Transform inTransRed, Transform inTransGreen, Transform inTransBlue) {
63                mRedTransforms.addElement(inTransRed);
64                mGreenTransforms.addElement(inTransGreen);
65                mBlueTransforms.addElement(inTransBlue);
66                mPieceRanges.addElement(inTransRed.getRangeP());
67        }
68       
69        public IndexedColorMap getIndexedColorMap(int numColors) {
70                return new IndexedColorMap(this, numColors);
71        }
72       
73        public String getParamName() {
74                return mParamName;
75        }
76       
77        public double getMaxValue() {
78                return ((Range2D)mPieceRanges.elementAt(mPieceRanges.size()-1)).end;
79        }
80       
81        public double getMinValue() {
82                return ((Range2D)mPieceRanges.elementAt(0)).start;
83       
84        }
85}
Note: See TracBrowser for help on using the repository browser.