1 /* $RCSfile$
2  * $Author$
3  * $Date$
4  * $Revision$
5  *
6  * Copyright (C) 2011  The Jmol Development Team
7  *
8  * Contact: jmol-developers@lists.sf.net
9  *
10  *  This library is free software; you can redistribute it and/or
11  *  modify it under the terms of the GNU Lesser General Public
12  *  License as published by the Free Software Foundation; either
13  *  version 2.1 of the License, or (at your option) any later version.
14  *
15  *  This library is distributed in the hope that it will be useful,
16  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18  *  Lesser General Public License for more details.
19  *
20  *  You should have received a copy of the GNU Lesser General Public
21  *  License along with this library; if not, write to the Free Software
22  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23  *  02110-1301, USA.
24  */
25 
26 package org.jmol.c;
27 
28 /**
29  * Enum for animation mode.
30  */
31 public enum PAL {
32 
33   UNKNOWN(null, (byte) 0xFF),
34   NONE("none",PAL.PALETTE_NONE),
35   CPK("cpk",PAL.PALETTE_CPK),
36   PARTIAL_CHARGE("partialcharge",PAL.PALETTE_PARTIAL_CHARGE),
37   FORMAL_CHARGE("formalcharge",PAL.PALETTE_FORMAL_CHARGE),
38   TEMP("temperature",PAL.PALETTE_TEMP),
39   FIXEDTEMP("fixedtemperature",PAL.PALETTE_FIXEDTEMP),
40   SURFACE("surfacedistance",PAL.PALETTE_SURFACE),
41   STRUCTURE("structure",PAL.PALETTE_STRUCTURE),
42   AMINO("amino",PAL.PALETTE_AMINO),
43   SHAPELY("shapely",PAL.PALETTE_SHAPELY),
44   CHAIN("chain",PAL.PALETTE_CHAIN),
45   GROUP("group",PAL.PALETTE_GROUP),
46   MONOMER("monomer",PAL.PALETTE_MONOMER),
47   MOLECULE("molecule",PAL.PALETTE_MOLECULE),
48   ALTLOC("altloc",PAL.PALETTE_ALTLOC),
49   INSERTION("insertion",PAL.PALETTE_INSERTION),
50   JMOL("jmol",PAL.PALETTE_JMOL),
51   RASMOL("rasmol",PAL.PALETTE_RASMOL),
52   TYPE("type",PAL.PALETTE_TYPE),
53   ENERGY("energy",PAL.PALETTE_ENERGY),
54   PROPERTY("property",PAL.PALETTE_PROPERTY),
55   VARIABLE("variable",PAL.PALETTE_VARIABLE),
56   STRAIGHTNESS("straightness",PAL.PALETTE_STRAIGHTNESS),
57   POLYMER("polymer",PAL.PALETTE_POLYMER),
58   NUCLEIC("nucleic",PAL.PALETTE_NUCLEIC);
59 
60   private String name;
61   public byte id;
62   public final static byte PALETTE_VOLATILE = 0x40;
63   public final static byte PALETTE_NONE = 0;
64   public final static byte PALETTE_CPK = 1;
65   public final static byte PALETTE_PARTIAL_CHARGE = 2;
66   public final static byte PALETTE_FORMAL_CHARGE = 3;
67   public final static byte PALETTE_TEMP = 4 | PAL.PALETTE_VOLATILE;
68   public final static byte PALETTE_FIXEDTEMP = 5;
69   public final static byte PALETTE_SURFACE = 6 | PAL.PALETTE_VOLATILE;
70   public final static byte PALETTE_STRUCTURE = 7;
71   public final static byte PALETTE_AMINO = 8;
72   public final static byte PALETTE_SHAPELY = 9;
73   public final static byte PALETTE_CHAIN = 10;
74   public final static byte PALETTE_GROUP = 11 | PAL.PALETTE_VOLATILE;
75   public final static byte PALETTE_MONOMER = 12 | PAL.PALETTE_VOLATILE;
76   public final static byte PALETTE_MOLECULE = 13 | PAL.PALETTE_VOLATILE;
77   public final static byte PALETTE_ALTLOC = 14;
78   public final static byte PALETTE_INSERTION = 15;
79   public final static byte PALETTE_JMOL = 16;
80   public final static byte PALETTE_RASMOL = 17;
81   public final static byte PALETTE_TYPE = 18;
82   public final static byte PALETTE_ENERGY = 19;
83   public final static byte PALETTE_PROPERTY = 20 | PAL.PALETTE_VOLATILE;
84   public final static byte PALETTE_VARIABLE = 21 | PAL.PALETTE_VOLATILE;
85   public final static byte PALETTE_STRAIGHTNESS = 22 | PAL.PALETTE_VOLATILE;
86   public final static byte PALETTE_POLYMER = 23 | PAL.PALETTE_VOLATILE;
87   public final static byte PALETTE_NUCLEIC = 24;
88 
PAL(String name, int id)89   private PAL(String name, int id) {
90     this.name = name;
91     this.id = (byte) id;
92   }
93 
pidOf(Object value)94   public static byte pidOf(Object value) {
95     return (value instanceof PAL ?
96         ((PAL) value).id
97         : value instanceof Byte ? ((Byte) value).byteValue()
98             : UNKNOWN.id);
99   }
100 
isPaletteVariable(byte pid)101   public static boolean isPaletteVariable(byte pid) {
102     return ((pid & PAL.PALETTE_VOLATILE) != 0);
103   }
104 
getPalette(String paletteName)105   public static PAL getPalette(String paletteName) {
106     if (paletteName.indexOf('_') < 0)
107       for (PAL item : values())
108         if (paletteName.equalsIgnoreCase(item.name))
109           return item;
110     return (paletteName.indexOf("property_") == 0 ? PROPERTY : UNKNOWN);
111   }
112 
getPaletteID(String paletteName)113   public final static byte getPaletteID(String paletteName) {
114     if (paletteName.indexOf('_') < 0)
115       for (PAL item : values())
116         if (paletteName.equalsIgnoreCase(item.name))
117           return item.id;
118     return (paletteName.indexOf("property_") == 0 ? PROPERTY.id : UNKNOWN.id);
119   }
120 
getPaletteName(byte pid)121   public final static String getPaletteName(byte pid) {
122     for (PAL item : values())
123       if (item.id == pid)
124         return item.name;
125     return null;
126   }
127 
128   public final static int[] argbsCpkRasmol = { 0x00FF1493 + (0 << 24), // Xx 0
129       0x00FFFFFF + (1 << 24), // H  1
130       0x00FFC0CB + (2 << 24), // He 2
131       0x00B22222 + (3 << 24), // Li 3
132       0x0000FF00 + (5 << 24), // B  5
133       0x00C8C8C8 + (6 << 24), // C  6
134       0x008F8FFF + (7 << 24), // N  7
135       0x00F00000 + (8 << 24), // O  8
136       0x00DAA520 + (9 << 24), // F  9
137       0x000000FF + (11 << 24), // Na 11
138       0x00228B22 + (12 << 24), // Mg 12
139       0x00808090 + (13 << 24), // Al 13
140       0x00DAA520 + (14 << 24), // Si 14
141       0x00FFA500 + (15 << 24), // P  15
142       0x00FFC832 + (16 << 24), // S  16
143       0x0000FF00 + (17 << 24), // Cl 17
144       0x00808090 + (20 << 24), // Ca 20
145       0x00808090 + (22 << 24), // Ti 22
146       0x00808090 + (24 << 24), // Cr 24
147       0x00808090 + (25 << 24), // Mn 25
148       0x00FFA500 + (26 << 24), // Fe 26
149       0x00A52A2A + (28 << 24), // Ni 28
150       0x00A52A2A + (29 << 24), // Cu 29
151       0x00A52A2A + (30 << 24), // Zn 30
152       0x00A52A2A + (35 << 24), // Br 35
153       0x00808090 + (47 << 24), // Ag 47
154       0x00A020F0 + (53 << 24), // I  53
155       0x00FFA500 + (56 << 24), // Ba 56
156       0x00DAA520 + (79 << 24), // Au 79
157   };
158   /**
159    * Default table of CPK atom colors. ghemical colors with a few
160    * modifications
161    */
162   public final static int[] argbsCpk = { 0xFFFF1493, // Xx 0
163       0xFFFFFFFF, // H  1
164       0xFFD9FFFF, // He 2
165       0xFFCC80FF, // Li 3
166       0xFFC2FF00, // Be 4
167       0xFFFFB5B5, // B  5
168       0xFF909090, // C  6 - changed from ghemical
169       0xFF3050F8, // N  7 - changed from ghemical
170       0xFFFF0D0D, // O  8
171       0xFF90E050, // F  9 - changed from ghemical
172       0xFFB3E3F5, // Ne 10
173       0xFFAB5CF2, // Na 11
174       0xFF8AFF00, // Mg 12
175       0xFFBFA6A6, // Al 13
176       0xFFF0C8A0, // Si 14 - changed from ghemical
177       0xFFFF8000, // P  15
178       0xFFFFFF30, // S  16
179       0xFF1FF01F, // Cl 17
180       0xFF80D1E3, // Ar 18
181       0xFF8F40D4, // K  19
182       0xFF3DFF00, // Ca 20
183       0xFFE6E6E6, // Sc 21
184       0xFFBFC2C7, // Ti 22
185       0xFFA6A6AB, // V  23
186       0xFF8A99C7, // Cr 24
187       0xFF9C7AC7, // Mn 25
188       0xFFE06633, // Fe 26 - changed from ghemical
189       0xFFF090A0, // Co 27 - changed from ghemical
190       0xFF50D050, // Ni 28 - changed from ghemical
191       0xFFC88033, // Cu 29 - changed from ghemical
192       0xFF7D80B0, // Zn 30
193       0xFFC28F8F, // Ga 31
194       0xFF668F8F, // Ge 32
195       0xFFBD80E3, // As 33
196       0xFFFFA100, // Se 34
197       0xFFA62929, // Br 35
198       0xFF5CB8D1, // Kr 36
199       0xFF702EB0, // Rb 37
200       0xFF00FF00, // Sr 38
201       0xFF94FFFF, // Y  39
202       0xFF94E0E0, // Zr 40
203       0xFF73C2C9, // Nb 41
204       0xFF54B5B5, // Mo 42
205       0xFF3B9E9E, // Tc 43
206       0xFF248F8F, // Ru 44
207       0xFF0A7D8C, // Rh 45
208       0xFF006985, // Pd 46
209       0xFFC0C0C0, // Ag 47 - changed from ghemical
210       0xFFFFD98F, // Cd 48
211       0xFFA67573, // In 49
212       0xFF668080, // Sn 50
213       0xFF9E63B5, // Sb 51
214       0xFFD47A00, // Te 52
215       0xFF940094, // I  53
216       0xFF429EB0, // Xe 54
217       0xFF57178F, // Cs 55
218       0xFF00C900, // Ba 56
219       0xFF70D4FF, // La 57
220       0xFFFFFFC7, // Ce 58
221       0xFFD9FFC7, // Pr 59
222       0xFFC7FFC7, // Nd 60
223       0xFFA3FFC7, // Pm 61
224       0xFF8FFFC7, // Sm 62
225       0xFF61FFC7, // Eu 63
226       0xFF45FFC7, // Gd 64
227       0xFF30FFC7, // Tb 65
228       0xFF1FFFC7, // Dy 66
229       0xFF00FF9C, // Ho 67
230       0xFF00E675, // Er 68
231       0xFF00D452, // Tm 69
232       0xFF00BF38, // Yb 70
233       0xFF00AB24, // Lu 71
234       0xFF4DC2FF, // Hf 72
235       0xFF4DA6FF, // Ta 73
236       0xFF2194D6, // W  74
237       0xFF267DAB, // Re 75
238       0xFF266696, // Os 76
239       0xFF175487, // Ir 77
240       0xFFD0D0E0, // Pt 78 - changed from ghemical
241       0xFFFFD123, // Au 79 - changed from ghemical
242       0xFFB8B8D0, // Hg 80 - changed from ghemical
243       0xFFA6544D, // Tl 81
244       0xFF575961, // Pb 82
245       0xFF9E4FB5, // Bi 83
246       0xFFAB5C00, // Po 84
247       0xFF754F45, // At 85
248       0xFF428296, // Rn 86
249       0xFF420066, // Fr 87
250       0xFF007D00, // Ra 88
251       0xFF70ABFA, // Ac 89
252       0xFF00BAFF, // Th 90
253       0xFF00A1FF, // Pa 91
254       0xFF008FFF, // U  92
255       0xFF0080FF, // Np 93
256       0xFF006BFF, // Pu 94
257       0xFF545CF2, // Am 95
258       0xFF785CE3, // Cm 96
259       0xFF8A4FE3, // Bk 97
260       0xFFA136D4, // Cf 98
261       0xFFB31FD4, // Es 99
262       0xFFB31FBA, // Fm 100
263       0xFFB30DA6, // Md 101
264       0xFFBD0D87, // No 102
265       0xFFC70066, // Lr 103
266       0xFFCC0059, // Rf 104
267       0xFFD1004F, // Db 105
268       0xFFD90045, // Sg 106
269       0xFFE00038, // Bh 107
270       0xFFE6002E, // Hs 108
271       0xFFEB0026, // Mt 109
272   };
273 
274 }
275