From: <ha...@us...> - 2013-12-18 18:41:27
|
Revision: 19126 http://sourceforge.net/p/jmol/code/19126 Author: hansonr Date: 2013-12-18 18:41:23 +0000 (Wed, 18 Dec 2013) Log Message: ----------- ___JmolVersion="14.0.3_dev_2013.12.17" bug fix: CIF reader goes into molecular mode even if geom_bond block is all "? ? ? ? ?" bug fix: getProperty atomInfo broken for modulated atoms Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java branches/v14_0/Jmol/src/org/jmol/modelset/ModelLoader.java branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java branches/v14_0/Jmol/src/org/jmol/modelsetbio/Resolver.java branches/v14_0/Jmol/src/org/jmol/util/Modulation.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v14_0/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -564,16 +564,9 @@ if (mr != null && str.equals("_cell_subsystem_code")) mr.processSubsystemLoopBlock(); - if (str.startsWith("_geom_bond")) { - if (!doApplySymmetry) { - isMolecular = true; - doApplySymmetry = true; - latticeCells[0] = latticeCells[1] = latticeCells[2] = 1; - } - if (isMolecular) { - processGeomBondLoopBlock(); - return; - } + if (str.startsWith("_geom_bond") && (isMolecular || !doApplySymmetry)) { + processGeomBondLoopBlock(); + return; } skipLoop(); } @@ -1327,6 +1320,7 @@ String name1 = null; String name2 = null; Integer order = Integer.valueOf(1); + int bondCount = 0; while (tokenizer.getData()) { int atomIndex1 = -1; int atomIndex2 = -1; @@ -1374,11 +1368,20 @@ //break; } } - if (atomIndex1 < 0 || atomIndex2 < 0) + if (atomIndex1 < 0 || atomIndex2 < 0 || distance == 0) continue; - if (distance > 0) - bondTypes.addLast(new Object[] { name1, name2, Float.valueOf(distance), Float.valueOf(dx), order }); + bondCount++; + bondTypes.addLast(new Object[] { name1, name2, Float.valueOf(distance), + Float.valueOf(dx), order }); } + if (bondCount > 0) { + Logger.info(bondCount + " bonds read"); + if (!doApplySymmetry) { + isMolecular = true; + doApplySymmetry = true; + latticeCells[0] = latticeCells[1] = latticeCells[2] = 1; + } + } } ///////////////////////////////////// Modified: branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -53,7 +53,7 @@ -final public class Atom extends Point3fi implements JmolNode { +public class Atom extends Point3fi implements JmolNode { private final static byte VIBRATION_VECTOR_FLAG = 1; private final static byte IS_HETERO_FLAG = 2; @@ -109,6 +109,8 @@ public int shapeVisibilityFlags; public static final int BACKBONE_VISIBILITY_FLAG = JC.getShapeVisibilityFlag(JC.SHAPE_BACKBONE); + public Atom() {}; + /** * @j2sIgnoreSuperConstructor * @j2sOverride @@ -123,7 +125,8 @@ * @param formalCharge * @param isHetero */ - public Atom(int modelIndex, int atomIndex, + + public Atom setAtom(int modelIndex, int atomIndex, P3 xyz, float radius, BS atomSymmetry, int atomSite, short atomicAndIsotopeNumber, int formalCharge, @@ -139,6 +142,7 @@ setFormalCharge(formalCharge); userDefinedVanDerWaalRadius = radius; setT(xyz); + return this; } public void setAltLoc(char altLoc) { @@ -770,7 +774,7 @@ private P3 getFractionalCoordPt(boolean asAbsolute) { // asAbsolute TRUE uses the original unshifted matrix - SymmetryInterface c = group.chain.model.modelSet.getUnitCell(modelIndex); + SymmetryInterface c = getUnitCell(); if (c == null) return this; P3 pt = P3.newP(this); @@ -778,13 +782,17 @@ return pt; } + SymmetryInterface getUnitCell() { + return group.chain.model.modelSet.getUnitCell(modelIndex); + } + private float getFractionalUnitCoord(char ch) { P3 pt = getFractionalUnitCoordPt(false); return (ch == 'X' ? pt.x : ch == 'Y' ? pt.y : pt.z); } P3 getFractionalUnitCoordPt(boolean asCartesian) { - SymmetryInterface c = group.chain.model.modelSet.getUnitCell(modelIndex); + SymmetryInterface c = getUnitCell(); if (c == null) return this; P3 pt = P3.newP(this); @@ -801,7 +809,7 @@ } float getFractionalUnitDistance(P3 pt, P3 ptTemp1, P3 ptTemp2) { - SymmetryInterface c = group.chain.model.modelSet.getUnitCell(modelIndex); + SymmetryInterface c = getUnitCell(); if (c == null) return distance(pt); ptTemp1.setT(this); @@ -817,7 +825,7 @@ } void setFractionalCoord(int tok, float fValue, boolean asAbsolute) { - SymmetryInterface c = group.chain.model.modelSet.getUnitCell(modelIndex); + SymmetryInterface c = getUnitCell(); if (c != null) c.toFractional(this, asAbsolute); switch (tok) { @@ -844,7 +852,7 @@ public void setFractionalCoordPt(P3 pt, P3 ptNew, boolean asAbsolute) { pt.setT(ptNew); - SymmetryInterface c = group.chain.model.modelSet.getUnitCell(modelIndex); + SymmetryInterface c = getUnitCell(); if (c != null) c.toCartesian(pt, asAbsolute && !group.chain.model.isJmolDataFrame); } Modified: branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -3102,8 +3102,8 @@ float radius, V3 vib, int formalCharge, float partialCharge, int occupancy, float bfactor, List<Object> tensors, boolean isHetero, - byte specialAtomID, BS atomSymmetry) { - Atom atom = new Atom(modelIndex, atomCount, xyz, radius, atomSymmetry, + byte specialAtomID, BS atomSymmetry, SymmetryInterface uc) { + Atom atom = new Atom().setAtom(modelIndex, atomCount, xyz, radius, atomSymmetry, atomSite, (short) atomicAndIsotopeNumber, formalCharge, isHetero); models[modelIndex].atomCount++; models[modelIndex].bsAtoms.set(atomCount); @@ -3423,7 +3423,7 @@ if (!(v instanceof JmolModulationSet)) continue; JmolModulationSet ms = (JmolModulationSet) v; - ms.setModTQ(atoms[i], isOn, qtOffset, isQ, scale, getUnitCell(atoms[i].modelIndex)); + ms.setModTQ(atoms[i], isOn, qtOffset, isQ, scale, atoms[i].getUnitCell()); if (bsModulated != null) bsModulated.setBitTo(i, isOn); //System.out.println(a.x + " " + a.y + " " + a.z + " ms is " + ms + " " + ms.enabled + " " + ms.t); Modified: branches/v14_0/Jmol/src/org/jmol/modelset/ModelLoader.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/modelset/ModelLoader.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -845,7 +845,7 @@ } Atom atom = modelSet.addAtom(currentModelIndex, nullGroup, atomicAndIsotopeNumber, atomName, atomSerial, atomSite, xyz, radius, vib, formalCharge, partialCharge, occupancy, bfactor, tensors, - isHetero, specialAtomID, atomSymmetry); + isHetero, specialAtomID, atomSymmetry, null); atom.setAltLoc(alternateLocationID); htAtomMap.put(atomUid, atom); } Modified: branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -743,7 +743,7 @@ // hmm. atom1.group will not be expanded, though... // something like within(group,...) will not select these atoms! Atom atom2 = addAtom(modelIndex, atom1.group, 1, "H" - + n, n, n, pts[i], Float.NaN, null, 0, 0, 100, Float.NaN, null, false, (byte) 0, null); + + n, n, n, pts[i], Float.NaN, null, 0, 0, 100, Float.NaN, null, false, (byte) 0, null, null); atom2.setMadAtom(viewer, rd); bs.set(atom2.index); Modified: branches/v14_0/Jmol/src/org/jmol/modelsetbio/Resolver.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelsetbio/Resolver.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/modelsetbio/Resolver.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -241,7 +241,7 @@ for (int i = 0; i < nH; i++) modelSet.addAtom(modelSet.atoms[iFirst].modelIndex, modelSet.atoms[iFirst].getGroup(), 1, "H", 0, 0, xyz, Float.NaN, null, 0, 0, 1, 0, - null, isHetero, (byte) 0, null).deleteBonds(null); + null, isHetero, (byte) 0, null, null).deleteBonds(null); } public void getBondInfo(JmolAdapter adapter, String group3, Object model) { Modified: branches/v14_0/Jmol/src/org/jmol/util/Modulation.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/util/Modulation.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/util/Modulation.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -277,8 +277,7 @@ public Hashtable<String, Object> getInfo() { Hashtable<String, Object> info = new Hashtable<String, Object>(); - int t = (0 + type) * 3; - info.put("type", typeNames.substring(t, t + 2).trim() + axis); + info.put("type", "" + type + axis); info.put("params", params); info.put("qCoefs", qCoefs); if (utens != null) Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2013-12-18 18:41:23 UTC (rev 19126) @@ -9,8 +9,12 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="14.0.3_dev_2013.12.15" +___JmolVersion="14.0.3_dev_2013.12.17" +bug fix: CIF reader goes into molecular mode even if geom_bond block is all "? ? ? ? ?" + +bug fix: getProperty atomInfo broken for modulated atoms + bug fix: x.distance.min(y) broken JmolVersion="14.0.2" Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java 2013-12-18 18:38:27 UTC (rev 19125) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java 2013-12-18 18:41:23 UTC (rev 19126) @@ -4318,7 +4318,7 @@ } if (captureParams != null && Boolean.FALSE != captureParams.get("captureEnabled")) { //showString(transformManager.matrixRotate.toString(), false); - if (System.currentTimeMillis() >= ((Long)captureParams.get("endTime")).longValue()) + if (System.currentTimeMillis() + 50 > ((Long)captureParams.get("endTime")).longValue()) captureParams.put("captureMode", Integer.valueOf(T.end)); processWriteOrCapture(captureParams); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-01-05 20:56:01
|
Revision: 19150 http://sourceforge.net/p/jmol/code/19150 Author: hansonr Date: 2014-01-05 20:55:57 +0000 (Sun, 05 Jan 2014) Log Message: ----------- JmolVersion="14.0.4" bug fix: rockets broken bug fix: PDB byChain, bySymop not supported. Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/adapter/readers/pdb/PdbReader.java branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java branches/v14_0/Jmol/src/org/jmol/renderbio/RocketsRenderer.java branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java branches/v14_0/Jmol/src/org/jmol/symmetry/SymmetryOperation.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/adapter/readers/pdb/PdbReader.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/adapter/readers/pdb/PdbReader.java 2014-01-05 20:47:07 UTC (rev 19149) +++ branches/v14_0/Jmol/src/org/jmol/adapter/readers/pdb/PdbReader.java 2014-01-05 20:55:57 UTC (rev 19150) @@ -157,8 +157,6 @@ private int tlsGroupID; private int atomTypePt0; private int atomTypeLen; - private boolean byChain; - private boolean bySymop; private boolean isCourseGrained; final private static String lineOptions = @@ -189,15 +187,17 @@ @SuppressWarnings("unchecked") @Override protected void initializeReader() throws Exception { - setIsPDB(); pdbHeader = (getHeader ? new SB() : null); applySymmetry = !checkFilterKey("NOSYMMETRY"); getTlsGroups = checkFilterKey("TLS"); - byChain = checkFilterKey("BYCHAIN"); - bySymop = checkFilterKey("BYSYMOP"); - isCourseGrained = byChain || bySymop; if (checkFilterKey("ASSEMBLY")) // CIF syntax filter = PT.simpleReplace(filter, "ASSEMBLY", "BIOMOLECULE"); + boolean isbiomol = checkFilterKey("BIOMOLECULE"); + boolean byChain = isbiomol && checkFilterKey("BYCHAIN"); + boolean bySymop = isbiomol && checkFilterKey("BYSYMOP"); + isCourseGrained = byChain || bySymop; + if (!isCourseGrained) + setIsPDB(); if (htParams.containsKey("vTlsModels")) { // from load files "tls.out" "xxxx.pdb" vTlsModels = ( List<Map<String, Object>>) htParams.remove("vTlsModels"); @@ -251,7 +251,8 @@ handleTlsMissingModels(); return checkLastModel(); } - atomSetCollection.connectAll(maxSerial, isConnectStateBug); + if (!isCourseGrained) + atomSetCollection.connectAll(maxSerial, isConnectStateBug); if (atomCount > 0) applySymmetryAndSetTrajectory(); // supposedly MODEL is only for NMR @@ -357,7 +358,8 @@ protected void finalizeReaderPDB() throws Exception { checkNotPDB(); - atomSetCollection.connectAll(maxSerial, isConnectStateBug); + if (!isCourseGrained) + atomSetCollection.connectAll(maxSerial, isConnectStateBug); SymmetryInterface symmetry; if (vBiomolecules != null && vBiomolecules.size() > 0 && atomSetCollection.getAtomCount() > 0) { @@ -833,7 +835,7 @@ atomSetCollection.addAtomWithMappedSerialNumber(atom); else atomSetCollection.addAtom(atom); - if (atomCount++ == 0) + if (atomCount++ == 0 && !isCourseGrained) atomSetCollection.setAtomSetAuxiliaryInfo("isPDB", Boolean.TRUE); // note that values are +1 in this serial map if (atom.isHetero) { @@ -1208,14 +1210,15 @@ haveMappedSerials = false; sbConect = null; atomSetCollection.newAtomSet(); - atomSetCollection.setAtomSetAuxiliaryInfo("isPDB", Boolean.TRUE); + if (!isCourseGrained) + atomSetCollection.setAtomSetAuxiliaryInfo("isPDB", Boolean.TRUE); atomSetCollection.setCurrentAtomSetNumber(modelNumber); if (isCourseGrained) atomSetCollection.setAtomSetAuxiliaryInfo("courseGrained", Boolean.TRUE); } private void checkNotPDB() { - boolean isPDB = (nRes == 0 || nUNK != nRes); + boolean isPDB = (!isCourseGrained && (nRes == 0 || nUNK != nRes)); // This speeds up calculation, because no crosschecking // No special-position atoms in mmCIF files, because there will // be no center of symmetry, no rotation-inversions, Modified: branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2014-01-05 20:47:07 UTC (rev 19149) +++ branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2014-01-05 20:55:57 UTC (rev 19150) @@ -2175,6 +2175,7 @@ if (atomA.isDeleted()) continue; } + char altloc = (isModulated(iA) ? '\0' : atomA.altloc); for (int iB = (isBonds ? m : bsB.nextSetBit(0)); iB >= 0; iB = (isBonds ? iB - 1 : bsB.nextSetBit(iB + 1))) { if (!isBonds) { @@ -2183,7 +2184,7 @@ atomB = atoms[iB]; if (atomA.modelIndex != atomB.modelIndex || atomB.isDeleted()) continue; - if (atomA.altloc != atomB.altloc && atomA.altloc != '\0' + if (altloc != '\0' && altloc != atomB.altloc && atomB.altloc != '\0') continue; bondAB = atomA.getBond(atomB); Modified: branches/v14_0/Jmol/src/org/jmol/renderbio/RocketsRenderer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/renderbio/RocketsRenderer.java 2014-01-05 20:47:07 UTC (rev 19149) +++ branches/v14_0/Jmol/src/org/jmol/renderbio/RocketsRenderer.java 2014-01-05 20:55:57 UTC (rev 19150) @@ -36,7 +36,6 @@ import javajs.util.P3; import javajs.util.V3; - public class RocketsRenderer extends StrandsRenderer { //private final static float MIN_CONE_HEIGHT = 0.05f; @@ -57,7 +56,7 @@ bioShape.falsifyMesh(); renderArrowHeads = val; } - calcRopeMidPoints(newRockets); + calcRopeMidPoints(newRockets); calcScreenControlPoints(cordMidPoints); controlPoints = cordMidPoints; renderRockets(); @@ -79,18 +78,18 @@ point = cordMidPoints[i]; Monomer residue = monomers[i]; if (isNewStyle && renderArrowHeads) { - point.setT(controlPoints[i]); - } else if (isHelix(i) || !isNewStyle && isSheet(i)) { + point.setT(controlPoints[i]); + } else if (isHelix(i) || !isNewStyle && isSheet(i)) { ProteinStructure proteinstructure = residue.getProteinStructure(); - point.setT(i - 1 != proteinstructure.getMonomerIndex() ? - proteinstructure.getAxisStartPoint() : - proteinstructure.getAxisEndPoint()); + point + .setT(i - 1 != proteinstructure.getMonomerIndex() ? proteinstructure + .getAxisStartPoint() : proteinstructure.getAxisEndPoint()); proteinstructurePrev = proteinstructure; } else { if (proteinstructurePrev != null) point.setT(proteinstructurePrev.getAxisEndPoint()); else { - point.setT(controlPoints[i]); + point.setT(controlPoints[i]); } proteinstructurePrev = null; } @@ -99,7 +98,7 @@ if (proteinstructurePrev != null) point.setT(proteinstructurePrev.getAxisEndPoint()); else { - point.setT(controlPoints[monomerCount]); + point.setT(controlPoints[monomerCount]); } } @@ -118,7 +117,8 @@ renderPending(); } - protected void renderSpecialSegment(Monomer monomer, short thisColix, short thisMad) { + protected void renderSpecialSegment(Monomer monomer, short thisColix, + short thisMad) { ProteinStructure proteinstructure = monomer.getProteinStructure(); if (tPending) { if (proteinstructure == proteinstructurePending && thisMad == mad @@ -162,11 +162,12 @@ private V3 vtemp = new V3(); /** - * @param i - * @param pointStart - * @param pointBeforeEnd ignored now that arrow heads protrude beyond end of rocket - * @param pointEnd - * @param tEnd + * @param i + * @param pointStart + * @param pointBeforeEnd + * ignored now that arrow heads protrude beyond end of rocket + * @param pointEnd + * @param tEnd */ private void renderPendingRocketSegment(int i, P3 pointStart, P3 pointBeforeEnd, P3 pointEnd, @@ -207,55 +208,79 @@ protected void renderCone(int i, P3 pointBegin, P3 pointEnd, P3 screenPtBegin, P3 screenPtEnd) { int coneDiameter = (mad << 1) - (mad >> 1); - coneDiameter = (int) viewer.scaleToScreen((int) Math.floor(screenPtBegin.z), - coneDiameter); + coneDiameter = (int) viewer.scaleToScreen( + (int) Math.floor(screenPtBegin.z), coneDiameter); g3d.fillConeSceen3f(GData.ENDCAPS_FLAT, coneDiameter, screenPtBegin, screenPtEnd); } - private void renderPendingSheet(P3 pointStart, P3 pointBeforeEnd, - P3 pointEnd, boolean tEnd) { + private void renderPendingSheet(P3 ptStart, P3 pointBeforeEnd, + P3 ptEnd, boolean tEnd) { if (!g3d.setColix(colix)) return; + if (corners[0] == null) + for (int i = 8; --i >= 0;) { + corners[i] = new P3(); + screenCorners[i] = new P3(); + } if (tEnd && renderArrowHeads) { - drawArrowHeadBox(pointBeforeEnd, pointEnd); - drawBox(pointStart, pointBeforeEnd); - } else { - drawBox(pointStart, pointEnd); + setBox(1.25f, 0.333f, pointBeforeEnd); + ptTip.scaleAdd2(-0.5f, vH, ptEnd); + for (int i = 4; --i >= 0;) { + P3 corner = corners[i]; + corner.setT(ptC); + if ((i & 1) != 0) + corner.add(vW); + if ((i & 2) != 0) + corner.add(vH); + viewer.transformPt3f(corner, screenCorners[i]); + } + corners[4].setT(ptTip); + viewer.transformPt3f(ptTip, screenCorners[4]); + corners[5].add2(ptTip, vH); + viewer.transformPt3f(corners[5], screenCorners[5]); + + g3d.fillTriangle3f(screenCorners[0], screenCorners[1], screenCorners[4], + true); + g3d.fillTriangle3f(screenCorners[2], screenCorners[3], screenCorners[5], + true); + for (int i = 0; i < 12; i += 4) { + int i0 = arrowHeadFaces[i]; + int i1 = arrowHeadFaces[i + 1]; + int i2 = arrowHeadFaces[i + 2]; + int i3 = arrowHeadFaces[i + 3]; + g3d.fillQuadrilateral(screenCorners[i0], screenCorners[i1], + screenCorners[i2], screenCorners[i3]); + } + ptEnd = pointBeforeEnd; } + setBox(1f, 0.25f, ptStart); + vTemp.sub2(ptEnd, ptStart); + buildBox(ptC, vW, vH, vTemp); + for (int i = 0; i < 6; ++i) { + int i0 = boxFaces[i * 4]; + int i1 = boxFaces[i * 4 + 1]; + int i2 = boxFaces[i * 4 + 2]; + int i3 = boxFaces[i * 4 + 3]; + g3d.fillQuadrilateral(screenCorners[i0], screenCorners[i1], + screenCorners[i2], screenCorners[i3]); + } } - private final static byte[] boxFaces = - { - 0, 1, 3, 2, - 0, 2, 6, 4, - 0, 4, 5, 1, - 7, 5, 4, 6, - 7, 6, 2, 3, - 7, 3, 1, 5 }; - - private final P3[] corners = new P3[8]; - private final P3[] screenCorners = new P3[8]; - { - for (int i = 8; --i >= 0; ) { - screenCorners[i] = new P3(); - corners[i] = new P3(); - } + private void setBox(float w, float h, P3 pt) { + Sheet sheet = (Sheet) proteinstructurePending; + float scale = mad / 1000f; + vW.setT(sheet.getWidthUnitVector()); + vW.scale(scale * w); + vH.setT(sheet.getHeightUnitVector()); + vH.scale(scale * h); + ptC.ave(vW, vH); + ptC.sub2(pt, ptC); } - private final P3 pointTipOffset = new P3(); - - private final V3 scaledWidthVector = new V3(); - private final V3 scaledHeightVector = new V3(); - - private final static byte arrowHeadFaces[] = - {0, 1, 3, 2, - 0, 4, 5, 2, - 1, 4, 5, 3}; - - void buildBox(P3 pointCorner, V3 scaledWidthVector, - V3 scaledHeightVector, V3 lengthVector) { - for (int i = 8; --i >= 0; ) { + private void buildBox(P3 pointCorner, V3 scaledWidthVector, + V3 scaledHeightVector, V3 lengthVector) { + for (int i = 8; --i >= 0;) { P3 corner = corners[i]; corner.setT(pointCorner); if ((i & 1) != 0) @@ -268,74 +293,26 @@ } } - void buildArrowHeadBox(P3 pointCorner, V3 scaledWidthVector, - V3 scaledHeightVector, P3 pointTip) { - for (int i = 4; --i >= 0; ) { - P3 corner = corners[i]; - corner.setT(pointCorner); - if ((i & 1) != 0) - corner.add(scaledWidthVector); - if ((i & 2) != 0) - corner.add(scaledHeightVector); - viewer.transformPt3f(corner, screenCorners[i]); - } - corners[4].setT(pointTip); - viewer.transformPt3f(pointTip, screenCorners[4]); - corners[5].add2(pointTip, scaledHeightVector); - viewer.transformPt3f(corners[5], screenCorners[5]); - } + private final V3 vTemp = new V3(); + private final P3 ptC = new P3(); + private final P3 ptTip = new P3(); + private final V3 vW = new V3(); + private final V3 vH = new V3(); + private final P3[] corners = new P3[8]; + private final P3[] screenCorners = new P3[8]; - private final V3 lengthVector = new V3(); - private final P3 pointCorner = new P3(); + private final static byte[] boxFaces = + { + 0, 1, 3, 2, + 0, 2, 6, 4, + 0, 4, 5, 1, + 7, 5, 4, 6, + 7, 6, 2, 3, + 7, 3, 1, 5 }; - void drawBox(P3 pointA, P3 pointB) { - setBox(1f, 0.25f, pointA); - lengthVector.sub2(pointB, pointA); - buildBox(pointCorner, scaledWidthVector, - scaledHeightVector, lengthVector); - for (int i = 0; i < 6; ++i) { - int i0 = boxFaces[i * 4]; - int i1 = boxFaces[i * 4 + 1]; - int i2 = boxFaces[i * 4 + 2]; - int i3 = boxFaces[i * 4 + 3]; - g3d.fillQuadrilateral(screenCorners[i0], - screenCorners[i1], - screenCorners[i2], - screenCorners[i3]); - } - } + private final static byte arrowHeadFaces[] = + {0, 1, 3, 2, + 0, 4, 5, 2, + 1, 4, 5, 3}; - private void setBox(float width, float height, P3 pt) { - Sheet sheet = (Sheet)proteinstructurePending; - float scale = mad / 1000f; - scaledWidthVector.setT(sheet.getWidthUnitVector()); - scaledWidthVector.scale(scale * width); - scaledHeightVector.setT(sheet.getHeightUnitVector()); - scaledHeightVector.scale(scale * height); - pointCorner.scaleAdd2(-0.5f, pt, scaledHeightVector); - pointCorner.add(scaledWidthVector); - } - - void drawArrowHeadBox(P3 base, P3 tip) { - setBox(1.25f, 0.333f, base); - pointTipOffset.scaleAdd2(-0.5f, tip, scaledHeightVector); - buildArrowHeadBox(pointCorner, scaledWidthVector, - scaledHeightVector, pointTipOffset); - g3d.fillTriangle3f(screenCorners[0], - screenCorners[1], - screenCorners[4], true); - g3d.fillTriangle3f(screenCorners[2], - screenCorners[3], - screenCorners[5], true); - for (int i = 0; i < 12; i += 4) { - int i0 = arrowHeadFaces[i]; - int i1 = arrowHeadFaces[i + 1]; - int i2 = arrowHeadFaces[i + 2]; - int i3 = arrowHeadFaces[i + 3]; - g3d.fillQuadrilateral(screenCorners[i0], - screenCorners[i1], - screenCorners[i2], - screenCorners[i3]); - } - } } Modified: branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java 2014-01-05 20:47:07 UTC (rev 19149) +++ branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java 2014-01-05 20:55:57 UTC (rev 19150) @@ -7622,18 +7622,18 @@ return false; } - private boolean evaluateDot(ScriptMathProcessor mp, SV[] args, int tok, int intValue) - throws ScriptException { + private boolean evaluateDot(ScriptMathProcessor mp, SV[] args, int tok, + int intValue) throws ScriptException { // distance and dot switch (args.length) { case 1: if (tok == T.dot) - return false; + return false; //$FALL-THROUGH$ case 2: break; - default: - return false; + default: + return false; } SV x1 = mp.getX(); SV x2 = args[0]; @@ -7642,11 +7642,13 @@ if (tok == T.distance) { int minMax = intValue & T.minmaxmask; boolean isMinMax = (minMax == T.min || minMax == T.max); + boolean isAll = minMax == T.minmaxmask; switch (x1.tok) { case T.bitset: BS bs = SV.bsSelectVar(x1); BS bs2 = null; - boolean returnAtom = (isMinMax && args.length == 2 && args[1].asBoolean()); + boolean returnAtom = (isMinMax && args.length == 2 && args[1] + .asBoolean()); switch (x2.tok) { case T.bitset: bs2 = (x2.tok == T.bitset ? SV.bsSelectVar(x2) : null); @@ -7657,20 +7659,41 @@ float dMinMax = Float.NaN; int iMinMax = Integer.MAX_VALUE; for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) { - float d = (bs2 == null ? atoms[i].distanceSquared(pt2) : ((Float) eval.getBitsetProperty(bs2, intValue, atoms[i], - plane2, x1.value, null, false, x1.index, false)).floatValue()); + float d = (bs2 == null ? atoms[i].distanceSquared(pt2) + : ((Float) eval.getBitsetProperty(bs2, intValue, atoms[i], + plane2, x1.value, null, false, x1.index, false)) + .floatValue()); if (minMax == T.min ? d >= dMinMax : d <= dMinMax) - continue; + continue; dMinMax = d; - iMinMax = i; + iMinMax = i; } - return mp.addXBs(iMinMax == Integer.MAX_VALUE ? new BS() : BSUtil.newAndSetBit(iMinMax)); + return mp.addXBs(iMinMax == Integer.MAX_VALUE ? new BS() : BSUtil + .newAndSetBit(iMinMax)); } + if (isAll) { + if (bs2 == null) { + float[] data = new float[bs.cardinality()]; + for (int p = 0, i = bs.nextSetBit(0); i >= 0; i = bs + .nextSetBit(i + 1), p++) + data[p] = atoms[i].distance(pt2); + return mp.addXAF(data); + } + float[][] data2 = new float[bs.cardinality()][bs2.cardinality()]; + for (int p = 0, i = bs.nextSetBit(0); i >= 0; i = bs + .nextSetBit(i + 1), p++) + for (int q = 0, j = bs2.nextSetBit(0); j >= 0; j = bs2 + .nextSetBit(j + 1), q++) + data2[p][q] = atoms[i].distance(atoms[j]); + return mp.addXAFF(data2); + } if (isMinMax) { float[] data = new float[bs.cardinality()]; - for (int i = bs.nextSetBit(0), p = 0; i >= 0; i = bs.nextSetBit(i + 1)) - data[p++] = ((Float) eval.getBitsetProperty(bs2, intValue, atoms[i], - plane2, x1.value, null, false, x1.index, false)).floatValue(); + for (int i = bs.nextSetBit(0), p = 0; i >= 0; i = bs + .nextSetBit(i + 1)) + data[p++] = ((Float) eval.getBitsetProperty(bs2, intValue, + atoms[i], plane2, x1.value, null, false, x1.index, false)) + .floatValue(); return mp.addXAF(data); } return mp.addXObj(eval.getBitsetProperty(bs, intValue, pt2, plane2, @@ -8305,9 +8328,9 @@ if (len != 1 && len != 2) return false; break; - default: - if (len != 1) - return false; + default: + if (len != 1) + return false; } String[] sList1 = null, sList2 = null, sList3 = null; @@ -8315,11 +8338,11 @@ // [xxxx].add("\t", [...]) int itab = (args[0].tok == T.string ? 0 : 1); String tab = SV.sValue(args[itab]); - sList1 = (x1.tok == T.varray ? SV.listValue(x1) - : PT.split(SV.sValue(x1), "\n")); + sList1 = (x1.tok == T.varray ? SV.listValue(x1) : PT.split(SV.sValue(x1), + "\n")); x2 = args[1 - itab]; - sList2 = (x2.tok == T.varray ? SV.listValue(x2) - : PT.split(SV.sValue(x2), "\n")); + sList2 = (x2.tok == T.varray ? SV.listValue(x2) : PT.split(SV.sValue(x2), + "\n")); sList3 = new String[len = Math.max(sList1.length, sList2.length)]; for (int i = 0; i < len; i++) sList3[i] = (i >= sList1.length ? "" : sList1[i]) + tab @@ -8330,7 +8353,8 @@ boolean isAll = (x2.tok == T.all); if (x1.tok != T.varray && x1.tok != T.string) return mp.binaryOp(opTokenFor(tok), x1, x2); - boolean isScalar = SV.isScalar(x2); + boolean isScalar1 = SV.isScalar(x1); + boolean isScalar2 = SV.isScalar(x2); float[] list1 = null; float[] list2 = null; @@ -8339,18 +8363,19 @@ if (x1.tok == T.varray) { len = alist1.size(); + } else if (isScalar1) { + len = Integer.MAX_VALUE; } else { sList1 = (PT.split(SV.sValue(x1), "\n")); list1 = new float[len = sList1.length]; PT.parseFloatArrayData(sList1, list1); } - if (isAll) { float sum = 0f; if (x1.tok == T.varray) { for (int i = len; --i >= 0;) sum += SV.fValue(alist1.get(i)); - } else { + } else if (!isScalar1) { for (int i = len; --i >= 0;) sum += list1[i]; } @@ -8358,14 +8383,16 @@ } if (tok == T.join && x2.tok == T.string) { SB sb = new SB(); - for (int i = 0; i < len; i++) - sb.appendO(i > 0 ? x2.value : null).append(SV.sValue(alist1.get(i))); + if (isScalar1) + sb.append(SV.sValue(x1)); + else + for (int i = 0; i < len; i++) + sb.appendO(i > 0 ? x2.value : null).append(SV.sValue(alist1.get(i))); return mp.addXStr(sb.toString()); } SV scalar = null; - - if (isScalar) { + if (isScalar2) { scalar = x2; } else if (x2.tok == T.varray) { len = Math.min(len, alist2.size()); @@ -8373,24 +8400,17 @@ sList2 = PT.split(SV.sValue(x2), "\n"); list2 = new float[sList2.length]; PT.parseFloatArrayData(sList2, list2); - len = Math.min(list1.length, list2.length); + len = Math.min(len, list2.length); } T token = opTokenFor(tok); SV[] olist = new SV[len]; - - SV a, b; - + + SV a = (isScalar1 ? x1 : null); + SV b; for (int i = 0; i < len; i++) { - if (x1.tok == T.varray) - a = alist1.get(i); - else if (Float.isNaN(list1[i])) - a = SV.getVariable(SV.unescapePointOrBitsetAsVariable(sList1[i])); - else - a = SV.newV(T.decimal, Float.valueOf(list1[i])); - - if (isScalar) + if (isScalar2) b = scalar; else if (x2.tok == T.varray) b = alist2.get(i); @@ -8398,6 +8418,14 @@ b = SV.getVariable(SV.unescapePointOrBitsetAsVariable(sList2[i])); else b = SV.newV(T.decimal, Float.valueOf(list2[i])); + if (!isScalar1) { + if (x1.tok == T.varray) + a = alist1.get(i); + else if (Float.isNaN(list1[i])) + a = SV.getVariable(SV.unescapePointOrBitsetAsVariable(sList1[i])); + else + a = SV.newV(T.decimal, Float.valueOf(list1[i])); + } if (tok == T.join) { if (a.tok != T.varray) { List<SV> l = new List<SV>(); @@ -8405,7 +8433,7 @@ a = SV.getVariableList(l); } } - if (!mp.binaryOp(token, a, b)) + if (!mp.binaryOp(token, a, b)) return false; olist[i] = mp.getX(); } Modified: branches/v14_0/Jmol/src/org/jmol/symmetry/SymmetryOperation.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/symmetry/SymmetryOperation.java 2014-01-05 20:47:07 UTC (rev 19149) +++ branches/v14_0/Jmol/src/org/jmol/symmetry/SymmetryOperation.java 2014-01-05 20:55:57 UTC (rev 19150) @@ -287,6 +287,7 @@ } else { this.xyz = strOut; } + System.out.println("testing " + xyz + " == " + this.xyz + " " + this + "\n" + Escape.eAF(linearRotTrans)); if (Logger.debugging) Logger.debug("" + this); return true; Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-05 20:47:07 UTC (rev 19149) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-05 20:55:57 UTC (rev 19150) @@ -9,8 +9,11 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="14.0.4_dev" +JmolVersion="14.0.4" +bug fix: rockets broken +bug fix: PDB byChain, bySymop not supported. + JmolVersion="14.0.3" (synced with 14.1.3 2013.12.29) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-01-09 01:43:14
|
Revision: 19156 http://sourceforge.net/p/jmol/code/19156 Author: hansonr Date: 2014-01-09 01:43:11 +0000 (Thu, 09 Jan 2014) Log Message: ----------- ___JmolVersion="14.0.5_dev_2014.01.08" bug fix: LCAOCartoon translucency broken bug fix: translucent backbone broken bug fix: pqr,p2n readers broken bug fix: isosurface map property xxx can fail if surface is a fragment that (somehow) has a point not associated with an underlying atom. Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java branches/v14_0/Jmol/src/org/jmol/renderbio/BackboneRenderer.java branches/v14_0/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java branches/v14_0/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java branches/v14_0/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java 2014-01-09 01:43:11 UTC (rev 19156) @@ -43,11 +43,11 @@ private final static String[] readerSets = new String[] { "cif.", ";Cif;", "molxyz.", ";Mol3D;Mol;Xyz;", - "more.", ";BinaryDcd;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;Pqr;P2n;TlsDataOnly;", + "more.", ";BinaryDcd;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly;", "quantum.", ";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GausianWfn;Jaguar;" + "Molden;MopacGraphf;GenNBO;NWChem;Odyssey;Psi;Qchem;Spartan;SpartanSmol;" + "WebMO;", - "pdb.", ";Pdb;", + "pdb.", ";Pdb;Pqr;P2n;", "pymol.", ";PyMOL;", "simple.", ";Alchemy;Ampac;Cube;FoldingXyz;GhemicalMM;HyperChem;Jme;Mopac;MopacArchive;ZMatrix;JSON;", "xtal.", ";Abinit;Aims;Castep;Crystal;Dmol;Espresso;Gulp;Jana;Magres;Shelx;Siesta;VaspOutcar;" + Modified: branches/v14_0/Jmol/src/org/jmol/renderbio/BackboneRenderer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/renderbio/BackboneRenderer.java 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/renderbio/BackboneRenderer.java 2014-01-09 01:43:11 UTC (rev 19156) @@ -47,15 +47,8 @@ continue; short colixA = C.getColixInherited(colixes[i], atomA.getColix()); short colixB = C.getColixInherited(colixes[i + 1], atomB.getColix()); - if (!isExport && !isPass2) { - boolean doA = !C.isColixTranslucent(colixA); - boolean doB = !C.isColixTranslucent(colixB); - if (!doA || !doB) { - if (!doA && !doB) - continue; - needTranslucent = true; - } - } + if (!isExport && !isPass2 && !setBioColix(colixA) && !setBioColix(colixB)) + continue; int xA = atomA.sX, yA = atomA.sY, zA = atomA.sZ; int xB = atomB.sX, yB = atomB.sY, zB = atomB.sZ; mad = mads[i]; Modified: branches/v14_0/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java 2014-01-09 01:43:11 UTC (rev 19156) @@ -33,6 +33,8 @@ import org.jmol.util.GData; import javajs.util.List; import org.jmol.util.Normix; +import org.jmol.viewer.JC; + import javajs.util.P3; import javajs.util.P3i; import javajs.util.V3; @@ -158,7 +160,7 @@ private boolean renderMeshSlab() { volumeRender = (imesh.jvxlData.colorDensity && imesh.jvxlData.allowVolumeRender); int thisSlabValue = mySlabValue; - frontOnly = mesh.frontOnly; + frontOnly = mesh.frontOnly || shapeID == JC.SHAPE_LCAOCARTOON; if (!isNavigationMode) { meshSlabValue = imesh.jvxlData.slabValue; if (meshSlabValue != Integer.MIN_VALUE Modified: branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/scriptext/ScriptExt.java 2014-01-09 01:43:11 UTC (rev 19156) @@ -2777,7 +2777,8 @@ setShapeProperty(iShape, "clear", null); if (toCache) setShapeProperty(iShape, "cache", null); - listIsosurface(iShape); + if (iShape != JC.SHAPE_LCAOCARTOON) + listIsosurface(iShape); return true; } Modified: branches/v14_0/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java 2014-01-09 01:43:11 UTC (rev 19156) @@ -538,9 +538,7 @@ if (isAtoms) for (int i = 0; i < vertexCount; i++) { int pt = vertexSource[i]; - if (pt < 0) - continue; - if (bs.get(pt)) { + if (pt >= 0 && bs.get(pt)) { vertexColixes[i] = colix; if (bsVertices != null) bsVertices.set(i); @@ -752,7 +750,7 @@ Atom[] atoms = viewer.getModelSet().atoms; for (int i = mergeVertexCount0; i < vertexCount; i++) { int pt = vertexSource[i]; - if (pt < atoms.length) + if (pt >= 0 && pt < atoms.length) jvxlData.vertexColors[i] = viewer.getColorArgbOrGray(vertexColixes[i] = C.copyColixTranslucency(colix, atoms[pt].getColix())); } Modified: branches/v14_0/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/shapesurface/LcaoCartoon.java 2014-01-09 01:43:11 UTC (rev 19156) @@ -57,7 +57,8 @@ //persistent private Float lcaoScale; - private boolean isTranslucent; + private boolean lcaoTranslucent; + private float lcaoTranslucentLevel; private Integer lcaoColorPos; private Integer lcaoColorNeg; boolean isLonePair; @@ -128,17 +129,17 @@ } if ("translucentLevel" == propertyName) { - translucentLevel = ((Float) value).floatValue(); + lcaoTranslucentLevel = ((Float) value).floatValue(); //pass through } if ("settranslucency" == propertyName) { - isTranslucent = (((String) value).equals("translucent")); + lcaoTranslucent = (((String) value).equals("translucent")); return; } if ("translucency" == propertyName) { - isTranslucent = (((String) value).equals("translucent")); + lcaoTranslucent = (((String) value).equals("translucent")); if (lcaoID == null) return; } @@ -272,6 +273,7 @@ if (meshes[i].thisID.indexOf(id) == 0) deleteMeshI(i); setPropI("init", null, null); + translucentLevel = lcaoTranslucentLevel; setPropI("thisID", id, null); //System.out.println("lcaocartoon: " + id); if (lcaoScale != null) @@ -317,7 +319,7 @@ setPropI("translucentLevel", Float.valueOf(C.getColixTranslucencyLevel(colix)), null); setPropI("translucency", "translucent", null); } - } else if (isTranslucent) + } else if (lcaoTranslucent) for (int i = meshCount; --i >= 0;) if (meshes[i].thisID.indexOf(id) == 0) meshes[i].setTranslucent(true, translucentLevel); @@ -341,7 +343,7 @@ appendCmd(sb, "lcaoCartoon color " + Escape.escapeColor(lcaoColorNeg.intValue()) + " " + Escape.escapeColor(lcaoColorPos.intValue())); - if (isTranslucent) + if (lcaoTranslucent) appendCmd(sb, "lcaoCartoon translucent " + translucentLevel); for (int i = meshCount; --i >= 0;) if (!meshes[i].visible) @@ -354,7 +356,8 @@ LcaoCartoon lc = (LcaoCartoon) shape; lcaoScale = lc.lcaoScale; lcaoColorNeg = lc.lcaoColorNeg; - isTranslucent = lc.isTranslucent; + lcaoTranslucent = lc.lcaoTranslucent; + lcaoTranslucentLevel = lc.lcaoTranslucentLevel; super.merge(shape); } Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-09 01:42:48 UTC (rev 19155) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-09 01:43:11 UTC (rev 19156) @@ -9,8 +9,17 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="14.0.4" +___JmolVersion="14.0.5_dev_2014.01.08" +bug fix: LCAOCartoon translucency broken +bug fix: translucent backbone broken +bug fix: pqr,p2n readers broken +bug fix: isosurface map property xxx can fail if surface is a + fragment that (somehow) has a point not associated with + an underlying atom. + +JmolVersion="14.0.4" + bug fix: rockets broken bug fix: PDB byChain, bySymop not supported. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-01-19 21:58:03
|
Revision: 19199 http://sourceforge.net/p/jmol/code/19199 Author: hansonr Date: 2014-01-19 21:58:00 +0000 (Sun, 19 Jan 2014) Log Message: ----------- Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java branches/v14_0/Jmol/src/org/jmol/viewer/JC.java branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java Modified: branches/v14_0/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java 2014-01-19 21:57:39 UTC (rev 19198) +++ branches/v14_0/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java 2014-01-19 21:58:00 UTC (rev 19199) @@ -52,11 +52,15 @@ iShowSolid = !(!viewer.checkMotionRendering(T.geosurface) && gs.ec.getDotsConvexMax() > 100); if (!iShowSolid && !g3d.setColix(C.BLACK)) return false; + // need to hide inner parts if translucent + boolean tcover = g3d.getTranslucentCoverOnly(); + if (iShowSolid) + g3d.setTranslucentCoverOnly(true); g3d.addRenderer(T.triangles); if (iShowSolid && faceMap == null) faceMap = new int[screenDotCount]; - //testRadiusAdjust = -1.2f; render1(gs); + g3d.setTranslucentCoverOnly(tcover); return requireTranslucent; } Modified: branches/v14_0/Jmol/src/org/jmol/viewer/JC.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/JC.java 2014-01-19 21:57:39 UTC (rev 19198) +++ branches/v14_0/Jmol/src/org/jmol/viewer/JC.java 2014-01-19 21:58:00 UTC (rev 19199) @@ -1448,6 +1448,7 @@ } public static final int VIS_BOND_FLAG = 16 << SHAPE_STICKS; + public static final int VIS_BALLS_FLAG = 16 << SHAPE_BALLS; public static final int VIS_LABEL_FLAG = 16 << SHAPE_LABELS; public static final int VIS_BACKBONE_FLAG = 16 << JC.SHAPE_BACKBONE; Modified: branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java 2014-01-19 21:57:39 UTC (rev 19198) +++ branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java 2014-01-19 21:58:00 UTC (rev 19199) @@ -423,7 +423,7 @@ if (!modelSet.isAtomHidden(i)) { f |= JC.ATOM_NOTHIDDEN; if (atom.madAtom != 0) - f |= JC.VIS_BOND_FLAG; + f |= JC.VIS_BALLS_FLAG; atom.setShapeVisibility(f, true); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-01-24 02:20:26
|
Revision: 19209 http://sourceforge.net/p/jmol/code/19209 Author: hansonr Date: 2014-01-24 02:20:21 +0000 (Fri, 24 Jan 2014) Log Message: ----------- format() and label() commands limited to 4 parameters. Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/script/T.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/script/T.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/T.java 2014-01-23 02:25:51 UTC (rev 19208) +++ branches/v14_0/Jmol/src/org/jmol/script/T.java 2014-01-24 02:20:21 UTC (rev 19209) @@ -670,7 +670,7 @@ static int getMaxMathParams(int tokCommand) { - return ((tokCommand >> 9) & 0x7); + return ((tokCommand >> 9) & 0x3); } // 0 << 9 indicates that ScriptMathProcessor @@ -690,7 +690,7 @@ public final static int getproperty = 10 | 0 << 9 | mathfunc | mathproperty | scriptCommand; public final static int label = 11 /* must be odd */| 0 << 9 | mathfunc | mathproperty | strproperty | settable | implicitStringCommand | shapeCommand | defaultON | deprecatedparam; public final static int helix = 12 | 0 << 9 | mathfunc | predefinedset; - public final static int measure = 13 | 0 << 9| mathfunc | shapeCommand | deprecatedparam | defaultON; + public final static int measure = 13 | 0 << 9 | mathfunc | shapeCommand | deprecatedparam | defaultON; public final static int now = 14 | 0 << 9 | mathfunc; public final static int plane = 15 | 0 << 9 | mathfunc; public final static int point = 16 | 0 << 9 | mathfunc; Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-23 02:25:51 UTC (rev 19208) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-24 02:20:21 UTC (rev 19209) @@ -11,11 +11,15 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="14.0.7" +___JmolVersion="14.0.8_dev_2014.01.23" +bug fix: format() and label() functions limited to 4 arguments; should be unlimited + +JmolVersion="14.0.7" + JmolVersion="14.0.7_dev_2014.01.20" - bug fix: 14.0.6 fatally bugged -- unitcell and echo rendering, getProperty +bug fix: 14.0.6 fatally bugged -- unitcell and echo rendering, getProperty JmolVersion="14.0.6" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-01-25 04:20:40
|
Revision: 19214 http://sourceforge.net/p/jmol/code/19214 Author: hansonr Date: 2014-01-25 04:20:35 +0000 (Sat, 25 Jan 2014) Log Message: ----------- ___JmolVersion="14.0.8_dev_2014.01.24" bug fix: y = ([3])[1][1] should be [3] not 3 bug fix: break n nonfunctional bug fix: format() and label() functions limited to 4 arguments; should be unlimited Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/script/SV.java branches/v14_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/script/SV.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/SV.java 2014-01-24 19:28:34 UTC (rev 19213) +++ branches/v14_0/Jmol/src/org/jmol/script/SV.java 2014-01-25 04:20:35 UTC (rev 19214) @@ -896,15 +896,19 @@ i1 = len + i1; if (i1 < 1) i1 = 1; - if (i2 == 0) - i2 = len; - else if (i2 < 0) - i2 = len + i2; + boolean isOne = (i2 == Integer.MIN_VALUE); + if (!isOne) { + if (i2 == 0) + i2 = len; + else if (i2 < 0) + i2 = len + i2; - if (i2 > len) - i2 = len; - else if (i2 < i1) - i2 = i1; + //if (i2 > len) + //i2 = len; + //else + if (i2 < i1) + i2 = i1; + } switch (tokenIn.tok) { case bitset: @@ -914,25 +918,31 @@ bs.clearAll(); break; } - int n = 0; - for (int j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) - if (++n < i1 || n > i2) - bs.clear(j); + if (isOne) { + isOne = bs.get(i1); + bs.clearAll(); + if (isOne) + bs.set(i1); + } else { + int n = 0; + for (int j = bs.nextSetBit(0); j >= 0; j = bs.nextSetBit(j + 1)) + if (++n < i1 || n > i2) + bs.clear(j); + } break; case string: - if (i1 < 1 || i1 > len) - tokenOut.value = ""; - else - tokenOut.value = s.substring(i1 - 1, i2); + tokenOut.value = (isOne ? s.substring(i1 - 1, i1) + : i1 < 1 || i1 > len ? "" + : s.substring(i1 - 1, Math.min(i2, len))); break; case varray: - if (i1 < 1 || i1 > len || i2 > len) + if (i1 < 1 || i1 > len) return newV(string, ""); - if (i2 == i1) + if (isOne) return ((SV) tokenIn).getList().get(i1 - 1); - List<SV> o2 = new List<SV>(); + List<SV> o2 = new List<SV>(); List<SV> o1 = ((SV) tokenIn).getList(); - n = i2 - i1 + 1; + int n = Math.min(i2, len) - i1 + 1; for (int i = 0; i < n; i++) o2.addLast(newT(o1.get(i + i1 - 1))); tokenOut.value = o2; Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2014-01-24 19:28:34 UTC (rev 19213) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2014-01-25 04:20:35 UTC (rev 19214) @@ -6177,19 +6177,24 @@ pcEnd = pc; return; } - pc = Math.abs(aatoken[pt][0].intValue); + int newpc = Math.abs(aatoken[pt][0].intValue); int tok = aatoken[pt][0].tok; if (tok == T.casecmd || tok == T.defaultcmd) { - theToken = aatoken[pc--][0]; + theToken = aatoken[newpc--][0]; int ptNext = Math.abs(theToken.intValue); if (theToken.tok != T.end) theToken.intValue = -ptNext; } else { - while (thisContext != null - && !ScriptCompiler.isBreakableContext(thisContext.token.tok)) + pc = -1; + while (pc != pt && thisContext != null) { + while (thisContext != null + && !ScriptCompiler.isBreakableContext(thisContext.token.tok)) + popContext(true, false); + pc = thisContext.pc; popContext(true, false); - popContext(true, false); + } } + pc = newpc; } static int iProcess; Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-24 19:28:34 UTC (rev 19213) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-25 04:20:35 UTC (rev 19214) @@ -11,12 +11,13 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="14.0.8_dev_2014.01.23" +___JmolVersion="14.0.8_dev_2014.01.24" +bug fix: y = ([3])[1][1] should be [3] not 3 +bug fix: break n nonfunctional bug fix: format() and label() functions limited to 4 arguments; should be unlimited JmolVersion="14.0.7" - JmolVersion="14.0.7_dev_2014.01.20" bug fix: 14.0.6 fatally bugged -- unitcell and echo rendering, getProperty This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-01-27 22:51:34
|
Revision: 19221 http://sourceforge.net/p/jmol/code/19221 Author: hansonr Date: 2014-01-27 22:51:30 +0000 (Mon, 27 Jan 2014) Log Message: ----------- ___JmolVersion="14.0.8_dev_2014.01.27" bug fix: {*}[n] should be empty if nAtoms <=n Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/adapter/readers/xtal/AbinitReader.java branches/v14_0/Jmol/src/org/jmol/script/SV.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/adapter/readers/xtal/AbinitReader.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/adapter/readers/xtal/AbinitReader.java 2014-01-27 22:22:00 UTC (rev 19220) +++ branches/v14_0/Jmol/src/org/jmol/adapter/readers/xtal/AbinitReader.java 2014-01-27 22:51:30 UTC (rev 19221) @@ -77,10 +77,8 @@ tmp = PT.rep(tmp, "typat", ""); String[] tokens = getTokensStr(tmp); - for (int j = 0; j < tokens.length; j++) { + for (int j = 0; j < tokens.length; j++, i++) typeArray[i] = parseIntStr(tokens[j]); - i++; - } readLine(); } } Modified: branches/v14_0/Jmol/src/org/jmol/script/SV.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/SV.java 2014-01-27 22:22:00 UTC (rev 19220) +++ branches/v14_0/Jmol/src/org/jmol/script/SV.java 2014-01-27 22:51:30 UTC (rev 19221) @@ -812,14 +812,13 @@ String s = null; int i1 = tokenIn.intValue; + boolean isOne = (i2 == Integer.MIN_VALUE); if (i1 == Integer.MAX_VALUE) { // no selections have been made yet -- // we just create a new token with the // same bitset and now indicate either // the selected value or "ALL" (max_value) - if (i2 == Integer.MIN_VALUE) - i2 = i1; - return newSV(tokenIn.tok, i2, tokenIn.value); + return newSV(tokenIn.tok, (isOne ? i1 : i2), tokenIn.value); } int len = 0; boolean isInputSelected = (tokenIn instanceof SV && ((SV) tokenIn).index != Integer.MAX_VALUE); @@ -837,7 +836,7 @@ } break; case varray: - len = ((SV)tokenIn).getList().size(); + len = ((SV) tokenIn).getList().size(); break; case string: s = (String) tokenIn.value; @@ -859,10 +858,10 @@ int row = (i1 - col) / 10; if (col > 0 && col <= len && row <= len) { if (tokenIn.tok == matrix3f) - return newV(decimal, Float.valueOf( - ((M3) tokenIn.value).getElement(row - 1, col - 1))); - return newV(decimal, Float.valueOf( - ((M4) tokenIn.value).getElement(row - 1, col - 1))); + return newV(decimal, Float.valueOf(((M3) tokenIn.value).getElement( + row - 1, col - 1))); + return newV(decimal, + Float.valueOf(((M4) tokenIn.value).getElement(row - 1, col - 1))); } return newV(string, ""); } @@ -880,7 +879,7 @@ else ((M4) tokenIn.value).getRow(i1 - 1, data); } - if (i2 == Integer.MIN_VALUE) + if (isOne) return getVariableAF(data); if (i2 < 1 || i2 > len) return newV(string, ""); @@ -892,20 +891,16 @@ // "testing"[3][0] gives "sting" // "testing"[-1][0] gives "ng" // "testing"[0][-2] gives just "g" as well + // "testing"[-10] gives "" if (i1 <= 0) i1 = len + i1; - if (i1 < 1) - i1 = 1; - boolean isOne = (i2 == Integer.MIN_VALUE); if (!isOne) { + if (i1 < 1) + i1 = 1; if (i2 == 0) i2 = len; else if (i2 < 0) i2 = len + i2; - - //if (i2 > len) - //i2 = len; - //else if (i2 < i1) i2 = i1; } @@ -919,7 +914,7 @@ break; } if (isOne) { - isOne = bs.get(i1); + isOne = (--i1 >= 0 && bs.get(i1)); bs.clearAll(); if (isOne) bs.set(i1); @@ -931,20 +926,20 @@ } break; case string: - tokenOut.value = (isOne ? s.substring(i1 - 1, i1) - : i1 < 1 || i1 > len ? "" - : s.substring(i1 - 1, Math.min(i2, len))); + tokenOut.value = (--i1 < 0 || i1 >= len ? "" + : isOne ? s.substring(i1, i1 + 1) + : s.substring(i1, Math.min(i2, len))); break; case varray: - if (i1 < 1 || i1 > len) + if (--i1 < 0 || i1 >= len) return newV(string, ""); if (isOne) - return ((SV) tokenIn).getList().get(i1 - 1); + return ((SV) tokenIn).getList().get(i1); List<SV> o2 = new List<SV>(); List<SV> o1 = ((SV) tokenIn).getList(); - int n = Math.min(i2, len) - i1 + 1; + int n = Math.min(i2, len) - i1; for (int i = 0; i < n; i++) - o2.addLast(newT(o1.get(i + i1 - 1))); + o2.addLast(newT(o1.get(i + i1))); tokenOut.value = o2; break; } Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-27 22:22:00 UTC (rev 19220) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-01-27 22:51:30 UTC (rev 19221) @@ -13,6 +13,7 @@ ___JmolVersion="14.0.8_dev_2014.01.27" +bug fix: {*}[n] should be empty if nAtoms <=n bug fix: assign atom into into PDB file loses atom names bug fix: y = ([3])[1][1] should be [3] not 3 bug fix: break n nonfunctional This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-02-16 00:07:34
|
Revision: 19327 http://sourceforge.net/p/jmol/code/19327 Author: hansonr Date: 2014-02-16 00:07:31 +0000 (Sun, 16 Feb 2014) Log Message: ----------- ___JmolVersion="14.0.8_2014.02.15" -- note I am leaving version as 14.0.8 here but updating the date bug fix: bond/draw/isosurface picking broken bug fix: [1 -5 6 -2] gives [1 (-5+6-2)] instead of [(1-5) (6-2)] Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/export/_IdtfExporter.java branches/v14_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java branches/v14_0/Jmol/src/org/jmol/shape/MeshCollection.java branches/v14_0/Jmol/src/org/jmol/shape/Sticks.java branches/v14_0/Jmol/src/org/jmol/shapespecial/Draw.java branches/v14_0/Jmol/src/org/jmol/shapesurface/Isosurface.java branches/v14_0/Jmol/src/org/jmol/viewer/ActionManager.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v14_0/Jmol/src/org/jmol/viewer/StatusManager.java branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v14_0/Jmol/src/org/jmol/export/_IdtfExporter.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/export/_IdtfExporter.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/export/_IdtfExporter.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -319,38 +319,79 @@ * */ return "% Created by: Jmol " + Viewer.getJmolVersion() - + "\n% Creation date: " + getExportDate() - + "\n% File created: " + fileName + " (" + out.getByteCount() + " bytes)\n\n" - + "\n\\documentclass[12pt,letter]{article}" - + "\n\\usepackage{hyperref}" - + "\n\\usepackage[3D]{media9}" + + "\n% Creation date: " + getExportDate() + + "\n% File created: " + fileName + " (" + out.getByteCount() + " bytes)\n\n" + + "\n\\documentclass[12pt,letter]{article}" + + "\n\\usepackage{hyperref}" + + "\n\\usepackage{media9}" + "\n\\usepackage{verbatim}" - + "\n\\pagestyle{empty}" - + "\n\\begin{document}" - + "\n \\begin{center}" - + "\n \\includemovie[" - + "\n label=" + name + "," - + "\n autoplay," - + "\n repeat=1," - + "\n toolbar=false," - + "\n3Droo=" + cameraDistance + "," - + "\n3Dcoo= 0.0 0.0 0.0," - + "\n3Dc2c=0.0 0.0 1.0," - + "\n3Daac=" + aperatureAngle + "," - + "\n% 3Droll=0.0," - + "\n3Dbg=" + rgbFractionalFromColix(backgroundColix) + "," - + "\n3Dlights=Headlamp," - + "\ninline=true," - + "\n ]{0.9\\textwidth}{0.9\\textwidth}{" + name + ".u3d}" - + "\n% \\\\" - + "\n%\\movieref[3Dcalculate]{" + name + "}{Click here!}" - + "\n\\end{center}" + + "\n\\pagestyle{empty}" + + "\n\\begin{document}" + + "\n \\begin{center}" + + "\n \\addmediapath{./} % here you can set the path where is been saved the u3d file" + + "\n \\includemedia[" + + "\n label=" + name + "," + + "\n width=0.9\\textwidth," + + "\n height=0.9\\textheight," + + "\n activate=pageopen," + + "\n deactivate=pageclose," + + "\n 3Dtoolbar=false," + + "\n 3Dnavpane=false," + + "\n 3Dmenu," + + "\n 3Droo=" + cameraDistance + "," + + "\n 3Dcoo= 0.0 0.0 -" + cameraDistance + "," + + "\n 3Dc2c=0.0 0.0 1.0," + + "\n 3Daac=" + aperatureAngle + "," + + "\n 3Droll=0.0," + + "\n 3Dbg=" + rgbFractionalFromColix(backgroundColix) + ", % to set the background color for 3D viewer; white = 1 1 1; so, you need to do the proportion: '255:1=[RGB]:x'" + + "\n transparent=false," + + "\n 3Dlights=Headlamp," + + "\n 3Drender=Solid," + + "\n 3Dpartsattrs=restore," + + "\n ]{}{" + name + ".u3d}" + + "\n% \\\\" + + "\n%\\movieref[3Dcalculate]{" + name + "}{Click here!}" + + "\n\\end{center}" + "\n\\end{document}" +"\n\\begin{comment}" + viewer.getWrappedStateScript() +"\n\\end{comment}"; } +// was: +// +// return "% Created by: Jmol " + Viewer.getJmolVersion() +// + "\n% Creation date: " + getExportDate() +// + "\n% File created: " + fileName + " (" + out.getByteCount() + " bytes)\n\n" +// + "\n\\documentclass[12pt,letter]{article}" +// + "\n\\usepackage{hyperref}" +// + "\n\\usepackage[3D]{movie15}" +// + "\n\\usepackage{verbatim}" +// + "\n\\pagestyle{empty}" +// + "\n\\begin{document}" +// + "\n \\begin{center}" +// + "\n \\includemovie[" +// + "\n label=" + name + "," +// + "\n autoplay," +// + "\n repeat=1," +// + "\n toolbar=false," +// + "\n3Droo=" + cameraDistance + "," +// + "\n3Dcoo= 0.0 0.0 0.0," +// + "\n3Dc2c=0.0 0.0 1.0," +// + "\n3Daac=" + aperatureAngle + "," +// + "\n% 3Droll=0.0," +// + "\n3Dbg=" + rgbFractionalFromColix(backgroundColix) + "," +// + "\n3Dlights=Headlamp," +// + "\ninline=true," +// + "\n ]{0.9\\textwidth}{0.9\\textwidth}{" + name + ".u3d}" +// + "\n% \\\\" +// + "\n%\\movieref[3Dcalculate]{" + name + "}{Click here!}" +// + "\n\\end{center}" +// + "\n\\end{document}" +// +"\n\\begin{comment}" +// + viewer.getWrappedStateScript() +// +"\n\\end{comment}"; + private String getParentItem(String name, M4 m) { SB sb= new SB(); Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -56,7 +56,7 @@ public class ScriptMathProcessor { /** - * Reverse Polish Notation Engine for IF, SET, and %{...} -- Bob Hanson + * Reverse Polish Notation Engine for IF, SET, and @{...} -- Bob Hanson * 2/16/2007 Just a (not so simple?) RPN processor that can handle boolean, * int, float, String, Point3f, BitSet, Array, Hashtable, Matrix3f, Matrix4f * @@ -139,9 +139,16 @@ } private void putX(SV x) { - //System.out.println("putX skipping : " + skipping + " " + x); + System.out.println("putX wasX=" + wasX + " x=" + x); if (skipping) return; + if (wasX) { + try { + addOp(T.tokenComma); + } catch (ScriptException e) { + System.out.println("Error adding comma"); + } + } if (++xPt == xStack.length) xStack = (SV[]) AU.doubleLength(xStack); if (logMessages) { @@ -476,10 +483,14 @@ isLeftOp = true; break; } - if (wasX == isLeftOp && tok0 != T.propselector) // for now, because - // we have .label - // and .label() - return false; + if (wasX == isLeftOp && tok0 != T.propselector) { + // for now, because we have .label and .label() + if (wasX && allowMathFunc) { + if (addOp(T.tokenComma)) + return addOp(op); + } + return false; + } break; } Modified: branches/v14_0/Jmol/src/org/jmol/shape/MeshCollection.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shape/MeshCollection.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/shape/MeshCollection.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -580,12 +580,12 @@ } } - protected void setStatusPicked(int flag, P3 v) { + protected void setStatusPicked(int flag, P3 v, Map<String, Object> map) { // for draw and isosurface viewer.setStatusAtomPicked(flag, "[\"" + myType + "\"," + PT.esc(pickedMesh.thisID) + "," + + pickedModel + "," + pickedVertex + "," + v.x + "," + v.y + "," + v.z + "," + (pickedMesh.title == null ? "\"\"" - : PT.esc(pickedMesh.title[0]))+"]"); + : PT.esc(pickedMesh.title[0]))+"]", map); } protected Map<String, Object> getPickedPoint(P3 v, int modelIndex) { Modified: branches/v14_0/Jmol/src/org/jmol/shape/Sticks.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shape/Sticks.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/shape/Sticks.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -230,7 +230,7 @@ map.put("model", viewer.getModelNumberDotted(modelIndex)); map.put("type", "bond"); map.put("info", info); - viewer.setStatusAtomPicked(-3, "[\"bond\",\"" + bond.getIdentity() + "\"," + pt.x + "," + pt.y + "," + pt.z + "]"); + viewer.setStatusAtomPicked(-3, "[\"bond\",\"" + bond.getIdentity() + "\"," + pt.x + "," + pt.y + "," + pt.z + "]", map); return map; } Modified: branches/v14_0/Jmol/src/org/jmol/shapespecial/Draw.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shapespecial/Draw.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/shapespecial/Draw.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -1132,14 +1132,17 @@ BS bs = ((DrawMesh) pickedMesh).modelFlags; if (modelIndex < 0 && bs != null && BSUtil.cardinalityOf(bs) == 1) modelIndex = bs.nextSetBit(0); + Map<String, Object> map = null; + if (action != 0) + map = getPickedPoint(v, modelIndex); if (drawPicking && !isPickingMode) { if (action != 0) // not mouseMove - setStatusPicked(-2, v); + setStatusPicked(-2, v, map); return getPickedPoint(v, modelIndex); } if (action == 0 || pickedMesh.polygonIndexes[pickedModel][0] == pickedMesh.polygonIndexes[pickedModel][1]) { - return (action == 0 ? getPickedPoint(v, modelIndex) : null); + return map; } boolean isClockwise = viewer.isBound(action, ActionManager.ACTION_spinDrawObjectCW); Modified: branches/v14_0/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -1704,8 +1704,9 @@ P3 ptRet = new P3(); ptRet.setT((pickFront ? pickedMesh.vertices[pickedVertex] : ((IsosurfaceMesh)pickedMesh).centers[iFace])); pickedModel = (short) pickedMesh.modelIndex; + Map<String, Object> map = getPickedPoint(ptRet, pickedModel); // if (pickFront) { - setStatusPicked(-4, ptRet); + setStatusPicked(-4, ptRet, map); // } else { // Vector3f vNorm = new Vector3f(); // ((IsosurfaceMesh)pickedMesh).getFacePlane(iFace, vNorm); @@ -1713,7 +1714,7 @@ // vNorm.scale(-1); // // setHeading(ptRet, vNorm, 2); // } - return getPickedPoint(ptRet, pickedModel); + return map; } private boolean isPickable(IsosurfaceMesh m, BS bsVisible) { Modified: branches/v14_0/Jmol/src/org/jmol/viewer/ActionManager.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/ActionManager.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/viewer/ActionManager.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -1748,7 +1748,7 @@ int n = measurementQueued.addPoint(atomIndex, ptClicked, true); if (atomIndex >= 0) viewer.setStatusAtomPicked(atomIndex, "Atom #" + n + ":" - + viewer.getAtomInfo(atomIndex)); + + viewer.getAtomInfo(atomIndex), null); return n; } @@ -1889,12 +1889,12 @@ if (!drawMode && !labelMode && isBound(clickAction, ACTION_center)) zoomTo(atomIndex); else if (isBound(clickAction, ACTION_pickAtom)) - viewer.setStatusAtomPicked(atomIndex, null); + viewer.setStatusAtomPicked(atomIndex, null, null); return; case PICKING_LABEL: if (isBound(clickAction, ACTION_pickLabel)) { runScript("set labeltoggle {atomindex=" + atomIndex + "}"); - viewer.setStatusAtomPicked(atomIndex, null); + viewer.setStatusAtomPicked(atomIndex, null, null); } return; case PICKING_INVERT_STEREO: @@ -1934,14 +1934,14 @@ } viewer.undoMoveActionClear(atomIndex, AtomCollection.TAINT_COORD, true); viewer.invertSelected(null, null, atomIndex, bs); - viewer.setStatusAtomPicked(atomIndex, "inverted: " + Escape.eBS(bs)); + viewer.setStatusAtomPicked(atomIndex, "inverted: " + Escape.eBS(bs), null); } return; case PICKING_DELETE_ATOM: if (isBound(clickAction, ACTION_deleteAtom)) { bs = BSUtil.newAndSetBit(atomIndex); viewer.deleteAtoms(bs, false); - viewer.setStatusAtomPicked(atomIndex, "deleted: " + Escape.eBS(bs)); + viewer.setStatusAtomPicked(atomIndex, "deleted: " + Escape.eBS(bs), null); } return; } @@ -1980,7 +1980,7 @@ break; } viewer.clearClickCount(); - viewer.setStatusAtomPicked(atomIndex, null); + viewer.setStatusAtomPicked(atomIndex, null, null); } private void assignNew(int x, int y) { @@ -2137,7 +2137,7 @@ private void zoomTo(int atomIndex) { runScript("zoomTo (atomindex=" + atomIndex + ")"); - viewer.setStatusAtomPicked(atomIndex, null); + viewer.setStatusAtomPicked(atomIndex, null, null); } @Override Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-02-16 00:07:31 UTC (rev 19327) @@ -12,8 +12,13 @@ -___JmolVersion="14.0.8" +___JmolVersion="14.0.8_2014.02.15" + -- note I am leaving version as 14.0.8 here but updating the date + +bug fix: bond/draw/isosurface picking broken +bug fix: [1 -5 6 -2] gives [1 (-5+6-2)] instead of [(1-5) (6-2)] +JmolVersion="14.0.8" JmolVersion="14.0.8_2014.02.14" feature change: IDTF exporter now calling media9 rather than movie15 in accompanying TeX file Modified: branches/v14_0/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/StatusManager.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/viewer/StatusManager.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -310,13 +310,19 @@ new Object[] { sJmol, bsMoved }); } - synchronized void setStatusAtomPicked(int atomIndex, String strInfo) { + /** + * + * @param atomIndex -2 for draw, -3 for bond + * @param strInfo + * @param map + */ + synchronized void setStatusAtomPicked(int atomIndex, String strInfo, Map<String, Object> map) { String sJmol = jmolScriptCallback(EnumCallback.PICK); Logger.info("setStatusAtomPicked(" + atomIndex + "," + strInfo + ")"); setStatusChanged("atomPicked", atomIndex, strInfo, false); if (notifyEnabled(EnumCallback.PICK)) jmolCallbackListener.notifyCallback(EnumCallback.PICK, - new Object[] { sJmol, strInfo, Integer.valueOf(atomIndex) }); + new Object[] { sJmol, strInfo, Integer.valueOf(atomIndex), map }); } synchronized int setStatusClicked(int x, int y, int action, int clickCount, int mode) { Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java 2014-02-14 23:22:58 UTC (rev 19326) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java 2014-02-16 00:07:31 UTC (rev 19327) @@ -5516,39 +5516,51 @@ * has been picked by the user. * * jmolSetCallback("pickCallback", "myPickCallback") function - * myPickCallback(strInfo, iAtom) {} + * myPickCallback(strInfo, iAtom, map) {} * * iAtom == the index of the atom picked or -2 for a draw object or -3 for a * bond * * strInfo depends upon the type of object picked: * - * atom: a string determinied by the PICKLABEL parameter, which if "" delivers + * atom (iAtom>=0): a string determinied by the PICKLABEL parameter, which if "" delivers * the atom identity along with its coordinates * - * bond: ["bond", bondIdentityString (quoted), x, y, z] where the coordinates + * bond (iAtom==-3): ["bond", bondIdentityString (quoted), x, y, z] where the coordinates * are of the midpoint of the bond * - * draw: ["draw", drawID(quoted), pickedModel, pickedVertex, x, y, z, - * drawTitle(quoted)] + * draw (iAtom==-2): ["draw", ID(quoted), pickedModel, pickedVertex, x, y, z, + * title(quoted)] * + * isosurface (iAtom==-4): ["isosurface", ID(quoted), pickedModel, pickedVertex, x, y, z, + * title(quoted)] + * + * map: + * + * atom: null + * + * bond: {pt, index, modelIndex, modelNumberDotted, type, strInfo} + * + * Draw, isosurface: {pt, modelIndex, modelNumberDotted, id, vertex, type} + * * Viewer.setStatusAtomPicked Draw.checkObjectClicked (set picking DRAW) * Sticks.checkObjectClicked (set bondPicking TRUE; set picking IDENTIFY) * actionManager.atomPicked (set atomPicking TRUE; set picking IDENTIFY) * actionManager.queueAtom (during measurements) */ - public void setStatusAtomPicked(int atomIndex, String info) { + public void setStatusAtomPicked(int atomIndex, String info, + Map<String, Object> map) { if (info == null) { info = global.pickLabel; - if (info.length() == 0) - info = getAtomInfoXYZ(atomIndex, global.messageStyleChime); - else - info = modelSet.getAtomInfo(atomIndex, info); + info = (info.length() == 0 ? getAtomInfoXYZ(atomIndex, + global.messageStyleChime) : modelSet.getAtomInfo(atomIndex, info)); } global.setPicked(atomIndex); global.setS("_pickinfo", info); - statusManager.setStatusAtomPicked(atomIndex, info); + statusManager.setStatusAtomPicked(atomIndex, info, map); + if (atomIndex < 0) + return; int syncMode = statusManager.getSyncMode(); if (syncMode == StatusManager.SYNC_DRIVER && doHaveJDX()) getJSV().atomPicked(atomIndex); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-02-18 08:41:32
|
Revision: 19350 http://sourceforge.net/p/jmol/code/19350 Author: hansonr Date: 2014-02-18 08:41:25 +0000 (Tue, 18 Feb 2014) Log Message: ----------- model kit menu fix; also adds set picking... modelKitMode in main menu Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/awtjs2d/JSModelKitPopup.java branches/v14_0/Jmol/src/org/jmol/popup/GenericSwingPopup.java branches/v14_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/awtjs2d/JSModelKitPopup.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/awtjs2d/JSModelKitPopup.java 2014-02-18 07:23:58 UTC (rev 19349) +++ branches/v14_0/Jmol/src/org/jmol/awtjs2d/JSModelKitPopup.java 2014-02-18 08:41:25 UTC (rev 19350) @@ -65,6 +65,9 @@ isTainted = false; } + /** + * @j2sOverride + */ @Override public void menuClickCallback(SC source, String script) { if (script.equals("clearQ")) { @@ -78,7 +81,7 @@ viewer.evalStringQuiet("set picking assignAtom_C"); return; } - super.menuClickCallback(source, script); + processClickCallback(source, script); } @Override Modified: branches/v14_0/Jmol/src/org/jmol/popup/GenericSwingPopup.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/popup/GenericSwingPopup.java 2014-02-18 07:23:58 UTC (rev 19349) +++ branches/v14_0/Jmol/src/org/jmol/popup/GenericSwingPopup.java 2014-02-18 08:41:25 UTC (rev 19350) @@ -215,6 +215,10 @@ @Override public void menuClickCallback(SC source, String script) { + processClickCallback(source, script); + } + + protected void processClickCallback(SC source, String script) { appRestorePopupMenu(); if (script == null || script.length() == 0) return; @@ -229,7 +233,7 @@ } appRunScript(script); } - + @Override public void menuCheckBoxCallback(SC source) { appRestorePopupMenu(); Modified: branches/v14_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java 2014-02-18 07:23:58 UTC (rev 19349) +++ branches/v14_0/Jmol/src/org/jmol/popup/MainPopupResourceBundle.java 2014-02-18 08:41:25 UTC (rev 19350) @@ -204,7 +204,7 @@ { "pickingMenu", "pickOff pickCenter pickIdent pickLabel pickAtom " - + "pickMolecule pickElement PDBpickChain PDBpickGroup SYMMETRYpickSite pickSpin" }, + + "pickMolecule pickElement - pickSpin - modelKitMode - PDBpickChain PDBpickGroup SYMMETRYpickSite" }, { "computationMenu", "minimize modelkit" @@ -586,6 +586,7 @@ "pickAtom", GT._("Select atom"), "PDBpickChain", GT._("Select chain"), "pickElement", GT._("Select element"), + "modelKitMode", GT._("modelKitMode"), "PDBpickGroup", GT._("Select group"), "pickMolecule", GT._("Select molecule"), "SYMMETRYpickSite", GT._("Select site"), @@ -921,6 +922,7 @@ { "pickAtom", "set picking atom" }, { "PDBpickChain", "set picking chain" }, { "pickElement", "set picking element" }, + { "modelKitMode", "set modelKitMode" }, { "PDBpickGroup", "set picking group" }, { "pickMolecule", "set picking molecule" }, { "SYMMETRYpickSite", "set picking site" }, Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-02-18 07:23:58 UTC (rev 19349) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-02-18 08:41:25 UTC (rev 19350) @@ -10,10 +10,12 @@ # important for the JavaScript version of Jmol. -___JmolVersion="14.0.8_2014.02.17" +___JmolVersion="14.0.8" +JmolVersion="14.0.8_2014.02.17" -- note I am leaving version as 14.0.8 here but updating the date JmolVersion="14.1.8" +bug fix: model kit menu fix; also adds set picking... modelKitMode in main menu bug fix: JSpecView issues with navigating through spectra bug fix: PyMOL reader multiple bond view bug fix: popup menu fixes This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-02-19 13:45:28
|
Revision: 19355 http://sourceforge.net/p/jmol/code/19355 Author: hansonr Date: 2014-02-19 13:45:24 +0000 (Wed, 19 Feb 2014) Log Message: ----------- ___JmolVersion="14.0.10_dev_2014.02.19" bug fix: zap <model Number> or zap {atom expression} broken -- does not affect ZAP command without parameters Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2014-02-19 13:39:17 UTC (rev 19354) +++ branches/v14_0/Jmol/src/org/jmol/modelset/ModelCollection.java 2014-02-19 13:45:24 UTC (rev 19355) @@ -2808,7 +2808,7 @@ // set to recreate bounding box deleteModelAtoms(firstAtomIndex, nAtoms, bsAtoms); - viewer.deleteModelAtoms(firstAtomIndex, nAtoms, bsAtoms); + viewer.deleteModelAtoms(modelIndex, firstAtomIndex, nAtoms, bsAtoms); } @SuppressWarnings("unchecked") Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-02-19 13:39:17 UTC (rev 19354) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-02-19 13:45:24 UTC (rev 19355) @@ -9,8 +9,13 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. +___JmolVersion="14.0.10_dev_2014.02.19" -___JmolVersion="14.0.9_2014.02.18" +bug fix: zap <model Number> or zap {atom expression} broken + -- does not affect ZAP command without parameters + +JmolVersion="14.0.9" +JmolVersion="14.0.9_2014.02.18" bug fix: recently released 14.0.8 introduced a math bug that caused y = "test" + x.f() to be evaluated as ("test" + x).f() @@ -30,21 +35,16 @@ JmolVersion="14.1.8_2014.02.17" - -- note I am leaving version as 14.1.8 here but updating the date - bug fix: JSpecView issues with navigating through spectra bug fix: PyMOL reader multiple bond view bug fix: popup menu fixes bug fix: bond/draw/isosurface picking broken bug fix: [1 -5 6 -2] gives [1 (-5+6-2)] instead of [1 -5 6 -2] -JmolVersion="14.1.8" - bug fix: set defaultLoadScript "{0 0 0}" actually sets that to {1 1 1} -- goes way way back to early Jmol math where there were no point-type variables bug fix: PyMOL reader update for Version 1700 lacking setting 83. bug fix: -m option not working with Jmol.jar -feature change: IDTF exporter now calling media9 rather than movie15 in accompanying TeX file bug fix: PNGJ files within ZIP collections not being read. -- full PNGJ models can be extracted from MS Word .docx files. Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java 2014-02-19 13:39:17 UTC (rev 19354) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Viewer.java 2014-02-19 13:45:24 UTC (rev 19355) @@ -9046,9 +9046,8 @@ statusManager.modifySend(-1, modelIndex, -2, "OK"); } - public void deleteModelAtoms(int firstAtomIndex, int nAtoms, BS bsDeleted) { + public void deleteModelAtoms(int modelIndex, int firstAtomIndex, int nAtoms, BS bsDeleted) { // called from ModelCollection.deleteModel - int modelIndex = getAtomModelIndex(firstAtomIndex); statusManager.modifySend(-1, modelIndex, 1, "delete atoms " + Escape.eBS(bsDeleted)); selectionManager.deleteModelAtoms(bsDeleted); BSUtil.deleteBits(getFrameOffsets(), bsDeleted); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-03-31 14:47:16
|
Revision: 19553 http://sourceforge.net/p/jmol/code/19553 Author: hansonr Date: 2014-03-31 14:47:13 +0000 (Mon, 31 Mar 2014) Log Message: ----------- ___JmolVersion="14.0.13_2014.03.31" new feature: var x,y,z; -- commas optional -- similar to JavaScript -- initializes the variable to "" bug fix: var x not isolated to script context bug fix: ellipsoid command broken Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/script/ScriptCompiler.java branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java branches/v14_0/Jmol/src/org/jmol/script/T.java branches/v14_0/Jmol/src/org/jmol/scriptext/CmdExt.java branches/v14_0/Jmol/src/org/jmol/shapespecial/Ellipsoids.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -175,7 +175,7 @@ return sc; } - private void addContextVariable(String ident) { + private void newContextVariable(String ident) { theToken = T.o(T.identifier, ident); if (pushCount > 0) { ContextToken ct = (ContextToken) vPush.get(pushCount - 1); @@ -1607,7 +1607,7 @@ case 2: if (theTok != T.rightparen) ((ContextToken) tokenCommand).name0 = ident; - addContextVariable(ident); + newContextVariable(ident); break; case 3: if (theTok != T.rightparen) @@ -1683,13 +1683,6 @@ .newCmd(T.elseif, "elseif")); tokCommand = T.elseif; return CONTINUE; - case T.var: - if (nTokens != 1) - break; - addContextVariable(ident); - replaceCommand(T.tokenSetVar); - tokCommand = T.set; - break; case T.end: if (nTokens != 1) return ERROR(ERROR_badArgumentCount); @@ -1728,7 +1721,7 @@ forPoint3 = nSemiSkip = 0; nSemiSkip += 2; } else if (nTokens == 3 && tokAt(2) == T.var) { - addContextVariable(ident); + newContextVariable(ident); } else if ((nTokens == 3 || nTokens == 4) && theTok == T.in) { // for ( var x IN // for ( x IN @@ -1743,6 +1736,23 @@ } break; case T.set: + case T.var: + if (tokCommand == T.var) { + if (nTokens == 1) { + replaceCommand(T.tokenSetVar); + newContextVariable(ident); + break; + } else if (ident.equals(",")) { + return CONTINUE; + } else if (!Character.isAlphabetic(ident.charAt(0))) { + if (nTokens != 2) + return ERROR(ERROR_badArgumentCount); + tokCommand = T.set; + } else { + newContextVariable(ident); + break; + } + } if (theTok == T.leftbrace) setBraceCount++; else if (theTok == T.rightbrace) { Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -2435,6 +2435,8 @@ case T.unbind: cmdUnbind(); break; + case T.var: + break; case T.vibration: cmdVibration(); break; @@ -6052,7 +6054,8 @@ isCmdLine_C_Option &= loadCheck; executionStepping |= doStep; - contextVariables = new Hashtable<String, SV>(); + if (contextVariables == null) + contextVariables = new Hashtable<String, SV>(); contextVariables.put( "_arguments", (params == null ? SV.getVariableAI(new int[] {}) : SV @@ -8532,8 +8535,7 @@ String s = ""; boolean isWild = Txt.isWild(id); for (int iShape = JC.SHAPE_DIPOLES;;) { - if (iShape != JC.SHAPE_MO - && getShapePropertyData(iShape, "checkID", data)) { + if (getShapePropertyData(iShape, "checkID", data)) { setShapeProperty(iShape, "thisID", id); switch (tokCommand) { case T.delete: @@ -8559,10 +8561,17 @@ if (!isWild) break; } - if (iShape == JC.SHAPE_DIPOLES) + switch (iShape) { + case JC.SHAPE_DIPOLES: + iShape = JC.SHAPE_ELLIPSOIDS; + continue; + case JC.SHAPE_ELLIPSOIDS: iShape = JC.SHAPE_MAX_HAS_ID; + } if (--iShape < JC.SHAPE_MIN_HAS_ID) break; + if (iShape == JC.SHAPE_MO) + iShape--; } return s; } Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -1939,13 +1939,10 @@ boolean settingData = key.startsWith("property_"); boolean isThrown = key.equals("thrown_value"); boolean isExpression = (tokAt(1) == T.expressionBegin); - // boolean isNull = key.equals("all"); - SV t = (settingData ? null : getContextVariableAsVariable(key)); - // determine whether this is some sort of // special assignment of a known variable - + if (isSet && !isExpression) { // pt will be 1 unless... switch (tokAt(2)) { @@ -1970,10 +1967,10 @@ if (pt == 1) key = null; } + int nv = 0; List<SV> v = (List<SV>) parameterExpression(pt, ptMax, key, true, true, -1, false, null, null, isSet && pt == 1); - - int nv = v.size(); + nv = v.size(); if (nv == 0) invArg(); if (chk) @@ -2074,7 +2071,6 @@ || (t = vwr.getOrSetNewVariable(key, true)) == null) errorStr(ERROR_invalidArgument, key); } - if (t != null) { t.setv(tv); t.setModified(true); Modified: branches/v14_0/Jmol/src/org/jmol/script/T.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/T.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/script/T.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -1359,7 +1359,7 @@ public final static T tokenSet = tv(set, '=', ""); public final static T tokenSetArray = tv(set, '[', ""); public final static T tokenSetProperty = tv(set, '.', ""); - public final static T tokenSetVar = tv(set, '=', "var"); + public final static T tokenSetVar = tv(var, '=', "var"); public final static T tokenEquals = o(opEQ, "="); public final static T tokenScript = o(script, "script"); public final static T tokenSwitch = o(switchcmd, "switch"); Modified: branches/v14_0/Jmol/src/org/jmol/scriptext/CmdExt.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/scriptext/CmdExt.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/scriptext/CmdExt.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -161,9 +161,6 @@ case T.data: data(); break; - case T.ellipsoid: - ellipsoid(); - break; case T.hbond: connect(0); break; @@ -214,6 +211,9 @@ return mo(b); case JC.SHAPE_POLYHEDRA: return polyhedra(); + case JC.SHAPE_ELLIPSOIDS: + ellipsoid(); + break; case JC.SHAPE_STRUTS: return struts(); } Modified: branches/v14_0/Jmol/src/org/jmol/shapespecial/Ellipsoids.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shapespecial/Ellipsoids.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/shapespecial/Ellipsoids.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -28,26 +28,28 @@ import java.util.Hashtable; import java.util.Iterator; import java.util.Map; +import java.util.Map.Entry; import org.jmol.c.PAL; import org.jmol.java.BS; import org.jmol.modelset.Atom; -//import org.jmol.script.T; import org.jmol.shape.Shape; -//import org.jmol.shapesurface.IsosurfaceMesh; import org.jmol.util.BSUtil; import org.jmol.util.C; import org.jmol.util.Escape; +import org.jmol.util.Txt; + import javajs.util.List; import javajs.util.PT; import javajs.util.SB; import javajs.util.P3; -//import javajs.util.P4; import org.jmol.util.Tensor; import javajs.util.V3; public class Ellipsoids extends Shape { + private static final String PROPERTY_MODES = "ax ce co de eq mo on op sc tr"; + public Map<String, Ellipsoid> simpleEllipsoids = new Hashtable<String, Ellipsoid>(); public Map<Tensor, Ellipsoid> atomEllipsoids = new Hashtable<Tensor, Ellipsoid>(); @@ -56,12 +58,12 @@ } private String typeSelected = "1"; - private Ellipsoid ellipsoidSelected; private BS selectedAtoms; + private List<Ellipsoid> ellipsoidSet; @Override public int getIndexFromName(String thisID) { - return ((ellipsoidSelected = simpleEllipsoids.get(thisID)) == null ? -1 : 1); + return (checkID(thisID) ? 1 : -1); } @Override @@ -109,19 +111,63 @@ // } // return false; // } + + @Override + public boolean getPropertyData(String property, Object[] data) { + if (property == "checkID") { + return (checkID((String) data[0])); + } + return false; + } + + + private boolean checkID(String thisID) { + ellipsoidSet = new List<Ellipsoid>(); + if (thisID == null) + return false; + thisID = thisID.toLowerCase(); + if (Txt.isWild(thisID)) { + for (Entry<String, Ellipsoid> e : simpleEllipsoids.entrySet()) { + String key = e.getKey().toLowerCase(); + if (Txt.isMatch(key, thisID, true, true)) + ellipsoidSet.addLast(e.getValue()); + } + } + Ellipsoid e = simpleEllipsoids.get(thisID); + if (e != null) + ellipsoidSet.addLast(e); + return (ellipsoidSet.size() > 0); + } + + private boolean initEllipsoids(Object value) { + boolean haveID = (value != null); + checkID((String) value); + if (haveID) + typeSelected = null; + selectedAtoms = null; + return haveID; + } + @Override public void setProperty(String propertyName, Object value, BS bs) { //System.out.println(propertyName + " " + value + " " + bs); if (propertyName == "thisID") { - if (initEllipsoids(value) && ellipsoidSelected == null) { + if (initEllipsoids(value) && ellipsoidSet.size() == 0) { String id = (String) value; - ellipsoidSelected = Ellipsoid.getEmptyEllipsoid(id, vwr - .getCurrentModelIndex()); - simpleEllipsoids.put(id, ellipsoidSelected); + Ellipsoid e = Ellipsoid.getEmptyEllipsoid(id, + vwr.getCurrentModelIndex()); + ellipsoidSet.addLast(e); + simpleEllipsoids.put(id, e); } return; } + + if ("atoms" == propertyName) { + selectedAtoms = (BS) value; + return; + } + if (propertyName == "deleteModelAtoms") { int modelIndex = ((int[]) ((Object[]) value)[2])[0]; Iterator<Ellipsoid> e = simpleEllipsoids.values().iterator(); @@ -132,82 +178,33 @@ while (e.hasNext()) if (e.next().modelIndex == modelIndex) e.remove(); - ellipsoidSelected = null; + ellipsoidSet.clear(); return; } - if ("atoms" == propertyName) { - selectedAtoms = (BS) value; - return; - } - if (ellipsoidSelected != null) { - if ("delete" == propertyName) { - simpleEllipsoids.remove(ellipsoidSelected.id); - return; - } - if ("modelindex" == propertyName) { - ellipsoidSelected.tensor.modelIndex = ((Integer) value).intValue(); - return; - } - if ("on" == propertyName) { - ellipsoidSelected.isOn = ((Boolean) value).booleanValue(); - return; - } - if ("options" == propertyName) { - ellipsoidSelected.options = ((String) value).toLowerCase(); - } - if ("points" == propertyName) { - //Object[] o = (Object[]) value; - //setPoints((P3[]) o[1], (BS) o[2]); - return; - } - if ("axes" == propertyName) { - ellipsoidSelected.setAxes((V3[]) value); - return; - } - if ("equation" == propertyName) { - ellipsoidSelected.setEquation((double[]) value); - return; - } - if ("center" == propertyName) { - ellipsoidSelected.setCenter((P3) value); - return; - } - if ("scale" == propertyName) { - ellipsoidSelected.setScale(((Float) value).floatValue(), false); - return; - } - if ("color" == propertyName) { - ellipsoidSelected.colix = C.getColixO(value); - return; - } + int mode = PROPERTY_MODES.indexOf((propertyName+" ").substring(0, 2)); + if (ellipsoidSet.size() > 0) { if ("translucentLevel" == propertyName) { setPropS(propertyName, value, bs); return; } - if ("translucency" == propertyName) { - boolean isTranslucent = (value.equals("translucent")); - ellipsoidSelected.colix = C.getColixTranslucent3( - ellipsoidSelected.colix, isTranslucent, translucentLevel); - return; - } - } - - if ("select" == propertyName) { - typeSelected = ((String) value).toLowerCase(); + if (mode >= 0) + for (int i = ellipsoidSet.size(); --i >= 0;) + setProp(ellipsoidSet.get(i), mode / 3, value); return; } - if ("scale" == propertyName) { - setSize((int) (((Float) value).floatValue() * 100), bs); + if ("color" == propertyName) { + short colix = C.getColixO(value); + byte pid = PAL.pidOf(value); + if (selectedAtoms != null) + bs = selectedAtoms; + for (Ellipsoid e : atomEllipsoids.values()) + if (e.tensor.type.equals(typeSelected) && e.tensor.isSelected(bs, -1)) { + e.colix = getColixI(colix, pid, e.tensor.atomIndex1); + e.pid = pid; + } return; } - if ("params" == propertyName) { - Object[] data = (Object[]) value; - data[2] = null;// Jmol does not allow setting sizes this way from PyMOL yet - typeSelected = "0"; - setSize(50, bs); - // onward... - } if ("on" == propertyName) { boolean isOn = ((Boolean) value).booleanValue(); @@ -239,19 +236,30 @@ return; } - if ("color" == propertyName) { - short colix = C.getColixO(value); - byte pid = PAL.pidOf(value); - if (selectedAtoms != null) - bs = selectedAtoms; - for (Ellipsoid e : atomEllipsoids.values()) - if (e.tensor.type.equals(typeSelected) && e.tensor.isSelected(bs, -1)) { - e.colix = getColixI(colix, pid, e.tensor.atomIndex1); - e.pid = pid; - } + if ("params" == propertyName) { + Object[] data = (Object[]) value; + data[2] = null;// Jmol does not allow setting sizes this way from PyMOL yet + typeSelected = "0"; + setSize(50, bs); + // onward... + } + + if ("points" == propertyName) { + //Object[] o = (Object[]) value; + //setPoints((P3[]) o[1], (BS) o[2]); return; } + if ("scale" == propertyName) { + setSize((int) (((Float) value).floatValue() * 100), bs); + return; + } + + if ("select" == propertyName) { + typeSelected = ((String) value).toLowerCase(); + return; + } + if ("translucency" == propertyName) { boolean isTranslucent = (value.equals("translucent")); for (Ellipsoid e : atomEllipsoids.values()) @@ -263,16 +271,6 @@ setPropS(propertyName, value, bs); } -private boolean initEllipsoids(Object value) { - boolean haveID = (value != null); - ellipsoidSelected = (haveID ? (Ellipsoid) simpleEllipsoids.get(value) : null); - if (haveID) { - typeSelected = null; - } - selectedAtoms = null; - return haveID; -} - // private void setPoints(P3[] points, BS bs) { // return; // doesn't really work. Just something I was playing with. @@ -305,6 +303,45 @@ // ellipsoid.setEigen(ptCenter, eigen, 1f / n / 3); // } + private void setProp(Ellipsoid e, int mode, Object value) { + // "ax ce co de eq mo on op sc tr" + // 0 1 2 3 4 5 6 7 8 9 + switch (mode) { + case 0: // axes + e.setAxes((V3[]) value); + return; + case 1: // center + e.setCenter((P3) value); + return; + case 2: // color + e.colix = C.getColixO(value); + return; + case 3: // delete + simpleEllipsoids.remove(e.id); + return; + case 4: // equation + e.setEquation((double[]) value); + return; + case 5: // modelindex + e.tensor.modelIndex = ((Integer) value).intValue(); + return; + case 6: // on + e.isOn = ((Boolean) value).booleanValue(); + return; + case 7: // options + e.options = ((String) value).toLowerCase(); + return; + case 8: // scale + e.setScale(((Float) value).floatValue(), false); + return; + case 9: // translucency + e.colix = C.getColixTranslucent3(e.colix, value.equals("translucent"), + translucentLevel); + return; + } + return; + } + @Override public String getShapeState() { if (!isActive()) @@ -388,8 +425,8 @@ private void setVis(Map<?, Ellipsoid> ellipsoids, BS bs, Atom[] atoms) { for (Ellipsoid e: ellipsoids.values()) { Tensor t = e.tensor; - boolean isOK = true; - if (t.atomIndex1 >= 0) { + boolean isOK = (t != null && e.isValid && e.isOn); + if (isOK && t.atomIndex1 >= 0) { if (t.iType == Tensor.TYPE_ADP) { boolean isModTensor = t.isModulated; boolean isUnmodTensor = t.isUnmodulated; @@ -398,8 +435,7 @@ } atoms[t.atomIndex1].setShapeVisibility(vf, true); } - e.visible = isOK && e.isValid && e.isOn - && (e.modelIndex < 0 || bs.get(e.modelIndex)); + e.visible = isOK && (e.modelIndex < 0 || bs.get(e.modelIndex)); } } Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-03-31 14:47:13 UTC (rev 19553) @@ -11,11 +11,20 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. +___JmolVersion="14.0.13_2014.03.31" -___JmolVersion="14.0.12" +new feature: var x,y,z; + -- commas optional + -- similar to JavaScript + -- initializes the variable to "" + +bug fix: var x not isolated to script context +bug fix: ellipsoid command broken + +JmolVersion="14.0.12" JmolVersion="14.1.12_2014.03.30" -changes since 14.0.11: +changes since 14.1.11: new feature: JSpecView getSolutionColor fill/all/none/false -- any combination of these four flags @@ -143,6 +152,7 @@ -- better handling of constants during iteration -- better identification of unnecessary edges and faces + JmolVersion="14.1.12_2014.03.27b" bug fix: NWChem reader broken Modified: branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java 2014-03-31 14:46:41 UTC (rev 19552) +++ branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java 2014-03-31 14:47:13 UTC (rev 19553) @@ -377,7 +377,7 @@ if (shapes[i] != null) shapes[i].setVisibilityFlags(bs); - // now et the JC.ATOM_IN_FRAME and JC.ATOM_NOTHIDDEN flags + // now set the JC.ATOM_IN_FRAME and JC.ATOM_NOTHIDDEN flags // along with the bonds flag. boolean showHydrogens = vwr.getBoolean(T.showhydrogens); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-03-31 20:24:22
|
Revision: 19555 http://sourceforge.net/p/jmol/code/19555 Author: hansonr Date: 2014-03-31 20:24:14 +0000 (Mon, 31 Mar 2014) Log Message: ----------- ___JmolVersion="14.0.13_2014.03.31" bug fix: A=[]; A[3] = 5 not working Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-03-31 15:26:13 UTC (rev 19554) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-03-31 20:24:14 UTC (rev 19555) @@ -1980,6 +1980,7 @@ SV sel = (nv > 2 ? v.get(1) : null); t = v.get(0); // -- hash, key, value + // -- array[i], value // -- array, index, value // -- string, index, value // -- matrix, index/index, value @@ -1994,12 +1995,12 @@ t.mapPut(sel.asString(), tv); break; case T.varray: - if (nv > 2) + if (nv > 2 + (sel == null ? 0 : 1)) invArg(); - t = SV.selectItemVar(t); if (sel == null) { - t.setv(tv); - break; + sel = t; + } else { + t = SV.selectItemVar(t); } selectOne = true; break; @@ -2103,7 +2104,7 @@ } return tv; } - + private void setBitsetProperty(BS bs, int tok, int iValue, float fValue, T tokenValue) throws ScriptException { if (chk || BSUtil.cardinalityOf(bs) == 0) Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-03-31 15:26:13 UTC (rev 19554) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-03-31 20:24:14 UTC (rev 19555) @@ -13,6 +13,8 @@ ___JmolVersion="14.0.13_2014.03.31" +bug fix: A=[]; A[3] = 5 not working + new feature: var x,y,z; -- commas optional -- similar to JavaScript This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-04-01 14:35:32
|
Revision: 19564 http://sourceforge.net/p/jmol/code/19564 Author: hansonr Date: 2014-04-01 14:35:29 +0000 (Tue, 01 Apr 2014) Log Message: ----------- Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java branches/v14_0/Jmol/src/org/jmol/popup/JmolGenericPopup.java branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java Added Paths: ----------- branches/v14_0/Jmol/src/org/jmol/adapter/readers/quantum/GaussianFchkReader.java Added: branches/v14_0/Jmol/src/org/jmol/adapter/readers/quantum/GaussianFchkReader.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/adapter/readers/quantum/GaussianFchkReader.java (rev 0) +++ branches/v14_0/Jmol/src/org/jmol/adapter/readers/quantum/GaussianFchkReader.java 2014-04-01 14:35:29 UTC (rev 19564) @@ -0,0 +1,390 @@ +/* $RCSfile$ + * $Author: hansonr $ + * $Date: 2006-09-12 00:46:22 -0500 (Tue, 12 Sep 2006) $ + * $Revision: 5501 $ + * + * Copyright (C) 2004-2005 The Jmol Development Team + * + * Contact: jmo...@li... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package org.jmol.adapter.readers.quantum; + +import org.jmol.adapter.smarter.Atom; +import org.jmol.adapter.smarter.Bond; + +import java.io.IOException; + +import javajs.util.AU; +import javajs.util.List; +import javajs.util.PT; +import javajs.util.V3; + +import java.util.Hashtable; +import java.util.Map; + +import org.jmol.api.JmolAdapter; + +import org.jmol.util.Escape; +import org.jmol.util.Logger; + +/** + * Reader for Gaussian fchk files + * + * @author hansonr Bob Hanson ha...@st... + * + **/ +public class GaussianFchkReader extends MOReader { + + private Map<String, Object> fileData; + private int atomCount; + + @Override + protected void initializeReader() throws Exception { + super.initializeReader(); + energyUnits = ""; + fileData = new Hashtable<String, Object>(); + fileData.put("title", rd().trim()); + calculationType = PT.rep(rd(), " ", " "); + asc.newAtomSet(); + asc.setAtomSetAuxiliaryInfo("fileData", fileData); + readAllData(); + readAtoms(); + readBonds(); + readDipoleMoment(); + readPartialCharges(); + readBasis(); + readMOs(); + //readFrequencies(); + continuing = false; + } + + private void readAllData() throws Exception { + while ((line == null ? rd() : line) != null) { + if (line.length() < 40) + continue; + String name = PT.rep(line.substring(0, 40).trim(), " ",""); + char type = line.charAt(43); + boolean isArray = (line.indexOf("N=") >= 0); + String v = line.substring(50).trim(); + Logger.info(name + " = " + v + " " + isArray); + Object o = null; + if (isArray) { + switch (type) { + case 'I': + case 'R': + o = fillFloatArray(null, 0, new float[parseIntStr(v)]); + line = null; + break; + default: // C H L + v = rd().trim(); + while (rd() != null && line.indexOf(" N= ") < 0) + v += " " + line.trim(); + o = v; + break; + } + } else { + switch (type) { + case 'I': + o = Integer.valueOf(parseIntStr(v)); + break; + case 'R': + o = Double.valueOf(Double.parseDouble(v)); + break; + case 'C': + case 'L': + o = v; + break; + } + line = null; + } + if (o != null) + fileData.put(name, o); + } + } + + private void readAtoms() throws Exception { + float[] atomNumbers = (float[]) fileData.get("Atomicnumbers"); + float[] data = (float[]) fileData.get("Currentcartesiancoordinates"); + String e = "" + fileData.get("TotalEnergy"); + asc.setAtomSetEnergy(e, parseFloatStr(e)); + atomCount = atomNumbers.length; + float f = ANGSTROMS_PER_BOHR; + for(int i = 0, pt = 0; i < atomCount; i++) { + Atom atom = asc.addNewAtom(); + atom.elementNumber = (short) atomNumbers[i]; + if (atom.elementNumber < 0) + atom.elementNumber = 0; // dummy atoms have -1 -> 0 + setAtomCoordXYZ(atom, data[pt++] * f, data[pt++] * f, data[pt++] * f); + } + } + + /* + MxBond I 3 + NBond I N= 11 + 3 3 2 3 3 3 + 1 1 1 1 1 + IBond I N= 33 + 2 3 7 1 4 8 + 1 6 0 2 5 9 + 4 6 10 3 5 11 + 1 0 0 2 0 0 + 4 0 0 5 0 0 + 6 0 0 + RBond R N= 33 + 1.50000000E+00 1.50000000E+00 1.00000000E+00 1.50000000E+00 1.50000000E+00 + 1.00000000E+00 1.50000000E+00 1.50000000E+00 0.00000000E+00 1.50000000E+00 + 1.50000000E+00 1.00000000E+00 1.50000000E+00 1.50000000E+00 1.00000000E+00 + 1.50000000E+00 1.50000000E+00 1.00000000E+00 1.00000000E+00 0.00000000E+00 + 0.00000000E+00 1.00000000E+00 0.00000000E+00 0.00000000E+00 1.00000000E+00 + 0.00000000E+00 0.00000000E+00 1.00000000E+00 0.00000000E+00 0.00000000E+00 + 1.00000000E+00 0.00000000E+00 0.00000000E+00 + */ + + private void readBonds() { + try { + float[] nBond = (float[]) fileData.get("NBond"); + float[] iBond = (float[]) fileData.get("IBond"); + if (nBond.length == 0) + return; + float[] rBond = (float[]) fileData.get("RBond"); + // MxBond record is not critical here + int mxBond = rBond.length / nBond.length; + for (int ia = 0, pt = 0; ia < atomCount; ia++) + for (int j = 0; j < mxBond; j++, pt++) { + int ib = (int) iBond[pt] - 1; + if (ib <= ia) + continue; + float order = rBond[pt]; + int iorder = (order == 1.5f ? JmolAdapter.ORDER_AROMATIC : (int) order); + asc.addBond(new Bond(ia, ib, iorder)); + } + } catch (Exception e) { + Logger.info("GaussianFchkReader -- bonding ignored"); + } + } + + private void readDipoleMoment() throws Exception { + float[] data = (float[]) fileData.get("DipoleMoment"); + if (data == null) + return; + V3 dipole = V3.new3(data[0], data[1], data[2]); + Logger.info("Molecular dipole for model " + asc.atomSetCount + + " = " + dipole); + asc.setAtomSetAuxiliaryInfo("dipole", dipole); + } + + private void readPartialCharges() throws Exception { + float[] data = (float[]) fileData.get("Mulliken Charges"); + if (data == null) + return; + Atom[] atoms = asc.atoms; + for (int i = 0; i < atomCount; ++i) { + float c = data[i]; + atoms[i].partialCharge = c; + if (Math.abs(c) > 0.8f) + atoms[i].formalCharge = Math.round(c); + } + Logger.info("Mulliken charges found for Model " + asc.atomSetCount); + } + + + /* SAMPLE BASIS OUTPUT */ + /* + * see also http://www.gaussian.com/g_ur/k_gen.htm -- thank you, Rick Spinney + + Standard basis: VSTO-3G (5D, 7F) + AO basis set: + Atom O1 Shell 1 SP 3 bf 1 - 4 0.000000000000 0.000000000000 0.216790088607 + 0.5033151319D+01 -0.9996722919D-01 0.1559162750D+00 + 0.1169596125D+01 0.3995128261D+00 0.6076837186D+00 + 0.3803889600D+00 0.7001154689D+00 0.3919573931D+00 + Atom H2 Shell 2 S 3 bf 5 - 5 0.000000000000 1.424913022638 -0.867160354429 + 0.3425250914D+01 0.1543289673D+00 + 0.6239137298D+00 0.5353281423D+00 + 0.1688554040D+00 0.4446345422D+00 + Atom H3 Shell 3 S 3 bf 6 - 6 0.000000000000 -1.424913022638 -0.867160354429 + 0.3425250914D+01 0.1543289673D+00 + 0.6239137298D+00 0.5353281423D+00 + 0.1688554040D+00 0.4446345422D+00 + There are 3 symmetry adapted basis functions of A1 symmetry. + There are 0 symmetry adapted basis functions of A2 symmetry. + There are 1 symmetry adapted basis functions of B1 symmetry. + There are 2 symmetry adapted basis functions of B2 symmetry. + + or + + AO basis set in the form of general basis input (Overlap normalization): + 1 0 + S 3 1.00 0.000000000000 + 0.1508000000D 01 -0.1754110411D 00 + 0.5129000000D 00 -0.4465363900D 00 + 0.1362000000D 00 0.1295841966D 01 + S 3 1.00 0.000000000000 + 0.2565000000D 01 -0.1043105923D 01 + 0.1508000000D 01 0.1331478902D 01 + 0.5129000000D 00 0.5613064585D 00 + S 1 1.00 0.000000000000 + 0.4170000000D-01 0.1000000000D 01 + P 3 1.00 0.000000000000 + 0.4859000000D 01 -0.9457549473D-01 + 0.1219000000D 01 0.7434797586D 00 + 0.4413000000D 00 0.3668143796D 00 + P 2 1.00 0.000000000000 + 0.5725000000D 00 -0.8808640317D-01 + 0.8300000000D-01 0.1028397037D 01 + P 1 1.00 0.000000000000 + 0.2500000000D-01 0.1000000000D 01 + D 3 1.00 0.000000000000 + 0.4195000000D 01 0.4857290090D-01 + 0.1377000000D 01 0.5105223094D 00 + 0.4828000000D 00 0.5730028106D 00 + D 1 1.00 0.000000000000 + 0.1501000000D 00 0.1000000000D 01 + **** + 2 0 +... + */ + + //S,X,Y,Z,XX,YY,ZZ,XY,XZ,YZ,XXX,YYY,ZZZ,XYY,XXY,XXZ,XZZ,YZZ,YYZ,XYZ + private static String[] AO_TYPES = {"F7", "D5", "L", "S", "P", "D", "F", "G", "H"}; + private void readBasis() throws Exception { + float[] types = (float[]) fileData.get("Shelltypes"); + gaussianCount = 0; + shellCount = 0; + if (types == null) + return; + shellCount = types.length; + shells = new List<int[]>(); + float[] pps = (float[]) fileData.get("Numberofprimitivespershell"); + float[] atomMap = (float[]) fileData.get("Shelltoatommap"); + float[] exps = (float[]) fileData.get("Primitiveexponents"); + float[] coefs = (float[]) fileData.get("Contractioncoefficients"); + float[] spcoefs = (float[]) fileData.get("P(S=P)Contractioncoefficients"); + gaussians = AU.newFloat2(exps.length); + for (int i = 0; i < shellCount; i++) { + String oType = AO_TYPES[(int) types[i] + 3]; + int nGaussians = (int) pps[i]; + int iatom = (int) atomMap[i]; + int[] slater = new int[4]; + slater[0] = iatom - 1; + if (oType.equals("F7") || oType.equals("D5")) + slater[1] = JmolAdapter.getQuantumShellTagIDSpherical(oType.substring(0, 1)); + else + slater[1] = JmolAdapter.getQuantumShellTagID(oType); + slater[2] = gaussianCount; + slater[3] = nGaussians; + if (Logger.debugging) + Logger.debug("Slater " + shells.size() + " " + Escape.eAI(slater)); + shells.addLast(slater); + for (int j = 0; j < nGaussians; j++) { + float[] g = gaussians[gaussianCount] = new float[3]; + g[0] = exps[gaussianCount]; + g[1] = coefs[gaussianCount]; + g[2] = spcoefs[gaussianCount]; + gaussianCount++; + } + } + Logger.info(shellCount + " slater shells read"); + Logger.info(gaussianCount + " gaussian primitives read"); + } + + private void readMOs() throws Exception { + if (shells == null) + return; + int nElec = ((Integer) fileData.get("Numberofelectrons")).intValue(); + int nAlpha = ((Integer) fileData.get("Numberofalphaelectrons")).intValue(); + int nBeta = ((Integer) fileData.get("Numberofbetaelectrons")).intValue(); + //int mult = ((Integer) fileData.get("Multiplicity")).intValue(); + float[] aenergies = (float[]) fileData.get("AlphaOrbitalEnergies"); + float[] benergies = (float[]) fileData.get("BetaOrbitalEnergies"); + float[] acoefs = (float[]) fileData.get("AlphaMOcoefficients"); + float[] bcoefs = (float[]) fileData.get("BetaMOcoefficients"); + if (acoefs == null) + return; + int occ = (bcoefs == null ? 2 : 1); + int n = (bcoefs == null ? nElec : nAlpha); + getOrbitals(aenergies, acoefs, occ, n); + if (bcoefs != null) + getOrbitals(benergies, bcoefs, occ, nBeta); + setMOData(false); + } + + private void getOrbitals(float[] e, float[] c, int occ, int nElec) { + int nOrb = e.length; + int nCoef = c.length; + nCoef /= nOrb; + alphaBeta = (occ == 2 ? "" : alphaBeta.equals("alpha") ? "beta" : "alpha"); + int pt = 0; + int n = 0; + for (int i = 0; i < nOrb; i++) { + float[] coefs = new float[nCoef]; + for (int j = 0; j < nCoef; j++) + coefs[j] = c[pt++]; + Map<String, Object> mo = new Hashtable<String, Object>(); + mo.put("coefficients", coefs); + mo.put("occupancy", Float.valueOf(occ)); + n += occ; + if (n >= nElec) + occ = 0; + mo.put("energy", Float.valueOf(e[i])); + mo.put("type", alphaBeta); + setMO(mo); + } + } + + private void readFrequencies() throws Exception, IOException { +// discardLinesUntilContains(":"); +// if (line == null) +// throw (new Exception("No frequencies encountered")); +// while ((line= rd()) != null && line.length() > 15) { +// // we now have the line with the vibration numbers in them, but don't need it +// String[] symmetries = getTokensStr(rd()); +// String[] frequencies = getTokensAt( +// discardLinesUntilStartsWith(" Frequencies"), 15); +// String[] red_masses = getTokensAt( +// discardLinesUntilStartsWith(" Red. masses"), 15); +// String[] frc_consts = getTokensAt( +// discardLinesUntilStartsWith(" Frc consts"), 15); +// String[] intensities = getTokensAt( +// discardLinesUntilStartsWith(" IR Inten"), 15); +// int iAtom0 = asc.ac; +// int ac = asc.getLastAtomSetAtomCount(); +// int frequencyCount = frequencies.length; +// boolean[] ignore = new boolean[frequencyCount]; +// for (int i = 0; i < frequencyCount; ++i) { +// ignore[i] = !doGetVibration(++vibrationNumber); +// if (ignore[i]) +// continue; +// asc.cloneLastAtomSet(); +// // set the properties +// //String name = asc.setAtomSetFrequency("Calculation " + calculationNumber, symmetries[i], frequencies[i], null); +// //appendLoadNote("model " + asc.atomSetCount + ": " + name); +// //namedSets.set(asc.currentAtomSetIndex); +// asc.setAtomSetModelProperty("ReducedMass", +// red_masses[i]+" AMU"); +// asc.setAtomSetModelProperty("ForceConstant", +// frc_consts[i]+" mDyne/A"); +// asc.setAtomSetModelProperty("IRIntensity", +// intensities[i]+" KM/Mole"); +// } +// discardLinesUntilContains(" AN "); +// fillFrequencyData(iAtom0, ac, ac, ignore, true, 0, 0, null, 0); +// } + } + +} Property changes on: branches/v14_0/Jmol/src/org/jmol/adapter/readers/quantum/GaussianFchkReader.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Modified: branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java 2014-04-01 14:28:24 UTC (rev 19563) +++ branches/v14_0/Jmol/src/org/jmol/adapter/smarter/Resolver.java 2014-04-01 14:35:29 UTC (rev 19564) @@ -45,7 +45,7 @@ "cif.", ";Cif;", "molxyz.", ";Mol3D;Mol;Xyz;", "more.", ";BinaryDcd;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly;", - "quantum.", ";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GausianWfn;Jaguar;" + + "quantum.", ";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;" + "Molden;MopacGraphf;GenNBO;NWChem;Odyssey;Psi;Qchem;Spartan;SpartanSmol;" + "WebMO;", "pdb.", ";Pdb;Pqr;P2n;", @@ -747,7 +747,7 @@ private final static String[] m3dStartRecords = { "Alchemy", "STRUCTURE 1.00 1" }; // M3D reader is very similar to Alchemy - + private final static String[][] fileStartsWithRecords = { sptContainsRecords, m3dStartRecords, cubeFileStartRecords, mol2Records, webmoFileStartRecords, moldenFileStartRecords, dcdFileStartRecords, tlsDataOnlyFileStartRecords, @@ -828,6 +828,9 @@ { "GaussianWfn", "MO ORBITALS" }; */ + private final static String[] gaussianFchkContainsRecords = + { "GaussianFchk", "Number of point charges in /Mol/" }; + private final static String[] ampacContainsRecords = { "Ampac", "AMPAC Version" }; @@ -902,7 +905,7 @@ spartanBinaryContainsRecords, spartanContainsRecords, mol2Records, adfContainsRecords, psiContainsRecords, nwchemContainsRecords, uicrcifContainsRecords, dgridContainsRecords, crystalContainsRecords, dmolContainsRecords, gulpContainsRecords, espressoContainsRecords, siestaContainsRecords,xcrysDenContainsRecords, - mopacArchiveContainsRecords,abinitContainsRecords + mopacArchiveContainsRecords,abinitContainsRecords,gaussianFchkContainsRecords, }; } Modified: branches/v14_0/Jmol/src/org/jmol/popup/JmolGenericPopup.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/popup/JmolGenericPopup.java 2014-04-01 14:28:24 UTC (rev 19563) +++ branches/v14_0/Jmol/src/org/jmol/popup/JmolGenericPopup.java 2014-04-01 14:35:29 UTC (rev 19564) @@ -574,9 +574,12 @@ String entryName = "#" + (i + 1) + " " - + (mo.containsKey("type") ? (String) mo.get("type") + " " : "") - + (mo.containsKey("symmetry") ? (String) mo.get("symmetry") + " " - : "") + (mo.containsKey("energy") ? mo.get("energy") : ""); + + (mo.containsKey("type") ? mo.get("type") + " " : "") + + (mo.containsKey("symmetry") ? mo.get("symmetry") + " " + : "") + + (mo.containsKey("occupancy") ? "(" + ((Number) mo.get("occupancy")).intValue() + ") " : "") + + + (mo.containsKey("energy") ? mo.get("energy") : ""); String script = "mo " + (i + 1); menuCreateItem(subMenu, entryName, script, null); } Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java 2014-04-01 14:28:24 UTC (rev 19563) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptEval.java 2014-04-01 14:35:29 UTC (rev 19564) @@ -1,7 +1,7 @@ /* $RCSfile$ * $Author: hansonr $ - * $Date: 2014-03-21 13:45:51 -0500 (Fri, 21 Mar 2014) $ - * $Revision: 19504 $ + * $Date: 2014-03-31 09:46:41 -0500 (Mon, 31 Mar 2014) $ + * $Revision: 19552 $ * * Copyright (C) 2003-2006 Miguel, Jmol Development, www.jmol.org * Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-04-01 14:28:24 UTC (rev 19563) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-04-01 14:35:29 UTC (rev 19564) @@ -2104,7 +2104,7 @@ } return tv; } - + private void setBitsetProperty(BS bs, int tok, int iValue, float fValue, T tokenValue) throws ScriptException { if (chk || BSUtil.cardinalityOf(bs) == 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-04-02 04:37:33
|
Revision: 19581 http://sourceforge.net/p/jmol/code/19581 Author: hansonr Date: 2014-04-02 04:37:26 +0000 (Wed, 02 Apr 2014) Log Message: ----------- Removed Paths: ------------- branches/v14_0/Jmol/src/org/jmol/constant/ branches/v14_0/Jmol/src/org/jmol/exportjs/ branches/v14_0/Jmol/src/org/jmol/io2/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-06-09 23:39:51
|
Revision: 19795 http://sourceforge.net/p/jmol/code/19795 Author: hansonr Date: 2014-06-09 23:39:44 +0000 (Mon, 09 Jun 2014) Log Message: ----------- ___JmolVersion="14.0.18_2014.06.09" bug fix: atoms turned off with restrict still clickable Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/shape/Bbcage.java branches/v14_0/Jmol/src/org/jmol/viewer/JC.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java Modified: branches/v14_0/Jmol/src/org/jmol/shape/Bbcage.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/shape/Bbcage.java 2014-06-09 17:42:52 UTC (rev 19794) +++ branches/v14_0/Jmol/src/org/jmol/shape/Bbcage.java 2014-06-09 23:39:44 UTC (rev 19795) @@ -46,16 +46,10 @@ @Override public void setVisibilityFlags(BS bs) { - isVisible = ((mad = (short) vwr.getObjectMad(StateManager.OBJ_BOUNDBOX)) != 0); - if (!isVisible) - return; - BS bboxModels = vwr.ms.getBoundBoxModels(); - if (bboxModels == null) - return; - for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) - if (bboxModels.get(i)) - return; - isVisible = false; + BS bboxModels; + isVisible = ((mad = (short) vwr.getObjectMad(StateManager.OBJ_BOUNDBOX)) != 0 + && ((bboxModels = vwr.ms.getBoundBoxModels()) == null + || bs.intersects(bboxModels))); } } Modified: branches/v14_0/Jmol/src/org/jmol/viewer/JC.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/JC.java 2014-06-09 17:42:52 UTC (rev 19794) +++ branches/v14_0/Jmol/src/org/jmol/viewer/JC.java 2014-06-09 23:39:44 UTC (rev 19795) @@ -1405,6 +1405,9 @@ public final static int SHAPE_LABELS = 5; public final static int SHAPE_MEASURES = 6; public final static int SHAPE_STARS = 7; + + public final static int SHAPE_MIN_HAS_SETVIS = 8; + public final static int SHAPE_HALOS = 8; public final static int SHAPE_MIN_SECONDARY = 9; ////////// @@ -1459,12 +1462,13 @@ public final static int SHAPE_MAX_HAS_ID = 31; - public final static int SHAPE_AXES = 31; - public final static int SHAPE_BBCAGE = 32; - public final static int SHAPE_UCCAGE = 33; + public final static int SHAPE_BBCAGE = 31; + + public final static int SHAPE_MAX_HAS_SETVIS = 32; + + public final static int SHAPE_UCCAGE = 32; + public final static int SHAPE_AXES = 33; public final static int SHAPE_HOVER = 34; - - // last should be frank: public final static int SHAPE_FRANK = 35; public final static int SHAPE_MAX = SHAPE_FRANK + 1; @@ -1480,7 +1484,7 @@ public final static int ATOM_VISSET = 2; public final static int ATOM_VISIBLE = 4; public final static int ATOM_NOTHIDDEN = 8; - public final static int ATOM_NOFLAGS = ~15; + public final static int ATOM_NOFLAGS = ~63; // all of the above, plus balls and sticks public final static int ATOM_INFRAME_NOTHIDDEN = ATOM_INFRAME | ATOM_NOTHIDDEN; public final static int ATOM_SHAPE_VIS_MASK = ~ATOM_INFRAME_NOTHIDDEN; @@ -1503,7 +1507,7 @@ "Backbone", "Trace", "Cartoon", "Strands", "MeshRibbon", "Ribbons", "Rockets", "Dots", "Dipoles", "Vectors", "GeoSurface", "Ellipsoids", "Polyhedra", "Draw", "CGO", "Isosurface", "Contact", "LcaoCartoon", "MolecularOrbital", "Pmesh", "Plot3D", - "Echo", "Axes", "Bbcage", "Uccage", "Hover", + "Echo", "Bbcage", "Uccage", "Axes", "Hover", "Frank" }; // .hbond and .ssbonds will return a class, Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-06-09 17:42:52 UTC (rev 19794) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-06-09 23:39:44 UTC (rev 19795) @@ -9,8 +9,12 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="14.0.17" +___JmolVersion="14.0.18_2014.06.09" +bug fix: atoms turned off with restrict still clickable + +JmolVersion="14.0.17" + synchonized with Jmol 14.1.17 June 9, 2014 JmolVersion="14.1.17_2014.06.07" Modified: branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java 2014-06-09 17:42:52 UTC (rev 19794) +++ branches/v14_0/Jmol/src/org/jmol/viewer/ShapeManager.java 2014-06-09 23:39:44 UTC (rev 19795) @@ -370,22 +370,23 @@ BS bs = vwr.getVisibleFramesBitSet(); - // i=1 skips balls (0) + // i=2 skips balls and sticks + // as these are handled differently. - for (int i = 1; i < JC.SHAPE_MAX; i++) + // Bbcage, Halos, Dipoles, Draw, Ellipsoids, Polyhedra + // bioshapes, Echo, Hover, + for (int i = JC.SHAPE_MIN_HAS_SETVIS; i < JC.SHAPE_MAX_HAS_SETVIS; i++) if (shapes[i] != null) shapes[i].setVisibilityFlags(bs); - // now set the JC.ATOM_IN_FRAME and JC.ATOM_NOTHIDDEN flags - // along with the bonds flag. + // now check ATOM_IN_FRAME, and ATOM_NOTHIDDEN, VIS_BALLS_FLAG boolean showHydrogens = vwr.getBoolean(T.showhydrogens); BS bsDeleted = vwr.getDeletedAtoms(); Atom[] atoms = ms.at; - int flag0 = JC.ATOM_NOFLAGS & ~JC.VIS_BOND_FLAG; for (int i = ms.ac; --i >= 0;) { Atom atom = atoms[i]; - atom.shapeVisibilityFlags &= flag0; + atom.shapeVisibilityFlags &= JC.ATOM_NOFLAGS; if (bsDeleted != null && bsDeleted.get(i) || !showHydrogens && atom.getElementNumber() == 1) continue; @@ -401,8 +402,6 @@ } } - shapes[JC.SHAPE_BALLS].setVisibilityFlags(bs); - //set clickability -- this enables measures and such for (int i = 0; i < JC.SHAPE_MAX; ++i) { Shape shape = shapes[i]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-06-11 12:18:55
|
Revision: 19814 http://sourceforge.net/p/jmol/code/19814 Author: hansonr Date: 2014-06-11 12:18:48 +0000 (Wed, 11 Jun 2014) Log Message: ----------- ___JmolVersion="14.0.17_2014.06.11" bug fix: SMILES for model with nonbonded atoms fails Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java branches/v14_0/Jmol/src/org/jmol/util/JmolMolecule.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java 2014-06-11 12:17:54 UTC (rev 19813) +++ branches/v14_0/Jmol/src/org/jmol/modelset/Atom.java 2014-06-11 12:18:48 UTC (rev 19814) @@ -343,7 +343,7 @@ @Override public Edge[] getEdges() { - return bonds; + return (bonds == null ? new Edge[0] : bonds); } public void setColixAtom(short colixAtom) { Modified: branches/v14_0/Jmol/src/org/jmol/util/JmolMolecule.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/util/JmolMolecule.java 2014-06-11 12:17:54 UTC (rev 19813) +++ branches/v14_0/Jmol/src/org/jmol/util/JmolMolecule.java 2014-06-11 12:18:48 UTC (rev 19814) @@ -270,8 +270,6 @@ } bsResult.set(atomIndex); Edge[] bonds = atom.getEdges(); - if (bonds == null) - return true; // now do bonds Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-06-11 12:17:54 UTC (rev 19813) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-06-11 12:18:48 UTC (rev 19814) @@ -10,8 +10,12 @@ # important for the JavaScript version of Jmol. -___JmolVersion="14.0.17_2014.06.10" +___JmolVersion="14.0.17_2014.06.11" +bug fix: SMILES for model with nonbonded atoms fails + +JmolVersion="14.0.17_2014.06.10" + bug fix: 06.09 broke unitcell display bug fix: WebPanel error trapping problem; too long file name for tar file @@ -21,7 +25,7 @@ bug fix: zoomto broken bug fix: atoms turned off with restrict still clickable - + JmolVersion="14.1.17" JmolVersion="14.1.17_2014.06.07" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2014-06-11 17:29:26
|
Revision: 19817 http://sourceforge.net/p/jmol/code/19817 Author: hansonr Date: 2014-06-11 17:29:19 +0000 (Wed, 11 Jun 2014) Log Message: ----------- ___JmolVersion="14.0.17_2014.06.11" bug fix: set pdbAddHydrogens fails for structures with ANISOU records Modified Paths: -------------- branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java 2014-06-11 17:28:38 UTC (rev 19816) +++ branches/v14_0/Jmol/src/org/jmol/modelset/ModelSet.java 2014-06-11 17:29:19 UTC (rev 19817) @@ -3454,7 +3454,7 @@ for (int j = list.length; --j >= 0;) { Tensor t = (Tensor) list[j]; if (t != null) - t.atomIndex1 = map[t.atomIndex1]; + t.atomIndex1 = i; } } } Modified: branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java =================================================================== --- branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-06-11 17:28:38 UTC (rev 19816) +++ branches/v14_0/Jmol/src/org/jmol/script/ScriptExpr.java 2014-06-11 17:29:19 UTC (rev 19817) @@ -908,13 +908,13 @@ if (!chk) data = vwr.getDataFloat((String) code[++pc].value); } + if (++pc == code.length) + invArg(); if (chk) { rpn.addXBs(new BS()); break; } - if (pc + 1 == code.length) - invArg(); - rpn.addXBs(getComparison(code[++pc], tokWhat, tok, (String) value, data)); + rpn.addXBs(getComparison(code[pc], tokWhat, tok, (String) value, data)); break; case T.decimal: case T.integer: Modified: branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-06-11 17:28:38 UTC (rev 19816) +++ branches/v14_0/Jmol/src/org/jmol/viewer/Jmol.properties 2014-06-11 17:29:19 UTC (rev 19817) @@ -12,6 +12,8 @@ ___JmolVersion="14.0.17_2014.06.11" +bug fix: set pdbAddHydrogens fails for structures with ANISOU records +bug fix: select x < 0.3 reports error when checking, though it does run when executed bug fix: SMILES for model with nonbonded atoms fails JmolVersion="14.0.17_2014.06.10" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |