Revision: 20923
          http://sourceforge.net/p/jmol/code/20923
Author:   hansonr
Date:     2016-01-06 12:26:15 +0000 (Wed, 06 Jan 2016)
Log Message:
-----------
Jmol.___JmolVersion="14.4.1_2016.01.06"

bug fix: labels, echos, and measurements disappear when z-shaded

Modified Paths:
--------------
    branches/v14_4/Jmol/src/org/jmol/api/JmolRendererInterface.java
    branches/v14_4/Jmol/src/org/jmol/export/Export3D.java
    branches/v14_4/Jmol/src/org/jmol/g3d/Graphics3D.java
    branches/v14_4/Jmol/src/org/jmol/g3d/Pixelator.java
    branches/v14_4/Jmol/src/org/jmol/g3d/PixelatorT.java
    branches/v14_4/Jmol/src/org/jmol/g3d/TextRenderer.java
    branches/v14_4/Jmol/src/org/jmol/render/EchoRenderer.java
    branches/v14_4/Jmol/src/org/jmol/render/LabelsRenderer.java
    branches/v14_4/Jmol/src/org/jmol/render/MeasuresRenderer.java
    branches/v14_4/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java
    branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
    trunk/Jmol/src/org/jmol/api/JmolRendererInterface.java
    trunk/Jmol/src/org/jmol/export/Export3D.java
    trunk/Jmol/src/org/jmol/g3d/Graphics3D.java
    trunk/Jmol/src/org/jmol/g3d/Pixelator.java
    trunk/Jmol/src/org/jmol/g3d/PixelatorT.java
    trunk/Jmol/src/org/jmol/g3d/TextRenderer.java
    trunk/Jmol/src/org/jmol/render/EchoRenderer.java
    trunk/Jmol/src/org/jmol/render/LabelsRenderer.java
    trunk/Jmol/src/org/jmol/render/MeasuresRenderer.java
    trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties

Modified: branches/v14_4/Jmol/src/org/jmol/api/JmolRendererInterface.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/api/JmolRendererInterface.java     
2016-01-05 03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/api/JmolRendererInterface.java     
2016-01-06 12:26:15 UTC (rev 20923)
@@ -260,7 +260,7 @@
                                         double privateKey,
                                         Map<String, Object> params);
 
-  public abstract void plotImagePixel(int argb, int x, int y, int z, int 
shade, int bgargb, int width, int  height, int[] zbuf, Object pixel, int 
transpLog);
+  public abstract void plotImagePixel(int argb, int x, int y, int z, byte 
shade, int bgargb, int width, int  height, int[] zbuf, Object pixel, int 
transpLog);
 
   public abstract void plotPixelClippedP3i(P3i a);
 

Modified: branches/v14_4/Jmol/src/org/jmol/export/Export3D.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/export/Export3D.java       2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/export/Export3D.java       2016-01-06 
12:26:15 UTC (rev 20923)
@@ -789,7 +789,7 @@
   }
 
   @Override
