Revision: 18282
          http://sourceforge.net/p/jmol/code/18282
Author:   hansonr
Date:     2013-06-05 03:55:27 +0000 (Wed, 05 Jun 2013)
Log Message:
-----------
___JmolVersion="13.1.16_dev_2013.06.04"

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java
    trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java
    trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java
    trunk/Jmol/src/org/jmol/api/JmolAdapter.java
    trunk/Jmol/src/org/jmol/modelset/BondCollection.java
    trunk/Jmol/src/org/jmol/modelset/ModelLoader.java
    trunk/Jmol/src/org/jmol/modelset/Text.java
    trunk/Jmol/src/org/jmol/render/LabelsRenderer.java
    trunk/Jmol/src/org/jmol/render/SticksRenderer.java
    trunk/Jmol/src/org/jmol/shape/Labels.java
    trunk/Jmol/src/org/jmol/util/JmolEdge.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties
    trunk/Jmol/src/org/jmol/viewer/StateCreator.java
    trunk/Jmol/src/org/jmol/viewer/Viewer.java

Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java       
2013-06-04 23:48:28 UTC (rev 18281)
+++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/JmolObject.java       
2013-06-05 03:55:27 UTC (rev 18282)
@@ -126,7 +126,8 @@
   }
 
   @SuppressWarnings("unchecked")
-  void finalizeObject(PyMOLScene pymolScene, ModelSet m, String mepList, 
boolean doCache) {
+  void finalizeObject(PyMOLScene pymolScene, ModelSet m, String mepList,
+                      boolean doCache) {
     ShapeManager sm = m.shapeManager;
     int modelIndex = getModelIndex(m);
     String sID;
@@ -152,8 +153,7 @@
         }
         sm.viewer.setObjectProp((String) info, id);
       } else {
-        sm.viewer.displayAtoms(bsAtoms, id == T.display, false, T.add,
-            true);
+        sm.viewer.displayAtoms(bsAtoms, id == T.display, false, T.add, true);
       }
       return;
     case T.define:
@@ -190,7 +190,9 @@
     case JC.SHAPE_STICKS:
       if (size != -1) {
         sm.setShapeSizeBs(JC.SHAPE_STICKS, size, null, bsAtoms);
-        
pymolScene.setUniqueBonds(((BS[])sm.getShapePropertyIndex(JC.SHAPE_STICKS, 
"sets", 0))[1], id == JC.SHAPE_STICKS);
+        BS bsBonds = ((BS[]) sm.getShapePropertyIndex(JC.SHAPE_STICKS, "sets",
+            0))[1];
+        pymolScene.setUniqueBonds(bsBonds, id == JC.SHAPE_STICKS);
         size = -1;
       }
       id = JC.SHAPE_STICKS;
@@ -245,10 +247,8 @@
         if (doCache)
           sb.append(";isosurface cache");
       } else {
-        //if (argb == 0)
-        //sm.setShapePropertyBs(JC.SHAPE_BALLS, "colors", colors, bsAtoms);
-        String lighting = (String)((Object[]) info)[0];
-        String only = (String)((Object[]) info)[1];
+        String lighting = (String) ((Object[]) info)[0];
+        String only = (String) ((Object[]) info)[1];
         only = " only";
         BS bsCarve = (BS) ((Object[]) info)[2];
         float carveDistance = ((Float) ((Object[]) info)[3]).floatValue();
@@ -261,16 +261,15 @@
         }
         boolean haveMep = Parser.isOneOf(sID, mepList);
         String model = m.models[modelIndex].getModelNumberDotted();
-//        BS bsIgnore = sm.viewer.getAtomsWithinRadius(0.1f, bsAtoms, true, 
-//            new RadiusData(null, 0.1f, EnumType.ABSOLUTE, null));
-//        bsIgnore.andNot(bsAtoms);
-//        String ignore = " ignore " + Escape.eBS(bsIgnore);
+        //        BS bsIgnore = sm.viewer.getAtomsWithinRadius(0.1f, bsAtoms, 
true, 
+        //            new RadiusData(null, 0.1f, EnumType.ABSOLUTE, null));
+        //        bsIgnore.andNot(bsAtoms);
+        //        String ignore = " ignore " + Escape.eBS(bsIgnore);
         String ignore = "";
         String type = (size < 0 ? " sasurface " : " solvent ");
