That was on the user list -- I'm switching to developers until this is rock solid.

First a comprehensive review of where this VISIBLE_FLAG is involved:


1. boolean Atom.isVisible()
   - returns (formalChargeAndFlags & VISIBLE_FLAG) != 0
   - called by
     BitSet Frame.getVisibleSet()
     - called by
       BitSet ModelManager.getVisibleSet()
       - called by
         BitSet Viewer.getVisibleSet()
         - called by
           BitSet Eval.expression(...)

   - called by
     boolean ModelManager.getAtomVisibility(int i)
     - called by
       Hashtable ModelManager.getAtomInfo(int i)
       - called by
         Vector ModelManager.getAllAtomInfo(String atomExpression)
         - called by
           Vector Viewer.getAllAtomInfo(String atomExpression)
           - called by
             Object PropertyManager.getPropertyAsObject(...)

so this is all Bob's doing, specifically for delivering information to the expression evaluator for scripting and to the browser via getProperty("atomInfo"). (Prior to this, Atom.isVisible() was present, just never accessed.)

2. boolean Atom.isCursorOnTopOfVisibleAtom()
   - called by
       void Balls.findNearestAtomIndex(int, int, Closest)
       - called by
         int Frame.FindNearestAtomIndex(int, int)
         - called by
           int ModelManager.FindNearestAtomIndex(int, int)
         - called by
           int Viewer.FindNearestAtomIndex(int, int)
           - called by
             MouseManager.HoverWatcher.run()
           - called by
             MouseManager.mouseClicked(...)
           - called by
             MouseManager.mouseMoved(...)

So this is Miguel's doing, specifically for delivering information to
the status line, displaying the hover business, doing atom picking, measuring, etc.

3. VISIBLE_FLAG: 15 occurances in project

   -class Atom: defined as 0x01
   -accessed by boolean Atom.isVisible()
     - called as above
   -accessed by boolean Atom.isCursorOnTopOfVisibleAtom()
     - called as above

   -set by void BackboneRenderer.render1Chain(...)
         based on display there
   -set by void BallsRenderer.render()
         based on current frame
   -set by void BallsRenderer.render(Atom)
         based on current mad/halo
   -set by void NucleicMonomer.getBaseRing6Points(...)
     - called by
         void CartoonRenderer.renderNucleicBaseStep(...)
   -set by void NucleicMonomer.maybeGetBaseRing5Points(...)
     - called by
         void CartoonRenderer.renderNucleicBaseStep(...)
   -set by void StarRender.render1(Atom,short,short)
   -set by void SticksRenderer.render(Bond)

3. observations:

zoom, translation, etc. have no effect on "select visible"
pretty much it does as advertised, with ONE exception:

The CartoonRenderer for nucleic acids is setting the VISIBLE flag so that atoms of the base pairs still are clickable and respond to mouse-overs for the hover. I makes reasonable sense to me. Like backbone, these positions really are atom positions. So they really are the only "visible" set. What this actually does is pass on the responsibility of identifying atoms as visible to Balls.

I'm satisfied that we are OK here. Of all the protein shapes, only two, backbone and cartoon (for nucleic acids only), display actual atoms, and those atoms are coming in as visible.

Here's a recrafted documentation statement:

An atom is "visible" if the atom is in a displayed frame and one of the following is true:

       a. it has spacefill > 0
       b. it has wireframe > 0
       c. it has a halo highlight
       d. it has a star highlight
       e. it is part of a displayed backbone
       f. it is part of a displayed nucleic acid base cartoon


Bob Hanson wrote:

I will investigate this fully and get back to all.


Bob



--

Robert M. Hanson, [EMAIL PROTECTED], 507-646-3107
Professor of Chemistry, St. Olaf College
1520 St. Olaf Ave., Northfield, MN 55057
mailto:[EMAIL PROTECTED]
http://www.stolaf.edu/people/hansonr

"Imagination is more important than knowledge."  - Albert Einstein


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Jmol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-developers

Reply via email to