-  public void plotImagePixel(int argb, int x, int y, int z, int shade,
+  public void plotImagePixel(int argb, int x, int y, int z, byte shade,
                              int bgargb, int width, int height, int[] pbuf, 
Object p, int transpLog) {
     // from Text3D
     if (isWebGL)

Modified: branches/v14_4/Jmol/src/org/jmol/g3d/Graphics3D.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/g3d/Graphics3D.java        2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/g3d/Graphics3D.java        2016-01-06 
12:26:15 UTC (rev 20923)
@@ -432,7 +432,7 @@
     if (pbuf != null) {
       if (isPass2 && pbufT != null)
         for (int offset = pbufT.length; --offset >= 0;)
-          mergeBufferPixel(pbuf, offset, pbufT[offset], bgcolor);
+          pbuf[offset] = mergeBufferPixel(pbuf[offset], pbufT[offset], 
bgcolor);
       
       if (pixel == pixelShaded && pixelShaded.zShadePower == 0)
         pixelShaded.showZBuffer();
@@ -455,13 +455,10 @@
     currentlyRendering = isPass2 = false;
   }
 
-  public static void mergeBufferPixel(int[] pbuf, int offset, int argbB,
+  public static int mergeBufferPixel(int argbA, int argbB,
                                       int bgcolor) {
-    if (argbB == 0)
-      return;
-    int argbA = pbuf[offset];
-    if (argbA == argbB)
-      return;
+    if (argbB == 0 || argbA == argbB)
+      return argbA;
     if (argbA == 0)
       argbA = bgcolor;
     int rbA = (argbA & 0x00FF00FF);
@@ -510,7 +507,7 @@
       gA = (((gA << 2) + (gA << 1) + gA + gB) >> 3) & 0x0000FF00;
       break;
     }
-    pbuf[offset] = 0xFF000000 | rbA | gA;
+    return 0xFF000000 | rbA | gA;
   }
 
   @Override
@@ -1193,7 +1190,7 @@
         for (int j = 0; j < imageWidth; j++) {
           int b = buffer[offset++];
           if ((b & 0xFF000000) == (0xFF000000 & 0xFF000000))
-            jmolRenderer.plotImagePixel(b, x + j, y + i, z, 8, bg, w,
+            jmolRenderer.plotImagePixel(b, x + j, y + i, z, (byte) 8, bg, w,
               h, zb, p, t);
         }
     }
@@ -1608,24 +1605,13 @@
   }
 
   @Override
-  public void plotImagePixel(int argb, int x, int y, int z, int shade,
+  public void plotImagePixel(int argb, int x, int y, int z, byte shade,
                              int bgargb, int width, int height, int[] zbuf,
                              Object p, int transpLog) {
     // drawString via text3d.plotClipped; overridden in Export
     if (x < 0 || x >= width || y < 0 || y >= height)
       return;
-    int offset = y * width + x;
-    if (z < zbuf[offset]) {
-      if (shade == 8)
-        ((Pixelator) p).addPixel(offset, z, argb);
-      else {
-        // shade is a log of translucency, so adding two is equivalent to
-        // multiplying them. Works like a charm! - BH 
-        shade += transpLog;
-        if (shade <= 7)
-          shadeTextPixel(offset, z, argb, bgargb, shade, zbuf);
-      }
-    }
+    ((Pixelator)p).addImagePixel(shade, transpLog, y * width + x, z, argb, 
bgargb);
   }
 
   void plotPixelsClippedRaster(int count, int x, int y, int zAtLeft,
@@ -2046,12 +2032,4 @@
     return false;
   }
 
-  void shadeTextPixel(int offset, int z, int argb, int bgargb, int shade,
-                      int[] zbuf) {
-    if (bgargb != 0)
-      mergeBufferPixel(pbuf, offset, bgargb, bgcolor);
-    mergeBufferPixel(pbuf, offset, (argb & 0xFFFFFF) | shade << 24, bgcolor);
-    zbuf[offset] = z;
-  }
-
 }

Modified: branches/v14_4/Jmol/src/org/jmol/g3d/Pixelator.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/g3d/Pixelator.java 2016-01-05 03:07:48 UTC 
(rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/g3d/Pixelator.java 2016-01-06 12:26:15 UTC 
(rev 20923)
@@ -60,4 +60,29 @@
     pb[offset] = p;
   }
 
+  public void addImagePixel(byte shade, int tLog, int offset, int z, int argb,
+                            int bgargb) {
+    if (z < zb[offset]) {
+      switch (shade) {
+      case 0:
+        return;
+      case 8:
+        addPixel(offset, z, argb);
+        return;
+      default:
+        // shade is a log of translucency, so adding two is equivalent to
+        // multiplying them. Works like a charm! - BH 
+        shade += tLog;
+        if (shade <= 7) {
+          int p = pb[offset];
+          if (bgargb != 0)
+            p = Graphics3D.mergeBufferPixel(p, bgargb, bgargb);
+          p = Graphics3D.mergeBufferPixel(p, (argb & 0xFFFFFF)
+              | (shade << 24), bgargb);
+          addPixel(offset, z, p);
+        }
+      }
+    }
+  }
+
 }
\ No newline at end of file