-        sb.append(" model ")
-            .append(model).append(
-                resolution).append(" select ").append(Escape.eBS(bsAtoms))
-            .append(only).append(ignore).append(type).appendF(Math.abs(size / 
1000f));
+        sb.append(" model ").append(model).append(resolution)
+            .append(" select ").append(Escape.eBS(bsAtoms)).append(only)
+            .append(ignore).append(type).appendF(Math.abs(size / 1000f));
         if (!haveMep) {
           if (argb == 0)
             sb.append(" map property color");
@@ -281,7 +280,7 @@
         if (translucency > 0)
           sb.append(";color isosurface translucent " + translucency);
         if (bsCarve != null && !bsCarve.isEmpty())
-          sb.append(";isosurface slab within " + carveDistance + " {" + model 
+          sb.append(";isosurface slab within " + carveDistance + " {" + model
               + " and " + Escape.eBS(bsCarve) + "}");
         if (doCache && !haveMep)
           sb.append(";isosurface cache");

Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java      
2013-06-04 23:48:28 UTC (rev 18281)
+++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLReader.java      
2013-06-05 03:55:27 UTC (rev 18282)
@@ -33,6 +33,7 @@
 import org.jmol.adapter.smarter.Atom;
 import org.jmol.adapter.smarter.Bond;
 import org.jmol.adapter.smarter.Structure;
+import org.jmol.api.JmolAdapter;
 import org.jmol.api.JmolDocument;
 import org.jmol.api.PymolAtomReader;
 import org.jmol.constant.EnumStructure;
@@ -703,8 +704,9 @@
       return;
     JmolList<Object> data = listAt(listAt(pymolObject, 2), 0);
     int color = PyMOL.getRGB(intAt(listAt(pymolObject, 0), 2));
-    pymolScene.addCGO(data, color);
-    appendLoadNote("CGO " + PyMOLScene.fixName(objectName));
+    String name = pymolScene.addCGO(data, color);
+    if (name != null)
+      appendLoadNote("CGO " + name);
   }
 
   /**
@@ -736,7 +738,7 @@
         volumeData = new Hashtable<String, JmolList<Object>>();
       volumeData.put(objectName, pymolObject);
       if (!isHidden && !isStateScript)
-        addJmolObject(T.isosurface, null, objectName);
+        pymolScene.addIsosurface(objectName);
     }
     pymolObject.addLast(objectName);
   }
@@ -847,6 +849,7 @@
       }
     addBonds(bonds);
     addMolStructures();
+    atoms = atomSetCollection.getAtoms();
     if (!isStateScript)
       createShapeObjects();
     ssMapSeq = null;
@@ -879,11 +882,11 @@
    */
   private JmolList<Bond> getBondList(JmolList<Object> bonds) {
     JmolList<Bond> bondList = new JmolList<Bond>();
-    boolean valence = pymolScene.booleanSetting(PyMOL.valence);
+    int asSingle = (pymolScene.booleanSetting(PyMOL.valence) ? 0 : 
JmolAdapter.ORDER_AS_SINGLE);
     int n = bonds.size();
     for (int i = 0; i < n; i++) {
       JmolList<Object> b = listAt(bonds, i);
-      int order = (valence ? intAt(b, 2) : 1);
+      int order = intAt(b, 2) | asSingle;
       if (order < 1 || order > 3)
         order = 1;
       int ia = intAt(b, 0);
@@ -1151,18 +1154,16 @@
    * 
    */
   private void createShapeObjects() {
-    atoms = atomSetCollection.getAtoms();
     pymolScene.createShapeObjects(reps, allowSurface && !isHidden, atomCount0, 
atomCount);
   }
 
   ////// end of molecule-specific JmolObjects //////
-  
+
   ///// final processing /////
-  
+
   /**
-   * Create mesh or mep JmolObjects. 
-   * Caching the volumeData, because it will be needed 
-   * by org.jmol.jvxl.readers.PyMOLMeshReader
+   * Create mesh or mep JmolObjects. Caching the volumeData, because it will be
+   * needed by org.jmol.jvxl.readers.PyMOLMeshReader
    * 
    */
   private void processMeshes() {
@@ -1192,18 +1193,11 @@
       if (surface == null)
         continue;
       obj.addLast(mapName);
-      appendLoadNote("PyMOL object " + objName + " references map " + mapName);
       volumeData.put(objName, obj);
       volumeData.put("__pymolSurfaceData__", obj);
-      if (!isStateScript) {
-        JmolObject jo = addJmolObject(tok, null, obj);
-        if (isMep) {
-        } else {
-          jo.setSize(pymolScene.globalSetting(PyMOL.mesh_width));
-          jo.argb = PyMOL.getRGB(intAt(listAt(obj, 0), 2));
-        }
-        jo.translucency = pymolScene.globalSetting(PyMOL.transparency);
-      }
+      if (!isStateScript)
+        pymolScene.addMesh(tok, obj, objName, isMep);
+      appendLoadNote("PyMOL object " + objName + " references map " + mapName);
     }
   }
 
@@ -1276,10 +1270,6 @@
     pymolScene.setAtomInfo(uniqueIDs, cartoonTypes, sequenceNumbers, newChain, 
radii);    
   }
 
-  private JmolObject addJmolObject(int id, BS bsAtoms, Object info) {
-    return pymolScene.addJmolObject(id, bsAtoms, info);
-  }
-
   // generally useful static methods
 
   private static int intAt(JmolList<Object> list, int i) {

Modified: trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java       
2013-06-04 23:48:28 UTC (rev 18281)
+++ trunk/Jmol/src/org/jmol/adapter/readers/pymol/PyMOLScene.java       
2013-06-05 03:55:27 UTC (rev 18282)
@@ -434,13 +434,14 @@
       bs = null;
       String info = objectSelectionName;
       switch (objectType) {
+      case 0: // doesn't have selected state
+      case PyMOL.OBJECT_GROUP:
+        continue;
       case PyMOL.OBJECT_MOLECULE:
         bs = viewer.getDefinedAtomSet(info);
         if (bs.nextSetBit(0) < 0)
           continue;
         break;
-      case PyMOL.OBJECT_GROUP:
-        continue;
       case PyMOL.OBJECT_MEASURE:
         if (tok == T.display) {
           MeasurementData[] mdList = htMeasures.get(name);
@@ -465,7 +466,7 @@
     objectName = name;
     objectType = getObjectType(name);
     objectSelectionName = getSelectionName(name);
-    objectNameID = (istate == 0 ? getObjectID(name) : objectSelectionName + "_"
+    objectNameID = (istate == 0 && objectType != 0 ? getObjectID(name) : 
objectSelectionName + "_"
         + istate);
     objectAtoms = htObjectAtoms.get(name);
     objectSettings = htObjectSettings.get(name);
@@ -720,7 +721,8 @@
         colixes[i] = (short) atomColorList.get(i).intValue();
       jo.setColors(colixes, 0);
       jo.setSize(0);
-      jo = addJmolObject(JC.SHAPE_STICKS, objectAtoms, null);
+      jo = addJmolObject(JC.SHAPE_STICKS, objectAtoms, 
+          Float.valueOf(floatSetting(PyMOL.valence)));
       jo.setSize(0);
     }
     createShapeObject(PyMOL.REP_LINES, reps[PyMOL.REP_LINES]);
@@ -885,11 +887,12 @@
     return labelPos;
   }
 
-  void addCGO(JmolList<Object> data, int color) {
+  String addCGO(JmolList<Object> data, int color) {
     data.addLast(objectName);
     JmolObject jo = addJmolObject(JC.SHAPE_CGO, null, data);
     jo.argb = color;
     jo.translucency = floatSetting(PyMOL.cgo_transparency);
+    return fixName(objectName);
   }
   
   boolean addMeasurements(MeasurementData[] mdList, int nCoord,
@@ -1002,7 +1005,7 @@
     frameObj = null;
   }
 
-  static String fixName(String name) {
+  private static String fixName(String name) {
     char[] chars = name.toLowerCase().toCharArray();
     for (int i = chars.length; --i >= 0;)
       if (!Character.isLetterOrDigit(chars[i]))
@@ -1014,8 +1017,9 @@
     return (String) objectInfo.get(name)[0];
   }
 
-  int getObjectType(String name) {
-    return ((Integer) objectInfo.get(name)[1]).intValue();
+  private int getObjectType(String name) {
+    Object[] o = objectInfo.get(name);
+    return (o == null ? 0 : ((Integer) o[1]).intValue());
   }
 
   BS setAtomMap(int[] atomMap, int atomCount0) {
@@ -1568,9 +1572,24 @@
       int c = (int) getUniqueFloatDef(id, PyMOL.stick_color, 
Integer.MAX_VALUE);
       if (c != Integer.MAX_VALUE)
         c =  PyMOL.getRGB(c);
+      float valence = getUniqueFloatDef(id, PyMOL.valence, Float.NaN);
       float t = getUniqueFloatDef(id, PyMOL.stick_transparency, Float.NaN);
-      viewer.setBondParameters(thisState - 1, i, rad, c, t);
+      viewer.setBondParameters(thisState - 1, i, null, rad, valence, c, t);
    }
   }
 
+  public void addMesh(int tok, JmolList<Object> obj, String objName, boolean 
isMep) {
+    JmolObject jo = addJmolObject(tok, null, obj);
+    setObject(objName, -1);
+    if (!isMep) {
+      jo.setSize(floatSetting(PyMOL.mesh_width));
+      jo.argb = PyMOL.getRGB(intAt(listAt(obj, 0), 2));
+    }
+    jo.translucency = floatSetting(PyMOL.transparency);
+  }
+
+  public void addIsosurface(String objectName) {
+    addJmolObject(T.isosurface, null, objectName);
+  }
+
 }

Modified: trunk/Jmol/src/org/jmol/api/JmolAdapter.java
===================================================================
--- trunk/Jmol/src/org/jmol/api/JmolAdapter.java        2013-06-04 23:48:28 UTC 
(rev 18281)
+++ trunk/Jmol/src/org/jmol/api/JmolAdapter.java        2013-06-05 03:55:27 UTC 
(rev 18282)
@@ -56,20 +56,21 @@
  ****************************************************************/
 public abstract class JmolAdapter {
 
-  public final static short ORDER_COVALENT_SINGLE = 
JmolEdge.BOND_COVALENT_SINGLE;
-  public final static short ORDER_COVALENT_DOUBLE = 
JmolEdge.BOND_COVALENT_DOUBLE;
-  public final static short ORDER_COVALENT_TRIPLE = 
JmolEdge.BOND_COVALENT_TRIPLE;
-  public final static short ORDER_AROMATIC        = JmolEdge.BOND_AROMATIC;
-  public final static short ORDER_AROMATIC_SINGLE = 
JmolEdge.BOND_AROMATIC_SINGLE;
-  public final static short ORDER_AROMATIC_DOUBLE = 
JmolEdge.BOND_AROMATIC_DOUBLE;
-  public final static short ORDER_HBOND           = JmolEdge.BOND_H_REGULAR;
-  public final static short ORDER_STEREO_NEAR     = JmolEdge.BOND_STEREO_NEAR; 
-  public final static short ORDER_STEREO_FAR      = JmolEdge.BOND_STEREO_FAR; 
-  public final static short ORDER_PARTIAL01       = JmolEdge.BOND_PARTIAL01;
-  public final static short ORDER_PARTIAL12       = JmolEdge.BOND_PARTIAL12;
-  public final static short ORDER_PARTIAL23       = JmolEdge.BOND_PARTIAL23;
-  public final static short ORDER_PARTIAL32       = JmolEdge.BOND_PARTIAL32;
-  public final static short ORDER_UNSPECIFIED     = 
JmolEdge.BOND_ORDER_UNSPECIFIED;
+  public final static int ORDER_COVALENT_SINGLE = 
JmolEdge.BOND_COVALENT_SINGLE;
+  public final static int ORDER_COVALENT_DOUBLE = 
JmolEdge.BOND_COVALENT_DOUBLE;
+  public final static int ORDER_COVALENT_TRIPLE = 
JmolEdge.BOND_COVALENT_TRIPLE;
+  public final static int ORDER_AROMATIC        = JmolEdge.BOND_AROMATIC;
+  public final static int ORDER_AROMATIC_SINGLE = 
JmolEdge.BOND_AROMATIC_SINGLE;
+  public final static int ORDER_AROMATIC_DOUBLE = 
JmolEdge.BOND_AROMATIC_DOUBLE;
+  public final static int ORDER_HBOND           = JmolEdge.BOND_H_REGULAR;
+  public final static int ORDER_STEREO_NEAR     = JmolEdge.BOND_STEREO_NEAR; 
+  public final static int ORDER_STEREO_FAR      = JmolEdge.BOND_STEREO_FAR; 
+  public final static int ORDER_PARTIAL01       = JmolEdge.BOND_PARTIAL01;
+  public final static int ORDER_PARTIAL12       = JmolEdge.BOND_PARTIAL12;
+  public final static int ORDER_PARTIAL23       = JmolEdge.BOND_PARTIAL23;
+  public final static int ORDER_PARTIAL32       = JmolEdge.BOND_PARTIAL32;
+  public final static int ORDER_UNSPECIFIED     = 
JmolEdge.BOND_ORDER_UNSPECIFIED;
+  public final static int ORDER_AS_SINGLE       = JmolEdge.BOND_AS_SINGLE;
   
   public final static EnumQuantumShell getShellEnumeration(int i) { return 
EnumQuantumShell.getItem(i); }
   public final static int[][] getNewDfCoefMap() { return 
EnumQuantumShell.getNewDfCoefMap(); }

Modified: trunk/Jmol/src/org/jmol/modelset/BondCollection.java
===================================================================
--- trunk/Jmol/src/org/jmol/modelset/BondCollection.java        2013-06-04 
23:48:28 UTC (rev 18281)
+++ trunk/Jmol/src/org/jmol/modelset/BondCollection.java        2013-06-05 
03:55:27 UTC (rev 18282)
@@ -849,14 +849,28 @@
   }
 
   /**
-   * used in PyMOL reader to set unique bond settings
+   * used in PyMOL reader to set unique bond settings and for valence
+   * 
    * @param modelIndex
-   * @param i
+   * @param iBond
+   * @param bsBonds
    * @param rad
+   * @param pymolValence  1 for "show multiple bonds
    * @param argb
    * @param trans
    */
-  public void setBondParameters(int modelIndex, int i, float rad, int argb, 
float trans) {
+  public void setBondParametersBS(int modelIndex, int iBond, BS bsBonds,
+                                  float rad, float pymolValence, int argb,
+                                  float trans) {
+    if (bsBonds == null)
+      setBondParameters(modelIndex, iBond, rad, pymolValence, argb, trans);
+    else
+      for (int i = bsBonds.nextSetBit(0); i >= 0; i = bsBonds.nextSetBit(i + 
1))
+        setBondParameters(modelIndex, i, rad, pymolValence, argb, trans);
+  }
+
+  public void setBondParameters(int modelIndex, int i, float rad, float 
pymolValence,
+                             int argb, float trans) {
     if (i < 0 || i >= bondCount)
       return;
     Bond b = bonds[i];
@@ -871,6 +885,10 @@
       b.colix = C.getColixTranslucent3(colix, trans != 0, trans);
     else if (b.colix != colix)
       b.colix = C.copyColixTranslucency(b.colix, colix);
+    if (pymolValence == 1)
+      b.order &= ~JmolEdge.BOND_AS_SINGLE;
+    else if (pymolValence == 0)
+      b.order |= JmolEdge.BOND_AS_SINGLE;
   }
 
 

Modified: trunk/Jmol/src/org/jmol/modelset/ModelLoader.java
===================================================================
--- trunk/Jmol/src/org/jmol/modelset/ModelLoader.java   2013-06-04 23:48:28 UTC 
(rev 18281)
+++ trunk/Jmol/src/org/jmol/modelset/ModelLoader.java   2013-06-05 03:55:27 UTC 
(rev 18282)
@@ -889,30 +889,37 @@
     return model.chains[model.chainCount++] = new Chain(model, chainID);
   }
 
-  private void iterateOverAllNewBonds(JmolAdapter adapter, Object 
atomSetCollection) {
-    JmolAdapterBondIterator iterBond = 
adapter.getBondIterator(atomSetCollection);
+  private void iterateOverAllNewBonds(JmolAdapter adapter,
+                                      Object atomSetCollection) {
+    JmolAdapterBondIterator iterBond = adapter
+        .getBondIterator(atomSetCollection);
     if (iterBond == null)
       return;
     short mad = viewer.getMadBond();
-    short order;
     modelSet.defaultCovalentMad = (jmolData == null ? mad : 0);
     boolean haveMultipleBonds = false;
     while (iterBond.hasNext()) {
-      order = (short) iterBond.getEncodedOrder();
-      Bond b = bondAtoms(iterBond.getAtomUniqueID1(), 
iterBond.getAtomUniqueID2(), order);
+      int iOrder = iterBond.getEncodedOrder();
+      short order = (short) iOrder;
+      Bond b = bondAtoms(iterBond.getAtomUniqueID1(), iterBond
+          .getAtomUniqueID2(), order);
       if (b != null) {
-      if (order > 1 && order != JmolEdge.BOND_STEREO_NEAR && order != 
JmolEdge.BOND_STEREO_FAR)
-        haveMultipleBonds = true;
+        if (order > 1 && order != JmolEdge.BOND_STEREO_NEAR
+            && order != JmolEdge.BOND_STEREO_FAR)
+          haveMultipleBonds = true;
         float radius = iterBond.getRadius();
         if (radius > 0)
           b.setMad((short) (radius * 2000));
         short colix = iterBond.getColix();
         if (colix >= 0)
           b.setColix(colix);
+        b.order |= (iOrder & JmolEdge.BOND_AS_SINGLE);
       }
     }
-    if (haveMultipleBonds && modelSet.someModelsHaveSymmetry && 
!viewer.getBoolean(T.applysymmetrytobonds))
-      Logger.info("ModelSet: use \"set appletSymmetryToBonds TRUE \" to apply 
the file-based multiple bonds to symmetry-generated atoms.");
+    if (haveMultipleBonds && modelSet.someModelsHaveSymmetry
+        && !viewer.getBoolean(T.applysymmetrytobonds))
+      Logger
+          .info("ModelSet: use \"set appletSymmetryToBonds TRUE \" to apply 
the file-based multiple bonds to symmetry-generated atoms.");
     modelSet.defaultCovalentMad = mad;
   }
   

Modified: trunk/Jmol/src/org/jmol/modelset/Text.java
===================================================================
--- trunk/Jmol/src/org/jmol/modelset/Text.java  2013-06-04 23:48:28 UTC (rev 
18281)
+++ trunk/Jmol/src/org/jmol/modelset/Text.java  2013-06-05 03:55:27 UTC (rev 
18282)
@@ -39,14 +39,8 @@
   
   public float fontScale;
 
-  public String text;
-
   public String textUnformatted;
   
-  public String getText() {
-    return text;
-  }
-
   public boolean doFormatText;
 
   public String[] lines;
@@ -59,6 +53,10 @@
 
   private int textWidth;
   private int textHeight;
+  private String text;
+  public String getText() {
+    return text;
+  }
 
   private int[] widths;
 

Modified: trunk/Jmol/src/org/jmol/render/LabelsRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/render/LabelsRenderer.java  2013-06-04 23:48:28 UTC 
(rev 18281)
+++ trunk/Jmol/src/org/jmol/render/LabelsRenderer.java  2013-06-05 03:55:27 UTC 
(rev 18282)
@@ -105,7 +105,8 @@
       if (!atom.isVisible(myVisibilityFlag))
         continue;
       String label = labelStrings[i];
-      if (label == null || label.length() == 0 || labels.mads != null
+      if (label == null 
+          || label.length() == 0 || labels.mads != null
           && labels.mads[i] < 0)
         continue;
       labelColix = labels.getColix2(i, atom, false);

Modified: trunk/Jmol/src/org/jmol/render/SticksRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/render/SticksRenderer.java  2013-06-04 23:48:28 UTC 
(rev 18281)
+++ trunk/Jmol/src/org/jmol/render/SticksRenderer.java  2013-06-05 03:55:27 UTC 
(rev 18282)
@@ -87,10 +87,13 @@
     if (multipleBondSpacing == 0 && isCartesianExport)
       multipleBondSpacing = 0.2f;
     multipleBondRadiusFactor = viewer.getFloat(T.multiplebondradiusfactor);
-    showMultipleBonds = multipleBondSpacing != 0
-        && viewer.getBoolean(T.showmultiplebonds);
     modeMultipleBond = viewer.getModeMultipleBond();
-    renderWireframe = viewer.getInMotion(true) && 
viewer.getBoolean(T.wireframerotation);
+    showMultipleBonds = (multipleBondSpacing != 0
+        && modeMultipleBond != JC.MULTIBOND_NEVER
+        && viewer.getBoolean(T.showmultiplebonds));
+
+    renderWireframe = viewer.getInMotion(true)
+        && viewer.getBoolean(T.wireframerotation);
     ssbondsBackbone = viewer.getBoolean(T.ssbondsbackbone);
     hbondsBackbone = viewer.getBoolean(T.hbondsbackbone);
     bondsBackbone = hbondsBackbone | ssbondsBackbone;
@@ -192,8 +195,9 @@
         bondOrder &= ~JmolEdge.BOND_SULFUR_MASK;
       if ((bondOrder & JmolEdge.BOND_COVALENT_MASK) != 0) {
         if (!showMultipleBonds
-            || modeMultipleBond == JC.MULTIBOND_NEVER
-            || (modeMultipleBond == JC.MULTIBOND_NOTSMALL && mad > 
JC.madMultipleBondSmallMaximum)) {
+            || (modeMultipleBond == JC.MULTIBOND_NOTSMALL && mad > 
JC.madMultipleBondSmallMaximum)
+            || (bondOrder & JmolEdge.BOND_AS_SINGLE) != 0
+            ) {
           bondOrder = 1;
         }
       }

Modified: trunk/Jmol/src/org/jmol/shape/Labels.java
===================================================================
--- trunk/Jmol/src/org/jmol/shape/Labels.java   2013-06-04 23:48:28 UTC (rev 
18281)
+++ trunk/Jmol/src/org/jmol/shape/Labels.java   2013-06-05 03:55:27 UTC (rev 
18282)
@@ -440,7 +440,7 @@
     if (isScaled) {
       text = Text.newLabel(gdata, null, label, (short) 0, (short) 0, 0, 
scalePixelsPerMicron, null);
       putLabel(i, text);
-    } else if (text != null) {
+    } else if (text != null && label != null) {
       text.setText(label);
     }
     if (defaultOffset != zeroOffset)

Modified: trunk/Jmol/src/org/jmol/util/JmolEdge.java
===================================================================
--- trunk/Jmol/src/org/jmol/util/JmolEdge.java  2013-06-04 23:48:28 UTC (rev 
18281)
+++ trunk/Jmol/src/org/jmol/util/JmolEdge.java  2013-06-05 03:55:27 UTC (rev 
18282)
@@ -37,6 +37,7 @@
   // 11 1111 1100 0000 0000
   // 76 5432 1098 7654 3210
   // | new connection                 1 << 17  0x20000
+  //  | render as single              1 << 16  0x10000
   //    | strut                       1 << 15  0x08000
   //     ||| | Hydrogen bond 0x3800   F << 11
   //          |Stereo 0x400           1 << 10  
@@ -68,10 +69,11 @@
   public final static int BOND_COVALENT_TRIPLE = 3;
   public final static int BOND_COVALENT_QUADRUPLE = 4;
   public final static int BOND_ORDER_UNSPECIFIED = 0x11;
-  public final static int BOND_ORDER_ANY     = 0xFFFF;
+  public final static int BOND_ORDER_ANY     = 0x0FFFF;
   public final static int BOND_ORDER_NULL    = 0x1FFFF;
+  public static final int BOND_STRUT         = 0x08000;
+  public final static int BOND_AS_SINGLE     = 0x10000;
   public final static int BOND_NEW           = 0x20000;
-  public static final int BOND_STRUT         = 0x8000;
   public final static int BOND_HBOND_SHIFT   = 11;
   public final static int BOND_HYDROGEN_MASK = 0xF << 11;
   public final static int BOND_H_REGULAR     = 1 << 11;

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2013-06-04 23:48:28 UTC 
(rev 18281)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2013-06-05 03:55:27 UTC 
(rev 18282)
@@ -11,6 +11,8 @@
 
 ___JmolVersion="13.1.16_dev_2013.06.04"
 
+TODO: PyMOL sphere_color -- will require color spacefill ...
+
 PyMOL: better scene restore; 
 bug fix: "display add" by itself should not do anything
 bug fix: Hall translation initialization problem

Modified: trunk/Jmol/src/org/jmol/viewer/StateCreator.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/StateCreator.java    2013-06-04 23:48:28 UTC 
(rev 18281)
+++ trunk/Jmol/src/org/jmol/viewer/StateCreator.java    2013-06-05 03:55:27 UTC 
(rev 18282)
@@ -1267,7 +1267,8 @@
 
   private String getTextState(Text t) {
     SB s = new SB();
-    if (t.text == null || t.isLabelOrHover || t.target.equals("error"))
+    String text = t.getText();
+    if (text == null || t.isLabelOrHover || t.target.equals("error"))
       return "";
     //set echo top left
     //set echo myecho x y
@@ -1305,7 +1306,7 @@
       s.append("; ").append(echoCmd).append(" IMAGE /*file*/");
     else
       s.append("; echo ");
-    s.append(Escape.eS(t.text)); // was textUnformatted, but that is not 
really the STATE
+    s.append(Escape.eS(text)); // was textUnformatted, but that is not really 
the STATE
     s.append(";\n");
     if (isImage && t.imageScale != 1)
       s.append("  ").append(echoCmd).append(" scale 
").appendF(t.imageScale).append(";\n");

Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Viewer.java  2013-06-04 23:48:28 UTC (rev 
18281)
+++ trunk/Jmol/src/org/jmol/viewer/Viewer.java  2013-06-05 03:55:27 UTC (rev 
18282)
@@ -10005,8 +10005,8 @@
     }
   }
 
-  public void setBondParameters(int modelIndex, int i, float rad, int argb, 
float trans) {
-    modelSet.setBondParameters(modelIndex, i, rad, argb, trans);
+  public void setBondParameters(int modelIndex, int i, BS bsBonds, float rad, 
float pymolValence, int argb, float trans) {
+    modelSet.setBondParametersBS(modelIndex, i, bsBonds, rad, pymolValence, 
argb, trans);
   }
 
 }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to