Revision: 20839
          http://sourceforge.net/p/jmol/code/20839
Author:   hansonr
Date:     2015-10-20 22:40:08 +0000 (Tue, 20 Oct 2015)
Log Message:
-----------
Jmol.___JmolVersion="14.4.0_2015.10.20"

bug fix: set platformSpeed 1 for pmesh fails
bug fix: polyhedron EDGES fails
bug fix: @{ {"hash":{0.1 0.1 0.1},...} } fails (attempts to turn "," into "OR")
  -- solution is to not allow "," for OR within associative arrays
  
JmolVersion="14.4.0_2015.10.18"

bug fix: Polyhedra can have missing triangle for hexagonal faces
bug fix: calculate symmetry can break Jmol if unit cell has been changed

Modified Paths:
--------------
    branches/v14_4/Jmol/src/org/jmol/render/MeshRenderer.java
    branches/v14_4/Jmol/src/org/jmol/renderspecial/PolyhedraRenderer.java
    branches/v14_4/Jmol/src/org/jmol/script/ScriptTokenParser.java
    branches/v14_4/Jmol/src/org/jmol/scriptext/CmdExt.java
    branches/v14_4/Jmol/src/org/jmol/shapespecial/Polyhedra.java
    branches/v14_4/Jmol/src/org/jmol/symmetry/Symmetry.java
    branches/v14_4/Jmol/src/org/jmol/util/MeshCapper.java
    branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties

Modified: branches/v14_4/Jmol/src/org/jmol/render/MeshRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/render/MeshRenderer.java   2015-10-19 
06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/render/MeshRenderer.java   2015-10-20 
22:40:08 UTC (rev 20839)
@@ -290,7 +290,7 @@
   protected void renderPoints() {
     if (!mesh.isTriangleSet || mesh.pc < 0) {
       for (int i = vertexCount; --i >= 0;)
-        if (!frontOnly || normixes == null || 
transformedVectors[normixes[i]].z >= 0)
+        if (!frontOnly || normixes == null || isVisibleNormix(normixes[i]))
           drawPoint(i, false);
       return;
     }
@@ -304,7 +304,7 @@
       if (!isPolygonDisplayable(i))
         continue;
       int[] p = polygonIndexes[i];
-      if (frontOnly && transformedVectors[normixes[i]].z < 0)
+      if (frontOnly && !isVisibleNormix(normixes[i]))
         continue;
       for (int j = p.length - 1; --j >= 0;) {
         int pt = p[j];
@@ -370,7 +370,7 @@
       int check;
       if (mesh.isTriangleSet) {
         short normix = normixes[i];
-        if (!vwr.gdata.isDirectedTowardsCamera(normix))
+        if (frontOnly && !isVisibleNormix(normix))
           continue;
         if (fill) {
           if (isPrecision)
@@ -458,6 +458,10 @@
       exportSurface(colix);
   }
 
+  private boolean isVisibleNormix(short normix) {
+    return (normix < 0 || transformedVectors[normix].z > 0);
+  }
+
   private void drawTriangleBits(P3 screenA, short colixA, P3 screenB, short 
colixB,
                                 P3 screenC, short colixC, int check, int diam) 
{
     if (!antialias && diam == 1) {

Modified: branches/v14_4/Jmol/src/org/jmol/renderspecial/PolyhedraRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/renderspecial/PolyhedraRenderer.java       
2015-10-19 06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/renderspecial/PolyhedraRenderer.java       
2015-10-20 22:40:08 UTC (rev 20839)
@@ -114,14 +114,13 @@
     if (!needTranslucent || g3d.setC(colix))
       for (int i = planes.length; --i >= 0;) {
         int[] pl = planes[i];
-        //if (i != m)continue;
         try {
           g3d.fillTriangleTwoSided(normixes[i], sc[pl[0]], sc[pl[1]], 
sc[pl[2]]);
         } catch (Exception e) {
-          System.out.println("heorhe");
+          System.out.println("PolyhedraRendererError");
         }
-        if (pl[3] >= 0)
-          g3d.fillTriangleTwoSided(normixes[i], sc[pl[2]], sc[pl[3]], 
sc[pl[0]]);
+//        if (pl[3] >= 0)
+  //        g3d.fillTriangleTwoSided(normixes[i], sc[pl[2]], sc[pl[3]], 
sc[pl[0]]);
       }
     // edges are not drawn translucently ever
     if (bsSelected != null && bsSelected.get(iAtom))
@@ -131,13 +130,7 @@
     if (g3d.setC(C.getColixTranslucent3(colix, false, 0)))
       for (int i = planes.length; --i >= 0;) {
         int[] pl = planes[i];
-        if (pl[3] < 0) {
           drawFace(normixes[i], sc[pl[0]], sc[pl[1]], sc[pl[2]], -pl[3]);
-        } else {
-          drawFace(normixes[i], sc[pl[0]], sc[pl[1]], sc[pl[2]], 3);
-          drawFace(normixes[i], sc[pl[0]], sc[pl[2]], sc[pl[3]], 6);
-        }
-
       }
     return needTranslucent;
   }

Modified: branches/v14_4/Jmol/src/org/jmol/script/ScriptTokenParser.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/script/ScriptTokenParser.java      
2015-10-19 06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/script/ScriptTokenParser.java      
2015-10-20 22:40:08 UTC (rev 20839)
@@ -422,7 +422,7 @@
   
   boolean haveString;
   
-  private boolean clauseOr(boolean allowComma) {
+  private boolean clauseOr(boolean allowCommaAsOr) {
     haveString = false;
     if (!clauseAnd())
       return false;
@@ -433,14 +433,14 @@
     //OrNot: First OR, but if that makes no change, then NOT (special toggle)
     int tok;
     while ((tok = tokPeek())== T.opOr || tok == T.opXor
-        || tok==T.opToggle|| allowComma && tok == T.comma) {
+        || tok==T.opToggle|| allowCommaAsOr && tok == T.comma) {
       if (tok == T.comma && !haveString)
         addSubstituteTokenIf(T.comma, T.tokenOr);
       else
         addNextToken();
       if (!clauseAnd())
         return false;
-      if (allowComma && (lastToken.tok == T.rightbrace || lastToken.tok == 
T.bitset))
+      if (allowCommaAsOr && (lastToken.tok == T.rightbrace || lastToken.tok == 
T.bitset))
         haveString = true;
     }
     return true;
@@ -596,7 +596,7 @@
           if (isExpressionNext()) {
             addTokenToPostfixToken(T.o(T.expressionBegin,
                 "implicitExpressionBegin"));
-            if (!clauseOr(true))
+            if (!clauseOr(false))
               return false;
             if (lastToken != T.tokenCoordinateEnd) {
               addTokenToPostfixToken(T.tokenExpressionEnd);

Modified: branches/v14_4/Jmol/src/org/jmol/scriptext/CmdExt.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/scriptext/CmdExt.java      2015-10-19 
06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/scriptext/CmdExt.java      2015-10-20 
22:40:08 UTC (rev 20839)
@@ -3330,7 +3330,7 @@
         if (edgeParameterSeen)
           error(ScriptError.ERROR_incompatibleArguments);
         edgeParameterSeen = true;
-        propertyName = T.nameOf(eval.iToken);
+        propertyName = T.nameOf(eval.theTok);
         break;
       case T.triangles:
       case T.notriangles:

Modified: branches/v14_4/Jmol/src/org/jmol/shapespecial/Polyhedra.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/shapespecial/Polyhedra.java        
2015-10-19 06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/shapespecial/Polyhedra.java        
2015-10-20 22:40:08 UTC (rev 20839)
@@ -867,6 +867,8 @@
     } else {
       // set mask to exclude both of these.
       int[] p10 = (int[]) ((Object[]) o)[0];
+      if (p10 == null)
+        return false;
       int i0 = ((Integer) ((Object[]) o)[1]).intValue();
       p10[3] = -((-p10[3]) ^ (1 << i0));
       p1[3] = -((-p1[3]) ^ (1 << i));
@@ -879,6 +881,8 @@
         }
       }
       // not supported for JavaScript faceList.removeObj(b);
+      htEdgeMap.put(edge, new Object[] { null });
+      htEdgeMap.put(edge0, new Object[] { null });
     }
     return true;
   }

Modified: branches/v14_4/Jmol/src/org/jmol/symmetry/Symmetry.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/symmetry/Symmetry.java     2015-10-19 
06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/symmetry/Symmetry.java     2015-10-20 
22:40:08 UTC (rev 20839)
@@ -318,12 +318,12 @@
 
   @Override
   public int[] getCellRange() {
-    return symmetryInfo.cellRange;
+    return symmetryInfo == null ? null : symmetryInfo.cellRange;
   }
 
   @Override
   public String getSymmetryInfoStr() {
-    return symmetryInfo.infoStr;
+    return symmetryInfo == null ? "" : symmetryInfo.infoStr;
   }
 
   @Override

Modified: branches/v14_4/Jmol/src/org/jmol/util/MeshCapper.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/util/MeshCapper.java       2015-10-19 
06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/util/MeshCapper.java       2015-10-20 
22:40:08 UTC (rev 20839)
@@ -85,6 +85,8 @@
 
   private Lst<int[]> lstTriangles;
 
+  private int nPoints;
+
   /////////////// initialization //////////////////
 
   /**
@@ -107,21 +109,22 @@
    * generic entry for a polygon
    * 
    * @param points
-   * @return int[][i j k 7]
+   * @return int[][i j k mask]
    */
   public int[][] triangulatePolygon(P3[] points) {
     clear();
-    
-    int n = points.length;
+    // this is winding backward 
+    nPoints = points.length;
     CapVertex v0 = null;
-    for (int i = 0; i < n; i++) {
+    for (int i = 0; i < nPoints; i++) {
       CapVertex v = new CapVertex(points[i], i);
       vertices.addLast(v);
-      if (v0 != null)
-        v.link(v0);
+      if (v0 != null) {
+        v0.link(v);
+      }
       v0 = v;
     }
-    vertices.get(0).link(v0);
+    v0.link(vertices.get(0));
     lstTriangles = new Lst<int[]>();
     createCap(null);
     int[][] a = AU.newInt2(lstTriangles.size());
@@ -188,12 +191,24 @@
    * @param ipt3
    */
   private void outputTriangle(int ipt1, int ipt2, int ipt3) {
-    if (slicer == null)
-      lstTriangles.addLast(new int[] { ipt1, ipt2, ipt3, 7 });
-    else
+    if (slicer == null) {
+      int mask = 0;
+      if (isEdge(ipt1, ipt2))
+        mask |= 1;
+      if (isEdge(ipt2, ipt3))
+        mask |= 2;
+      if (isEdge(ipt3, ipt1))
+        mask |= 4;
+      lstTriangles.addLast(new int[] { ipt1, ipt2, ipt3, mask });
+    } else {
       slicer.addTriangle(ipt1, ipt2, ipt3);
   }
+  }
 
+  private boolean isEdge(int i, int j) {
+    return (j == (i + 1) % nPoints);
+  }
+
   private CapVertex[] test(CapVertex[] vs) {
     //  dumping = testing = true;
     //  int n = 0;
@@ -242,7 +257,7 @@
     V3 vab = V3.newVsub(vertices.get(0), vertices.get(1));
     V3 vac;
     if (norm == null) {
-      vac = V3.newVsub(vertices.get(vertices.size() - 1), vertices.get(0));
+      vac = V3.newVsub(vertices.get(0), vertices.get(vertices.size() - 1));
     } else {
       vac = V3.newV(norm);
       vac.cross(vac, vab);

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2015-10-19 
06:30:19 UTC (rev 20838)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2015-10-20 
22:40:08 UTC (rev 20839)
@@ -7,8 +7,20 @@
 
 # see also http://chemapps.stolaf.edu/jmol/zip for daily updates
        
-Jmol.___JmolVersion="14.4.0_2015.10.17"
+Jmol.___JmolVersion="14.4.0_2015.10.20"
 
+bug fix: set platformSpeed 1 for pmesh fails
+bug fix: polyhedron EDGES fails
+bug fix: @{ {"hash":{0.1 0.1 0.1},...} } fails (attempts to turn "," into "OR")
+  -- solution is to not allow "," for OR within associative arrays
+  
+JmolVersion="14.4.0_2015.10.18"
+
+bug fix: Polyhedra can have missing triangle for hexagonal faces
+bug fix: calculate symmetry can break Jmol if unit cell has been changed
+
+JmolVersion="14.4.0_2015.10.17"
+
 bug fix: if (...) \n { .... not working
 bug fix: CIF reader will read empty second model for IUCr files with terminal 
data_global block
 bug fix: polyhedra bonds unitcell can cause error in HTML5
@@ -337,7 +349,6 @@
      that are within distance of point.
       
 bug fix: MRC surface reader: new version of EMAN2 leaves out alpha,beta,gamma; 
does not load properly
-
 bug fix: for (a in {*}) with no VAR fails if a has already been defined as an 
integer
 
 bug fix: better error reporting
@@ -6647,7 +6658,7 @@
 bug fix: getProperty extractModel not honoring subset
 bug fix: set pdbGetHeader TRUE does not capture REMARK3 REMARK290 REMARK350 
 bug fix: getProperty("JSON",....) should wrap value in {value:...}
-bug fix: MO persistent translucency broken in 11.x
+bug fix: MO per sistent translucency broken in 11.x
 bug fix: show MENU  write MENU  load MENU all broken in 12.2
 bug fix: {*}[n] should be empty if nAtoms <=n
 bug fix: abinit reader was nonfunctional

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