Modified: branches/v14_4/Jmol/src/org/jmol/g3d/PixelatorT.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/g3d/PixelatorT.java        2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/g3d/PixelatorT.java        2016-01-06 
12:26:15 UTC (rev 20923)
@@ -54,13 +54,13 @@
       // if (zT != Integer.MAX_VALUE)
       int argb = g.pbufT[offset];
       if (!g.translucentCoverOnly && argb != 0 && zT - z > g.zMargin)
-        Graphics3D.mergeBufferPixel(g.pbuf, offset, argb, g.bgcolor);
+        pb[offset] = Graphics3D.mergeBufferPixel(pb[offset], argb, g.bgcolor);
       g.zbufT[offset] = z;
       g.pbufT[offset] = p & g.translucencyMask;
     } else if (z == zT) {
     } else if (!g.translucentCoverOnly && z - zT > g.zMargin) {
         // oops-out of order
-        Graphics3D.mergeBufferPixel(g.pbuf, offset, p & g.translucencyMask, 
g.bgcolor);
+        pb[offset] = Graphics3D.mergeBufferPixel(pb[offset], p & 
g.translucencyMask, g.bgcolor);
     }
   }
 }
\ No newline at end of file

Modified: branches/v14_4/Jmol/src/org/jmol/g3d/TextRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/g3d/TextRenderer.java      2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/g3d/TextRenderer.java      2016-01-06 
12:26:15 UTC (rev 20923)
@@ -125,26 +125,11 @@
           if (shade != 0)
             jr.plotImagePixel(argb, x + j, y + i, z, shade, bgargb, width, 
height, zbuf, p, tLog);
         }
-      }
-      
+      }      
     } else {
-      int pbufOffset = y * width + x;
-      for (int i = 0, off = 0; i < textHeight; i++) {
-        for (int j = 0; j < textWidth; j++) {
-          byte shade = tmap[off++];
-          if (shade != 0 && z < zbuf[pbufOffset]) {
-            if (shade == 8) {
-              p.addPixel(pbufOffset, z, argb);
-            } else {
-              shade += tLog;
-              if (shade <= 7)
-                g3d.shadeTextPixel(pbufOffset, z, argb, bgargb, shade, zbuf);
-            }
-          }
-          pbufOffset++;
-        }
-        pbufOffset += (width - textWidth);
-      }
+      for (int i = 0, off = 0, pbufOffset = y * width + x; i < textHeight; 
i++, pbufOffset += (width - textWidth))
+        for (int j = 0; j < textWidth; j++)
+          p.addImagePixel(tmap[off++], tLog, pbufOffset++, z, argb, bgargb);
     }
     return text3d.width;
   }

Modified: branches/v14_4/Jmol/src/org/jmol/render/EchoRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/render/EchoRenderer.java   2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/render/EchoRenderer.java   2016-01-06 
12:26:15 UTC (rev 20923)
@@ -42,7 +42,6 @@
         .getScalePixelsPerAngstrom(true) * 10000 : 0);
     imageFontScaling = vwr.imageFontScaling;
     boolean haveTranslucent = false;
