Revision: 18568
          http://sourceforge.net/p/jmol/code/18568
Author:   hansonr
Date:     2013-08-14 13:27:57 +0000 (Wed, 14 Aug 2013)
Log Message:
-----------
___JmolVersion="13.3.4_dev_2013.08.14"

FEATURE CHANGE: set wireframeRotation expanded to include bioshapes and 
isosurfaces

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/render/MeshRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/StrandsRenderer.java
    trunk/Jmol/src/org/jmol/renderbio/TraceRenderer.java
    trunk/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties

Modified: trunk/Jmol/src/org/jmol/render/MeshRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/render/MeshRenderer.java    2013-08-14 11:48:10 UTC 
(rev 18567)
+++ trunk/Jmol/src/org/jmol/render/MeshRenderer.java    2013-08-14 13:27:57 UTC 
(rev 18568)
@@ -134,7 +134,8 @@
   private boolean doRender;
   protected boolean volumeRender;
   protected BS bsPolygons;
-  protected boolean isTranslucentInherit;  
+  protected boolean isTranslucentInherit;
+  protected boolean wireframeOnly;  
   
   private boolean setVariables() {
     if (mesh.visibilityFlags == 0)
@@ -170,7 +171,8 @@
       bsPolygons = (isGhostPass ? mesh.bsSlabGhost
           : selectedPolyOnly ? mesh.bsSlabDisplay : null);
       
-      frontOnly = !viewer.getSlabEnabled() && mesh.frontOnly
+      wireframeOnly = (!isExport && viewer.getBoolean(T.wireframerotation) && 
viewer.getInMotion(true));
+      frontOnly = wireframeOnly || !viewer.getSlabEnabled() && mesh.frontOnly
           && !mesh.isTwoSided && !selectedPolyOnly;
       screens = viewer.allocTempScreens(vertexCount);
       if (frontOnly)
@@ -214,10 +216,10 @@
     if (!g3d.setColix(isGhostPass ? mesh.slabColix : colix))
       return;
     if (mesh.showPoints || mesh.polygonCount == 0)
-      renderPoints();    
-    if (isGhostPass ? mesh.slabMeshType == T.mesh : mesh.drawTriangles)
+      renderPoints(); 
+    if (wireframeOnly || (isGhostPass ? mesh.slabMeshType == T.mesh : 
mesh.drawTriangles))
       renderTriangles(false, mesh.showTriangles, false);
-    if (isGhostPass ? mesh.slabMeshType == T.fill : mesh.fillTriangles)
+    if (!wireframeOnly && (isGhostPass ? mesh.slabMeshType == T.fill : 
mesh.fillTriangles))
       renderTriangles(true, mesh.showTriangles, generateSet);
   }
 
@@ -360,24 +362,25 @@
       exportSurface(colix);
   }
 
