Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/raster/PaletteManager.java @ 438:7399bb8f83ea
Added manager to handle several levels of palette subdivsions.
Added parameter ids to identify the palette associated with a parameter
gnv-artifacts/trunk@486 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 28 Dec 2009 11:50:27 +0000 |
parents | |
children | f42ed4f10b79 |
comparison
equal
deleted
inserted
replaced
437:b624879d2902 | 438:7399bb8f83ea |
---|---|
1 package de.intevation.gnv.raster; | |
2 | |
3 import java.util.HashMap; | |
4 | |
5 import java.lang.ref.SoftReference; | |
6 | |
7 /** | |
8 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) | |
9 */ | |
10 public class PaletteManager | |
11 { | |
12 protected Palette base; | |
13 | |
14 protected String description; | |
15 protected String name; | |
16 | |
17 protected HashMap<Integer, SoftReference<Palette>> levels; | |
18 | |
19 public PaletteManager() { | |
20 } | |
21 | |
22 public PaletteManager( | |
23 String name, | |
24 String description, | |
25 Palette base | |
26 ) { | |
27 this.name = name; | |
28 this.description = description; | |
29 this.base = base; | |
30 levels = new HashMap<Integer, SoftReference<Palette>>(); | |
31 } | |
32 | |
33 public String getDescription() { | |
34 return description; | |
35 } | |
36 | |
37 public Palette getLevel(int n) { | |
38 if (n < 2) { | |
39 return base; | |
40 } | |
41 | |
42 Integer N = Integer.valueOf(n); | |
43 | |
44 Palette palette; | |
45 | |
46 synchronized (levels) { | |
47 SoftReference<Palette> ref = levels.get(N); | |
48 | |
49 if (ref != null && (palette = ref.get()) != null) { | |
50 return palette; | |
51 } | |
52 | |
53 palette = base.subdivide(n); | |
54 | |
55 ref = new SoftReference(palette); | |
56 | |
57 levels.put(N, ref); | |
58 } | |
59 | |
60 return palette; | |
61 } | |
62 } | |
63 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: |