-    setZcutoff();
     for (Text t : echo.objects.values()) {
       if (!t.visible || t.hidden) {
         continue;
@@ -61,8 +60,6 @@
           z = pt0i.z - vwr.tm.zValueFromPercent(0) + z;
         t.setZs(z, z);
       }
-      if (t.zSlab >= zCutoff)
-        continue;
       if (t.pointerPt == null) {
         t.pointer = JC.LABEL_POINTER_NONE;
       } else {

Modified: branches/v14_4/Jmol/src/org/jmol/render/LabelsRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/render/LabelsRenderer.java 2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/render/LabelsRenderer.java 2016-01-06 
12:26:15 UTC (rev 20923)
@@ -69,8 +69,6 @@
 
   protected int zSlab = Integer.MIN_VALUE;
 
-  protected int zCutoff;
-
   private int zBox;
 
   private float[] boxXY;
@@ -87,7 +85,6 @@
     int[] offsets = labels.offsets;
     if (labelStrings == null)
       return false;
-    setZcutoff();
     Atom[] atoms = ms.at;
     short backgroundColixContrast = vwr.cm.colixBackgroundContrast;
     int backgroundColor = vwr.getBackgroundArgb();
@@ -119,8 +116,6 @@
       isAbsolute = JC.isOffsetAbsolute(offset);
       pointer = JC.getPointer(offset);
       zSlab = atom.sZ - atom.sD / 2 - 3;
-      if (zSlab > zCutoff)
-        continue;
       if (zSlab < 1)
         zSlab = 1;
       zBox = zSlab;
@@ -155,10 +150,6 @@
     return false;
   }
 
-  protected void setZcutoff() {
-    zCutoff = (tm.zShadeEnabled ? tm.zSlabValue : Integer.MAX_VALUE);
-  }
-
   protected Text renderLabelOrMeasure(Text text, String label) {
     boolean newText = false;
     if (text != null) {

Modified: branches/v14_4/Jmol/src/org/jmol/render/MeasuresRenderer.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/render/MeasuresRenderer.java       
2016-01-05 03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/render/MeasuresRenderer.java       
2016-01-06 12:26:15 UTC (rev 20923)
@@ -96,7 +96,6 @@
       return false;
     boolean showMeasurementLabels = vwr.getBoolean(T.measurementlabels);
     measures.setVisibilityInfo();
-    setZcutoff();
     for (int i = measures.measurementCount; --i >= 0;) {
       m = measures.measurements.get(i);
       if (!m.isVisible || !m.isValid || (count = m.count) == 1 && m.traceX == 
Integer.MIN_VALUE)
@@ -214,7 +213,7 @@
     int zB = b.sZ - b.sD - 10;
     int radius = drawLine(a.sX, a.sY, zA, b.sX,
         b.sY, zB, mad);
-    if (s == null || zB >= zCutoff)
+    if (s == null)
       return;
     if (mad > 0)
       radius <<= 1;
@@ -245,7 +244,7 @@
         b.sY, zB, mad);
     radius += drawLine(b.sX, b.sY, zB, c.sX,
         c.sY, zC, mad);
-    if (s == null || zB >= zCutoff)
+    if (s == null)
       return;
     radius = (radius + 1) / 2;
     if (m.value > 175) {
@@ -321,7 +320,7 @@
     radius += drawLine(c.sX, c.sY, zC, d.sX,
         d.sY, zD, mad);
     int zLabel = (zA + zB + zC + zD) / 4;
-    if (s == null || zLabel >= zCutoff)
+    if (s == null)
       return;
     radius /= 3;
     if (m.text == null) {

Modified: branches/v14_4/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java   
2016-01-05 03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java   
2016-01-06 12:26:15 UTC (rev 20923)
@@ -640,20 +640,13 @@
    *  just sets the color command for this isosurface. 
    */
   void setColorCommand() {
-    if (colorEncoder == null)
+    if (colorEncoder == null || (colorCommand = colorEncoder.getColorScheme()) 
== null)
       return;
-    colorCommand = colorEncoder.getColorScheme();
     if (colorCommand.equals("inherit")) {
       colorCommand = "#inherit;";
       return;
     }
-    if (colorCommand == null)
-      return;
-    colorCommand = "color $"
-        + (PT.isLetter(thisID.charAt(0)) && thisID.indexOf(" ") < 0 ? thisID : 
"\"" + thisID + "\"")
-        + " \""
-        + colorCommand
-        + "\" range "
+    colorCommand = "color $"  + PT.esc(thisID)  + PT.esc(colorCommand) + " 
range "
         + (jvxlData.isColorReversed ? jvxlData.valueMappedToBlue + " "
             + jvxlData.valueMappedToRed : jvxlData.valueMappedToRed + " "
             + jvxlData.valueMappedToBlue);

Modified: branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2016-01-05 
03:07:48 UTC (rev 20922)
+++ branches/v14_4/Jmol/src/org/jmol/viewer/Jmol.properties     2016-01-06 
12:26:15 UTC (rev 20923)
@@ -7,8 +7,13 @@
 
 # see also http://chemapps.stolaf.edu/jmol/zip for daily updates
        
-Jmol.___JmolVersion="14.4.1_2016.01.04"
+Jmol.___JmolVersion="14.4.1_2016.01.06"
 
+bug fix: labels, echos, and measurements disappear when z-shaded
+
+JmolVersion="14.4.1_2016.01.04"
+released
+
 bug fix: (JvxlReader) Jmol 12 mapped isosurface jvxl files do not show mapped 
color
 bug fix: setting cartoons on for phosphorus-only polymers fails
 bug fix: setting default label properties using select none;.... fails

Modified: trunk/Jmol/src/org/jmol/api/JmolRendererInterface.java
===================================================================
--- trunk/Jmol/src/org/jmol/api/JmolRendererInterface.java      2016-01-05 
03:07:48 UTC (rev 20922)
+++ trunk/Jmol/src/org/jmol/api/JmolRendererInterface.java      2016-01-06 
12:26:15 UTC (rev 20923)
@@ -260,7 +260,7 @@
                                         double privateKey,
                                         Map<String, Object> params);
 
-  public abstract void plotImagePixel(int argb, int x, int y, int z, int 
shade, int bgargb, int width, int  height, int[] zbuf, Object pixel, int 
transpLog);
+  public abstract void plotImagePixel(int argb, int x, int y, int z, byte 
shade, int bgargb, int width, int  height, int[] zbuf, Object pixel, int 
transpLog);
 
   public abstract void plotPixelClippedP3i(P3i a);
 

Modified: trunk/Jmol/src/org/jmol/export/Export3D.java
===================================================================
--- trunk/Jmol/src/org/jmol/export/Export3D.java        2016-01-05 03:07:48 UTC 
(rev 20922)
+++ trunk/Jmol/src/org/jmol/export/Export3D.java        2016-01-06 12:26:15 UTC 
(rev 20923)
@@ -789,7 +789,7 @@
   }
 
   @Override
-  public void plotImagePixel(int argb, int x, int y, int z, int shade,
+  public void plotImagePixel(int argb, int x, int y, int z, byte shade,
                              int bgargb, int width, int height, int[] pbuf, 
Object p, int transpLog) {
     // from Text3D
     if (isWebGL)

Modified: trunk/Jmol/src/org/jmol/g3d/Graphics3D.java
===================================================================
--- trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2016-01-05 03:07:48 UTC (rev 
20922)
+++ trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2016-01-06 12:26:15 UTC (rev 
20923)
@@ -432,7 +432,7 @@
     if (pbuf != null) {
       if (isPass2 && pbufT != null)
         for (int offset = pbufT.length; --offset >= 0;)
-          mergeBufferPixel(pbuf, offset, pbufT[offset], bgcolor);
+          pbuf[offset] = mergeBufferPixel(pbuf[offset], pbufT[offset], 
bgcolor);
       
       if (pixel == pixelShaded && pixelShaded.zShadePower == 0)
         pixelShaded.showZBuffer();
@@ -455,13 +455,10 @@
     currentlyRendering = isPass2 = false;
   }
 
-  public static void mergeBufferPixel(int[] pbuf, int offset, int argbB,
+  public static int mergeBufferPixel(int argbA, int argbB,
                                       int bgcolor) {
-    if (argbB == 0)
-      return;
-    int argbA = pbuf[offset];
-    if (argbA == argbB)
-      return;
+    if (argbB == 0 || argbA == argbB)
+      return argbA;
     if (argbA == 0)
       argbA = bgcolor;
     int rbA = (argbA & 0x00FF00FF);
@@ -510,7 +507,7 @@
       gA = (((gA << 2) + (gA << 1) + gA + gB) >> 3) & 0x0000FF00;
       break;
     }
-    pbuf[offset] = 0xFF000000 | rbA | gA;
+    return 0xFF000000 | rbA | gA;
   }
 
   @Override
@@ -1193,7 +1190,7 @@
         for (int j = 0; j < imageWidth; j++) {
           int b = buffer[offset++];
           if ((b & 0xFF000000) == (0xFF000000 & 0xFF000000))
-            jmolRenderer.plotImagePixel(b, x + j, y + i, z, 8, bg, w,
+            jmolRenderer.plotImagePixel(b, x + j, y + i, z, (byte) 8, bg, w,
               h, zb, p, t);
         }
     }
@@ -1608,24 +1605,13 @@
   }
 
   @Override
-  public void plotImagePixel(int argb, int x, int y, int z, int shade,
+  public void plotImagePixel(int argb, int x, int y, int z, byte shade,
                              int bgargb, int width, int height, int[] zbuf,
                              Object p, int transpLog) {
     // drawString via text3d.plotClipped; overridden in Export
     if (x < 0 || x >= width || y < 0 || y >= height)
       return;
-    int offset = y * width + x;
-    if (z < zbuf[offset]) {
-      if (shade == 8)
-        ((Pixelator) p).addPixel(offset, z, argb);
-      else {
-        // shade is a log of translucency, so adding two is equivalent to
-        // multiplying them. Works like a charm! - BH 
-        shade += transpLog;
-        if (shade <= 7)
-          shadeTextPixel(offset, z, argb, bgargb, shade, zbuf);
-      }
-    }
+    ((Pixelator)p).addImagePixel(shade, transpLog, y * width + x, z, argb, 
bgargb);
   }
 
   void plotPixelsClippedRaster(int count, int x, int y, int zAtLeft,
@@ -2046,12 +2032,4 @@
     return false;
   }
 
-  void shadeTextPixel(int offset, int z, int argb, int bgargb, int shade,
-                      int[] zbuf) {
-    if (bgargb != 0)
-      mergeBufferPixel(pbuf, offset, bgargb, bgcolor);
-    mergeBufferPixel(pbuf, offset, (argb & 0xFFFFFF) | shade << 24, bgcolor);
-    zbuf[offset] = z;
-  }
-
 }

Modified: trunk/Jmol/src/org/jmol/g3d/Pixelator.java
===================================================================
--- trunk/Jmol/src/org/jmol/g3d/Pixelator.java  2016-01-05 03:07:48 UTC (rev 
20922)
+++ trunk/Jmol/src/org/jmol/g3d/Pixelator.java  2016-01-06 12:26:15 UTC (rev 
20923)
@@ -60,4 +60,29 @@
     pb[offset] = p;
   }
 
+  public void addImagePixel(byte shade, int tLog, int offset, int z, int argb,
+                            int bgargb) {
+    if (z < zb[offset]) {
+      switch (shade) {
+      case 0:
+        return;
+      case 8:
+        addPixel(offset, z, argb);
+        return;
+      default:
+        // shade is a log of translucency, so adding two is equivalent to
+        // multiplying them. Works like a charm! - BH 
+        shade += tLog;
+        if (shade <= 7) {
+          int p = pb[offset];
+          if (bgargb != 0)
+            p = Graphics3D.mergeBufferPixel(p, bgargb, bgargb);
+          p = Graphics3D.mergeBufferPixel(p, (argb & 0xFFFFFF)
+              | (shade << 24), bgargb);
+          addPixel(offset, z, p);
+        }
+      }
+    }
+  }
+
 }
\ No newline at end of file

Modified: trunk/Jmol/src/org/jmol/g3d/PixelatorT.java
===================================================================
--- trunk/Jmol/src/org/jmol/g3d/PixelatorT.java 2016-01-05 03:07:48 UTC (rev 
20922)
+++ trunk/Jmol/src/org/jmol/g3d/PixelatorT.java 2016-01-06 12:26:15 UTC (rev 
20923)
@@ -54,13 +54,13 @@
       // if (zT != Integer.MAX_VALUE)
       int argb = g.pbufT[offset];
       if (!g.translucentCoverOnly && argb != 0 && zT - z > g.zMargin)
-        Graphics3D.mergeBufferPixel(g.pbuf, offset, argb, g.bgcolor);
+        pb[offset] = Graphics3D.mergeBufferPixel(pb[offset], argb, g.bgcolor);
       g.zbufT[offset] = z;
       g.pbufT[offset] = p & g.translucencyMask;
     } else if (z == zT) {
     } else if (!g.translucentCoverOnly && z - zT > g.zMargin) {
         // oops-out of order
-        Graphics3D.mergeBufferPixel(g.pbuf, offset, p & g.translucencyMask, 
g.bgcolor);
+        pb[offset] = Graphics3D.mergeBufferPixel(pb[offset], p & 
g.translucencyMask, g.bgcolor);
     }
   }
 }
