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