From: Michael T H. <mic...@us...> - 2004-02-05 22:43:03
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22775/src/org/openscience/jmol/viewer/datamodel Modified Files: Atom.java AtomRenderer.java BondRenderer.java Frame.java Log Message: added Atom.VISIBILITY_FLAG - atoms that are not visible are now not selectable Index: Atom.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Atom.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- Atom.java 28 Jan 2004 11:51:22 -0000 1.22 +++ Atom.java 5 Feb 2004 22:40:10 -0000 1.23 @@ -36,6 +36,8 @@ public class Atom implements Bspt.Tuple { + public final static byte VISIBLE_FLAG = 1; + public int atomIndex; public Object clientAtom; public PdbAtom pdbAtom; @@ -44,7 +46,7 @@ short x, y, z; short diameter; public byte atomicNumber; - public byte atomicCharge; + byte chargeAndFlags; short marAtom; short colixAtom; Bond[] bonds; @@ -58,7 +60,7 @@ this.atomIndex = atomIndex; this.clientAtom = clientAtom; this.atomicNumber = (byte) viewer.getAtomicNumber(clientAtom); - this.atomicCharge = (byte) viewer.getAtomicCharge(clientAtom); + this.chargeAndFlags = (byte)(viewer.getAtomicCharge(clientAtom) << 4); this.colixAtom = viewer.getColixAtom(this); setMarAtom(viewer.getMarAtom()); this.point3f = new Point3f(viewer.getAtomX(clientAtom), @@ -271,7 +273,7 @@ } public int getAtomicCharge() { - return atomicCharge; + return chargeAndFlags >> 4; } public int getAtomno() { Index: AtomRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/AtomRenderer.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- AtomRenderer.java 31 Jan 2004 20:05:57 -0000 1.20 +++ AtomRenderer.java 5 Feb 2004 22:40:10 -0000 1.21 @@ -85,8 +85,11 @@ return; boolean hasHalo = viewer.hasSelectionHalo(atom); int diameter = atom.diameter; - if (diameter == 0 && !hasHalo) + if (diameter == 0 && !hasHalo) { + atom.chargeAndFlags &= ~Atom.VISIBLE_FLAG; return; + } + atom.chargeAndFlags |= Atom.VISIBLE_FLAG; int effectiveDiameter = diameter; if (hasHalo) { int halowidth = diameter / 4; Index: BondRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/BondRenderer.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- BondRenderer.java 12 Jan 2004 15:51:42 -0000 1.29 +++ BondRenderer.java 5 Feb 2004 22:40:10 -0000 1.30 @@ -92,7 +92,9 @@ return; int order = bond.order; Atom atomA = bond.atom1; + atomA.chargeAndFlags |= Atom.VISIBLE_FLAG; Atom atomB = bond.atom2; + atomB.chargeAndFlags |= Atom.VISIBLE_FLAG; if (bondsBackbone) { if (ssbondsBackbone && (order & JmolConstants.BOND_SULFUR_MASK) != 0) { // for ssbonds, always render the sidechain, Index: Frame.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Frame.java,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- Frame.java 4 Feb 2004 23:38:19 -0000 1.40 +++ Frame.java 5 Feb 2004 22:40:10 -0000 1.41 @@ -458,6 +458,8 @@ int r2Nearest = Integer.MAX_VALUE; for (int i = atomCount; --i >= 0; ) { Atom atom = atoms[i]; + if ((atom.chargeAndFlags & Atom.VISIBLE_FLAG) == 0) + continue; int dx = atom.x - x; int dx2 = dx * dx; if (dx2 > r2Nearest) |