-  protected void drawTriangle(P3i screenA, short colixA, 
-                            P3i screenB, short colixB, 
-                            P3i screenC, short colixC, int check, int diam) {
-    if (antialias || diam != 1) {
-      if (antialias)
-        diam <<= 1;
-      if ((check & 1) == 1)
-        g3d.fillCylinderXYZ(colixA, colixB, GData.ENDCAPS_OPEN, diam, 
-            screenA.x, screenA.y, screenA.z, screenB.x, screenB.y, screenB.z);
-      if ((check & 2) == 2)
-        g3d.fillCylinderXYZ(colixB, colixC, GData.ENDCAPS_OPEN, diam, 
-            screenB.x, screenB.y, screenB.z, screenC.x, screenC.y, screenC.z);
-      if ((check & 4) == 4)
-        g3d.fillCylinderXYZ(colixA, colixC, GData.ENDCAPS_OPEN, diam, 
-            screenA.x, screenA.y, screenA.z, screenC.x, screenC.y, screenC.z);
-    } else {
-      g3d.drawTriangle3C(screenA, colixA, screenB, colixB, screenC, colixC, 
check);
+  protected void drawTriangle(P3i screenA, short colixA, P3i screenB,
+                              short colixB, P3i screenC, short colixC,
+                              int check, int diam) {
+    if (wireframeOnly || !antialias && diam == 1) {
+      g3d.drawTriangle3C(screenA, colixA, screenB, colixB, screenC, colixC,
+          check);
+      return;
     }
+    if (antialias)
+      diam <<= 1;
+    if ((check & 1) == 1)
+      g3d.fillCylinderXYZ(colixA, colixB, GData.ENDCAPS_OPEN, diam, screenA.x,
+          screenA.y, screenA.z, screenB.x, screenB.y, screenB.z);
+    if ((check & 2) == 2)
+      g3d.fillCylinderXYZ(colixB, colixC, GData.ENDCAPS_OPEN, diam, screenB.x,
+          screenB.y, screenB.z, screenC.x, screenC.y, screenC.z);
+    if ((check & 4) == 4)
+      g3d.fillCylinderXYZ(colixA, colixC, GData.ENDCAPS_OPEN, diam, screenA.x,
+          screenA.y, screenA.z, screenC.x, screenC.y, screenC.z);
   }
 
   protected int checkNormals(short nA, short nB, short nC) {

Modified: trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java     2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java     2013-08-14 
13:27:57 UTC (rev 18568)
@@ -110,7 +110,6 @@
     needTranslucent = false;
     boolean TF = (!isExport && viewer.getBoolean(T.wireframerotation) && 
viewer.getInMotion(true));
     
-    System.out.println(viewer.getBoolean(T.wireframerotation) + " bioshaperend 
" + viewer.getInMotion(true));
     if (TF != wireframeOnly)
       invalidateMesh = true;
     wireframeOnly = TF;

Modified: trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java      2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/CartoonRenderer.java      2013-08-14 
13:27:57 UTC (rev 18568)
@@ -42,8 +42,15 @@
   
   @Override
   protected void renderBioShape(BioShape bioShape) {
+    if (wireframeOnly) {
+      if (wingVectors == null || isCarbohydrate)
+        renderTrace();
+      else
+        renderMeshRibbon();        
+      return;
+    }
     newRockets = true;
-    if (bioShape.wingVectors == null || isCarbohydrate)
+    if (wingVectors == null || isCarbohydrate)
       return;
     getScreenControlPoints();
     if (isNucleic) {
@@ -67,7 +74,7 @@
       calcScreenControlPoints(cordMidPoints);
       controlPoints = cordMidPoints;
     }
-    render1();
+    renderRockets();
     viewer.freeTempPoints(cordMidPoints);
     viewer.freeTempScreens(ribbonTopScreens);
     viewer.freeTempScreens(ribbonBottomScreens);
@@ -101,7 +108,7 @@
   }
 
   @Override
-  protected void render1() {
+  protected void renderRockets() {
     boolean lastWasSheet = false;
     boolean lastWasHelix = false;
     ProteinStructure previousStructure = null;
@@ -143,10 +150,10 @@
       lastWasHelix = isHelix;
     }
     if (renderAsRockets || !renderArrowHeads)
-      renderRockets();
+      renderCartoonRockets();
   }
 
-  private void renderRockets() {
+  private void renderCartoonRockets() {
     // doing the cylinders separately because we want to connect them if we 
can.
 
     // Key structures that must render properly

Modified: trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java   2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java   2013-08-14 
13:27:57 UTC (rev 18568)
@@ -30,11 +30,15 @@
 
   @Override
   protected void renderBioShape(BioShape bioShape) {
+    renderMeshRibbon();
+  }
+
+  protected void renderMeshRibbon() {
     if (!setStrandCount())
       return;
-    float offset = ((strandCount >> 1) * strandSeparation) + baseOffset;
+    float offset = ((strandCount >> 1) * strandSeparation) + baseStrandOffset;
     render2Strand(false, offset, offset);
-    render1();
+    renderStrands();
   }
 
   protected void render2Strand(boolean doFill, float offsetTop, float 
offsetBottom) {

Modified: trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java      2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java      2013-08-14 
13:27:57 UTC (rev 18568)
@@ -33,6 +33,10 @@
   protected void renderBioShape(BioShape bioShape) {
     if (wingVectors == null)
       return;
+    if (wireframeOnly) {
+      renderMeshRibbon();
+      return;
+    }
     render2Strand(true, isNucleic ? 1f : 0.5f, isNucleic ? 0f : 0.5f);
   }
 }

Modified: trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java      2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/RocketsRenderer.java      2013-08-14 
13:27:57 UTC (rev 18568)
@@ -37,7 +37,7 @@
 import org.jmol.util.V3;
 
 
-public class RocketsRenderer extends BioShapeRenderer {
+public class RocketsRenderer extends MeshRibbonRenderer {
 
   //private final static float MIN_CONE_HEIGHT = 0.05f;
 
@@ -48,6 +48,10 @@
   protected void renderBioShape(BioShape bioShape) {
     if (!(bioShape.bioPolymer instanceof AlphaPolymer))
       return;
+    if (wireframeOnly) {
+      renderMeshRibbon();
+      return;
+    }
     boolean val = !viewer.getBoolean(T.rocketbarrels);
     if (renderArrowHeads != val) {
       bioShape.falsifyMesh();
@@ -56,7 +60,7 @@
     calcRopeMidPoints(newRockets);    
     calcScreenControlPoints(cordMidPoints);
     controlPoints = cordMidPoints;
-    render1();
+    renderRockets();
     viewer.freeTempPoints(cordMidPoints);
   }
 
@@ -99,7 +103,7 @@
     }
   }
 
-  protected void render1() {
+  protected void renderRockets() {
     tPending = false;
     for (int i = bsVisible.nextSetBit(0); i >= 0; i = bsVisible
         .nextSetBit(i + 1)) {

Modified: trunk/Jmol/src/org/jmol/renderbio/StrandsRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/StrandsRenderer.java      2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/StrandsRenderer.java      2013-08-14 
13:27:57 UTC (rev 18568)
@@ -29,48 +29,52 @@
 import org.jmol.shapebio.Strands;
 import org.jmol.util.P3i;
 
-public class StrandsRenderer extends BioShapeRenderer {
+public class StrandsRenderer extends TraceRenderer {
 
   protected int strandCount;
   protected float strandSeparation;
-  protected float baseOffset;
+  protected float baseStrandOffset;
 
   @Override
   protected void renderBioShape(BioShape bioShape) {
+    renderStrandShape();
+  }
+  
+  protected void renderStrandShape() {
     if (!setStrandCount())
       return;
-    render1();
+    renderStrands();
   }
-  
+
   protected boolean setStrandCount() {
     if (wingVectors == null)
       return false;
-    strandCount = viewer.getStrandCount(((Strands) shape).shapeID);
+    strandCount = (shape instanceof Strands ? viewer.getStrandCount(((Strands) 
shape).shapeID) : 10);
     strandSeparation = (strandCount <= 1) ? 0 : 1f / (strandCount - 1);
-    baseOffset = ((strandCount & 1) == 0 ? strandSeparation / 2
+    baseStrandOffset = ((strandCount & 1) == 0 ? strandSeparation / 2
         : strandSeparation);
     return true;
   }
 
-  protected void render1() {
+  protected void renderStrands() {
     P3i[] screens;
     for (int i = strandCount >> 1; --i >= 0;) {
-      float f = (i * strandSeparation) + baseOffset;
+      float f = (i * strandSeparation) + baseStrandOffset;
       screens = calcScreens(f);
-      render1Strand(screens);
+      renderStrand(screens);
       viewer.freeTempScreens(screens);
       screens = calcScreens(-f);
-      render1Strand(screens);
+      renderStrand(screens);
       viewer.freeTempScreens(screens);
     }
     if (strandCount % 2 == 1) {
       screens = calcScreens(0f);
-      render1Strand(screens);
+      renderStrand(screens);
       viewer.freeTempScreens(screens);
     }
   }
 
-  private void render1Strand(P3i[] screens) {
+  private void renderStrand(P3i[] screens) {
     for (int i = bsVisible.nextSetBit(0); i >= 0; i = bsVisible.nextSetBit(i + 
1))
       renderHermiteCylinder(screens, i);
   }

Modified: trunk/Jmol/src/org/jmol/renderbio/TraceRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/renderbio/TraceRenderer.java        2013-08-14 
11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/renderbio/TraceRenderer.java        2013-08-14 
13:27:57 UTC (rev 18568)
@@ -31,6 +31,10 @@
 
   @Override
   protected void renderBioShape(BioShape bioShape) {
+    renderTrace();
+  }
+
+  protected void renderTrace() {
     getScreenControlPoints();
     for (int i = bsVisible.nextSetBit(0); i >= 0; i = bsVisible.nextSetBit(i + 
1))
       renderHermiteConic(i, false);

Modified: trunk/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java       
2013-08-14 11:48:10 UTC (rev 18567)
+++ trunk/Jmol/src/org/jmol/rendersurface/IsosurfaceRenderer.java       
2013-08-14 13:27:57 UTC (rev 18568)
@@ -52,7 +52,8 @@
   private Boolean showKey;
   private boolean hasColorRange;
   private int meshScale = -1;
-  
+  private int mySlabValue;
+  private int globalSlabValue;
 
   @Override
   protected boolean render() {
@@ -60,32 +61,20 @@
   }
 
   protected boolean renderIso() {
-    needTranslucent = false;
-    iShowNormals = viewer.getTestFlag(4);
-    showNumbers = viewer.getTestFlag(3);
-    isosurface = (Isosurface) shape;
-    // exporters will do two passes here if there is translucency
-    // first pass is #2 (translucent), then #1 (opaque).
-    exportPass = (isExport ? 2 : 0); 
-    isNavigationMode = viewer.getBoolean(T.navigationmode);
-    int mySlabValue = Integer.MAX_VALUE;
-    int slabValue = g3d.getSlab();
-    showKey = (viewer.getBoolean(T.isosurfacekey) ? Boolean.TRUE : null);
-    if (isNavigationMode)
-      mySlabValue = (int) viewer.getNavigationOffset().z;
-    isosurface.keyXy = null;
-    meshScale = -1;
+    
+    setGlobals();
+
     for (int i = isosurface.meshCount; --i >= 0;) {
       imesh = (IsosurfaceMesh) isosurface.meshes[i];
       if (imesh.connections != null && 
!viewer.getModelSet().atoms[imesh.connections[0]].isVisible(0))
         continue;
       hasColorRange = false;
-      if (renderMeshSlab(mySlabValue, slabValue)) {
+      if (renderMeshSlab()) {
         if (!isExport)
           renderInfo();
         if (isExport && isGhostPass) {
           exportPass = 1;
-          renderMeshSlab(mySlabValue, slabValue);
+          renderMeshSlab();
           exportPass = 2;
         }
       }
@@ -93,6 +82,22 @@
     return needTranslucent;
   }
 
+  private void setGlobals() {
+    needTranslucent = false;
+    iShowNormals = viewer.getTestFlag(4);
+    showNumbers = viewer.getTestFlag(3);
+    isosurface = (Isosurface) shape;
+    // exporters will do two passes here if there is translucency
+    // first pass is #2 (translucent), then #1 (opaque).
+    exportPass = (isExport ? 2 : 0); 
+    isNavigationMode = viewer.getBoolean(T.navigationmode);
+    showKey = (viewer.getBoolean(T.isosurfacekey) ? Boolean.TRUE : null);
+    isosurface.keyXy = null;
+    meshScale = -1;
+    globalSlabValue = g3d.getSlab();
+    mySlabValue = (isNavigationMode ? (int) viewer.getNavigationOffset().z : 
Integer.MAX_VALUE);
+  }
+
   protected void renderInfo() {
     if (hasColorRange && imesh.colorEncoder != null && Boolean.TRUE == showKey)
       showKey();
@@ -150,8 +155,9 @@
     isosurface.keyXy[1] = (y + dy) / factor;
   }
   
-  private boolean renderMeshSlab(int mySlabValue, int slabValue) {
+  private boolean renderMeshSlab() {
     volumeRender = (imesh.jvxlData.colorDensity && 
imesh.jvxlData.allowVolumeRender);
+    int thisSlabValue = mySlabValue;
     if (!isNavigationMode) {
       int meshSlabValue = imesh.jvxlData.slabValue;
       if (meshSlabValue != Integer.MIN_VALUE  
@@ -162,7 +168,7 @@
         pt2f.scale(0.5f); // center
         viewer.transformPt3f(pt2f, pt2f);
         float r = viewer.scaleToScreen((int)pt2f.z, 
Math.round(points[0].distance(points[1]) * 500f));
-        mySlabValue = Math.round(pt2f.z + r * (1 - meshSlabValue / 50f));
+        thisSlabValue = Math.round(pt2f.z + r * (1 - meshSlabValue / 50f));
       }
     }
     boolean tcover = g3d.getTranslucentCoverOnly();
@@ -170,10 +176,10 @@
     thePlane = imesh.jvxlData.jvxlPlane;
     vertexValues = imesh.vertexValues;
     boolean isOK;
-    if (mySlabValue != Integer.MAX_VALUE && imesh.jvxlData.isSlabbable) {
-      g3d.setSlab(mySlabValue);
+    if (thisSlabValue != Integer.MAX_VALUE && imesh.jvxlData.isSlabbable) {
+      g3d.setSlab(thisSlabValue);
       isOK = renderMesh(imesh);
-      g3d.setSlab(slabValue);
+      g3d.setSlab(globalSlabValue);
     } else {
       isOK = renderMesh(imesh);
     }

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2013-08-14 11:48:10 UTC 
(rev 18567)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2013-08-14 13:27:57 UTC 
(rev 18568)
@@ -13,6 +13,8 @@
 
 ___JmolVersion="13.3.4_dev_2013.08.14"
 
+FEATURE CHANGE: set wireframeRotation expanded to include bioshapes and 
isosurfaces
+bug fix: isosurface slab not allowing two different slabs for two diffrent 
isosurfaces
 bug fix: set wireframeRotation not working ("inMotion" flag not properly read 
in Viewer).
 bug fix: screen repaints were being requested far too frequently
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to