\ No newline at end of file

Modified: trunk/Jmol/src/org/jmol/g3d/TextRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/g3d/TextRenderer.java       2016-01-05 03:07:48 UTC 
(rev 20922)
+++ trunk/Jmol/src/org/jmol/g3d/TextRenderer.java       2016-01-06 12:26:15 UTC 
(rev 20923)
@@ -125,26 +125,11 @@
           if (shade != 0)
             jr.plotImagePixel(argb, x + j, y + i, z, shade, bgargb, width, 
height, zbuf, p, tLog);
         }
-      }
-      
+      }      
     } else {
-      int pbufOffset = y * width + x;
-      for (int i = 0, off = 0; i < textHeight; i++) {
-        for (int j = 0; j < textWidth; j++) {
-          byte shade = tmap[off++];
-          if (shade != 0 && z < zbuf[pbufOffset]) {
-            if (shade == 8) {
-              p.addPixel(pbufOffset, z, argb);
-            } else {
-              shade += tLog;
-              if (shade <= 7)
-                g3d.shadeTextPixel(pbufOffset, z, argb, bgargb, shade, zbuf);
-            }
-          }
-          pbufOffset++;
-        }
-        pbufOffset += (width - textWidth);
-      }
+      for (int i = 0, off = 0, pbufOffset = y * width + x; i < textHeight; 
i++, pbufOffset += (width - textWidth))
+        for (int j = 0; j < textWidth; j++)
+          p.addImagePixel(tmap[off++], tLog, pbufOffset++, z, argb, bgargb);
     }
     return text3d.width;
   }

