From: Bob H. <ha...@us...> - 2006-02-22 18:48:32
|
Update of /cvsroot/jmol/Jmol/src/org/jmol/viewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21694/src/org/jmol/viewer Modified Files: ModelManager.java Eval.java Frame.java Sticks.java Log Message: connect -- adds optional radius parameter after type. fixing hbonds issue Index: ModelManager.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/ModelManager.java,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- ModelManager.java 22 Feb 2006 04:38:44 -0000 1.35 +++ ModelManager.java 22 Feb 2006 18:48:23 -0000 1.36 @@ -687,6 +687,7 @@ info.put("atomno1", new Integer(getBondAtom1(i).getAtomNumber())); info.put("atomno2", new Integer(getBondAtom2(i).getAtomNumber())); info.put("order", new Integer(getBondOrder(i))); + info.put("radius", new Float(frame.getBondAt(i).mad/2000.)); return info; } Index: Eval.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Eval.java,v retrieving revision 1.95 retrieving revision 1.96 diff -u -r1.95 -r1.96 --- Eval.java 22 Feb 2006 04:38:44 -0000 1.95 +++ Eval.java 22 Feb 2006 18:48:23 -0000 1.96 @@ -2168,16 +2168,10 @@ mad = 0; break; case Token.integer: - int radiusRasMol = statement[1].intValue; - if (radiusRasMol > 750) - numberOutOfRange(); - mad = (short)(radiusRasMol * 4 * 2); + mad = getMadInteger(statement[1].intValue); break; case Token.decimal: - float angstroms = floatParameter(1); - if (angstroms > 3) - numberOutOfRange(); - mad = (short)(angstroms * 1000 * 2); + mad = getMadFloat(floatParameter(1)); break; default: booleanOrNumberExpected(); @@ -2185,6 +2179,18 @@ return mad; } + short getMadInteger(int radiusRasMol) throws ScriptException { + if (radiusRasMol > 750) + numberOutOfRange(); + return (short)(radiusRasMol * 4 * 2); + } + + short getMadFloat(float angstroms) throws ScriptException { + if (angstroms > 3) + numberOutOfRange(); + return (short)(angstroms * 1000 * 2); + } + void wireframe() throws ScriptException { viewer.setShapeSize(JmolConstants.SHAPE_STICKS, getMadParameter()); } @@ -2195,10 +2201,15 @@ } void hbond() throws ScriptException { + setHbonds(getMadParameter()); + } + + void setHbonds(short mad){ viewer.loadShape(JmolConstants.SHAPE_HSTICKS); - viewer.setShapeSize(JmolConstants.SHAPE_HSTICKS, getMadParameter()); + viewer.setShapeSize(JmolConstants.SHAPE_HSTICKS, mad); } + void vector() throws ScriptException { short mad = 1; if (statementLength > 1) { @@ -3612,7 +3623,9 @@ viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, "minDistance", new Float(-0.0001)); viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, - "connectBondOrder", new Float(1.0)); + "connectBondOrder", new Short((short)1)); + viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, + "connectMad", new Short((short)-1)); viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, "connectExistant", new Boolean(true)); viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, @@ -3624,21 +3637,34 @@ viewer.rebond(); return; } + String propertyName = null; + Object propertyValue = null; + int nNumeric = 0; for (int i = 1; i < statementLength; ++i) { - String propertyName = null; - Object propertyValue = null; + propertyName = null; + propertyValue = null; switch (statement[i].tok) { case Token.on: case Token.off: viewer.rebond(); return; case Token.integer: - propertyName = "connectDistance"; - propertyValue = new Float(statement[i].intValue); + if (++nNumeric > 2) { + propertyName = "connectMad"; + propertyValue = new Short(getMadInteger(statement[i].intValue)); + } else { + propertyName = "connectDistance"; + propertyValue = new Float(statement[i].intValue); + } break; case Token.decimal: - propertyName = "connectDistance"; - propertyValue = statement[i].value; + if (++nNumeric > 2) { + propertyName = "connectMad"; + propertyValue = new Short(getMadFloat(floatParameter(i))); + } else { + propertyName = "connectDistance"; + propertyValue = statement[i].value; + } break; case Token.expressionBegin: //System.out.println(i + " " + propertyName + " " + statement.length); @@ -3656,6 +3682,7 @@ cmd.equals("hbond")) { propertyName = "connectBondOrder"; propertyValue = cmd; + nNumeric = 2; } else if (cmd.equals("exists")) { propertyName = "connectNew"; propertyValue = new Boolean(false); @@ -3668,7 +3695,7 @@ break; case Token.delete: propertyName = "connectBondOrder"; - propertyValue = new Float(0.0); + propertyValue = new Short((short)0); break; default: invalidArgument(); Index: Frame.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Frame.java,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- Frame.java 19 Feb 2006 18:42:25 -0000 1.40 +++ Frame.java 22 Feb 2006 18:48:24 -0000 1.41 @@ -335,7 +335,7 @@ fileHasHbonds = true; } - boolean bondAtomsByNumber(int iA, int iB, int order) { + boolean bondAtomsByNumber(int iA, int iB, int order, short mad) { Atom atom1 = atoms[iA]; Atom atom2 = atoms[iB]; @@ -343,6 +343,7 @@ if (bond == null) { return false; } + if (mad >=0) bond.mad = mad; if (bondCount == bonds.length) bonds = (Bond[]) Util.setLength(bonds, bondCount + 2 * ATOM_GROWTH_INCREMENT); Index: Sticks.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Sticks.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- Sticks.java 22 Feb 2006 04:38:44 -0000 1.15 +++ Sticks.java 22 Feb 2006 18:48:25 -0000 1.16 @@ -35,6 +35,7 @@ float maxBondingDistance; float minBondingDistance; short order; + short connectMad; boolean iConnectNew; boolean iConnectExistant; BitSet bsSource; @@ -62,13 +63,13 @@ if ("bondOrder" == propertyName) { if (value instanceof Short) { order = ((Short)value).shortValue(); - setOrderBond(order, bsSelected); + setOrderBond(order, bsSelected, (short)-1); } if (value instanceof String) { String str = (String)value; for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) if (str.equals(JmolConstants.bondOrderNames[i])) - setOrderBond(JmolConstants.bondOrderValues[i], bsSelected); + setOrderBond(JmolConstants.bondOrderValues[i], bsSelected, (short)-1); } return; } @@ -82,14 +83,15 @@ return; } + if ("connectMad" == propertyName) { + connectMad = ((Short)value).shortValue(); + return; + } + if ("connectBondOrder" == propertyName) { if (value instanceof Short) { order = ((Short)value).shortValue(); - } - if (value instanceof Float) { - order = ((Float)value).shortValue(); - } - if (value instanceof String) { + } else if (value instanceof String) { String str = (String)value; for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) { if (str.equals(JmolConstants.bondOrderNames[i])) { @@ -126,7 +128,7 @@ BitSet bsTarget = (BitSet)value; if(minBondingDistance < 0.0F) minBondingDistance = 0.0F; - makeConnections(minBondingDistance, maxBondingDistance, (bsSource != null ? bsSource : bsSelected), bsTarget, order, iConnectExistant, iConnectNew); + makeConnections(minBondingDistance, maxBondingDistance, (bsSource != null ? bsSource : bsSelected), bsTarget, order, iConnectExistant, iConnectNew, connectMad); return; } } @@ -156,10 +158,15 @@ iter.next().setTranslucent(isTranslucent); } - void setOrderBond(short order, BitSet bs) { + void setOrderBond(short order, BitSet bs, short mad) { BondIterator iter = frame.getBondIterator(JmolConstants.BOND_ALL_MASK, bs); - while (iter.hasNext()) - iter.next().setOrder(order); + //boolean isHbond = (order == JmolConstants.BOND_H_REGULAR); + Bond bond; + while (iter.hasNext()) { + bond = iter.next(); + bond.setOrder(order); + if(mad >= 0)bond.setMad(mad); + } } void deleteSelectedBonds(BitSet bs) { @@ -172,7 +179,7 @@ frame.deleteBonds(bsDelete); } - void makeConnections(float minDistance, float maxDistance, BitSet bsA, BitSet bsB, short order, boolean iConnectExistant, boolean iConnectNew) { + void makeConnections(float minDistance, float maxDistance, BitSet bsA, BitSet bsB, short order, boolean iConnectExistant, boolean iConnectNew, short mad) { int atomCount = frame.atomCount; Atom[] atoms = frame.atoms; int nbonds = 0; @@ -212,8 +219,8 @@ if (order == 0){ deleteSelectedBonds(bsTwoAtoms); } else { - if (!frame.bondAtomsByNumber(iA, iB, (int)order)) { - setOrderBond(order, bsTwoAtoms); + if (!frame.bondAtomsByNumber(iA, iB, (int)order, mad)) { + setOrderBond(order, bsTwoAtoms, mad); } } } |