Sequence colour in viewport
[jalview.git] / src / MCview / PDBCanvas.java
index d702264..9805c35 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
 * Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+* Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
 *\r
 * This program is free software; you can redistribute it and/or\r
 * modify it under the terms of the GNU General Public License\r
@@ -74,6 +74,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
     boolean pdbAction = false;\r
     boolean seqColoursReady = false;\r
     jalview.gui.FeatureRenderer fr;\r
+    Color backgroundColour = Color.black;\r
 \r
     public PDBCanvas(jalview.gui.SeqCanvas seqcanvas, Sequence seq)\r
     {\r
@@ -417,7 +418,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
     public void drawAll(Graphics g, int width, int height)\r
     {\r
-      g.setColor(Color.black);\r
+      g.setColor(backgroundColour);\r
       g.fillRect(0, 0, width, height);\r
       drawScene(g);\r
       drawLabels(g);\r
@@ -488,11 +489,10 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
        fr.transferSettings( seqcanvas.getFeatureRenderer() );\r
      }\r
 \r
+      Bond tmp;\r
       for (int i = 0; i < chain.bonds.size(); i++)\r
       {\r
-        Bond tmp = (Bond) chain.bonds.elementAt(i);\r
-        tmp.startCol = Color.lightGray;\r
-        tmp.endCol = Color.lightGray;\r
+        tmp = (Bond) chain.bonds.elementAt(i);\r
 \r
         if(chain!=mainchain)\r
           continue;\r
@@ -506,11 +506,12 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             {\r
               tmp.startCol = seqcanvas.getSequenceRenderer().\r
                   getResidueBoxColour( sequence, index);\r
-              if(tmp.startCol==null)\r
-                tmp.startCol = Color.white;\r
 \r
               if(showFeatures)\r
                 tmp.startCol = fr.findFeatureColour(tmp.startCol, sequence, index);\r
+\r
+              if(tmp.startCol==null)\r
+                tmp.startCol = Color.white;\r
             }\r
         }\r
 \r
@@ -524,10 +525,12 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             {\r
               tmp.endCol = seqcanvas.getSequenceRenderer().\r
                   getResidueBoxColour( sequence, index);\r
-              if(tmp.endCol==null)\r
-                tmp.endCol = Color.white;\r
+\r
               if(showFeatures)\r
                 tmp.endCol = fr.findFeatureColour(tmp.endCol, sequence, index);\r
+\r
+              if(tmp.endCol==null)\r
+                tmp.endCol = Color.white;\r
             }\r
         }\r
       }\r