Modified: trunk/Jmol/src/org/jmol/render/EchoRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/render/EchoRenderer.java    2016-01-05 03:07:48 UTC 
(rev 20922)
+++ trunk/Jmol/src/org/jmol/render/EchoRenderer.java    2016-01-06 12:26:15 UTC 
(rev 20923)
@@ -42,7 +42,6 @@
         .getScalePixelsPerAngstrom(true) * 10000 : 0);
     imageFontScaling = vwr.imageFontScaling;
     boolean haveTranslucent = false;
-    setZcutoff();
     for (Text t : echo.objects.values()) {
       if (!t.visible || t.hidden) {
         continue;
@@ -61,8 +60,6 @@
           z = pt0i.z - vwr.tm.zValueFromPercent(0) + z;
         t.setZs(z, z);
       }
-      if (t.zSlab >= zCutoff)
-        continue;
       if (t.pointerPt == null) {
         t.pointer = JC.LABEL_POINTER_NONE;
       } else {

Modified: trunk/Jmol/src/org/jmol/render/LabelsRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/render/LabelsRenderer.java  2016-01-05 03:07:48 UTC 
(rev 20922)
+++ trunk/Jmol/src/org/jmol/render/LabelsRenderer.java  2016-01-06 12:26:15 UTC 
(rev 20923)
@@ -69,8 +69,6 @@
 
   protected int zSlab = Integer.MIN_VALUE;
 
-  protected int zCutoff;
-
   private int zBox;
 
   private float[] boxXY;
@@ -87,7 +85,6 @@
     int[] offsets = labels.offsets;
     if (labelStrings == null)
       return false;
-    setZcutoff();
     Atom[] atoms = ms.at;
     short backgroundColixContrast = vwr.cm.colixBackgroundContrast;
     int backgroundColor = vwr.getBackgroundArgb();
@@ -119,8 +116,6 @@
       isAbsolute = JC.isOffsetAbsolute(offset);
       pointer = JC.getPointer(offset);
       zSlab = atom.sZ - atom.sD / 2 - 3;
-      if (zSlab > zCutoff)
-        continue;
       if (zSlab < 1)
         zSlab = 1;
       zBox = zSlab;
@@ -155,10 +150,6 @@
     return false;
   }
 
-  protected void setZcutoff() {
-    zCutoff = (tm.zShadeEnabled ? tm.zSlabValue : Integer.MAX_VALUE);
-  }
-
   protected Text renderLabelOrMeasure(Text text, String label) {
     boolean newText = false;
     if (text != null) {

Modified: trunk/Jmol/src/org/jmol/render/MeasuresRenderer.java
===================================================================
--- trunk/Jmol/src/org/jmol/render/MeasuresRenderer.java        2016-01-05 
03:07:48 UTC (rev 20922)
+++ trunk/Jmol/src/org/jmol/render/MeasuresRenderer.java        2016-01-06 
12:26:15 UTC (rev 20923)
@@ -96,7 +96,6 @@
       return false;
     boolean showMeasurementLabels = vwr.getBoolean(T.measurementlabels);
     measures.setVisibilityInfo();
-    setZcutoff();
     for (int i = measures.measurementCount; --i >= 0;) {
       m = measures.measurements.get(i);
       if (!m.isVisible || !m.isValid || (count = m.count) == 1 && m.traceX == 
Integer.MIN_VALUE)
@@ -214,7 +213,7 @@
     int zB = b.sZ - b.sD - 10;
     int radius = drawLine(a.sX, a.sY, zA, b.sX,
         b.sY, zB, mad);
-    if (s == null || zB >= zCutoff)
+    if (s == null)
       return;
     if (mad > 0)
       radius <<= 1;
@@ -245,7 +244,7 @@
         b.sY, zB, mad);
     radius += drawLine(b.sX, b.sY, zB, c.sX,
         c.sY, zC, mad);
-    if (s == null || zB >= zCutoff)
+    if (s == null)
       return;
     radius = (radius + 1) / 2;
     if (m.value > 175) {
@@ -320,9 +319,9 @@
         c.sY, zC, mad);
     radius += drawLine(c.sX, c.sY, zC, d.sX,
         d.sY, zD, mad);
+    if (s == null)
+      return;
     int zLabel = (zA + zB + zC + zD) / 4;
-    if (s == null || zLabel >= zCutoff)
-      return;
     radius /= 3;
     if (m.text == null) {
       g3d.setC(labelColix);

Modified: trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java
===================================================================
--- trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java    2016-01-05 
03:07:48 UTC (rev 20922)
+++ trunk/Jmol/src/org/jmol/shapesurface/IsosurfaceMesh.java    2016-01-06 
12:26:15 UTC (rev 20923)
@@ -640,25 +640,19 @@
    *  just sets the color command for this isosurface. 
    */
   void setColorCommand() {
-    if (colorEncoder == null)
+    if (colorEncoder == null || (colorCommand = colorEncoder.getColorScheme()) 
== null)
       return;
-    colorCommand = colorEncoder.getColorScheme();
     if (colorCommand.equals("inherit")) {
       colorCommand = "#inherit;";
       return;
     }
-    if (colorCommand == null)
-      return;
-    colorCommand = "color $"
-        + (PT.isLetter(thisID.charAt(0)) && thisID.indexOf(" ") < 0 ? thisID : 
"\"" + thisID + "\"")
-        + " \""
-        + colorCommand
-        + "\" range "
+    colorCommand = "color $"  + PT.esc(thisID)  + PT.esc(colorCommand) + " 
range "
         + (jvxlData.isColorReversed ? jvxlData.valueMappedToBlue + " "
             + jvxlData.valueMappedToRed : jvxlData.valueMappedToRed + " "
             + jvxlData.valueMappedToBlue);
   }
 
+
   /**
    * from Isosurface.notifySurfaceGenerationCompleted()
    * 

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-01-05 03:07:48 UTC 
(rev 20922)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-01-06 12:26:15 UTC 
(rev 20923)
@@ -63,8 +63,12 @@
 TODO: consider if models with no atoms will cause issues in relation to 
model.firstAtomIndex
 
 
-Jmol.___JmolVersion="14.5.1_2016.01.04"
+Jmol.___JmolVersion="14.5.1_2016.01.06"
 
+bug fix: labels, echos, and measurements disappear when z-shaded
+
+JmolVersion="14.5.1_2016.01.04"
+
 bug fix: (JvxlReader) Jmol 12 mapped isosurface jvxl files do not show mapped 
color
 bug fix: setting default label properties using select none;.... fails
 bug fix: setting cartoons on for phosphorus-only polymers fails

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


------------------------------------------------------------------------------
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to