From: <ha...@us...> - 2010-07-29 12:05:15
|
Revision: 13727 http://jmol.svn.sourceforge.net/jmol/?rev=13727&view=rev Author: hansonr Date: 2010-07-29 12:05:09 +0000 (Thu, 29 Jul 2010) Log Message: ----------- mouseWheelFactor set back to 1.15, with default for multitouch 1.02 Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java Modified: branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java 2010-07-28 22:17:16 UTC (rev 13726) +++ branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java 2010-07-29 12:05:09 UTC (rev 13727) @@ -52,7 +52,7 @@ public void setViewer(Viewer viewer, String commandOptions) { super.setViewer(viewer, commandOptions); groupID = ((int) (Math.random() * 0xFFFFFF)) << 4; - + mouseWheelFactor = 1.02f; boolean isSparsh = (commandOptions.indexOf("-multitouch-sparshui") >= 0); boolean isSimulated = (commandOptions.indexOf("-multitouch-sparshui-simulated") >= 0); boolean isJNI = (commandOptions.indexOf("-multitouch-jni") >= 0); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java 2010-07-28 22:17:16 UTC (rev 13726) +++ branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java 2010-07-29 12:05:09 UTC (rev 13727) @@ -428,7 +428,7 @@ private float gestureSwipeFactor = DEFAULT_GESTURE_SWIPE_FACTOR; private float mouseDragFactor = DEFAULT_MOUSE_DRAG_FACTOR; - private float mouseWheelFactor = DEFAULT_MOUSE_WHEEL_FACTOR; + protected float mouseWheelFactor = DEFAULT_MOUSE_WHEEL_FACTOR; void setGestureSwipeFactor(float factor) { gestureSwipeFactor = factor; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-29 12:41:59
|
Revision: 13730 http://jmol.svn.sourceforge.net/jmol/?rev=13730&view=rev Author: hansonr Date: 2010-07-29 12:41:50 +0000 (Thu, 29 Jul 2010) Log Message: ----------- mouseDragFactor set to max of 500 for window size or multitouch for full-screen = 180 rotation Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java Modified: branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java 2010-07-29 12:41:37 UTC (rev 13729) +++ branches/v12_0/Jmol/src/org/jmol/multitouch/ActionManagerMT.java 2010-07-29 12:41:50 UTC (rev 13730) @@ -372,4 +372,9 @@ dragGesture.getSpeedPixelsPerMillisecond(2, 1)); } + protected float getDegrees(int delta, int i) { + int dim = (i == 0 ? viewer.getScreenWidth() : viewer.getScreenHeight()); + return ((float) delta) / dim * 180 * mouseDragFactor; + } + } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java 2010-07-29 12:41:37 UTC (rev 13729) +++ branches/v12_0/Jmol/src/org/jmol/viewer/ActionManager.java 2010-07-29 12:41:50 UTC (rev 13730) @@ -427,7 +427,7 @@ protected int xyRange = 0; private float gestureSwipeFactor = DEFAULT_GESTURE_SWIPE_FACTOR; - private float mouseDragFactor = DEFAULT_MOUSE_DRAG_FACTOR; + protected float mouseDragFactor = DEFAULT_MOUSE_DRAG_FACTOR; protected float mouseWheelFactor = DEFAULT_MOUSE_WHEEL_FACTOR; void setGestureSwipeFactor(float factor) { @@ -1153,9 +1153,9 @@ } private float getDegrees(int delta, int i) { - return ((float) delta) - / (i == 0 ? viewer.getScreenWidth() : viewer.getScreenHeight()) * 180 - * mouseDragFactor; + int dim = (i == 0 ? viewer.getScreenWidth() : viewer.getScreenHeight()); + dim = 400; + return ((float) delta) / dim * 180 * mouseDragFactor; } protected void zoomByFactor(int dz, int x, int y) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-29 19:03:03
|
Revision: 13734 http://jmol.svn.sourceforge.net/jmol/?rev=13734&view=rev Author: hansonr Date: 2010-07-29 19:02:56 +0000 (Thu, 29 Jul 2010) Log Message: ----------- version=12.0.1 # July 28, 2010 # bug fix: isosurface slab for polymer/slab symmetry Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-29 18:59:06 UTC (rev 13733) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-29 19:02:56 UTC (rev 13734) @@ -14399,7 +14399,7 @@ private Object getCapSlabObject(StringBuffer sb, int i) throws ScriptException { - Object propertyValue = null; + Object data = null; if (sb != null) sb.append(" ").append(getToken(i).value).append(" "); int tok = tokAt(i + 1); @@ -14407,19 +14407,43 @@ switch (tok) { case Token.within: i++; - propertyValue = getPointArray(++i, 4); + data = getPointArray(++i, 4); break; case Token.boundbox: - propertyValue = BoxInfo.getCriticalPoints(viewer.getBoundBoxVertices(), - null); + data = BoxInfo.getCriticalPoints(viewer.getBoundBoxVertices(), null); iToken = i + 1; break; case Token.unitcell: SymmetryInterface unitCell = viewer.getCurrentUnitCell(); if (unitCell == null) error(ERROR_invalidArgument); - propertyValue = BoxInfo.getCriticalPoints(unitCell.getUnitCellVertices(), + Point3f[] pts = BoxInfo.getCriticalPoints(unitCell.getUnitCellVertices(), unitCell.getCartesianOffset()); + int iType = (int) unitCell.getUnitCellInfo(JmolConstants.INFO_DIMENSIONS); + Vector3f v1 = null; + Vector3f v2 = null; + switch (iType) { + case 3: + break; + case 1: // polymer + v2 = new Vector3f(pts[2]); + v2.sub(pts[0]); + v2.scale(1000f); + // fall through + case 2: // slab + // "a b c" is really "z y x" + v1 = new Vector3f(pts[1]); + v1.sub(pts[0]); + v1.scale(1000f); + pts[0].sub(v1); + pts[1].scale(2000f); + if (iType == 1) { + pts[0].sub(v2); + pts[2].scale(2000f); + } + break; + } + data = pts; iToken = i + 1; break; default: @@ -14428,15 +14452,15 @@ : Float.NaN); if (!Float.isNaN(off)) plane.w -= off; - propertyValue = plane; + data = plane; } if (sb != null) { if (plane == null) - sb.append("within ").append(Escape.escape(propertyValue)); + sb.append("within ").append(Escape.escape(data)); else sb.append(Escape.escape(plane)); } - return propertyValue; + return data; } private boolean mo(boolean isInitOnly) throws ScriptException { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-29 18:59:06 UTC (rev 13733) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-29 19:02:56 UTC (rev 13734) @@ -1,9 +1,10 @@ # Developers: to add a description of changes you have made, # add it on a line starting with # below the "version=..." line -version=12.0 +version=12.0.1 -# July 28, 2010 +# July 29, 2010 +# bug fix: isosurface slab for polymer/slab symmetry # -------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 01:57:21
|
Revision: 13741 http://jmol.svn.sourceforge.net/jmol/?rev=13741&view=rev Author: hansonr Date: 2010-07-30 01:57:14 +0000 (Fri, 30 Jul 2010) Log Message: ----------- version=12.0.2_dev # bug fix: binary surface readers map and ccc4 can misread file type # bug fix: isosurface "=xxx" missing check for isSyntaxCheck Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Dns6BinaryReader.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/MrcBinaryReader.java branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Dns6BinaryReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Dns6BinaryReader.java 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/Dns6BinaryReader.java 2010-07-30 01:57:14 UTC (rev 13741) @@ -43,11 +43,11 @@ */ - Dsn6BinaryReader(SurfaceGenerator sg, String fileName, String data, boolean isBigEndian) { + Dsn6BinaryReader(SurfaceGenerator sg, String fileName, String data) { super(sg, null); binarydoc = new BinaryDocument(); if (data == null) - binarydoc.setStream(sg.getAtomDataServer().getBufferedInputStream(fileName), isBigEndian); + binarydoc.setStream(sg.getAtomDataServer().getBufferedInputStream(fileName), true); else binarydoc.setStream(new DataInputStream(new ByteArrayInputStream(data.getBytes()))); // data are HIGH on the inside and LOW on the outside @@ -66,25 +66,39 @@ protected void readParameters() throws Exception { - nxyzStart[0] = binarydoc.readShort(); - nxyzStart[1] = binarydoc.readShort(); - nxyzStart[2] = binarydoc.readShort(); + short[] header = new short[19]; + for (int i = 0; i < 19; i++) + header[i] = binarydoc.readShort(); + if (header[18] != 100) { + binarydoc.setIsBigEndian(false); + for (int i = 0; i < 19; i++) + header[i] = BinaryDocument.swapBytes(header[i]); + } + + nxyzStart[0] = header[0]; + nxyzStart[1] = header[1]; + nxyzStart[2] = header[2]; - nx = binarydoc.readShort(); // CCP4 "extent[0-2]" - ny = binarydoc.readShort(); - nz = binarydoc.readShort(); + nx = header[3]; // CCP4 "extent[0-2]" + ny = header[4]; + nz = header[5]; - na = binarydoc.readShort(); // CCP4 "grid[0-2]" - nb = binarydoc.readShort(); - nc = binarydoc.readShort(); + na = header[6]; // CCP4 "grid[0-2]" + nb = header[7]; + nc = header[8]; - a = binarydoc.readShort(); - b = binarydoc.readShort(); - c = binarydoc.readShort(); - alpha = binarydoc.readShort(); - beta = binarydoc.readShort(); - gamma = binarydoc.readShort(); + a = header[9]; + b = header[10]; + c = header[11]; + alpha = header[12]; + beta = header[13]; + gamma = header[14]; + float header16 = header[15]; // 100 * 255 / (dmax - dmin) + float header17 = header[16]; // -255dmin / (dmax - dmin) + float scalingFactor = header[17]; + float header19 = header[18]; + maps = 3; mapr = 2; mapc = 1; @@ -140,10 +154,6 @@ // // Just seens simpler to me. Bob Hanson 2/2010 - float header16 = binarydoc.readShort(); // 100 * 255 / (dmax - dmin) - float header17 = binarydoc.readShort(); // -255dmin / (dmax - dmin) - float scalingFactor = binarydoc.readShort(); - float header19 = binarydoc.readShort(); dmin = (0 - header17) * header19 / header16; dmax = (255 - header17) * header19 / header16; drange = dmax - dmin; Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/MrcBinaryReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/MrcBinaryReader.java 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/MrcBinaryReader.java 2010-07-30 01:57:14 UTC (rev 13741) @@ -41,11 +41,11 @@ */ - MrcBinaryReader(SurfaceGenerator sg, String fileName, String data, boolean isBigEndian) { + MrcBinaryReader(SurfaceGenerator sg, String fileName, String data) { super(sg, null); binarydoc = new BinaryDocument(); if (data == null) - binarydoc.setStream(sg.getAtomDataServer().getBufferedInputStream(fileName), isBigEndian); + binarydoc.setStream(sg.getAtomDataServer().getBufferedInputStream(fileName), true); else binarydoc.setStream(new DataInputStream(new ByteArrayInputStream(data.getBytes()))); // data are HIGH on the inside and LOW on the outside @@ -114,6 +114,14 @@ mode = binarydoc.readInt(); + if (mode < 0 || mode > 6) { + binarydoc.setIsBigEndian(false); + nx = BinaryDocument.swapBytes(nx); + ny = BinaryDocument.swapBytes(ny); + nz = BinaryDocument.swapBytes(nz); + mode = BinaryDocument.swapBytes(mode); + } + Logger.info("MRC header: mode: " + mode); nxyzStart[0] = binarydoc.readInt(); // CCP4 "nxyzstart[0-2]" Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 2010-07-30 01:57:14 UTC (rev 13741) @@ -1145,25 +1145,23 @@ return new XplorReader(this, br); if (fileType.equals("PltFormatted")) return new PltFormattedReader(this, br); - if (fileType.startsWith("MRC")) { + if (fileType.equals("MRC")) { try { br.close(); } catch (IOException e) { // ignore } br = null; - return new MrcBinaryReader(this, params.fileName, data, fileType - .charAt(3) == 'B'); + return new MrcBinaryReader(this, params.fileName, data); } - if (fileType.startsWith("DSN6")) { + if (fileType.equals("DSN6")) { try { br.close(); } catch (IOException e) { // ignore } br = null; - return new Dsn6BinaryReader(this, params.fileName, data, fileType - .charAt(4) == 'B'); + return new Dsn6BinaryReader(this, params.fileName, data); } if (fileType.equals("Efvet")) return new EfvetReader(this, br); Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 01:57:14 UTC (rev 13741) @@ -15622,7 +15622,7 @@ filename = info[0]; String strCutoff = (!firstPass || !Float.isNaN(cutoff) ? null : info[1]); - if (strCutoff != null) { + if (strCutoff != null && !isSyntaxCheck) { cutoff = ScriptVariable.fValue(ScriptVariable.getVariable(viewer .evaluateExpression(strCutoff))); if (cutoff > 0) { Modified: branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java 2010-07-30 01:57:14 UTC (rev 13741) @@ -78,6 +78,10 @@ this.isBigEndian = isBigEndian; } + public void setIsBigEndian(boolean TF) { + this.isBigEndian = TF; + } + public void setStream(DataInputStream stream) { this.stream = stream; } @@ -172,6 +176,19 @@ os.write((byte) (i & 0xFF)); } + public static int swapBytes(int n) { + return (((n >> 24) & 0xff) + | ((n >> 16) & 0xff) << 8 + | ((n >> 8) & 0xff) << 16 + | (n & 0xff) << 24); + } + + public static short swapBytes(short n) { + return (short) ((((n >> 8) & 0xff) + | (n & 0xff) << 8)); + } + + public int readUnsignedShort() throws Exception { nBytes += 2; int a = (((int) ioReadByte()) & 0xff); @@ -276,6 +293,7 @@ this.os = os; } + /* random access -- application only: * void seekFile(long offset) { Modified: branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java 2010-07-30 01:57:14 UTC (rev 13741) @@ -46,14 +46,18 @@ public static String determineSurfaceFileType(BufferedReader bufferedReader) { // JVXL should be on the FIRST line of the file, but it may be // after comments or missing. - + // Apbs, Jvxl, or Cube, also efvet - + String line; LimitedLineReader br = new LimitedLineReader(bufferedReader, 16000); //sure bets, but not REQUIRED: if ((line = br.info()).length() == 0) return null; + + for (int i = 0; i < 220; i++) + System.out.print(" " + i + ":" + (0 + line.charAt(i))); + System.out.println(""); if (line.indexOf("Here is your gzipped map") >= 0) return "UPPSALA" + line; if (line.indexOf("<jvxl") >= 0 && line.indexOf("<?xml") >= 0) @@ -64,35 +68,39 @@ return "Jvxl"; if (line.indexOf("&plot") == 0) return "Jaguar"; - if (line.indexOf("MAP ") == 208) - return "MRC" + (line.charAt(67) == '\0' ? "L" : "B"); if (line.indexOf("<efvet ") >= 0) return "Efvet"; + if ("\n\r".indexOf(line.charAt(0)) >= 0 && line.indexOf("ZYX") >= 0) + return "Xplor"; if (line.indexOf(PMESH_BINARY_MAGIC_NUMBER) == 0) return "Pmesh"; - if ("\n\r".indexOf(line.charAt(0)) >= 0 && line.indexOf("ZYX") >= 0) - return "Xplor"; - if (line.length() > 37 && line.charAt(36) == 0 && line.charAt(37) == 100) - return "DSN6B"; - if (line.length() > 37 && line.charAt(37) == 100 && line.charAt(36) == 0) - return "DSN6L"; - + // binary formats: problem here is that the buffered reader + // may be translating byte sequences into unicode + // and thus shifting the offset + int pt0 = line.indexOf('\0'); + if (pt0 >= 0) { + // note that we are checking here for +n or -n where n <= 255 + if (pt0 < 4 && line.indexOf("MAP ") > 0 && line.indexOf("MAP ") < 210) + return "MRC"; + pt0 = line.indexOf("\0d\0"); // header19 (short)100 + if (pt0 >= 0 && pt0 < 40) { + return "DSN6"; + } + } // Apbs, Jvxl, or Cube, maybe formatted Plt line = br.readNonCommentLine(); if (line.indexOf("object 1 class gridpositions counts") == 0) return "Apbs"; - String[] tokens = Parser.getTokens(line); + String[] tokens = Parser.getTokens(line); line = br.readNonCommentLine();// second line - if (tokens.length == 2 - && Parser.parseInt(tokens[0]) == 3 - && Parser.parseInt(tokens[1])!= Integer.MIN_VALUE) { + if (tokens.length == 2 && Parser.parseInt(tokens[0]) == 3 + && Parser.parseInt(tokens[1]) != Integer.MIN_VALUE) { tokens = Parser.getTokens(line); - if (tokens.length == 3 - && Parser.parseInt(tokens[0])!= Integer.MIN_VALUE - && Parser.parseInt(tokens[1])!= Integer.MIN_VALUE - && Parser.parseInt(tokens[2])!= Integer.MIN_VALUE) + if (tokens.length == 3 && Parser.parseInt(tokens[0]) != Integer.MIN_VALUE + && Parser.parseInt(tokens[1]) != Integer.MIN_VALUE + && Parser.parseInt(tokens[2]) != Integer.MIN_VALUE) return "PltFormatted"; } line = br.readNonCommentLine(); // third line @@ -103,13 +111,13 @@ if (nAtoms >= 0) return "Cube"; //Can't be a Jvxl file nAtoms = -nAtoms; - for (int i = 4 + nAtoms; --i >=0;) + for (int i = 4 + nAtoms; --i >= 0;) if ((line = br.readNonCommentLine()) == null) return null; int nSurfaces = Parser.parseInt(line); if (nSurfaces == Integer.MIN_VALUE) return null; - return (nSurfaces < 0 ? "Jvxl" : "Cube"); //Final test looks at surface definition line + return (nSurfaces < 0 ? "Jvxl" : "Cube"); //Final test looks at surface definition line } } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 01:55:54 UTC (rev 13740) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 01:57:14 UTC (rev 13741) @@ -4,6 +4,9 @@ version=12.0.2_dev +# bug fix: binary surface readers map and ccc4 can misread file type +# bug fix: isosurface "=xxx" missing check for isSyntaxCheck + # -------------------------------------------------------------- #version=12.0.1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 05:57:02
|
Revision: 13742 http://jmol.svn.sourceforge.net/jmol/?rev=13742&view=rev Author: hansonr Date: 2010-07-30 05:56:56 +0000 (Fri, 30 Jul 2010) Log Message: ----------- version=12.0.2_dev zip archive bug fixes # bug fix: reading background images from PNG images within zip files # bug fix: write xxxx.jmol zip sets cannot be read # bug fix: binary surface readers map and ccc4 can misread file type # bug fix: isosurface "=xxx" missing check for isSyntaxCheck Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/FileManager.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java 2010-07-30 01:57:14 UTC (rev 13741) +++ branches/v12_0/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java 2010-07-30 05:56:56 UTC (rev 13742) @@ -388,8 +388,10 @@ } ret = Resolver.getAtomCollectionReader(fileName + "|" + ze.getName(), null, reader, htParams, -1); - if (ret instanceof AtomSetCollectionReader) + if (ret instanceof AtomSetCollectionReader) { + ((AtomSetCollectionReader) ret).setup(fileName, htParams, reader); ret = ((AtomSetCollectionReader) ret).readData(); + } if (!(ret instanceof AtomSetCollection)) { if (ignoreErrors) continue; Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 01:57:14 UTC (rev 13741) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 05:56:56 UTC (rev 13742) @@ -8238,6 +8238,7 @@ if (errMsg != null && !isCmdLine_c_or_C_Option) { if (statementLength == 2) { if (errMsg.indexOf("NOTE: file recognized as a script file:") == 0) { + filename = errMsg.substring(errMsg.indexOf("file:") + 5).trim(); script(0, filename); return; } @@ -14410,7 +14411,8 @@ data = getPointArray(++i, 4); break; case Token.boundbox: - data = BoxInfo.getCriticalPoints(viewer.getBoundBoxVertices(), null); + data = BoxInfo.getCriticalPoints(viewer.getBoundBoxVertices(), + null); iToken = i + 1; break; case Token.unitcell: @@ -14422,7 +14424,7 @@ int iType = (int) unitCell.getUnitCellInfo(JmolConstants.INFO_DIMENSIONS); Vector3f v1 = null; Vector3f v2 = null; - switch (iType) { + switch(iType) { case 3: break; case 1: // polymer Modified: branches/v12_0/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/FileManager.java 2010-07-30 01:57:14 UTC (rev 13741) +++ branches/v12_0/Jmol/src/org/jmol/viewer/FileManager.java 2010-07-30 05:56:56 UTC (rev 13742) @@ -741,15 +741,21 @@ return "cannot read file name: " + name; Image image = null; //try { - fullPathName = names[0].replace('\\', '/'); - if (urlTypeIndex(fullPathName) >= 0) + String fullPathName = names[0].replace('\\', '/'); + if (fullPathName.indexOf("|") > 0) { + Object ret = getFileAsBytes(fullPathName, null); + if (!(ret instanceof byte[])) + return "" + ret; + image = Toolkit.getDefaultToolkit().createImage((byte[]) ret); + } else if (urlTypeIndex(fullPathName) >= 0) { try { image = Toolkit.getDefaultToolkit().createImage(new URL(fullPathName)); } catch (Exception e) { return "bad URL: " + fullPathName; } - else + } else { image = Toolkit.getDefaultToolkit().createImage(fullPathName); + } try { MediaTracker mediaTracker = new MediaTracker(viewer.getDisplay()); mediaTracker.addImage(image, 0); @@ -1043,8 +1049,9 @@ int itype = urlTypeIndex(name); boolean isLocal = (itype < 0 || itype == URL_LOCAL); if (isLocal || includeRemoteFiles) { - v.add(name); - String newName = "$SCRIPT_PATH$/" + name.substring(name.lastIndexOf("/") + 1); + v.add(name); + int pt = Math.max(name.lastIndexOf("|"), name.lastIndexOf("/")); + String newName = "$SCRIPT_PATH$/" + name.substring(pt + 1); if (isLocal && name.indexOf("|") < 0) { v.add(null); // data will be gotten from disk } else { @@ -1068,10 +1075,10 @@ script = TextFormat.replaceQuotedStrings(script, fileNames, newFileNames); v.add(sname); v.add(script.getBytes()); - Object bytes = viewer.getImageAs("JPEG", -1, -1, -1, null, null, + Object bytes = viewer.getImageAs("PNG", -1, -1, -1, null, null, JmolConstants.embedScript(script)); if (bytes instanceof byte[]) { - v.add(fileRoot + ".jpg"); + v.add(fileRoot + ".png"); v.add((byte[]) bytes); } return writeZipFile(fileName, v, false, "OK JMOL"); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 01:57:14 UTC (rev 13741) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 05:56:56 UTC (rev 13742) @@ -4,6 +4,8 @@ version=12.0.2_dev +# bug fix: reading background images from PNG images within zip files +# bug fix: write xxxx.jmol zip sets cannot be read # bug fix: binary surface readers map and ccc4 can misread file type # bug fix: isosurface "=xxx" missing check for isSyntaxCheck This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 07:38:54
|
Revision: 13748 http://jmol.svn.sourceforge.net/jmol/?rev=13748&view=rev Author: hansonr Date: 2010-07-30 07:38:48 +0000 (Fri, 30 Jul 2010) Log Message: ----------- version=12.0.2 # bug fix: print write("ramachandran") Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 07:37:07 UTC (rev 13747) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 07:38:48 UTC (rev 13748) @@ -8512,7 +8512,7 @@ if (isReturnOnly) statement = args; int tokCmd = (isReturnOnly ? Token.show : args[0].tok); - int pt0 = (tokCmd == Token.quaternion || tokCmd == Token.ramachandran ? 0 + int pt0 = (isReturnOnly || tokCmd == Token.quaternion || tokCmd == Token.ramachandran ? 0 : 1); String filename = null; boolean makeNewFrame = true; @@ -8531,9 +8531,9 @@ break; case Token.write: makeNewFrame = false; - if (tokAt(pt) == Token.string) { + if (tokAt(pt, args) == Token.string) { filename = stringParameter(pt--); - } else if (tokAt(pt - 1) == Token.per) { + } else if (tokAt(pt - 1, args) == Token.per) { filename = parameterAsString(pt - 2) + "." + parameterAsString(pt); pt -= 3; } else { @@ -8557,7 +8557,10 @@ Point3f minXYZ = null; Point3f maxXYZ = null; int plotType = 0; - switch (tokAt(pt0)) { + int tok = tokAt(pt0, args); + if (tok == Token.string) + tok = Token.getTokFromName((String)args[pt0].value); + switch (tok) { case Token.quaternion: case Token.helix: plotType = JmolConstants.JMOL_DATA_QUATERNION; @@ -12830,7 +12833,9 @@ case Token.quaternion: case Token.ramachandran: case Token.property: - msg = plot(statement); + msg = plot(args); + if (!isCommand) + return msg; break; case Token.pointgroup: type = "PGRP"; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 07:37:07 UTC (rev 13747) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 07:38:48 UTC (rev 13748) @@ -4,6 +4,7 @@ version=12.0.2 +# bug fix: print write("ramachandran") # bug fix: reading background images from PNG images within zip files # bug fix: write xxxx.jmol zip sets cannot be read # bug fix: binary surface readers map and ccp4 can misread file type This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 13:46:22
|
Revision: 13752 http://jmol.svn.sourceforge.net/jmol/?rev=13752&view=rev Author: hansonr Date: 2010-07-30 13:46:15 +0000 (Fri, 30 Jul 2010) Log Message: ----------- version=12.0.2 # bug fix: better coding for isosurface file typer Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2010-07-30 13:40:22 UTC (rev 13751) +++ branches/v12_0/Jmol/src/org/jmol/shapesurface/Isosurface.java 2010-07-30 13:46:15 UTC (rev 13752) @@ -112,6 +112,10 @@ import org.jmol.viewer.StateManager.Orientation; import org.jmol.jvxl.readers.Parameters; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; import java.util.BitSet; import java.util.Hashtable; import java.util.Vector; @@ -399,12 +403,18 @@ // and open a BufferedReader for it. Or not. But that would be // unlikely since we have just checked it in ScriptEvaluator value = viewer.getBufferedReaderOrErrorMessageFromName( - sg.getFileName(), null, false); + sg.getFileName(), null, true); if (value instanceof String) { Logger.error("Isosurface: could not open file " + sg.getFileName() + " -- " + value); return; } + try { + value = new BufferedReader(new InputStreamReader((InputStream) value, "ISO-8859-1")); + } catch (UnsupportedEncodingException e) { + // ignore + } + } } // surface Export3D only (return TRUE) or shared (return FALSE) Modified: branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java 2010-07-30 13:40:22 UTC (rev 13751) +++ branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java 2010-07-30 13:46:15 UTC (rev 13752) @@ -27,6 +27,7 @@ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; public class SurfaceFileTyper { @@ -38,8 +39,13 @@ public final static String PMESH_BINARY_MAGIC_NUMBER = "PM" + '\1' + '\0'; public static String determineSurfaceFileType(InputStream is) { - BufferedReader br = new BufferedReader(new InputStreamReader( - new BufferedInputStream((InputStream) is, 8192))); + BufferedReader br; + try { + br = new BufferedReader(new InputStreamReader( + new BufferedInputStream((InputStream) is, 8192), "ISO-8859-1")); + } catch (UnsupportedEncodingException e) { + return null; + } return SurfaceFileTyper.determineSurfaceFileType(br); } @@ -55,6 +61,9 @@ if ((line = br.info()).length() == 0) return null; + for (int i = 0; i < 220; i++) + System.out.print(" " + i + ":" + (0 + line.charAt(i))); + System.out.println(""); if (line.indexOf("Here is your gzipped map") >= 0) return "UPPSALA" + line; if (line.indexOf("<jvxl") >= 0 && line.indexOf("<?xml") >= 0) @@ -69,18 +78,18 @@ return "Efvet"; if ("\n\r".indexOf(line.charAt(0)) >= 0 && line.indexOf("ZYX") >= 0) return "Xplor"; - if (line.indexOf(PMESH_BINARY_MAGIC_NUMBER) == 0) - return "Pmesh"; // binary formats: problem here is that the buffered reader // may be translating byte sequences into unicode // and thus shifting the offset int pt0 = line.indexOf('\0'); if (pt0 >= 0) { - // note that we are checking here for +n or -n where n <= 255 + if (line.indexOf(PMESH_BINARY_MAGIC_NUMBER) == 0) + return "Pmesh"; if (pt0 < 4 && line.indexOf("MAP ") > 0 && line.indexOf("MAP ") < 210) return "MRC"; - pt0 = line.indexOf("\0d\0"); // header19 (short)100 - if (pt0 >= 0 && pt0 < 40) { + if (line.length() > 37 && (line.charAt(36) == 0 && line.charAt(37) == 100 + || line.charAt(36) == 0 && line.charAt(37) == 100)) { + // header19 (short)100 return "DSN6"; } } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 13:40:22 UTC (rev 13751) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 13:46:15 UTC (rev 13752) @@ -4,6 +4,7 @@ version=12.0.2 +# bug fix: better coding for isosurface file typer # bug fix: print write("ramachandran") # bug fix: reading background images from PNG images within zip files # bug fix: write xxxx.jmol zip sets cannot be read This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 17:33:44
|
Revision: 13757 http://jmol.svn.sourceforge.net/jmol/?rev=13757&view=rev Author: hansonr Date: 2010-07-30 17:33:38 +0000 (Fri, 30 Jul 2010) Log Message: ----------- version=12.0.2_dev_HOLD # bug fix: SMILES nested $(...) broken # bug fix: binary pmesh reader broken # bug fix: better coding for isosurface file typer Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/smiles/SmilesParser.java branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_0/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -69,6 +69,7 @@ * note that there is NO redundant extra vertex in this format * * 4 bytes: P M \1 \0 + * 4 bytes: ignored * 4 bytes: (int) 1 -- first byte used to determine big(==0) or little(!=0) endian * 4 bytes: (int) nVertices * 4 bytes: (int) nPolygons Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -252,8 +252,10 @@ private int tokLastMath; + private Vector vFunctionStack; + private boolean compile0(boolean isFull) { - + vFunctionStack = new Vector(); script = script.replace('\u201C', '"').replace('\u201D', '"'); script = cleanScriptComments(script); cchScript = this.script.length(); @@ -1382,6 +1384,8 @@ return CONTINUE; // don't store name in stack } if (nTokens == 1) { + if (thisFunction != null) + vFunctionStack.add(0, thisFunction); thisFunction = (tokCommand == Token.parallel ? new ParallelProcessor(ident, tokCommand) : new ScriptFunction(ident, tokCommand)); flowContext.setFunction(thisFunction); break; // function f @@ -1796,6 +1800,8 @@ switch (tokCommand) { case Token.trycmd: flowContext = new ScriptFlowContext(this, ct, pt, flowContext); + if (thisFunction != null) + vFunctionStack.add(0, thisFunction); thisFunction = new ParallelProcessor("", tokCommand); flowContext.setFunction(thisFunction); pushCount++; @@ -1863,7 +1869,7 @@ ScriptFunction.setFunction(thisFunction, script, pt1, lltoken.size(), lineNumbers, lineIndices, lltoken); } - thisFunction = null; + thisFunction = (vFunctionStack.size() == 0 ? null : (ScriptFunction) vFunctionStack.remove(0)); tokenCommand.intValue = 0; if (tok == Token.trycmd) vPush.remove(--pushCount); Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -503,7 +503,7 @@ e.restoreScriptContext(context, true, false, false); e.instructionDispatchLoop(false); } catch (Exception ex) { - viewer.setStringProperty("_errorMessage", "" + ex); + viewer.setStringProperty("_errormessage", "" + ex); Logger.error("Error evaluating context"); //ex.printStackTrace(); return false; @@ -1858,7 +1858,7 @@ } ((ParallelProcessor) function).runAllProcesses(viewer, !isTry); if (isTry){ - String err = (String) viewer.getParameter("_errorMessage"); + String err = (String) viewer.getParameter("_errormessage"); if (err.length() > 0) { contextVariables.put("_errorval", ScriptVariable.getVariable(err)); viewer.resetError(); @@ -2242,7 +2242,7 @@ if (token != null) { contextVariables = token.contextVariables; } - if (isCmdLine_c_or_C_Option) + if (Logger.debugging || isCmdLine_c_or_C_Option) Logger.info("-->>-------------".substring(0, scriptLevel + 5) + scriptLevel + " " + filename + " " + token + " " + thisContext); } @@ -2291,7 +2291,7 @@ ScriptContext scTemp = (isFlowCommand ? getScriptContext() : null); restoreScriptContext(thisContext, true, isFlowCommand, statementOnly); restoreScriptContext(scTemp, true, false, true); - if (isCmdLine_c_or_C_Option) + if (Logger.debugging || isCmdLine_c_or_C_Option) Logger.info("--<<-------------".substring(0, scriptLevel + 5) + scriptLevel + " " + filename + " " + (thisContext == null ? "" : "" + thisContext.token) + " " + thisContext); } @@ -2472,7 +2472,7 @@ // viewer.addCommand(s + CommandHistory.ERROR_FLAG); viewer.setCursor(Viewer.CURSOR_DEFAULT); viewer.setBooleanProperty("refreshing", true); - viewer.setStringProperty("_errorMessage", strUntranslated); + viewer.setStringProperty("_errormessage", strUntranslated); } throw new ScriptException(message, strUntranslated); } @@ -5647,8 +5647,7 @@ for (int i = pcTo + 1; i < aatoken.length; i++) { Token[] tokens = aatoken[i]; if (tokens[0].tok == Token.message || tokens[0].tok == Token.nada) - if (tokens[tokens.length - 1].value.toString() - .equalsIgnoreCase(strTo)) { + if (tokens[tokens.length - 1].value.toString().equalsIgnoreCase(strTo)) { pcTo = i; break; } @@ -5669,15 +5668,23 @@ nPush++; break; case Token.pop: - case Token.end: nPush--; break; + case Token.end: + switch (aatoken[i][1].tok) { + case Token.process: + case Token.forcmd: + case Token.catchcmd: + case Token.whilecmd: + nPush--; + } + break; } } if (strTo == null) { pcTo = Integer.MAX_VALUE; for (; nPush > 0; --nPush) - popContext(false, false); + popContext(false, false); } if (nPush != 0) error(ERROR_invalidArgument); Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesParser.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesParser.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesParser.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -333,6 +333,8 @@ checkNested(molecule, atom, noAromatic, ignoreStereochemistry); for (int k = 0; k < atom.nAtomsOr; k++) checkNested(molecule, atom.atomsOr[k], noAromatic, ignoreStereochemistry); + for (int k = 0; k < atom.nPrimitives; k++) + checkNested(molecule, atom.primitives[k], noAromatic, ignoreStereochemistry); } if (!isSmarts && !isBioSequence) molecule.elementCounts[1] = molecule.getMissingHydrogenCount(); Modified: branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/util/BinaryDocument.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -112,11 +112,11 @@ if (n > 0) nBytes += n; int nBytesRead = n; - if (n > 0 && n < b.length) { + if (n > 0 && n < len) { // apparently this is possible over the web // it occurred in getting a DNS6B format file from Uppsala - while (nBytesRead < b.length && n > 0) { - n = ioRead(b, nBytesRead, b.length - nBytesRead); + while (nBytesRead < len && n > 0) { + n = ioRead(b, nBytesRead, len - nBytesRead); if (n > 0) { nBytes += n; nBytesRead += n; Modified: branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/util/SurfaceFileTyper.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -85,7 +85,7 @@ if (pt0 >= 0) { if (line.indexOf(PMESH_BINARY_MAGIC_NUMBER) == 0) return "Pmesh"; - if (pt0 < 4 && line.indexOf("MAP ") > 0 && line.indexOf("MAP ") < 210) + if (line.indexOf("MAP ") == 208) return "MRC"; if (line.length() > 37 && (line.charAt(36) == 0 && line.charAt(37) == 100 || line.charAt(36) == 0 && line.charAt(37) == 100)) { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 17:33:38 UTC (rev 13757) @@ -4,6 +4,8 @@ version=12.0.2_dev_HOLD +# bug fix: SMILES nested $(...) broken +# bug fix: binary pmesh reader broken # bug fix: better coding for isosurface file typer # bug fix: print write("ramachandran") # bug fix: reading background images from PNG images within zip files Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-07-30 17:32:18 UTC (rev 13756) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Viewer.java 2010-07-30 17:33:38 UTC (rev 13757) @@ -4869,7 +4869,7 @@ */ public void notifyError(String errType, String errMsg, String errMsgUntranslated) { - global.setParameterValue("_errorMessage", errMsgUntranslated); + global.setParameterValue("_errormessage", errMsgUntranslated); statusManager.notifyError(errType, errMsg, errMsgUntranslated); } @@ -6474,7 +6474,7 @@ } public void resetError() { - global.removeJmolParameter("_errorMessage"); + global.removeJmolParameter("_errormessage"); } private void setAxesModeMolecular(boolean TF) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 19:38:18
|
Revision: 13773 http://jmol.svn.sourceforge.net/jmol/?rev=13773&view=rev Author: hansonr Date: 2010-07-30 19:38:12 +0000 (Fri, 30 Jul 2010) Log Message: ----------- GOOD TO GO Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-07-30 19:37:50 UTC (rev 13772) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-07-30 19:38:12 UTC (rev 13773) @@ -593,6 +593,8 @@ if (comment != null) addTokenToPrefix(new Token(Token.nada, (comment.length() == 1 ? comment : comment.substring(1)))); + } else if (setBraceCount > 0 && endOfLine && ichToken < cchScript) { + return CONTINUE; } // end of command or comment iCommand = lltoken.size(); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 19:37:50 UTC (rev 13772) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 19:38:12 UTC (rev 13773) @@ -2,7 +2,7 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.2_nope! +version=12.0.2 # bug fix: try/catch in functions not implemented correctly # bug fix: SMILES nested $(...) broken This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-07-30 20:58:25
|
Revision: 13775 http://jmol.svn.sourceforge.net/jmol/?rev=13775&view=rev Author: hansonr Date: 2010-07-30 20:58:19 +0000 (Fri, 30 Jul 2010) Log Message: ----------- version=12.0.2 # bug fix: draw arrows are being FIXED in state Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java 2010-07-30 20:56:54 UTC (rev 13774) +++ branches/v12_0/Jmol/src/org/jmol/shapespecial/Draw.java 2010-07-30 20:58:19 UTC (rev 13775) @@ -505,8 +505,8 @@ // make just ONE copy // arrows and curves simply can't be handled as // multiple frames yet - thisMesh.isFixed = (lineData == null); thisMesh.modelIndex = (lineData == null ? viewer.getCurrentModelIndex() : indicatedModelIndex); + thisMesh.isFixed = (isFixed || lineData == null && thisMesh.modelIndex < 0 && modelCount > 1); if (thisMesh.modelIndex < 0) thisMesh.modelIndex = 0; if (isFixed && modelCount > 1) @@ -1366,6 +1366,9 @@ if (mesh.vertexCount == 0) continue; Hashtable info = new Hashtable(); + info.put("modelIndex", new Integer(mesh.modelIndex)); + if (mesh.modelFlags != null) + info.put("modelFlags", mesh.modelFlags); info.put("fixed", mesh.ptCenters == null ? Boolean.TRUE : Boolean.FALSE); info.put("ID", (mesh.thisID == null ? "<noid>" : mesh.thisID)); info.put("drawType", JmolConstants.getDrawTypeName(mesh.drawType)); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 20:56:54 UTC (rev 13774) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-07-30 20:58:19 UTC (rev 13775) @@ -4,6 +4,7 @@ version=12.0.2 +# bug fix: draw arrows are being FIXED in state # bug fix: try/catch in functions not implemented correctly # bug fix: SMILES nested $(...) broken # bug fix: binary pmesh reader broken This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-06 23:47:20
|
Revision: 13886 http://jmol.svn.sourceforge.net/jmol/?rev=13886&view=rev Author: hansonr Date: 2010-08-06 23:47:12 +0000 (Fri, 06 Aug 2010) Log Message: ----------- 12.0.3 VERSION # bug fix: struts not restored from state # bug fix: color STRUTS also colors hbonds # new feature: Application Display menu item "resize" # bug fix: draw CYLINDER n ... where n is an integer does not give flat ends # bug fix: PNG file state for multiple file load cannot be read # bug fix: Jmol application not accepting -g # bug fix: "no atoms found returns wrong error message # bug fix: XYZ reader fails with load "filename" 3 # bug fix: "[1,3,4,5]" can be translated to [1,3,4] # bug fix: slab/depth mouse action does not automatically refresh Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/api/JmolEdge.java branches/v12_0/Jmol/src/org/jmol/modelset/ModelSet.java branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/shape/Sticks.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/api/JmolEdge.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/api/JmolEdge.java 2010-08-06 23:47:09 UTC (rev 13885) +++ branches/v12_0/Jmol/src/org/jmol/api/JmolEdge.java 2010-08-06 23:47:12 UTC (rev 13886) @@ -26,23 +26,25 @@ public interface JmolEdge { - // abstracts out the essential pieces for SMILES processing - /** * Extended Bond Definition Types * */ - // | new connection 1 << 15 - // ||| | Hydrogen bond 0x3800 F << 11 - // |Stereo 0x400 1 << 10 - // |Aromatic 0x200 1 << 9 - // |Sulfur-Sulfur 0x100 1 << 8 - // ||| Partial n 7 << 5 - // | |||| Partial m 0x1F - // ||| |||| |||| Covalent 0x3FF - // 0011 1111 1111 1111 ANY - // 0111 1111 1111 1111 NULL + // 11 1111 1100 0000 0000 + // 76 5432 1098 7654 3210 + // | new connection 1 << 17 0x20000 + // | strut 1 << 15 0x08000 + // ||| | Hydrogen bond 0x3800 F << 11 + // |Stereo 0x400 1 << 10 + // |Aromatic 0x200 1 << 9 + // |Sulfur-Sulfur 0x100 1 << 8 + // ||| Partial n 7 << 5 + // | |||| Partial m 0x1F + // ||| |||| |||| Covalent 0x3FF + // 00 0000 0000 0001 0001 UNSPECIFIED + // 00 1111 1111 1111 1111 ANY + // 01 1111 1111 1111 1111 NULL public final static int BOND_STEREO_MASK = 0x400; // 1 << 10 Modified: branches/v12_0/Jmol/src/org/jmol/modelset/ModelSet.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/ModelSet.java 2010-08-06 23:47:09 UTC (rev 13885) +++ branches/v12_0/Jmol/src/org/jmol/modelset/ModelSet.java 2010-08-06 23:47:12 UTC (rev 13886) @@ -819,7 +819,9 @@ int index2 = (int) f[1]; if (index1 < 0 || index2 < 0 || index1 >= atomCount || index2 >= atomCount) continue; - short order = (f.length > 2 ? (short) f[2] : JmolEdge.BOND_COVALENT_SINGLE); + int order = (f.length > 2 ? (int) f[2] : JmolEdge.BOND_COVALENT_SINGLE); + if (order < 0) + order &= 0xFFFF; // 12.0.1 was saving struts as negative numbers short mad = (f.length > 3 ? (short) (1000f * connections[i][3]) : getDefaultMadFromOrder(order)); if (order == 0 || mad == 0) { Bond b = atoms[index1].getBond(atoms[index2]); Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-06 23:47:09 UTC (rev 13885) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-06 23:47:12 UTC (rev 13886) @@ -6932,6 +6932,7 @@ setShapeProperty(JmolConstants.SHAPE_STICKS, "translucency", translucency, bsBonds); } + viewer.selectBonds(null); } if (!(tQuiet || scriptLevel > scriptReportingLevel)) scriptStatusOrBuffer(GT._("{0} new bonds; {1} modified", new Object[] { @@ -16059,5 +16060,4 @@ if (!isSyntaxCheck) viewer.unBindAction(mouseAction, name); } - } Modified: branches/v12_0/Jmol/src/org/jmol/shape/Sticks.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/Sticks.java 2010-08-06 23:47:09 UTC (rev 13885) +++ branches/v12_0/Jmol/src/org/jmol/shape/Sticks.java 2010-08-06 23:47:12 UTC (rev 13886) @@ -44,13 +44,13 @@ public class Sticks extends Shape { - short myMask; - boolean reportAll; + private int myMask; + private boolean reportAll; - BitSet bsOrderSet; - BitSet bsSizeSet; - BitSet bsColixSet; - BitSet selectedBonds; + private BitSet bsOrderSet; + private BitSet bsSizeSet; + private BitSet bsColixSet; + private BitSet selectedBonds; public void initShape() { super.initShape(); @@ -67,6 +67,7 @@ public void setSize(int size, BitSet bsSelected) { if (size == Integer.MAX_VALUE) { selectedBonds = (bsSelected == null ? null : BitSetUtil.copy(bsSelected)); + System.out.println("Sticks selectedBonds = " + selectedBonds); return; } if (size == Integer.MIN_VALUE) { // smartaromatic has set the orders directly @@ -89,7 +90,7 @@ public void setProperty(String propertyName, Object value, BitSet bs) { if ("type" == propertyName) { - myMask = ((Integer) value).shortValue(); + myMask = ((Integer) value).intValue(); return; } if ("reportAll" == propertyName) { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-06 23:47:09 UTC (rev 13885) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-06 23:47:12 UTC (rev 13886) @@ -2,8 +2,10 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.3_hold +version=12.0.3 +# bug fix: struts not restored from state +# bug fix: color STRUTS also colors hbonds # new feature: Application Display menu item "resize" # bug fix: draw CYLINDER n ... where n is an integer does not give flat ends # bug fix: PNG file state for multiple file load cannot be read This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-07 17:14:43
|
Revision: 13908 http://jmol.svn.sourceforge.net/jmol/?rev=13908&view=rev Author: hansonr Date: 2010-08-07 17:14:37 +0000 (Sat, 07 Aug 2010) Log Message: ----------- version=12.0.4_dev # bug fix: "sheet" token missing, so select within(sheet) fails Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/Token.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/Token.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/Token.java 2010-08-07 16:53:24 UTC (rev 13907) +++ branches/v12_0/Jmol/src/org/jmol/script/Token.java 2010-08-07 17:14:37 UTC (rev 13908) @@ -1559,6 +1559,7 @@ "selectionHalo", null, "showSelections", null, "set", new Token(set), + "sheet", new Token(sheet), "show", new Token(show), "slab", new Token(slab), "spacefill", new Token(spacefill), Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-07 16:53:24 UTC (rev 13907) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-07 17:14:37 UTC (rev 13908) @@ -4,6 +4,7 @@ version=12.0.4_dev +# bug fix: "sheet" token missing, so select within(sheet) fails # -------------------------------------------------------------- #version=12.0.3 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-07 23:20:21
|
Revision: 13919 http://jmol.svn.sourceforge.net/jmol/?rev=13919&view=rev Author: hansonr Date: 2010-08-07 23:20:14 +0000 (Sat, 07 Aug 2010) Log Message: ----------- 12.0.4 VERSION # bug fix: SmilesGeneration fails for double bond stereochemistry # bug fix: documented within("SMILES",...) missing and required for SmilesGenerator # bug fix: select within(branch,{},{}) exception # bug fix: "sheet" token missing, so select within(sheet) fails Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/api/JmolMolecule.java branches/v12_0/Jmol/src/org/jmol/api/JmolNode.java branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAtom.java branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/api/JmolMolecule.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/api/JmolMolecule.java 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/api/JmolMolecule.java 2010-08-07 23:20:14 UTC (rev 13919) @@ -88,6 +88,10 @@ bsExclude = new BitSet(); for (int i = 0; i < atoms.length; i++) if (!bsExclude.get(i) && !bsBranch.get(i)) { + if (atoms[i].isDeleted()) { + bsExclude.set(i); + continue; + } int modelIndex = atoms[i].getModelIndex(); if (modelIndex != thisModelIndex) { thisModelIndex = modelIndex; Modified: branches/v12_0/Jmol/src/org/jmol/api/JmolNode.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/api/JmolNode.java 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/api/JmolNode.java 2010-08-07 23:20:14 UTC (rev 13919) @@ -65,4 +65,5 @@ public boolean isRna(); public boolean isPurine(); public boolean isPyrimidine(); + public boolean isDeleted(); } Modified: branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/modelset/Atom.java 2010-08-07 23:20:14 UTC (rev 13919) @@ -881,7 +881,7 @@ public String getGroup3(boolean allowNull) { String group3 = group.getGroup3(); - return (allowNull || group3 != null || group3.length() > 0 ? group3 : "UNK"); + return (allowNull || group3 != null && group3.length() > 0 ? group3 : "UNK"); } public String getGroup1(char c0) { Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2010-08-07 23:20:14 UTC (rev 13919) @@ -1967,7 +1967,7 @@ x1.value, true, x1.index, asArray)); } - private boolean evaluateWithin(ScriptVariable[] args) { + private boolean evaluateWithin(ScriptVariable[] args) throws ScriptException { if (args.length < 1 || args.length > 5) return false; int i = args.length; @@ -1989,7 +1989,6 @@ return addX(viewer.getBranchBitSet( ((BitSet) args[2].value).nextSetBit(0), ((BitSet) args[1].value) .nextSetBit(0))); - /* unnecessary -- see select smiles(), select smarts() case Token.smiles: case Token.search: // within("smiles", "...", {bitset}) @@ -2013,7 +2012,6 @@ return (asBitSet ? addX(new BitSet()) : addX(new Vector())); return addX(eval.getSmilesMatches(ScriptVariable .sValue(args[1]), null, bsSelected, null, tok == Token.search, asBitSet)); - */ } if (withinSpec instanceof String) { if (tok == Token.nada) { Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAtom.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAtom.java 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesAtom.java 2010-08-07 23:20:14 UTC (rev 13919) @@ -737,4 +737,8 @@ && "CTUI".indexOf(residueChar) >= 0; } + public boolean isDeleted() { + return false; + } + } Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java 2010-08-07 23:20:14 UTC (rev 13919) @@ -65,7 +65,6 @@ private BitSet bsToDo; private JmolNode prevAtom; private JmolNode[] prevBondAtoms; - private boolean stereoShown; // outputs @@ -480,18 +479,8 @@ if (bondAtoms == null) bondAtoms = new JmolNode[5]; if (bondPrev == null) { - stereoShown = true; } else { strBond = SmilesBond.getBondOrderString(bondPrev.getCovalentOrder()); - if (stereoFlag < 7) { - if (bondPrev.getCovalentOrder() == 2 && prevBondAtoms != null && prevBondAtoms[1] != null) { - // allene continuation - stereo[stereoFlag++] = prevBondAtoms[0]; - stereo[stereoFlag++] = prevBondAtoms[1]; - } else { - stereo[stereoFlag++] = prevAtom; - } - } if (prevBondAtoms == null) bondAtoms[nBondAtoms++] = prevAtom; else @@ -520,6 +509,17 @@ } JmolNode atomNext = (bond0 == null ? null : bond0.getOtherAtom(atom)); int orderNext = (bond0 == null ? 0 : bond0.getCovalentOrder()); + + if (stereoFlag < 7 && bondPrev != null) { + if (bondPrev.getCovalentOrder() == 2 && orderNext == 2 && prevBondAtoms != null && prevBondAtoms[1] != null) { + // allene continuation + stereo[stereoFlag++] = prevBondAtoms[0]; + stereo[stereoFlag++] = prevBondAtoms[1]; + } else { + stereo[stereoFlag++] = prevAtom; + } + } + boolean deferStereo = (orderNext == 1 && prevBondAtoms == null); char chBond = getBondStereochemistry(bondPrev, prevAtom); @@ -535,17 +535,14 @@ s2.append("("); prevAtom = atom; prevBondAtoms = null; - boolean b = stereoShown; JmolEdge bond0t = bond0; - stereoShown = true; getSmiles(s2, a, allowConnectionsToOutsideWorld); - stereoShown = b; bond0 = bond0t; s2.append(")"); if (sMore.indexOf(s2.toString()) >= 0) stereoFlag = 10; sMore.append(s2); - v.removeElementAt(i--); + v.remove(i--); if (stereoFlag < 7) stereo[stereoFlag++] = a; if (nBondAtoms < 5) @@ -564,20 +561,18 @@ } if (nBondAtoms < 0) { bondAtoms = null; - } else { - stereoShown = false; } // output section - if (strBond != null) { - if (!stereoShown && chBond != '\0') { + if (strBond != null || chBond != '\0') { + if (chBond != '\0') { strBond = "" + chBond; - stereoShown = true; } sb.append(strBond); } + // now process any rings for (int i = v.size(); --i >= 0;) { @@ -587,11 +582,10 @@ JmolNode a = bond.getOtherAtom(atom); String s = getRingCache(atomIndex, a.getIndex(), htRings); strBond = SmilesBond.getBondOrderString(bond.getOrder()); - if (!deferStereo && !stereoShown) { + if (!deferStereo) { chBond = getBondStereochemistry(bond, atom); if (chBond != '\0') { strBond = "" + chBond; - stereoShown = true; } } @@ -644,13 +638,11 @@ if (nBondAtoms != 1 && nBondAtoms != 2) { bondAtoms = null; nBondAtoms = 0; - stereoShown = true; } else { if (bondAtoms[0] == null) bondAtoms[0] = atom; // CN= , for example. close enough! if (bondAtoms[1] == null) bondAtoms[1] = atom; // .C3= - stereoShown = false; } prevBondAtoms = bondAtoms; prevAtom = atom; Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-07 23:18:55 UTC (rev 13918) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-07 23:20:14 UTC (rev 13919) @@ -2,8 +2,10 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.4_dev +version=12.0.4 +# bug fix: SmilesGeneration fails for double bond stereochemistry +# bug fix: documented within("SMILES",...) missing and required for SmilesGenerator # bug fix: select within(branch,{},{}) exception # bug fix: "sheet" token missing, so select within(sheet) fails # -------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-08 01:07:33
|
Revision: 13923 http://jmol.svn.sourceforge.net/jmol/?rev=13923&view=rev Author: hansonr Date: 2010-08-08 01:07:27 +0000 (Sun, 08 Aug 2010) Log Message: ----------- version=12.0.5_dev # bug fix: proper "false AND"/"true OR" action where second operand is skipped Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java branches/v12_0/Jmol/src/org/jmol/script/Token.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2010-08-08 01:06:11 UTC (rev 13922) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptMathProcessor.java 2010-08-08 01:07:27 UTC (rev 13923) @@ -71,6 +71,7 @@ */ private boolean isSyntaxCheck; + private boolean wasSyntaxCheck; private boolean logMessages; private ScriptEvaluator eval; private Viewer viewer; @@ -97,7 +98,7 @@ this.eval = eval; this.viewer = eval.viewer; this.logMessages = eval.logMessages; - this.isSyntaxCheck = eval.isSyntaxCheck; + this.isSyntaxCheck = wasSyntaxCheck = eval.isSyntaxCheck; this.isArrayItem = isArrayItem; this.asVector = asVector || isArrayItem; this.asBitSet = asBitSet; @@ -542,6 +543,23 @@ case Token.rightbrace: if (braceCount-- <= 0) return false; + wasX = false; + break; + case Token.opAnd: + case Token.opOr: + if (!wasSyntaxCheck && xStack[xPt].tok != Token.bitset) { + // check to see if we need to evaluate the second operand or not + // if not, then set this to syntax check in order to skip :) + // Jmol 12.0.4, Jmol 12.1.2 + boolean tf = ScriptVariable.bValue(getX()); + addX(ScriptVariable.getBoolean(tf)); + if (tf == (op.tok == Token.opOr)) { // TRUE or.. FALSE and... + isSyntaxCheck = true; + op = (op.tok == Token.opOr ? Token.tokenOrTRUE : Token.tokenAndFALSE); + } + } + wasX = false; + break; default: wasX = false; } @@ -2375,8 +2393,11 @@ // binary: ScriptVariable x1 = getX(); - if (isSyntaxCheck) + if (isSyntaxCheck) { + if (op == Token.tokenAndFALSE || op == Token.tokenOrTRUE) + isSyntaxCheck = false; return addX(new ScriptVariable(x1)); + } switch (op.tok) { case Token.opAND: case Token.opAnd: Modified: branches/v12_0/Jmol/src/org/jmol/script/Token.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/Token.java 2010-08-08 01:06:11 UTC (rev 13922) +++ branches/v12_0/Jmol/src/org/jmol/script/Token.java 2010-08-08 01:07:27 UTC (rev 13923) @@ -1203,6 +1203,8 @@ public final static Token tokenAnd = new Token(opAnd, "and"); public final static Token tokenAND = new Token(opAND, ""); public final static Token tokenOr = new Token(opOr, "or"); + public final static Token tokenAndFALSE = new Token(opAnd, "and"); + public final static Token tokenOrTRUE = new Token(opOr, "or"); public final static Token tokenOpIf = new Token(opIf, "?"); public final static Token tokenComma = new Token(comma, ","); final static Token tokenDefineString = new Token(Token.define, Token.string, "@"); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-08 01:06:11 UTC (rev 13922) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-08 01:07:27 UTC (rev 13923) @@ -4,6 +4,8 @@ version=12.0.5_dev +# bug fix: proper "false AND"/"true OR" action where second operand is skipped + # -------------------------------------------------------------- #version=12.0.4 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-09 04:25:59
|
Revision: 13925 http://jmol.svn.sourceforge.net/jmol/?rev=13925&view=rev Author: hansonr Date: 2010-08-09 04:25:53 +0000 (Mon, 09 Aug 2010) Log Message: ----------- version=12.0.5_dev # bug fix: SmilesGeneration stereochemistry error # bug fix: "smilesString".find("smarts","pattern") should return "?" upon parsing error # bug fix: proper "false AND"/"true OR" action where second operand is skipped Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java branches/v12_0/Jmol/src/org/jmol/smiles/SmilesSearch.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-09 04:24:52 UTC (rev 13924) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-09 04:25:53 UTC (rev 13925) @@ -6640,7 +6640,7 @@ if (b == null) { showString(viewer.getSmilesMatcher().getLastException(), false); - return ""; + return "?"; } } else { @@ -6666,7 +6666,11 @@ bs.or(b[j]); if (asAtoms) return bs; - return new BondSet(bs); // not a bondset, but this prevents subset business + int[] iarray = new int[bs.cardinality()]; + int pt = 0; + for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) + iarray[pt++] = i + 1; + return iarray; } String[] matches = new String[b.length]; for (int j = 0; j < b.length; j++) Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java 2010-08-09 04:24:52 UTC (rev 13924) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java 2010-08-09 04:25:53 UTC (rev 13925) @@ -64,7 +64,7 @@ private BitSet bsBondsDn = new BitSet(); private BitSet bsToDo; private JmolNode prevAtom; - private JmolNode[] prevBondAtoms; + private JmolNode[] prevSp2Atoms; // outputs @@ -257,7 +257,7 @@ atom = atoms[bsToDo.nextSetBit(0)]; } sb.append("."); - prevBondAtoms = null; + prevSp2Atoms = null; prevAtom = null; while ((atom = getSmiles(sb, atom, allowConnectionsToOutsideWorld)) != null) { } @@ -415,11 +415,12 @@ return null; bsToDo.clear(atomIndex); boolean isExtension = (!bsSelected.get(atomIndex)); - boolean havePreviousBondAtoms = (prevBondAtoms != null); int prevIndex = (prevAtom == null ? -1 : prevAtom.getIndex()); boolean isAromatic = bsAromatic.get(atomIndex); - JmolNode[] bondAtoms = prevBondAtoms; - int nBondAtoms = 0; + // prevSp2Atoms is for allene ABC=C=CDE + boolean havePreviousSp2Atoms = (prevSp2Atoms != null); + JmolNode[] sp2Atoms = prevSp2Atoms; + int nSp2Atoms = 0; int atomicNumber = atom.getElementNumber(); int nH = 0; Vector v = new Vector(); @@ -476,19 +477,17 @@ // add the bond to the previous atom String strBond = null; - if (bondAtoms == null) - bondAtoms = new JmolNode[5]; + if (sp2Atoms == null) + sp2Atoms = new JmolNode[5]; if (bondPrev == null) { } else { strBond = SmilesBond.getBondOrderString(bondPrev.getCovalentOrder()); - if (prevBondAtoms == null) - bondAtoms[nBondAtoms++] = prevAtom; + if (prevSp2Atoms == null) + sp2Atoms[nSp2Atoms++] = prevAtom; else - nBondAtoms = 2; + nSp2Atoms = 2; } - if (stereoFlag < 7 && nH == 1) - stereo[stereoFlag++] = aH; - nBondAtoms += nH; + nSp2Atoms += nH; // get bond0 int nMax = 0; @@ -511,16 +510,21 @@ int orderNext = (bond0 == null ? 0 : bond0.getCovalentOrder()); if (stereoFlag < 7 && bondPrev != null) { - if (bondPrev.getCovalentOrder() == 2 && orderNext == 2 && prevBondAtoms != null && prevBondAtoms[1] != null) { + if (bondPrev.getCovalentOrder() == 2 + && orderNext == 2 && prevSp2Atoms != null + && prevSp2Atoms[1] != null) { // allene continuation - stereo[stereoFlag++] = prevBondAtoms[0]; - stereo[stereoFlag++] = prevBondAtoms[1]; + stereo[stereoFlag++] = prevSp2Atoms[0]; + stereo[stereoFlag++] = prevSp2Atoms[1]; } else { stereo[stereoFlag++] = prevAtom; } } - boolean deferStereo = (orderNext == 1 && prevBondAtoms == null); + if (stereoFlag < 7 && nH == 1) + stereo[stereoFlag++] = aH; + + boolean deferStereo = (orderNext == 1 && prevSp2Atoms == null); char chBond = getBondStereochemistry(bondPrev, prevAtom); // now construct the branches part @@ -534,7 +538,7 @@ StringBuffer s2 = new StringBuffer(); s2.append("("); prevAtom = atom; - prevBondAtoms = null; + prevSp2Atoms = null; JmolEdge bond0t = bond0; getSmiles(s2, a, allowConnectionsToOutsideWorld); bond0 = bond0t; @@ -545,8 +549,8 @@ v.remove(i--); if (stereoFlag < 7) stereo[stereoFlag++] = a; - if (nBondAtoms < 5) - bondAtoms[nBondAtoms++] = a; + if (nSp2Atoms < 5) + sp2Atoms[nSp2Atoms++] = a; } // from here on, prevBondAtoms and prevAtom must not be used. @@ -555,12 +559,12 @@ // and cancel any double bond stereochemistry if nec. int index2 = (orderNext == 2 ? atomNext.getIndex() : -1); - if (nH > 1 || isAromatic + if (nH > 1 || isAromatic || index2 < 0 || SmilesSearch.isRingBond(ringSets, atomIndex, index2)) { - nBondAtoms = -1; + nSp2Atoms = -1; } - if (nBondAtoms < 0) { - bondAtoms = null; + if (nSp2Atoms < 0) { + sp2Atoms = null; } // output section @@ -593,22 +597,22 @@ sMore.append(s); if (stereoFlag < 7) stereo[stereoFlag++] = a; - if (bondAtoms != null && nBondAtoms < 5) - bondAtoms[nBondAtoms++] = a; + if (sp2Atoms != null && nSp2Atoms < 5) + sp2Atoms[nSp2Atoms++] = a; } // now the atom symbol or bracketed expression // we allow for charge, hydrogen count, isotope number, // and stereochemistry - if (havePreviousBondAtoms && stereoFlag == 2 && orderNext == 2 && atomNext.getCovalentBondCount() == 3) { - // NOT cumulenes. + if (havePreviousSp2Atoms && stereoFlag == 2 && orderNext == 2 && atomNext.getCovalentBondCount() == 3) { + // this is for allenes only, not cumulenes bonds = atomNext.getEdges(); for (int k = 0; k < bonds.length; k++) { if (bonds[k].isCovalent() && atomNext.getBondedAtomIndex(k) != atomIndex) stereo[stereoFlag++] = atoms[atomNext.getBondedAtomIndex(k)]; } - nBondAtoms = 0; + nSp2Atoms = 0; } else if (atomNext != null && stereoFlag < 7) { stereo[stereoFlag++] = atomNext; } @@ -627,7 +631,6 @@ else sb.append(SmilesAtom.getAtomLabel(atomicNumber, isotope, valence, charge, nH, isAromatic, s)); - //sb.append("{" + atomIndex + "}"); sb.append(sMore); // check the next bond @@ -635,16 +638,22 @@ if (bond0 == null) return null; - if (nBondAtoms != 1 && nBondAtoms != 2) { - bondAtoms = null; - nBondAtoms = 0; + if (orderNext == 2 && (nSp2Atoms == 1 || nSp2Atoms == 2)) { + if (sp2Atoms[0] == null) + sp2Atoms[0] = atom; // CN=C= , for example. close enough! + if (sp2Atoms[1] == null) + sp2Atoms[1] = atom; // .C3=C= } else { - if (bondAtoms[0] == null) - bondAtoms[0] = atom; // CN= , for example. close enough! - if (bondAtoms[1] == null) - bondAtoms[1] = atom; // .C3= + sp2Atoms = null; + nSp2Atoms = 0; } - prevBondAtoms = bondAtoms; + + + // prevSp2Atoms is only so that we can track + // ABC=C=CDE systems + + + prevSp2Atoms = sp2Atoms; prevAtom = atom; return atomNext; } Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesSearch.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesSearch.java 2010-08-09 04:24:52 UTC (rev 13924) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesSearch.java 2010-08-09 04:25:53 UTC (rev 13925) @@ -1563,7 +1563,7 @@ * @param c * @param pt * @param v - * @return 1 for "@", -1 for "@@" + * @return 1 for "@", 2 for "@@" */ private static int getHandedness(JmolNode a, JmolNode b, JmolNode c, JmolNode pt, VTemp v) { float d = SmilesAromatic.getNormalThroughPoints(a, b, c, v.vTemp, v.vA, v.vB); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 04:24:52 UTC (rev 13924) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 04:25:53 UTC (rev 13925) @@ -4,6 +4,8 @@ version=12.0.5_dev +# bug fix: SmilesGeneration stereochemistry error +# bug fix: "smilesString".find("smarts","pattern") should return "?" upon parsing error # bug fix: proper "false AND"/"true OR" action where second operand is skipped # -------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-09 04:59:35
|
Revision: 13928 http://jmol.svn.sourceforge.net/jmol/?rev=13928&view=rev Author: hansonr Date: 2010-08-09 04:59:29 +0000 (Mon, 09 Aug 2010) Log Message: ----------- version=12.0.5_dev # bug fix: SmilesGeneration stereochemistry error # bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1) # bug fix: "CCCC".find("SMARTS","CCC") should return [1,5,8,11] (other returns [] and "?" # bug fix: proper "false AND"/"true OR" action where second operand is skipped Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-09 04:30:14 UTC (rev 13927) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptEvaluator.java 2010-08-09 04:59:29 UTC (rev 13928) @@ -6640,6 +6640,8 @@ if (b == null) { showString(viewer.getSmilesMatcher().getLastException(), false); + if (!asAtoms && !isSmarts) + return Integer.valueOf(-1); return "?"; } } else { @@ -6666,6 +6668,8 @@ bs.or(b[j]); if (asAtoms) return bs; + if (!isSmarts) + return Integer.valueOf(bs.cardinality()); int[] iarray = new int[bs.cardinality()]; int pt = 0; for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 04:30:14 UTC (rev 13927) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 04:59:29 UTC (rev 13928) @@ -5,7 +5,8 @@ version=12.0.5_dev # bug fix: SmilesGeneration stereochemistry error -# bug fix: "smilesString".find("smarts","pattern") should return "?" upon parsing error +# bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1) +# bug fix: "CCCC".find("SMARTS","CCC") should return [1,5,8,11] (other returns [] and "?" # bug fix: proper "false AND"/"true OR" action where second operand is skipped # -------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-09 05:57:39
|
Revision: 13930 http://jmol.svn.sourceforge.net/jmol/?rev=13930&view=rev Author: hansonr Date: 2010-08-09 05:57:31 +0000 (Mon, 09 Aug 2010) Log Message: ----------- 12.0.5 VERSION # bug fix: SmilesGeneration stereochemistry error # bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1) # bug fix: "CCCC".find("SMARTS","CCC") should return [1,5,8,11] (other returns [] and "?" # bug fix: proper "false AND"/"true OR" action where second operand is skipped Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/ShelxReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/ShelxReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/ShelxReader.java 2010-08-09 04:59:56 UTC (rev 13929) +++ branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/ShelxReader.java 2010-08-09 05:57:31 UTC (rev 13930) @@ -230,7 +230,7 @@ float x = parseFloat(tokens[2]); float y = parseFloat(tokens[3]); float z = parseFloat(tokens[4]); - if (elementIndex == Integer.MAX_VALUE || Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) { + if (Float.isNaN(x) || Float.isNaN(y) || Float.isNaN(z)) { Logger.error("skipping line " + line); return; } Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 04:59:56 UTC (rev 13929) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 05:57:31 UTC (rev 13930) @@ -2,7 +2,7 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.5_dev +version=12.0.5 # bug fix: SmilesGeneration stereochemistry error # bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-09 20:31:37
|
Revision: 13951 http://jmol.svn.sourceforge.net/jmol/?rev=13951&view=rev Author: hansonr Date: 2010-08-09 20:31:31 +0000 (Mon, 09 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: SMILES generator should not produce stereochemistry for RX2R' Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java 2010-08-09 20:29:26 UTC (rev 13950) +++ branches/v12_0/Jmol/src/org/jmol/smiles/SmilesGenerator.java 2010-08-09 20:31:31 UTC (rev 13951) @@ -616,8 +616,6 @@ } else if (atomNext != null && stereoFlag < 7) { stereo[stereoFlag++] = atomNext; } - String s = (stereoFlag > 6 ? "" : SmilesSearch.getStereoFlag(atom, stereo, - stereoFlag, vTemp)); int valence = atom.getValence(); int charge = atom.getFormalCharge(); int isotope = atom.getIsotopeNumber(); @@ -630,7 +628,7 @@ addBracketedBioName(sb, atom, "." + atomName); else sb.append(SmilesAtom.getAtomLabel(atomicNumber, isotope, valence, charge, - nH, isAromatic, s)); + nH, isAromatic, checkStereoPairs(atom, atomIndex, stereo, stereoFlag))); sb.append(sMore); // check the next bond @@ -658,6 +656,49 @@ return atomNext; } + private String checkStereoPairs(JmolNode atom, int atomIndex, + JmolNode[] stereo, int stereoFlag) { + //for (int jj = 0; jj < 7; jj++) + //System.out.print(stereo[jj] + " "); + //System.out.println(" " + atom); + if (stereoFlag == 4 && (atom.getElementNumber()) == 6) { + String s = ""; + // do a quick check for two of the same group. + for (int i = 0; i < 4; i++) { + int n = stereo[i].getAtomicAndIsotopeNumber(); + int nx = stereo[i].getCovalentBondCount(); + if (n != 6 && nx > 1) + continue; + int nh = (n == 6 ? stereo[i].getCovalentHydrogenCount() : 0); + // for C we use nh -- CH3, for example. + // for other atoms, we use number of bonds. + // just checking for 1 bond (to this atom, or 3 hydrogens) + if (nh > 0 && (nx != 4 || nh != 3)) + continue; + String sa = ";" + n + "/" + nh + "/" + nx + ","; + if (s.indexOf(sa) >= 0) { + if (nh == 3) { + // must check isotopes for CH3 + int ndt = 0; + for (int j = 0; j < nx && ndt < 3; j++) { + int ia = stereo[i].getBondedAtomIndex(j); + if (ia == atomIndex) + continue; + ndt += atoms[ia].getAtomicAndIsotopeNumber(); + } + if (ndt > 3) + continue; + } + stereoFlag = 10; + break; + } + s += sa; + } + } + return (stereoFlag > 6 ? "" : SmilesSearch.getStereoFlag(atom, stereo, + stereoFlag, vTemp)); + } + private String getRingCache(int i0, int i1, Hashtable ht) { String key = getRingKey(i0, i1); Object[] o = (Object[]) ht.get(key); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 20:29:26 UTC (rev 13950) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 20:31:31 UTC (rev 13951) @@ -2,8 +2,10 @@ # NOTE: Generally only bug fixes should be entered here. # NOTE: New features should be introduced in the trunk version 12.1.x -version=12.0.6_dec +version=12.0.6_dev +# bug fix: SMILES generator should not produce stereochemistry for RX2R' + # -------------------------------------------------------------- #version=12.0.5 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-09 21:30:31
|
Revision: 13956 http://jmol.svn.sourceforge.net/jmol/?rev=13956&view=rev Author: hansonr Date: 2010-08-09 21:30:25 +0000 (Mon, 09 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: load unitcell for slab/polymer should allow 0, not just -1 Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/util/SimpleUnitCell.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/util/SimpleUnitCell.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/util/SimpleUnitCell.java 2010-08-09 21:29:20 UTC (rev 13955) +++ branches/v12_0/Jmol/src/org/jmol/util/SimpleUnitCell.java 2010-08-09 21:30:25 UTC (rev 13956) @@ -69,15 +69,15 @@ alpha = parameters[3]; beta = parameters[4]; gamma = parameters[5]; - - if (b == -1) { + if (a <= 0) + return; + if (b <= 0) { b = c = 1; isPolymer = true; - } else if (c == -1) { + } else if (c <= 0) { c = 1; isSlab = true; } - cosAlpha = Math.cos(toRadians * alpha); sinAlpha = Math.sin(toRadians * alpha); cosBeta = Math.cos(toRadians * beta); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 21:29:20 UTC (rev 13955) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-09 21:30:25 UTC (rev 13956) @@ -4,6 +4,7 @@ version=12.0.6_dev +# bug fix: load unitcell for slab/polymer should allow 0, not just -1 # bug fix: SMILES generator should not produce stereochemistry for RX2R' # -------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-10 18:11:57
|
Revision: 13959 http://jmol.svn.sourceforge.net/jmol/?rev=13959&view=rev Author: hansonr Date: 2010-08-10 18:11:51 +0000 (Tue, 10 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: Parallel processing not creating process-specific copies of shapes Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java 2010-08-10 16:45:44 UTC (rev 13958) +++ branches/v12_0/Jmol/src/org/jmol/script/ParallelProcessor.java 2010-08-10 18:11:51 UTC (rev 13959) @@ -130,6 +130,7 @@ public RunProcess(Process process, Object lock, boolean inParallel) { this.process = process; processLock = lock; + this.inParallel = inParallel; } public void run() { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 16:45:44 UTC (rev 13958) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 18:11:51 UTC (rev 13959) @@ -4,6 +4,7 @@ version=12.0.6_dev +# bug fix: Parallel processing not creating process-specific copies of shapes # bug fix: load unitcell for slab/polymer should allow 0, not just -1 # bug fix: SMILES generator should not produce stereochemistry for RX2R' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-10 20:47:21
|
Revision: 13961 http://jmol.svn.sourceforge.net/jmol/?rev=13961&view=rev Author: hansonr Date: 2010-08-10 20:47:15 +0000 (Tue, 10 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: some isosurface display properties not generalized to wildcard Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java 2010-08-10 20:31:29 UTC (rev 13960) +++ branches/v12_0/Jmol/src/org/jmol/shape/MeshCollection.java 2010-08-10 20:47:15 UTC (rev 13961) @@ -218,12 +218,12 @@ if (value == null) return; colix = Graphics3D.getColix(value); - setProperty(Token.color, false); + setTokenProperty(Token.color, false); return; } if ("translucency" == propertyName) { - setProperty(Token.translucent, (((String) value).equals("translucent"))); + setTokenProperty(Token.translucent, (((String) value).equals("translucent"))); return; } @@ -257,7 +257,7 @@ case Token.nocontourlines: test = false; // TODO leave this as is for now; probably TRUE is correct... - tok = (true || allowContourLines ? Token.contourlines : Token.mesh); + tok = Token.contourlines; //(true || allowContourLines ? Token.contourlines : Token.mesh); tok2 = Token.mesh; break; case Token.mesh: @@ -287,10 +287,10 @@ default: Logger.error("PROBLEM IN MESHCOLLECTION: token? " + Token.nameOf(tok)); } - setProperty(tok, test); + setTokenProperty(tok, test); if (tok2 != 0) { if (currentMesh.havePlanarContours && currentMesh.drawTriangles != currentMesh.showContourLines) - setProperty(tok2, test); + setTokenProperty(tok2, test); } return; } @@ -305,102 +305,61 @@ previousMeshID = id; } - private void setProperty(int tokProp, boolean bProp) { - if (currentMesh != null) { - switch (tokProp) { - case Token.on: - currentMesh.visible = bProp; - return; - case Token.color: - currentMesh.colix = colix; - if (linkedMesh != null) - linkedMesh.colix = colix; - return; - case Token.translucent: - currentMesh.setTranslucent(bProp, translucentLevel); - if (linkedMesh != null) - linkedMesh.setTranslucent(bProp, translucentLevel); - return; - case Token.frontlit: - case Token.backlit: - case Token.fullylit: - currentMesh.setLighting(tokProp); - if (linkedMesh != null) - linkedMesh.setLighting(tokProp); - return; - case Token.contourlines: - currentMesh.showContourLines = bProp; - if (linkedMesh != null) - linkedMesh.showContourLines = bProp; - return; - case Token.mesh: - currentMesh.drawTriangles = bProp; - if (linkedMesh != null) - linkedMesh.drawTriangles = bProp; - return; - case Token.dots: - currentMesh.showPoints = bProp; - if (linkedMesh != null) - linkedMesh.showPoints = bProp; - return; - case Token.fill: - currentMesh.fillTriangles = bProp; - if (linkedMesh != null) - linkedMesh.fillTriangles = bProp; - return; - case Token.triangles: - currentMesh.showTriangles = bProp; - if (linkedMesh != null) - linkedMesh.showTriangles = bProp; - return; - case Token.frontonly: - currentMesh.frontOnly = bProp; - if (linkedMesh != null) - linkedMesh.frontOnly = bProp; - return; - } - return; + private void setTokenProperty(int tokProp, boolean bProp) { + if (currentMesh == null) { + String key = (explicitID && previousMeshID != null + && TextFormat.isWild(previousMeshID) ? previousMeshID.toUpperCase() + : null); + if (key != null && key.length() == 0) + key = null; + for (int i = 0; i < meshCount; i++) + if (key == null + || TextFormat.isMatch(meshes[i].thisID.toUpperCase(), key, true, true)) + setMeshTokenProperty(meshes[i], tokProp, bProp); + } else { + setMeshTokenProperty(currentMesh, tokProp, bProp); + if (linkedMesh != null) + setMeshTokenProperty(linkedMesh, tokProp, bProp); } - String key = (explicitID && previousMeshID != null - && TextFormat.isWild(previousMeshID) ? previousMeshID.toUpperCase() - : null); - if (key != null && key.length() == 0) - key = null; - for (int i = 0; i < meshCount; i++) { - Mesh m = meshes[i]; - if (key == null - || TextFormat.isMatch(m.thisID.toUpperCase(), key, true, true)) - switch (tokProp) { - case Token.on: - m.visible = bProp; - break; - case Token.color: - m.colix = colix; - break; - case Token.translucent: - m.setTranslucent(bProp, translucentLevel); - break; - case Token.frontlit: - case Token.backlit: - case Token.fullylit: - m.setLighting(tokProp); - break; - case Token.dots: - m.showPoints = bProp; - break; - case Token.mesh: - m.drawTriangles = bProp; - break; - case Token.fill: - m.fillTriangles = bProp; - break; - case Token.triangles: - m.showTriangles = bProp; - break; - } - } } + private void setMeshTokenProperty(Mesh m, int tokProp, boolean bProp) { + switch (tokProp) { + case Token.on: + m.visible = bProp; + return; + case Token.color: + m.colix = colix; + return; + case Token.translucent: + m.setTranslucent(bProp, translucentLevel); + return; + case Token.frontlit: + case Token.backlit: + case Token.fullylit: + m.setLighting(tokProp); + return; + case Token.dots: + m.showPoints = bProp; + return; + case Token.mesh: + m.drawTriangles = bProp; + return; + case Token.fill: + m.fillTriangles = bProp; + return; + case Token.triangles: + m.showTriangles = bProp; + return; + case Token.contourlines: + m.showContourLines = bProp; + return; + case Token.frontonly: + m.frontOnly = bProp; + return; + } + } + public boolean getProperty(String property, Object[] data) { if (property == "checkID") { String key = ((String) data[0]).toUpperCase(); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 20:31:29 UTC (rev 13960) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 20:47:15 UTC (rev 13961) @@ -4,6 +4,7 @@ version=12.0.6_dev +# bug fix: some isosurface display properties not generalized to wildcard # bug fix: Parallel processing not creating process-specific copies of shapes # bug fix: load unitcell for slab/polymer should allow 0, not just -1 # bug fix: SMILES generator should not produce stereochemistry for RX2R' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-10 21:58:49
|
Revision: 13965 http://jmol.svn.sourceforge.net/jmol/?rev=13965&view=rev Author: hansonr Date: 2010-08-10 21:58:41 +0000 (Tue, 10 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java 2010-08-10 21:27:05 UTC (rev 13964) +++ branches/v12_0/Jmol/src/org/jmol/shape/MeshRenderer.java 2010-08-10 21:58:41 UTC (rev 13965) @@ -76,7 +76,9 @@ for (int i = vertexCount; --i >= 0;) viewer.transformPoint(vertices[i], screens[i]); render2(exportType != Graphics3D.EXPORT_NOT); - if (mesh.lattice != null && mesh.modelIndex >= 0) { + if (mesh.lattice == null || mesh.modelIndex < 0) { + render2(exportType != Graphics3D.EXPORT_NOT); + } else { SymmetryInterface unitcell = viewer.getModelUnitCell(mesh.modelIndex); if (unitcell != null) { Point3f vTemp = new Point3f(); @@ -87,8 +89,6 @@ for (int tx = minXYZ.x; tx < maxXYZ.x; tx++) for (int ty = minXYZ.y; ty < maxXYZ.y; ty++) for (int tz = minXYZ.z; tz < maxXYZ.z; tz++) { - if (tx == 0 && ty == 0 && tz == 0) - continue; latticeOffset.set(tx, ty, tz); unitcell.toCartesian(latticeOffset, false); for (int i = vertexCount; --i >= 0;) { Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 21:27:05 UTC (rev 13964) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 21:58:41 UTC (rev 13965) @@ -4,6 +4,7 @@ version=12.0.6_dev +# bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL # bug fix: broken selectExtended mode # bug fix: some isosurface display properties not generalized to wildcard # bug fix: Parallel processing not creating process-specific copies of shapes @@ -167,6 +168,7 @@ # .... hkl {h k l} should be relative current UNITCELL # select UNITCELL should be relative current UNITCELL # draw intersection UNITCELL... should be relative current UNITCELL +# isosurface LATTICE {x y z} should be relative to current UNITCELL # # bug fix: RC15 connect DELETE may malfunction when two sets of atoms intersect # bug fix: minor isosurface tweaks -- triangles, gridlines, hover, click This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-11 00:52:59
|
Revision: 13967 http://jmol.svn.sourceforge.net/jmol/?rev=13967&view=rev Author: hansonr Date: 2010-08-11 00:52:52 +0000 (Wed, 11 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: show info not showing molecule info Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java 2010-08-10 21:59:24 UTC (rev 13966) +++ branches/v12_0/Jmol/src/org/jmol/adapter/readers/cifpdb/PdbReader.java 2010-08-11 00:52:52 UTC (rev 13967) @@ -204,6 +204,7 @@ header(); return true; case 19: + compndOld(); compndSource(false); return true; case 20: @@ -260,6 +261,19 @@ private Hashtable htMolIds; private boolean resetKey = true; + String compnd = null; + private void compndOld() { + if (compnd == null) + compnd = ""; + else + compnd += " "; + String s = line; + if (lineLength > 62) + s = s.substring(0, 62); + compnd += s.substring(10).trim(); + atomSetCollection.setAtomSetCollectionAuxiliaryInfo("COMPND", compnd); + } + private void compndSource(boolean isSource) { if (vCompnds == null) { if (isSource) Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-10 21:59:24 UTC (rev 13966) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-11 00:52:52 UTC (rev 13967) @@ -4,6 +4,7 @@ version=12.0.6_dev +# bug fix: show info not showing molecule info # bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL # bug fix: broken selectExtended mode # bug fix: some isosurface display properties not generalized to wildcard This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-11 02:55:29
|
Revision: 13969 http://jmol.svn.sourceforge.net/jmol/?rev=13969&view=rev Author: hansonr Date: 2010-08-11 02:55:22 +0000 (Wed, 11 Aug 2010) Log Message: ----------- version=12.0.6_dev # bug fix: CRYSTAL reader orientation error Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java 2010-08-11 00:53:16 UTC (rev 13968) +++ branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java 2010-08-11 02:55:22 UTC (rev 13969) @@ -30,13 +30,13 @@ import org.jmol.adapter.smarter.*; import org.jmol.util.Logger; import org.jmol.util.Quaternion; -import org.jmol.util.SimpleUnitCell; +//import org.jmol.util.SimpleUnitCell; import org.jmol.util.TextFormat; import java.util.BitSet; import java.util.Vector; -import javax.vecmath.Matrix3f; +//import javax.vecmath.Matrix3f; import javax.vecmath.Point3f; /** @@ -147,6 +147,10 @@ return true; } + if (line.startsWith(" DIRECT LATTICE VECTORS CARTESIAN COMPONENTS (ANGSTROM)")) { + setDirect(); + return true; + } if (line.startsWith(" LATTICE PARAMETER")) { boolean isConvLattice = (line.indexOf("- CONVENTIONAL") >= 0); @@ -251,41 +255,99 @@ return true; } - /** - * get the matrix that reorients the primitive coordinate axes - * to their correct orientation in relation to the conventional cell - * - * @throws Exception - */ - private void getOrientationMatrix() throws Exception { - if (!isPrimitive || isSlab || isPolymer) - return; - float[] data = new float[9]; - fillFloatArray(data); - Matrix3f m = new Matrix3f(data); - m.invert(); - // find the conventional equivalents of the primitive a and b axes. - Point3f a = new Point3f(); - Point3f b = new Point3f(); - a.set(1, 0, 0); - m.transform(a); - b.set(0, 1, 0); - m.transform(b); - System.out.println(a); - System.out.println(b); - - // now get conventional cell info so we can - // convert from conventional to cartesian - discardLinesUntilContains("GAMMA"); - float[] params = new float[6]; - fillFloatArray(params); - SimpleUnitCell u = new SimpleUnitCell(params); - u.toCartesian(a, false); - u.toCartesian(b, false); - matUnitCellOrientation = Quaternion.getQuaternionFrame(new Point3f(), a, b).getMatrix(); + /* + DIRECT LATTICE VECTORS CARTESIAN COMPONENTS (ANGSTROM) + X Y Z + 0.290663292155E+01 0.000000000000E+00 0.460469095849E+01 + -0.145331646077E+01 0.251721794953E+01 0.460469095849E+01 + -0.145331646077E+01 -0.251721794953E+01 0.460469095849E+01 + */ + private void setDirect() throws Exception { + readLine(); + float[] f = new float[3]; - } + fillFloatArray(f); + Point3f a = new Point3f(f[0], f[1], f[2]); + if (Logger.debugging) + addJmolScript("draw va vector {0 0 0} {" + f[0] + " " + f[1] + " " + f[2] + "} color red"); + fillFloatArray(f); + Point3f b = new Point3f(f[0], f[1], f[2]); + if (Logger.debugging && !isPolymer) + addJmolScript("draw vb vector {0 0 0} {" + f[0] + " " + f[1] + " " + f[2] + "} color green"); + + fillFloatArray(f); + if (Logger.debugging && !isSlab && !isPolymer) + addJmolScript("draw vc vector {0 0 0} {" + f[0] + " " + f[1] + " " + f[2] + "} color blue"); + + matUnitCellOrientation = Quaternion.getQuaternionFrame(new Point3f(), a, b).getMatrix(); + } + + /** + * get the matrix that reorients the primitive coordinate axes + * to their correct orientation in relation to the conventional cell + * + * @throws Exception + */ + private void getOrientationMatrix() throws Exception { + if (!isPrimitive || isSlab || isPolymer) + return; + /* + * + * setDirect works better + * + float[] data = new float[9]; + fillFloatArray(data); + Matrix3f m = new Matrix3f(data); + System.out.println(m); + + Point3f a = new Point3f(); + + m.invert(); + + System.out.println(m); + + // now get conventional cell info so we can + // convert from conventional to cartesian + discardLinesUntilContains("GAMMA"); + float[] params = new float[6]; + fillFloatArray(params); + SimpleUnitCell u = new SimpleUnitCell(params); + + Quaternion q = new Quaternion(new Point3f(0, 0, 1), (test ? 90 : 0)); + + // find the conventional equivalents of the primitive a and b axes (sort of). + + + + if (test) + a.set(0, 0, 1); + else + a.set(1, 0, 0); + + m.transform(a); + u.toCartesian(a, false); + a = q.transform(a); + + Point3f b = new Point3f(); + if (test) + b.set(1, 0, 0); + else + b.set(0, 1, 0); + + m.transform(b); + u.toCartesian(b, false); + b = q.transform(b); + + System.out.println("CrystalReader a = " + a); + System.out.println("CrystalReader b = " + b); + // the following will align the primitive a axis such that it + // projects onto the Cartesian X axis. + // Honestly, I don't know why. + //matUnitCellOrientation = Quaternion.getQuaternionFrame(new Point3f(), a, b).getMatrix(); + */ + } + private Point3f ptOriginShift = new Point3f(); private void readShift() { // SHIFT OF THE ORIGIN : 3/4 1/4 0 Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-11 00:53:16 UTC (rev 13968) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-11 02:55:22 UTC (rev 13969) @@ -4,6 +4,7 @@ version=12.0.6_dev +# bug fix: CRYSTAL reader orientation error # bug fix: show info not showing molecule info # bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL # bug fix: broken selectExtended mode This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2010-08-16 11:39:34
|
Revision: 14001 http://jmol.svn.sourceforge.net/jmol/?rev=14001&view=rev Author: hansonr Date: 2010-08-16 11:39:26 +0000 (Mon, 16 Aug 2010) Log Message: ----------- version=12.0.7_dev # bug fix: CRYSTAL reader FREQUENCY when input deck is missing VIBRATION record Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java 2010-08-16 09:20:20 UTC (rev 14000) +++ branches/v12_0/Jmol/src/org/jmol/adapter/readers/xtal/CrystalReader.java 2010-08-16 11:39:26 UTC (rev 14001) @@ -785,7 +785,6 @@ * 108( 1 H ) 109( 6 C ) 110( 1 H ) 111( 8 O ) 112( 8 O ) * 113( 1 H ) 114( 6 C ) 115( 1 H ) 116( 8 O ) 117( 8 O ) * 118( 1 H ) - *INFORMATION **** INPFREQ **** ANALYSIS OF THE VIBRATIONAL MODES * */ int numAtomsFrag = parseInt(line.substring(39, 44)); @@ -793,7 +792,7 @@ return; atomFrag = new int[numAtomsFrag]; String Sfrag = ""; - while (readLine() != null && line.indexOf("INFORMATION **** INPFREQ") < 0) + while (readLine() != null && line.indexOf("(") >= 0) Sfrag += line; Sfrag = TextFormat.simpleReplace(Sfrag, "(", " ("); String[] tokens = getTokens(Sfrag); Modified: branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-16 09:20:20 UTC (rev 14000) +++ branches/v12_0/Jmol/src/org/jmol/viewer/Jmol.properties 2010-08-16 11:39:26 UTC (rev 14001) @@ -4,6 +4,8 @@ version=12.0.7_dev +# bug fix: CRYSTAL reader FREQUENCY when input deck is missing VIBRATION record + # -------------------------------------------------------------- #version=12.0.6 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |