Revision: 20918
          http://sourceforge.net/p/jmol/code/20918
Author:   hansonr
Date:     2016-01-04 12:48:02 +0000 (Mon, 04 Jan 2016)
Log Message:
-----------
Jmol.___JmolVersion="14.4.1_2016.01.04"

bug fix: setting cartoons on for phosphorus-only polymers fails
bug fix: setting default label properties using select none;.... fails
bug fix: undocumented model-based draw [array of points] broken
 -- points only
 -- selects from visible frames (frame *, for example)
 -- load cyclohexane_movie.xyz; frame *; draw @{{C5}.split().sub({1,0,0})
  

Modified Paths:
--------------
    branches/v14_4/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java
    branches/v14_4/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java
    branches/v14_4/Jmol/src/org/jmol/renderbio/CartoonRenderer.java
    branches/v14_4/Jmol/src/org/jmol/renderbio/NucleicRenderer.java
    branches/v14_4/Jmol/src/org/jmol/shape/Labels.java
    branches/v14_4/Jmol/src/org/jmol/shapespecial/Draw.java
    branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
    trunk/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java
    trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/NucleicRenderer.java
    trunk/Jmol/src/org/jmol/shape/AtomShape.java
    trunk/Jmol/src/org/jmol/shape/Labels.java
    trunk/Jmol/src/org/jmol/shapespecial/Draw.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties

Modified: branches/v14_4/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java 
2016-01-04 12:37:07 UTC (rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java 
2016-01-04 12:48:02 UTC (rev 20918)
@@ -23,7 +23,7 @@
  */
 package org.jmol.modelsetbio;
 
-class PhosphorusPolymer extends BioPolymer {
+public class PhosphorusPolymer extends BioPolymer {
 
   PhosphorusPolymer(Monomer[] monomers) {
     setP(monomers);

Modified: branches/v14_4/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java    
2016-01-04 12:37:07 UTC (rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java    
2016-01-04 12:48:02 UTC (rev 20918)
@@ -26,10 +26,11 @@
 
 import org.jmol.c.STR;
 import org.jmol.java.BS;
-import org.jmol.modelset.Atom; //import org.jmol.modelsetbio.AlphaMonomer;
+import org.jmol.modelset.Atom;
 import org.jmol.modelsetbio.CarbohydratePolymer;
 import org.jmol.modelsetbio.Monomer;
-import org.jmol.modelsetbio.NucleicPolymer; //import 
org.jmol.modelsetbio.ProteinStructure;
+import org.jmol.modelsetbio.NucleicPolymer;
+import org.jmol.modelsetbio.PhosphorusPolymer;
 import org.jmol.render.MeshRenderer;
 import org.jmol.script.T;
 import org.jmol.shape.Mesh;
@@ -73,6 +74,7 @@
   protected Monomer[] monomers;
 
   protected boolean isNucleic;
+  protected boolean isPhosphorusOnly;
   protected boolean isCarbohydrate;
   protected BS bsVisible = new BS();
   protected P3[] ribbonTopScreens;
@@ -224,6 +226,7 @@
     // isNucleic = bioShape.bioPolymer.isNucleic();
 
     isNucleic = bioShape.bioPolymer instanceof NucleicPolymer;
+    isPhosphorusOnly = !isNucleic && bioShape.bioPolymer instanceof 
PhosphorusPolymer;
     isCarbohydrate = bioShape.bioPolymer instanceof CarbohydratePolymer;
     haveControlPointScreens = false;
     wingVectors = bioShape.wingVectors;

Modified: branches/v14_4/Jmol/src/org/jmol/renderbio/CartoonRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/renderbio/CartoonRenderer.java     
2016-01-04 12:37:07 UTC (rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/renderbio/CartoonRenderer.java     
2016-01-04 12:48:02 UTC (rev 20918)
@@ -38,7 +38,7 @@
   protected void renderBioShape(BioShape bioShape) {
     if (!setupRR(bioShape, false))
       return;
-    if (isNucleic) {
+    if (isNucleic || isPhosphorusOnly) {
       if (nucleicRenderer == null)
         nucleicRenderer = (NucleicRenderer) 
Interface.getInterface("org.jmol.renderbio.NucleicRenderer", vwr, "render");
       calcScreenControlPoints();
@@ -75,6 +75,9 @@
     boolean doRockets = false;
     for (int i = monomerCount; --i >= 0;) {
       // runs backwards, so it can render the heads first
+      if (monomers[i].getStructure() != null && !(monomers[i].getStructure() 
instanceof ProteinStructure)) {
+        System.out.println("BUG HERE IN CARTOONRENDERER");
+      }
       thisStructure = (ProteinStructure) monomers[i].getStructure();
       if (thisStructure != previousStructure) {
         lastWasSheet = false;

Modified: branches/v14_4/Jmol/src/org/jmol/renderbio/NucleicRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/renderbio/NucleicRenderer.java     
2016-01-04 12:37:07 UTC (rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/renderbio/NucleicRenderer.java     
2016-01-04 12:48:02 UTC (rev 20918)
@@ -101,14 +101,15 @@
   }
 
   private void renderNucleicBaseStep(int im) {
-    NucleicMonomer nucleotide=
-    (NucleicMonomer) bsr.monomers[im];
-    short thisMad= bsr.mads[im];
-    if (rScr[0] == null)    {
-      for (int i = 10; --i >= 0; )
+    if (bsr.isPhosphorusOnly)
+      return;
+    NucleicMonomer nucleotide = (NucleicMonomer) bsr.monomers[im];
+    short thisMad = bsr.mads[im];
+    if (rScr[0] == null) {
+      for (int i = 10; --i >= 0;)
         rScr[i] = new P3();
-      for (int i = 5; --i >= 0; )
-          rScr5[i] = new P3();
+      for (int i = 5; --i >= 0;)
+        rScr5[i] = new P3();
       baseScreen = new P3();
       basePt = new P3();
       rPt[9] = new P3(); // ribose center
@@ -163,8 +164,8 @@
       basePt.setT(stepPt);
       nucleotide.getRiboseRing5Points(rPt);
       P3 c = rPt[9];
-      c.set(0,  0,  0);
-      for (int i = 0; i < 5; i++) 
+      c.set(0, 0, 0);
+      for (int i = 0; i < 5; i++)
         c.add(rPt[i]);
       c.scale(0.2f);
       transformPoints(10, rPt, rScr);

Modified: branches/v14_4/Jmol/src/org/jmol/shape/Labels.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/shape/Labels.java  2016-01-04 12:37:07 UTC 
(rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/shape/Labels.java  2016-01-04 12:48:02 UTC 
(rev 20918)
@@ -140,6 +140,10 @@
       setScaling();
       LabelToken[][] tokens = null;
       int nbs = checkStringLength(bsSelected.length());
+      if (defaultColix != C.INHERIT_ALL || defaultPaletteID != 0)
+        checkColixLength(defaultColix, bsSelected.length());
+      if (defaultBgcolix != C.INHERIT_ALL)
+        checkBgColixLength(defaultBgcolix, bsSelected.length());
       if (value instanceof Lst) {
         Lst<SV> list = (Lst<SV>) value;
         int n = list.size();
@@ -490,9 +494,9 @@
       setZPos(i, JC.LABEL_ZPOS_GROUP, true);
     if (defaultPointer != JC.LABEL_POINTER_NONE)
       setPointer(i, defaultPointer);
-    if (defaultColix != 0 || defaultPaletteID != 0)
+    if (defaultColix != C.INHERIT_ALL || defaultPaletteID != 0)
       setLabelColix(i, defaultColix, defaultPaletteID);
-    if (defaultBgcolix != 0)
+    if (defaultBgcolix != C.INHERIT_ALL)
       setBgcolix(i, defaultBgcolix);
     if (defaultFontId != zeroFontId)
       setFont(i, defaultFontId);

Modified: branches/v14_4/Jmol/src/org/jmol/shapespecial/Draw.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/shapespecial/Draw.java     2016-01-04 
12:37:07 UTC (rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/shapespecial/Draw.java     2016-01-04 
12:48:02 UTC (rev 20918)
@@ -357,7 +357,7 @@
         modelInfo[1]++; // counts vertices
       return;
     }
-    
+
     if ("offset" == propertyName) {
       offset = V3.newV((P3) value);
       if (thisMesh != null)
@@ -366,9 +366,9 @@
     }
 
     if ("atomSet" == propertyName) {
-      if (BSUtil.cardinalityOf((BS) value) == 0)
+      BS bsAtoms = (BS) value;
+      if (bsAtoms.isEmpty())
         return;
-      BS bsAtoms = (BS) value;
       vData.addLast(new Object[] { Integer.valueOf(PT_BITSET), bsAtoms });
       //nbitsets++;
       if (isCircle && diameter == 0 && width == 0)
@@ -377,12 +377,12 @@
     }
 
     if ("coords" == propertyName) {
-      addPoints(PT_COORD, value, false);
+      addPoints(PT_COORD, value);
       return;
     }
 
     if ("modelBasedPoints" == propertyName) {
-      addPoints(PT_MODEL_BASED_POINTS, value, true);
+      addPoints(PT_MODEL_BASED_POINTS, value);
       return;
     }
 
@@ -416,27 +416,38 @@
     setPropertySuper(propertyName, value, bs);
   }
 
-  private void addPoints(int type, Object value, boolean allowNull) {
+  private void addPoints(int type, Object value) {
     @SuppressWarnings("unchecked")
     Lst<SV> pts = (Lst<SV>) value;
     Integer key = Integer.valueOf(type);
+    boolean isModelPoints = (type == PT_MODEL_BASED_POINTS);
+    if (isModelPoints)
+      vData.addLast(new Object[] { key, pts });
     for (int i = 0, n = pts.size(); i < n; i++) {
       SV v = pts.get(i);
       P3 pt;
       switch (v.tok) {
       case T.bitset:
-        if (!allowNull && ((BS) v.value).isEmpty())
+        if (!isModelPoints && ((BS) v.value).isEmpty())
           continue;
         pt = vwr.ms.getAtomSetCenter((BS) v.value);
         break;
+      case T.point3f:
+        if (isModelPoints)
+          continue;
+        //$FALL-THROUGH$
       default:
         pt = SV.ptValue(v);
       }
-      vData.addLast(new Object[] { key, pt });
+      if (isModelPoints) {
+        pts.set(i, SV.getVariable(pt));
+      } else {       
+        vData.addLast(new Object[] { key, pt });
+      }
     }
   }
 
- private void deleteModels(int modelIndex) {
+private void deleteModels(int modelIndex) {
    //int firstAtomDeleted = ((int[])((Object[])value)[2])[1];
    //int nAtomsDeleted = ((int[])((Object[])value)[2])[2];
    for (int i = meshCount; --i >= 0;) {
@@ -495,6 +506,13 @@
 
   @Override
   public boolean getPropertyData(String property, Object[] data) {
+    if (property == "keys") {
+      @SuppressWarnings("unchecked")
+      Lst<String> keys = (data[1] instanceof Lst<?> ? (Lst<String>) data[1] : 
new Lst<String>());
+      data[1] = keys;
+      keys.addLast("getSpinAxis");
+      // will continue on to super
+    }
     if (property == "getCenter") {
       String id = (String) data[0];
       int index = ((Integer) data[1]).intValue();
@@ -520,7 +538,7 @@
       return getCommand(m);
     if (property == "type")
       return Integer.valueOf(m == null ? EnumDrawType.NONE.id : m.drawType.id);
-    return getPropMC(property);
+    return getPropMC(property, index);
   }
 
   private T3 getSpinCenter(String axisID, int vertexIndex, int modelIndex) {
@@ -700,9 +718,8 @@
   MeshSurface slabData;
   
   private void addPoint(T3 newPt, int iModel) {
-    boolean isOK = (iModel < 0 || bsAllModels.get(iModel));
     if (makePoints) {
-      if (!isOK)
+      if (newPt == null || iModel >= 0 && !bsAllModels.get(iModel))
         return;
       ptList[nPoints] = P3.newP(newPt);
       if (newPt.z == Float.MAX_VALUE || newPt.z == -Float.MAX_VALUE)
@@ -822,6 +839,8 @@
                 bs.and(bsModel);
               if (bs.length() > 0)
                 addPoint(vwr.ms.getAtomSetCenter(bs), j);
+            } else if (point instanceof SV) {
+              addPoint(SV.ptValue((SV) point), j);
             }
           }
         break;
@@ -873,7 +892,8 @@
       if (nVertices == 3 && isPlane)
         isPlane = false;
       length = Float.MAX_VALUE;
-      thisMesh.diameter = 0;
+      if (isVector)
+        thisMesh.diameter = 0;
     } else if (nVertices == 2 && isVector) {
       ptList[1].add(ptList[0]);
     }
@@ -1159,7 +1179,7 @@
     T3 v = pickedMesh.vs[pickedMesh.pis[pickedModel][pickedVertex]];
     int modelIndex = pickedMesh.modelIndex;
     BS bs = ((DrawMesh) pickedMesh).modelFlags;
-    if (modelIndex < 0 && bs != null && BSUtil.cardinalityOf(bs) == 1)
+    if (modelIndex < 0 && BSUtil.cardinalityOf(bs) == 1)
       modelIndex = bs.nextSetBit(0);
     Map<String, Object> map = null;
     if (action != 0)

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2016-01-04 
12:37:07 UTC (rev 20917)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2016-01-04 
12:48:02 UTC (rev 20918)
@@ -7,7 +7,16 @@
 
 # see also http://chemapps.stolaf.edu/jmol/zip for daily updates
        
-Jmol.___JmolVersion="14.4.1_2016.01.01"
+Jmol.___JmolVersion="14.4.1_2016.01.04"
+
+bug fix: setting cartoons on for phosphorus-only polymers fails
+bug fix: setting default label properties using select none;.... fails
+bug fix: undocumented model-based draw [array of points] broken
+ -- points only
+ -- selects from visible frames (frame *, for example)
+ -- load cyclohexane_movie.xyz; frame *; draw @{{C5}.split().sub({1,0,0})
+  
+JmolVersion="14.4.1_2016.01.01"
 released
 
 bug fix: file dropping of JVXL files does not work

Modified: trunk/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java
===================================================================
--- trunk/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java  2016-01-04 
12:37:07 UTC (rev 20917)
+++ trunk/Jmol/src/org/jmol/modelsetbio/PhosphorusPolymer.java  2016-01-04 
12:48:02 UTC (rev 20918)
@@ -23,7 +23,7 @@
  */
 package org.jmol.modelsetbio;
 
-class PhosphorusPolymer extends BioPolymer {
+public class PhosphorusPolymer extends BioPolymer {
 
   PhosphorusPolymer(Monomer[] monomers) {
     setP(monomers);

Modified: trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java     2016-01-04 
12:37:07 UTC (rev 20917)
+++ trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java     2016-01-04 
12:48:02 UTC (rev 20918)
@@ -26,10 +26,11 @@
 
 import org.jmol.c.STR;
 import org.jmol.java.BS;
-import org.jmol.modelset.Atom; //import org.jmol.modelsetbio.AlphaMonomer;
+import org.jmol.modelset.Atom;
 import org.jmol.modelsetbio.CarbohydratePolymer;
 import org.jmol.modelsetbio.Monomer;
-import org.jmol.modelsetbio.NucleicPolymer; //import 
org.jmol.modelsetbio.ProteinStructure;
+import org.jmol.modelsetbio.NucleicPolymer;
+import org.jmol.modelsetbio.PhosphorusPolymer;
 import org.jmol.render.MeshRenderer;
 import org.jmol.script.T;
 import org.jmol.shape.Mesh;
@@ -73,6 +74,7 @@
   protected Monomer[] monomers;
 
   protected boolean isNucleic;
+  protected boolean isPhosphorusOnly;
   protected boolean isCarbohydrate;
   protected BS bsVisible = new BS();
   protected P3[] ribbonTopScreens;
@@ -224,6 +226,7 @@
     // isNucleic = bioShape.bioPolymer.isNucleic();
 
     isNucleic = bioShape.bioPolymer instanceof NucleicPolymer;
+    isPhosphorusOnly = !isNucleic && bioShape.bioPolymer instanceof 
PhosphorusPolymer;
     isCarbohydrate = bioShape.bioPolymer instanceof CarbohydratePolymer;
     haveControlPointScreens = false;
     wingVectors = bioShape.wingVectors;

Modified: trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java      2016-01-04 
12:37:07 UTC (rev 20917)
+++ trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java      2016-01-04 
12:48:02 UTC (rev 20918)
@@ -38,7 +38,7 @@
   protected void renderBioShape(BioShape bioShape) {
     if (!setupRR(bioShape, false))
       return;
-    if (isNucleic) {
+    if (isNucleic || isPhosphorusOnly) {
       if (nucleicRenderer == null)
         nucleicRenderer = (NucleicRenderer) 
Interface.getInterface("org.jmol.renderbio.NucleicRenderer", vwr, "render");
       calcScreenControlPoints();
@@ -75,6 +75,9 @@
     boolean doRockets = false;
     for (int i = monomerCount; --i >= 0;) {
       // runs backwards, so it can render the heads first
+      if (monomers[i].getStructure() != null && !(monomers[i].getStructure() 
instanceof ProteinStructure)) {
+        System.out.println("BUG HERE IN CARTOONRENDERER");
+      }
       thisStructure = (ProteinStructure) monomers[i].getStructure();
       if (thisStructure != previousStructure) {
         lastWasSheet = false;

Modified: trunk/Jmol/src/org/jmol/renderbio/NucleicRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/NucleicRenderer.java      2016-01-04 
12:37:07 UTC (rev 20917)
+++ trunk/Jmol/src/org/jmol/renderbio/NucleicRenderer.java      2016-01-04 
12:48:02 UTC (rev 20918)
@@ -101,14 +101,15 @@
   }
 
   private void renderNucleicBaseStep(int im) {
-    NucleicMonomer nucleotide=
-    (NucleicMonomer) bsr.monomers[im];
-    short thisMad= bsr.mads[im];
-    if (rScr[0] == null)    {
-      for (int i = 10; --i >= 0; )
+    if (bsr.isPhosphorusOnly)
+      return;
+    NucleicMonomer nucleotide = (NucleicMonomer) bsr.monomers[im];
+    short thisMad = bsr.mads[im];
+    if (rScr[0] == null) {
+      for (int i = 10; --i >= 0;)
         rScr[i] = new P3();
-      for (int i = 5; --i >= 0; )
-          rScr5[i] = new P3();
+      for (int i = 5; --i >= 0;)
+        rScr5[i] = new P3();
       baseScreen = new P3();
       basePt = new P3();
       rPt[9] = new P3(); // ribose center
@@ -163,8 +164,8 @@
       basePt.setT(stepPt);
       nucleotide.getRiboseRing5Points(rPt);
       P3 c = rPt[9];
-      c.set(0,  0,  0);
-      for (int i = 0; i < 5; i++) 
+      c.set(0, 0, 0);
+      for (int i = 0; i < 5; i++)
         c.add(rPt[i]);
       c.scale(0.2f);
       transformPoints(10, rPt, rScr);

Modified: trunk/Jmol/src/org/jmol/shape/AtomShape.java
===================================================================
--- trunk/Jmol/src/org/jmol/shape/AtomShape.java        2016-01-04 12:37:07 UTC 
(rev 20917)
+++ trunk/Jmol/src/org/jmol/shape/AtomShape.java        2016-01-04 12:48:02 UTC 
(rev 20918)
@@ -25,16 +25,14 @@
 
 package org.jmol.shape;
 
+import javajs.util.AU;
+
 import org.jmol.atomdata.RadiusData;
 import org.jmol.atomdata.RadiusData.EnumType;
 import org.jmol.c.PAL;
 import org.jmol.c.VDW;
 import org.jmol.java.BS;
 import org.jmol.modelset.Atom;
-import org.jmol.modelset.Group;
-
-import javajs.util.AU;
-
 import org.jmol.util.BSUtil;
 import org.jmol.util.C;
 

Modified: trunk/Jmol/src/org/jmol/shape/Labels.java
===================================================================
--- trunk/Jmol/src/org/jmol/shape/Labels.java   2016-01-04 12:37:07 UTC (rev 
20917)
+++ trunk/Jmol/src/org/jmol/shape/Labels.java   2016-01-04 12:48:02 UTC (rev 
20918)
@@ -140,6 +140,10 @@
       setScaling();
       LabelToken[][] tokens = null;
       int nbs = checkStringLength(bsSelected.length());
+      if (defaultColix != C.INHERIT_ALL || defaultPaletteID != 0)
+        checkColixLength(defaultColix, bsSelected.length());
+      if (defaultBgcolix != C.INHERIT_ALL)
+        checkBgColixLength(defaultBgcolix, bsSelected.length());
       if (value instanceof Lst) {
         Lst<SV> list = (Lst<SV>) value;
         int n = list.size();
@@ -490,9 +494,9 @@
       setZPos(i, JC.LABEL_ZPOS_GROUP, true);
     if (defaultPointer != JC.LABEL_POINTER_NONE)
       setPointer(i, defaultPointer);
-    if (defaultColix != 0 || defaultPaletteID != 0)
+    if (defaultColix != C.INHERIT_ALL || defaultPaletteID != 0)
       setLabelColix(i, defaultColix, defaultPaletteID);
-    if (defaultBgcolix != 0)
+    if (defaultBgcolix != C.INHERIT_ALL)
       setBgcolix(i, defaultBgcolix);
     if (defaultFontId != zeroFontId)
       setFont(i, defaultFontId);

Modified: trunk/Jmol/src/org/jmol/shapespecial/Draw.java
===================================================================
--- trunk/Jmol/src/org/jmol/shapespecial/Draw.java      2016-01-04 12:37:07 UTC 
(rev 20917)
+++ trunk/Jmol/src/org/jmol/shapespecial/Draw.java      2016-01-04 12:48:02 UTC 
(rev 20918)
@@ -377,12 +377,12 @@
     }
 
     if ("coords" == propertyName) {
-      addPoints(PT_COORD, value, false);
+      addPoints(PT_COORD, value);
       return;
     }
 
     if ("modelBasedPoints" == propertyName) {
-      addPoints(PT_MODEL_BASED_POINTS, value, true);
+      addPoints(PT_MODEL_BASED_POINTS, value);
       return;
     }
 
@@ -416,23 +416,34 @@
     setPropertySuper(propertyName, value, bs);
   }
 
-  private void addPoints(int type, Object value, boolean allowNull) {
+  private void addPoints(int type, Object value) {
     @SuppressWarnings("unchecked")
     Lst<SV> pts = (Lst<SV>) value;
     Integer key = Integer.valueOf(type);
+    boolean isModelPoints = (type == PT_MODEL_BASED_POINTS);
+    if (isModelPoints)
+      vData.addLast(new Object[] { key, pts });
     for (int i = 0, n = pts.size(); i < n; i++) {
       SV v = pts.get(i);
       P3 pt;
       switch (v.tok) {
       case T.bitset:
-        if (!allowNull && ((BS) v.value).isEmpty())
+        if (!isModelPoints && ((BS) v.value).isEmpty())
           continue;
         pt = vwr.ms.getAtomSetCenter((BS) v.value);
         break;
+      case T.point3f:
+        if (isModelPoints)
+          continue;
+        //$FALL-THROUGH$
       default:
         pt = SV.ptValue(v);
       }
-      vData.addLast(new Object[] { key, pt });
+      if (isModelPoints) {
+        pts.set(i, SV.getVariable(pt));
+      } else {       
+        vData.addLast(new Object[] { key, pt });
+      }
     }
   }
 
@@ -707,9 +718,8 @@
   MeshSurface slabData;
   
   private void addPoint(T3 newPt, int iModel) {
-    boolean isOK = (iModel < 0 || bsAllModels.get(iModel));
     if (makePoints) {
-      if (!isOK)
+      if (newPt == null || iModel >= 0 && !bsAllModels.get(iModel))
         return;
       ptList[nPoints] = P3.newP(newPt);
       if (newPt.z == Float.MAX_VALUE || newPt.z == -Float.MAX_VALUE)
@@ -829,6 +839,8 @@
                 bs.and(bsModel);
               if (bs.length() > 0)
                 addPoint(vwr.ms.getAtomSetCenter(bs), j);
+            } else if (point instanceof SV) {
+              addPoint(SV.ptValue((SV) point), j);
             }
           }
         break;

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-01-04 12:37:07 UTC 
(rev 20917)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-01-04 12:48:02 UTC 
(rev 20918)
@@ -63,8 +63,17 @@
 TODO: consider if models with no atoms will cause issues in relation to 
model.firstAtomIndex
 
 
-Jmol.___JmolVersion="14.5.1_2016.01.01"
+Jmol.___JmolVersion="14.5.1_2016.01.04"
 
+bug fix: setting default label properties using select none;.... fails
+bug fix: setting cartoons on for phosphorus-only polymers fails
+bug fix: undocumented model-based draw [array of points] broken
+ -- points only
+ -- selects from visible frames (frame *, for example)
+ -- load cyclohexane_movie.xyz; frame *; draw @{{C5}.split().sub({1,0,0})
+  
+JmolVersion="14.5.1_2016.01.01"
+
 bug fix: file dropping of JVXL files does not work
 bug fix: Mesh capper not working for multiple cuts due to unclosed surface cut
  -- for example: load maleic.cif 1;select on atomindex=6;lcaocartoon scale 1.0 
CAP unitcell "cpk"

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


------------------------------------------------------------------------------
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to