From: Miguel <mig...@us...> - 2005-08-10 16:35:14
|
Update of /cvsroot/jmol/Jmol/src/org/jmol/viewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23912/src/org/jmol/viewer Modified Files: Eval.java JmolConstants.java Sasurface.java SasurfaceRenderer.java Log Message: Support multiple surfaces Index: Eval.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Eval.java,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- Eval.java 8 Aug 2005 22:21:44 -0000 1.54 +++ Eval.java 10 Aug 2005 16:35:01 -0000 1.55 @@ -3435,26 +3435,31 @@ } void sasurface() throws ScriptException { - short mad = -1; - if (statementLength > 1) { - switch (statement[1].tok) { - case Token.on: + viewer.setShapeSize(JmolConstants.SHAPE_SASURFACE, 1); + viewer.setShapeProperty(JmolConstants.SHAPE_SASURFACE, "surfaceID", null); + for (int i = 1; i < statementLength; ++i) { + String propertyName = null; + Object propertyValue = null; + switch (statement[i].tok) { + case Token.identifier: + propertyValue = statement[i].value; + // fall into + case Token.all: + propertyName = "surfaceID"; break; + case Token.on: case Token.off: - mad = 0; + propertyName = (String)statement[i].value; break; - case Token.integer: - int dotsParam = statement[1].intValue; - if (dotsParam < 0 || dotsParam > 1000) - numberOutOfRange(); - // I don't know what to do with this thing yet - mad = (short)dotsParam; + case Token.delete: + propertyName = "delete"; break; default: - booleanOrNumberExpected(); + invalidArgument(); } + viewer.setShapeProperty(JmolConstants.SHAPE_SASURFACE, + propertyName, propertyValue); } - viewer.setShapeSize(JmolConstants.SHAPE_SURFACE, mad); } void centerAt() throws ScriptException { Index: JmolConstants.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/JmolConstants.java,v retrieving revision 1.87 retrieving revision 1.88 diff -u -r1.87 -r1.88 --- JmolConstants.java 8 Aug 2005 22:21:44 -0000 1.87 +++ JmolConstants.java 10 Aug 2005 16:35:01 -0000 1.88 @@ -2060,7 +2060,7 @@ public final static int SHAPE_HOVER = 21; public final static int SHAPE_PMESH = 22; public final static int SHAPE_POLYHEDRA = 23; - public final static int SHAPE_SURFACE = 24; + public final static int SHAPE_SASURFACE = 24; public final static int SHAPE_ISOSURFACE = 25; public final static int SHAPE_PRUEBA = 26; public final static int SHAPE_MAX = 27; Index: Sasurface.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Sasurface.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Sasurface.java 28 Jul 2005 02:21:45 -0000 1.1 +++ Sasurface.java 10 Aug 2005 16:35:01 -0000 1.2 @@ -25,1814 +25,80 @@ package org.jmol.viewer; -import org.jmol.util.Bmp; import org.jmol.g3d.Graphics3D; - -import javax.vecmath.*; -import java.util.Hashtable; import java.util.BitSet; -import java.util.Enumeration; - [...1828 lines suppressed...] - System.out.println("edgeCount=" + edgeCount); - return edgeCount; - } - - void calcConvexPoints(Atom atom, int edgeVertexCount, short[] edgeVertexes, - Point3f[] points) { - float radius = atom.getVanderwaalsRadiusFloat(); - Point3f center = atom.point3f; - for (int i = edgeVertexCount; --i >= 0; ) { - int v = edgeVertexes[i]; - vectorT.scale(radius, geodesicVertexVectors[v]); - points[i].add(center, vectorT); - } + void allocSurface(String surfaceID, BitSet bs) { + System.out.println("allocSurface(" + surfaceID + ")"); + surfaces = (Sasurface1[])Util.ensureLength(surfaces, surfaceCount + 1); + currentSurface = surfaces[surfaceCount++] = + new Sasurface1(surfaceID, viewer, g3d, Graphics3D.YELLOW, bs); } } Index: SasurfaceRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/SasurfaceRenderer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SasurfaceRenderer.java 28 Jul 2005 02:21:45 -0000 1.1 +++ SasurfaceRenderer.java 10 Aug 2005 16:35:01 -0000 1.2 @@ -58,12 +58,21 @@ scalePixelsPerAngstrom = (int)viewer.getScalePixelsPerAngstrom(); bondSelectionModeOr = viewer.getBondSelectionModeOr(); - Sasurface surface = (Sasurface)shape; - if (surface == null) + Sasurface sasurface = (Sasurface)shape; + if (sasurface == null) return; + int surfaceCount = sasurface.surfaceCount; + if (surfaceCount == 0) + return; + Sasurface1[] surfaces = sasurface.surfaces; hideSaddles = viewer.getTestFlag1(); hideCavities = viewer.getTestFlag2(); hideConvex = viewer.getTestFlag3(); + for (int i = surfaceCount; --i >= 0; ) + renderSasurface1(surfaces[i]); + } + + void renderSasurface1(Sasurface1 surface) { int renderingLevel = surface.geodesicRenderingLevel; radiusP = surface.radiusP; geodesicVertexCount = surface.geodesicVertexCount; @@ -88,12 +97,12 @@ int[] faceMap = convexFaceMaps[i]; Atom atom = atoms[i]; if (displayModelIndex < 0 || displayModelIndex == atom.modelIndex) - renderConvex(atom, colixesConvex[i], vertexMap, faceMap); + renderConvex(surface, atom, colixesConvex[i], vertexMap, faceMap); } } - Sasurface.Torus[] toruses = surface.toruses; + Sasurface1.Torus[] toruses = surface.toruses; for (int i = surface.torusCount; --i >= 0; ) { - Sasurface.Torus torus = toruses[i]; + Sasurface1.Torus torus = toruses[i]; /* renderToruX(torus, atoms[ixI], convexVertexMaps[ixI], @@ -103,7 +112,7 @@ */ renderTorus(torus, atoms, colixesConvex, convexVertexMaps); } - Sasurface.Cavity[] cavities = surface.cavities; + Sasurface1.Cavity[] cavities = surface.cavities; for (int i = surface.cavityCount; --i >= 0; ) renderCavity(cavities[i], atoms, colixesConvex, @@ -127,13 +136,14 @@ private final static boolean CONVEX_DOTS = false; private final static boolean CAVITY_DOTS = true; - void renderConvex(Atom atom, short colix, int[] vertexMap, int[] faceMap) { + void renderConvex(Sasurface1 surface, Atom atom, + short colix, int[] vertexMap, int[] faceMap) { if (hideConvex) return; Point3i[] screens = screensCache.lookup(atom, vertexMap); colix = Graphics3D.inheritColix(colix, atom.colixAtom); if (CONVEX_DOTS) { - int[] edgeVertexes = ((Sasurface)shape).calcEdgeVertexes(vertexMap); + int[] edgeVertexes = surface.calcEdgeVertexes(vertexMap); for (int vertex = Bmp.getMaxMappedBit(vertexMap); --vertex >= 0; ) { if (Bmp.getBit(edgeVertexes, vertex)) { Point3i screen = screens[vertex]; @@ -159,7 +169,7 @@ //////////////////////////////////////////////////////////////// // torus rendering - void renderTorus(Sasurface.Torus torus, + void renderTorus(Sasurface1.Torus torus, Atom[] atoms, short[] convexColixes, int[][] convexVertexMaps) { // if (convexVertexMaps[torus.ixA] != null) @@ -183,10 +193,10 @@ final AxisAngle4f aaT = new AxisAngle4f(); final AxisAngle4f aaT1 = new AxisAngle4f(); - static final int INNER_TORUS_STEP_COUNT = Sasurface.INNER_TORUS_STEP_COUNT; - static final int OUTER_TORUS_STEP_COUNT = Sasurface.OUTER_TORUS_STEP_COUNT; - static final float INNER_TORUS_STEP_ANGLE = Sasurface.INNER_TORUS_STEP_ANGLE; - final static int MAX_SEGMENT_COUNT = Sasurface.MAX_SEGMENT_COUNT; + static final int INNER_TORUS_STEP_COUNT = Sasurface1.INNER_TORUS_STEP_COUNT; + static final int OUTER_TORUS_STEP_COUNT = Sasurface1.OUTER_TORUS_STEP_COUNT; + static final float INNER_TORUS_STEP_ANGLE=Sasurface1.INNER_TORUS_STEP_ANGLE; + final static int MAX_SEGMENT_COUNT = Sasurface1.MAX_SEGMENT_COUNT; final Matrix3f matrixT = new Matrix3f(); final Matrix3f matrixT1 = new Matrix3f(); final Point3f pointT = new Point3f(); @@ -207,7 +217,7 @@ final byte[] torusSegmentStarts = new byte[MAX_SEGMENT_COUNT]; - void renderTorus(Sasurface.Torus torus, short[] colixes) { + void renderTorus(Sasurface1.Torus torus, short[] colixes) { torus.calcPoints(torusPoints); Point3i[] screens = torusScreens; torus.calcScreens(torusPoints, torusScreens); @@ -254,7 +264,7 @@ renderTorusAtomConnections(torus, null); } - void renderTorusEdges(Sasurface.Torus torus) { + void renderTorusEdges(Sasurface1.Torus torus) { Point3i[] screens = torusScreens; // show torus edges int segmentCount = torus.countContiguousSegments(torusSegmentStarts); @@ -275,7 +285,7 @@ } } - void renderTorusAtomConnections(Sasurface.Torus torus, + void renderTorusAtomConnections(Sasurface1.Torus torus, Point3i screensConvex) { System.out.println("torus.connectAConvex=" + torus.connectAConvex); @@ -307,7 +317,7 @@ final short[] torusColixes = new short[OUTER_TORUS_STEP_COUNT]; - void prepareTorusColixes(Sasurface.Torus torus, short[] convexColixes, + void prepareTorusColixes(Sasurface1.Torus torus, short[] convexColixes, Atom[] atoms) { int ixA = torus.ixA; int ixB = torus.ixB; @@ -345,7 +355,7 @@ boolean SHOW_TORUS_CAVITY_FOO = false; - void renderCavity(Sasurface.Cavity cavity, Atom[] atoms, + void renderCavity(Sasurface1.Cavity cavity, Atom[] atoms, short[] colixesCavity, int[][] convexVertexMaps) { if (hideCavities) @@ -379,7 +389,7 @@ } } - void renderCavity2(Sasurface.Cavity cavity, Atom[] atoms, + void renderCavity2(Sasurface1.Cavity cavity, Atom[] atoms, short[] colixesCavity, int[][] convexVertexMaps) { if (hideCavities) |