@@ -537,87 +540,103 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
     Zsort zsort;\r
     public void drawScene(Graphics g)\r
     {\r
-        if (zbuffer)\r
-        {\r
-          if(zsort==null)\r
-            zsort = new Zsort();\r
+      if (zbuffer)\r
+      {\r
+        if (zsort == null)\r
+          zsort = new Zsort();\r
 \r
-          zsort.Zsort(visiblebonds);\r
-        }\r
+        zsort.Zsort(visiblebonds);\r
+      }\r
 \r
-        Bond tmpBond=null;\r
-        for (int i = 0; i < visiblebonds.size(); i++)\r
-        {\r
-            tmpBond = (Bond) visiblebonds.elementAt(i);\r
+      Bond tmpBond = null;\r
+      for (int i = 0; i < visiblebonds.size(); i++)\r
+      {\r
+        tmpBond = (Bond) visiblebonds.elementAt(i);\r
 \r
-            xstart = (int) (((tmpBond.start[0] - centre[0]) * scale) +\r
-                (getWidth() / 2));\r
-            ystart = (int) (((tmpBond.start[1] - centre[1]) * scale) +\r
-                (getHeight() / 2));\r
+        xstart = (int) ( ( (tmpBond.start[0] - centre[0]) * scale) +\r
+                        (getWidth() / 2));\r
+        ystart = (int) ( ( (tmpBond.start[1] - centre[1]) * scale) +\r
+                        (getHeight() / 2));\r
 \r
-            xend = (int) (((tmpBond.end[0] - centre[0]) * scale) +\r
-                (getWidth() / 2));\r
-            yend = (int) (((tmpBond.end[1] - centre[1]) * scale) +\r
-                (getHeight() / 2));\r
+        xend = (int) ( ( (tmpBond.end[0] - centre[0]) * scale) +\r
+                      (getWidth() / 2));\r
+        yend = (int) ( ( (tmpBond.end[1] - centre[1]) * scale) +\r
+                      (getHeight() / 2));\r
 \r
-            xmid = (xend + xstart) / 2;\r
-            ymid = (yend + ystart) / 2;\r
+        xmid = (xend + xstart) / 2;\r
+        ymid = (yend + ystart) / 2;\r
+        if (depthcue && !bymolecule)\r
+        {\r
+          if (tmpBond.start[2] < (centre[2] - (maxwidth / 6)))\r
+          {\r
 \r
-            if (depthcue && !bymolecule)\r
-            {\r
-                if (tmpBond.start[2] < (centre[2] - (maxwidth / 6)))\r
-                {\r
-                    g.setColor(tmpBond.startCol.darker().darker());\r
-                    drawLine(g, xstart, ystart, xmid, ymid);\r
-                    g.setColor(tmpBond.endCol.darker().darker());\r
-                    drawLine(g, xmid, ymid, xend, yend);\r
-                } else if (tmpBond.start[2] < (centre[2] + (maxwidth / 6))) {\r
-                    g.setColor(tmpBond.startCol.darker());\r
-                    drawLine(g, xstart, ystart, xmid, ymid);\r
-\r
-                    g.setColor(tmpBond.endCol.darker());\r
-                    drawLine(g, xmid, ymid, xend, yend);\r
-                } else {\r
-                    g.setColor(tmpBond.startCol);\r
-                    drawLine(g, xstart, ystart, xmid, ymid);\r
+            g.setColor(tmpBond.startCol.darker().darker());\r
+            drawLine(g, xstart, ystart, xmid, ymid);\r
+            g.setColor(tmpBond.endCol.darker().darker());\r
+            drawLine(g, xmid, ymid, xend, yend);\r
 \r
-                    g.setColor(tmpBond.endCol);\r
-                    drawLine(g, xmid, ymid, xend, yend);\r
-                }\r
-            } else if (depthcue && bymolecule) {\r
-                if (tmpBond.start[2] < (centre[2] - (maxwidth / 6))) {\r
-                    g.setColor(Color.green.darker().darker());\r
-                    drawLine(g, xstart, ystart, xend, yend);\r
-                } else if (tmpBond.start[2] < (centre[2] + (maxwidth / 6))) {\r
-                    g.setColor(Color.green.darker());\r
-                    drawLine(g, xstart, ystart, xend, yend);\r
-                } else {\r
-                    g.setColor(Color.green);\r
-                    drawLine(g, xstart, ystart, xend, yend);\r
-                }\r
-            } else if (!depthcue && !bymolecule) {\r
-                g.setColor(tmpBond.startCol);\r
-                drawLine(g, xstart, ystart, xmid, ymid);\r
-                g.setColor(tmpBond.endCol);\r
-                drawLine(g, xmid, ymid, xend, yend);\r
-            } else {\r
-                drawLine(g, xstart, ystart, xend, yend);\r
-            }\r
+          }\r
+          else if (tmpBond.start[2] < (centre[2] + (maxwidth / 6)))\r
+          {\r
+            g.setColor(tmpBond.startCol.darker());\r
+            drawLine(g, xstart, ystart, xmid, ymid);\r
 \r
-            if(highlightBond1!=null && highlightBond1==tmpBond)\r
-            {\r
-              g.setColor(tmpBond.endCol.brighter().brighter().brighter().brighter());\r
-              drawLine(g, xmid, ymid, xend, yend);\r
-            }\r
+            g.setColor(tmpBond.endCol.darker());\r
+            drawLine(g, xmid, ymid, xend, yend);\r
+          }\r
+          else\r
+          {\r
+            g.setColor(tmpBond.startCol);\r
+            drawLine(g, xstart, ystart, xmid, ymid);\r
 \r
-            if(highlightBond2!=null && highlightBond2==tmpBond)\r
-            {\r
-              g.setColor(tmpBond.startCol.brighter().brighter().brighter().brighter());\r
-              drawLine(g, xstart, ystart, xmid, ymid);\r
-            }\r
+            g.setColor(tmpBond.endCol);\r
+            drawLine(g, xmid, ymid, xend, yend);\r
+          }\r
+        }\r
+        else if (depthcue && bymolecule)\r
+        {\r
+          if (tmpBond.start[2] < (centre[2] - (maxwidth / 6)))\r
+          {\r
+            g.setColor(Color.green.darker().darker());\r
+            drawLine(g, xstart, ystart, xend, yend);\r
+          }\r
+          else if (tmpBond.start[2] < (centre[2] + (maxwidth / 6)))\r
+          {\r
+            g.setColor(Color.green.darker());\r
+            drawLine(g, xstart, ystart, xend, yend);\r
+          }\r
+          else\r
+          {\r
+            g.setColor(Color.green);\r
+            drawLine(g, xstart, ystart, xend, yend);\r
+          }\r
+        }\r
+        else if (!depthcue && !bymolecule)\r
+        {\r
+          g.setColor(tmpBond.startCol);\r
+          drawLine(g, xstart, ystart, xmid, ymid);\r
+          g.setColor(tmpBond.endCol);\r
+          drawLine(g, xmid, ymid, xend, yend);\r
+        }\r
+        else\r
+        {\r
+          drawLine(g, xstart, ystart, xend, yend);\r
+        }\r
 \r
+        if (highlightBond1 != null && highlightBond1 == tmpBond)\r
+        {\r
+          g.setColor(tmpBond.endCol.brighter().brighter().brighter().brighter());\r
+          drawLine(g, xmid, ymid, xend, yend);\r
         }\r
 \r
+        if (highlightBond2 != null && highlightBond2 == tmpBond)\r
+        {\r
+          g.setColor(tmpBond.startCol.brighter().brighter().brighter().brighter());\r
+          drawLine(g, xstart, ystart, xmid, ymid);\r
+        }\r
+\r
+      }\r
+\r
 \r
     }\r
 \r