View Javadoc
1   // ******************************************************************************
2   //
3   // Title:       Force Field X.
4   // Description: Force Field X - Software for Molecular Biophysics.
5   // Copyright:   Copyright (c) Michael J. Schnieders 2001-2024.
6   //
7   // This file is part of Force Field X.
8   //
9   // Force Field X is free software; you can redistribute it and/or modify it
10  // under the terms of the GNU General Public License version 3 as published by
11  // the Free Software Foundation.
12  //
13  // Force Field X is distributed in the hope that it will be useful, but WITHOUT
14  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
16  // details.
17  //
18  // You should have received a copy of the GNU General Public License along with
19  // Force Field X; if not, write to the Free Software Foundation, Inc., 59 Temple
20  // Place, Suite 330, Boston, MA 02111-1307 USA
21  //
22  // Linking this library statically or dynamically with other modules is making a
23  // combined work based on this library. Thus, the terms and conditions of the
24  // GNU General Public License cover the whole combination.
25  //
26  // As a special exception, the copyright holders of this library give you
27  // permission to link this library with independent modules to produce an
28  // executable, regardless of the license terms of these independent modules, and
29  // to copy and distribute the resulting executable under terms of your choice,
30  // provided that you also meet, for each linked independent module, the terms
31  // and conditions of the license of that module. An independent module is a
32  // module which is not derived from or based on this library. If you modify this
33  // library, you may extend this exception to your version of the library, but
34  // you are not obligated to do so. If you do not wish to do so, delete this
35  // exception statement from your version.
36  //
37  // ******************************************************************************
38  package ffx.potential.bonded;
39  
40  import ffx.potential.bonded.RendererCache.ColorModel;
41  import ffx.potential.bonded.RendererCache.ViewModel;
42  import java.util.List;
43  import javax.swing.tree.TreeNode;
44  import org.jogamp.java3d.BranchGroup;
45  import org.jogamp.java3d.Canvas3D;
46  import org.jogamp.java3d.J3DGraphics2D;
47  import org.jogamp.java3d.Material;
48  import org.jogamp.java3d.Node;
49  import org.jogamp.vecmath.Color3f;
50  
51  /**
52   * The ROLS Interace defines "Recursive Over Length Scales" (ROLS) Methods.
53   *
54   * @author Michael J. Schnieders
55   * @since 1.0
56   */
57  public interface ROLS {
58  
59    /** Constant <code>MaxLengthScale=5</code> */
60    int MaxLengthScale = 5;
61  
62    /**
63     * drawLabel
64     *
65     * @param graphics a {@link org.jogamp.java3d.Canvas3D} object.
66     * @param g2d a {@link org.jogamp.java3d.J3DGraphics2D} object.
67     * @param node a {@link org.jogamp.java3d.Node} object.
68     */
69    void drawLabel(Canvas3D graphics, J3DGraphics2D g2d, Node node);
70  
71    /**
72     * getCenter
73     *
74     * @param w a boolean.
75     * @return an array of double.
76     */
77    double[] getCenter(boolean w);
78  
79    /**
80     * getList
81     *
82     * @param c a {@link java.lang.Class} object.
83     * @param nodes a {@link java.util.List} object.
84     * @param <T> Node Type to collect.
85     * @return a {@link java.util.List} object.
86     */
87    <T extends TreeNode> List<T> getList(Class<T> c, List<T> nodes);
88  
89    /**
90     * getMSCount
91     *
92     * @param c a {@link java.lang.Class} object.
93     * @param count a long.
94     * @param <T> Node Type to count.
95     * @return a long.
96     */
97    <T extends TreeNode> long getMSCount(Class<T> c, long count);
98  
99    /**
100    * getMSNode
101    *
102    * @param c a {@link java.lang.Class} object.
103    * @param <T> Node Type to look for.
104    * @return The node.
105    */
106   <T extends TreeNode> T getMSNode(Class<T> c);
107 
108   /**
109    * getMW
110    *
111    * @return a double.
112    */
113   double getMW();
114 
115   /**
116    * setColor
117    *
118    * @param colorModel a {@link ffx.potential.bonded.RendererCache.ColorModel} object.
119    * @param color a {@link org.jogamp.vecmath.Color3f} object.
120    * @param mat a {@link org.jogamp.java3d.Material} object.
121    */
122   void setColor(ColorModel colorModel, Color3f color, Material mat);
123 
124   /**
125    * setView
126    *
127    * @param viewModel a {@link ffx.potential.bonded.RendererCache.ViewModel} object.
128    * @param newShapes a {@link java.util.List} object.
129    */
130   void setView(ViewModel viewModel, List<BranchGroup> newShapes);
131 
132   /** update */
133   void update();
134 }