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