svn-gvsig-desktop / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / rendering / ColorRamp.java @ 4567
History | View | Annotate | Download (5.05 KB)
1 | 1100 | fjp | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
|
||
4 | *
|
||
5 | * This program is free software; you can redistribute it and/or
|
||
6 | * modify it under the terms of the GNU General Public License
|
||
7 | * as published by the Free Software Foundation; either version 2
|
||
8 | * of the License, or (at your option) any later version.
|
||
9 | *
|
||
10 | * This program is distributed in the hope that it will be useful,
|
||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
13 | * GNU General Public License for more details.
|
||
14 | *
|
||
15 | * You should have received a copy of the GNU General Public License
|
||
16 | * along with this program; if not, write to the Free Software
|
||
17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||
18 | *
|
||
19 | * For more information, contact:
|
||
20 | *
|
||
21 | * Generalitat Valenciana
|
||
22 | * Conselleria d'Infraestructures i Transport
|
||
23 | * Av. Blasco Ib??ez, 50
|
||
24 | * 46010 VALENCIA
|
||
25 | * SPAIN
|
||
26 | *
|
||
27 | * +34 963862235
|
||
28 | * gvsig@gva.es
|
||
29 | * www.gvsig.gva.es
|
||
30 | *
|
||
31 | * or
|
||
32 | *
|
||
33 | * IVER T.I. S.A
|
||
34 | * Salamanca 50
|
||
35 | * 46005 Valencia
|
||
36 | * Spain
|
||
37 | *
|
||
38 | * +34 963163400
|
||
39 | * dac@iver.es
|
||
40 | */
|
||
41 | 230 | fernando | package com.iver.cit.gvsig.fmap.rendering; |
42 | |||
43 | 458 | fjp | import com.iver.cit.gvsig.fmap.core.v02.FSymbol; |
44 | 435 | vcaballero | import com.iver.cit.gvsig.fmap.rendering.styling.FStyle2D; |
45 | 230 | fernando | |
46 | 435 | vcaballero | import com.iver.utiles.StringUtilities; |
47 | import com.iver.utiles.XMLEntity; |
||
48 | 298 | vcaballero | |
49 | 435 | vcaballero | import java.awt.Color; |
50 | 322 | fernando | |
51 | |||
52 | 298 | vcaballero | /**
|
53 | 1034 | vcaballero | * Rampa de colores para el dibujado de Raster.
|
54 | 298 | vcaballero | *
|
55 | * @author Vicente Caballero Navarro
|
||
56 | */
|
||
57 | 435 | vcaballero | public class ColorRamp implements RasterLegend { |
58 | 1034 | vcaballero | private Color firstColor; |
59 | private Color lastColor; |
||
60 | private double first; |
||
61 | private double last; |
||
62 | 298 | vcaballero | |
63 | 1034 | vcaballero | /**
|
64 | * Inserta el n?mero inicial y el color inicial.
|
||
65 | *
|
||
66 | * @param d N?mero inicial.
|
||
67 | * @param c Color inicial.
|
||
68 | */
|
||
69 | public void setFirstPoint(double d, Color c) { |
||
70 | firstColor = c; |
||
71 | first = d; |
||
72 | } |
||
73 | 230 | fernando | |
74 | 1034 | vcaballero | /**
|
75 | * Inserta el N?mero fianl y el color final.
|
||
76 | *
|
||
77 | * @param d N?mero final.
|
||
78 | * @param c Color final.
|
||
79 | */
|
||
80 | public void setLastPoint(double d, Color c) { |
||
81 | lastColor = c; |
||
82 | last = d; |
||
83 | } |
||
84 | 233 | fernando | |
85 | 1034 | vcaballero | /**
|
86 | * Devuelve el color a partir del n?mero.
|
||
87 | *
|
||
88 | * @param d N?mero.
|
||
89 | *
|
||
90 | * @return Color.
|
||
91 | */
|
||
92 | public Color getColor(double d) { |
||
93 | int fr = firstColor.getRed();
|
||
94 | int fg = firstColor.getGreen();
|
||
95 | int fb = firstColor.getBlue();
|
||
96 | 298 | vcaballero | |
97 | 1034 | vcaballero | int lr = lastColor.getRed();
|
98 | int lg = lastColor.getGreen();
|
||
99 | int lb = lastColor.getBlue();
|
||
100 | 298 | vcaballero | |
101 | 1034 | vcaballero | double total = last - first;
|
102 | double tr = lr - fr;
|
||
103 | double tg = lg - fg;
|
||
104 | double tb = lb - fb;
|
||
105 | 298 | vcaballero | |
106 | 1034 | vcaballero | double por = (d - first) / total;
|
107 | int r = (int) ((por * tr) + fr); |
||
108 | int g = (int) ((por * tg) + fg); |
||
109 | int b = (int) ((por * tb) + fb); |
||
110 | 298 | vcaballero | |
111 | 1034 | vcaballero | return new Color(r, g, b); |
112 | } |
||
113 | 322 | fernando | |
114 | 1034 | vcaballero | /**
|
115 | * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegendInfo#getDescriptions()
|
||
116 | */
|
||
117 | public String[] getDescriptions() { |
||
118 | return null; |
||
119 | } |
||
120 | 322 | fernando | |
121 | 1034 | vcaballero | /**
|
122 | * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegendInfo#getSymbols()
|
||
123 | */
|
||
124 | public FSymbol[] getSymbols() { |
||
125 | return null; |
||
126 | } |
||
127 | 322 | fernando | |
128 | 1034 | vcaballero | /**
|
129 | * @see com.iver.cit.gvsig.fmap.rendering.ClassifiedLegendInfo#getValues()
|
||
130 | */
|
||
131 | public Object[] getValues() { |
||
132 | return null; |
||
133 | } |
||
134 | 322 | fernando | |
135 | 1034 | vcaballero | /**
|
136 | * @see com.iver.cit.gvsig.fmap.rendering.Legend#getDefaultSymbol()
|
||
137 | */
|
||
138 | public FSymbol getDefaultSymbol() {
|
||
139 | return null; |
||
140 | } |
||
141 | 322 | fernando | |
142 | 1034 | vcaballero | /**
|
143 | * @see com.iver.cit.gvsig.fmap.rendering.RasterLegend#getSymbol(double)
|
||
144 | */
|
||
145 | public FStyle2D getSymbol(double d) { |
||
146 | return null; |
||
147 | } |
||
148 | 322 | fernando | |
149 | 1034 | vcaballero | /**
|
150 | * @see com.iver.cit.gvsig.fmap.rendering.RasterLegend#setDefaultSymbol(com.iver.cit.gvsig.fmap.rendering.styling.FStyle2D)
|
||
151 | */
|
||
152 | public void setDefaultSymbol(FStyle2D s) { |
||
153 | } |
||
154 | 435 | vcaballero | |
155 | 1034 | vcaballero | /**
|
156 | 3632 | ldiaz | * @see com.iver.cit.gvsig.fmap.rendering.Legend#getSLDString()
|
157 | */
|
||
158 | 4567 | ldiaz | public String getSLDString(String layerName) |
159 | 3632 | ldiaz | { |
160 | StringBuffer sld = new StringBuffer(); |
||
161 | // xml.putProperty("className",this.getClass().getName());
|
||
162 | // xml.putProperty("first", first);
|
||
163 | // xml.putProperty("firstColor", StringUtilities.color2String(firstColor));
|
||
164 | // xml.putProperty("last", last);
|
||
165 | // xml.putProperty("lastColor", StringUtilities.color2String(lastColor));
|
||
166 | |||
167 | return sld.toString();
|
||
168 | } |
||
169 | /**
|
||
170 | 1034 | vcaballero | * @see com.iver.cit.gvsig.fmap.rendering.Legend#getXMLEntity()
|
171 | */
|
||
172 | public XMLEntity getXMLEntity() {
|
||
173 | XMLEntity xml = new XMLEntity();
|
||
174 | 1094 | vcaballero | xml.putProperty("className",this.getClass().getName()); |
175 | 1034 | vcaballero | xml.putProperty("first", first);
|
176 | xml.putProperty("firstColor", StringUtilities.color2String(firstColor));
|
||
177 | xml.putProperty("last", last);
|
||
178 | xml.putProperty("lastColor", StringUtilities.color2String(lastColor));
|
||
179 | 435 | vcaballero | |
180 | 1034 | vcaballero | return xml;
|
181 | } |
||
182 | 435 | vcaballero | |
183 | 1034 | vcaballero | /**
|
184 | * Crea un ColorRamp a partir del XMLEntity.
|
||
185 | *
|
||
186 | * @param xml XMLEntity.
|
||
187 | *
|
||
188 | * @return Nuevo ColorRamp.
|
||
189 | */
|
||
190 | public static ColorRamp createFromXML(XMLEntity xml) { |
||
191 | ColorRamp cr = new ColorRamp();
|
||
192 | cr.first = xml.getDoubleProperty("first");
|
||
193 | cr.firstColor = StringUtilities.string2Color(xml.getStringProperty( |
||
194 | "fistColor"));
|
||
195 | cr.last = xml.getDoubleProperty("last");
|
||
196 | cr.lastColor = StringUtilities.string2Color(xml.getStringProperty( |
||
197 | "lastColor"));
|
||
198 | 435 | vcaballero | |
199 | 1034 | vcaballero | return cr;
|
200 | } |
||
201 | 435 | vcaballero | |
202 | 1034 | vcaballero | /**
|
203 | * @see com.iver.cit.gvsig.fmap.rendering.Legend#cloneLegend()
|
||
204 | */
|
||
205 | public Legend cloneLegend() {
|
||
206 | return createFromXML(getXMLEntity());
|
||
207 | } |
||
208 | 230 | fernando | } |