From: <ha...@us...> - 2013-02-06 18:00:54
|
Revision: 17917 http://jmol.svn.sourceforge.net/jmol/?rev=17917&view=rev Author: hansonr Date: 2013-02-06 18:00:35 +0000 (Wed, 06 Feb 2013) Log Message: ----------- PyMOL reading - custom colors Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOL.java trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOL.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOL.java 2013-02-06 17:05:09 UTC (rev 17916) +++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOL.java 2013-02-06 18:00:35 UTC (rev 17917) @@ -1,5 +1,8 @@ package org.jmol.adapter.readers.pymol; +import java.util.Hashtable; +import java.util.Map; + /** * PyMOL settings and constants. * @@ -6136,7 +6139,20 @@ }; static int getRGB(int color) { - return (color < colors.length && color >= 0 ? colors[color] : 0); + if (color < colors.length) + return (colors[color]); + if (moreColors != null) { + Integer c = moreColors.get(Integer.valueOf(color)); + if (c != null) + return c.intValue(); + } + return 0; } + private final static Map<Integer, Integer> moreColors = new Hashtable<Integer, Integer>(); + + static void addColor(Integer id, int value) { + moreColors.put(id, Integer.valueOf(value)); + } + } Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java 2013-02-06 17:05:09 UTC (rev 17916) +++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java 2013-02-06 18:00:35 UTC (rev 17917) @@ -44,6 +44,7 @@ import org.jmol.util.BitSet; import org.jmol.util.BitSetUtil; import org.jmol.util.Colix; +import org.jmol.util.ColorUtil; import org.jmol.util.Escape; import org.jmol.util.Logger; import org.jmol.util.Point3f; @@ -112,15 +113,17 @@ "set navigationMode off;" + "set zoomLarge false;" + "set measurementUnits ANGSTROMS;" + - "set ssBondsBackbone FALSE;')"; + "set ssBondsBackbone FALSE;" + + "')"; private void process(Map<String, Object> map) { // immediate execution prior to file loading - if (!isStateScript) viewer.evaluateExpression(preScript); + addColors(getMapList(map, "colors")); + for (int i = 0; i < 17; i++) reps[i] = BitSet.newN(1000); settings = getMapList(map, "settings"); @@ -128,14 +131,14 @@ try { width = getInt(getMapList(map, "main"), 0); height = getInt(getMapList(map, "main"), 1); + if (width > 0 && height > 0) { + atomSetCollection.setAtomSetCollectionAuxiliaryInfo( + "perferredWidthHeight", new int[] { width, height }); + viewer.resizeInnerPanel(width, height); + } } catch (Exception e) { // ignore } - if (width > 0 && height > 0) { - atomSetCollection.setAtomSetCollectionAuxiliaryInfo( - "perferredWidthHeight", new int[] { width, height }); - viewer.resizeInnerPanel(width, height); - } valence = getBooleanSetting(PyMOL.valence); cartoonTranslucency = getFloatSetting(PyMOL.cartoon_transparency); List<Object> names = getMapList(map, "names"); @@ -150,6 +153,17 @@ setRendering(getMapList(map, "view")); } + private void addColors(List<Object> colors) { + if (colors == null || colors.size() == 0) + return; + Point3f pt = new Point3f(); + for (int i = colors.size(); --i >= 0;) { + List<Object> c = getList(colors, i); + PyMOL.addColor((Integer) c.get(1), ColorUtil.colorPtToInt(getPoint(getList(c, 2), 0, + pt))); + } + } + /** * This is what a normal reader would not have. * Only executed if NOT in a state script @@ -450,8 +464,7 @@ BoxInfo.addPointXYZ(x, y, z, xyzMin, xyzMax, 0); //System.out.println(chainID + " " + fileAtomIndex + " " + serNo + " " + x + " " + y + " " + z); processAtom2(atom, serNo, x, y, z, charge); - int color = getInt(a, 21); - color = PyMOL.getRGB(color); + int color = PyMOL.getRGB(getInt(a, 21)); colixList.add(Integer.valueOf(Colix.getColixO(Integer.valueOf(color)))); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |