Formatting
[jalview.git] / src / jalview / schemes / AnnotationColourGradient.java
index 20b0885..06085da 100755 (executable)
 /*\r
-* Jalview - A Sequence Alignment Editor and Viewer\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
-* as published by the Free Software Foundation; either version 2\r
-* of the License, or (at your option) any later version.\r
-*\r
-* This program is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with this program; if not, write to the Free Software\r
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
-*/\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2007 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
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+ */\r
 package jalview.schemes;\r
 \r
 import java.awt.*;\r
 \r
 import jalview.datamodel.*;\r
 \r
-public class AnnotationColourGradient extends ResidueColourScheme\r
+public class AnnotationColourGradient\r
+    extends ResidueColourScheme\r
 {\r
-    public static int NO_THRESHOLD = -1;\r
-    public static int BELOW_THRESHOLD = 0;\r
-    public static int ABOVE_THRESHOLD = 1;\r
+  public static int NO_THRESHOLD = -1;\r
+  public static int BELOW_THRESHOLD = 0;\r
+  public static int ABOVE_THRESHOLD = 1;\r
 \r
-    AlignmentAnnotation annotation;\r
-    int aboveAnnotationThreshold = -1;\r
+  AlignmentAnnotation annotation;\r
+  int aboveAnnotationThreshold = -1;\r
 \r
-    GraphLine annotationThreshold;\r
+  GraphLine annotationThreshold;\r
 \r
-    float r1, g1, b1, rr, gg, bb, dr, dg, db;\r
-    float range = 0;\r
+  float r1, g1, b1, rr, gg, bb, dr, dg, db;\r
+  float range = 0;\r
 \r
-    ColourSchemeI colourScheme;\r
+  ColourSchemeI colourScheme;\r
 \r
-    /**\r
-     * Creates a new AnnotationColourGradient object.\r
-     */\r
-    public AnnotationColourGradient(AlignmentAnnotation annotation,\r
-                                    ColourSchemeI originalColour,\r
-                                    int aboveThreshold)\r
+  /**\r
+   * Creates a new AnnotationColourGradient object.\r
+   */\r
+  public AnnotationColourGradient(AlignmentAnnotation annotation,\r
+                                  ColourSchemeI originalColour,\r
+                                  int aboveThreshold)\r
+  {\r
+    if (originalColour instanceof AnnotationColourGradient)\r
     {\r
-      if(originalColour instanceof AnnotationColourGradient)\r
-      {\r
-        colourScheme = ((AnnotationColourGradient)originalColour).colourScheme;\r
-      }\r
-      else\r
-        colourScheme = originalColour;\r
-\r
-      this.annotation = annotation;\r
-\r
-      aboveAnnotationThreshold = aboveThreshold;\r
-\r
-      if(aboveThreshold!=NO_THRESHOLD && annotation.threshold!=null)\r
-        annotationThreshold = annotation.threshold;\r
+      colourScheme = ( (AnnotationColourGradient) originalColour).colourScheme;\r
     }\r
-\r
-    /**\r
-     * Creates a new AnnotationColourGradient object.\r
-     */\r
-    public AnnotationColourGradient(AlignmentAnnotation annotation,\r
-        Color minColour, Color maxColour, int aboveThreshold)\r
+    else\r
     {\r
-      this.annotation = annotation;\r
+      colourScheme = originalColour;\r
+    }\r
 \r
-      aboveAnnotationThreshold = aboveThreshold;\r
+    this.annotation = annotation;\r
 \r
-      if(aboveThreshold!=NO_THRESHOLD && annotation.threshold!=null)\r
-        annotationThreshold = annotation.threshold;\r
+    aboveAnnotationThreshold = aboveThreshold;\r
 \r
-      r1 = minColour.getRed();\r
-      g1 = minColour.getGreen();\r
-      b1 = minColour.getBlue();\r
+    if (aboveThreshold != NO_THRESHOLD && annotation.threshold != null)\r
+    {\r
+      annotationThreshold = annotation.threshold;\r
+    }\r
+  }\r
 \r
-      rr = maxColour.getRed() - r1;\r
-      gg = maxColour.getGreen() - g1;\r
-      bb = maxColour.getBlue() - b1;\r
+  /**\r
+   * Creates a new AnnotationColourGradient object.\r
+   */\r
+  public AnnotationColourGradient(AlignmentAnnotation annotation,\r
+                                  Color minColour, Color maxColour,\r
+                                  int aboveThreshold)\r
+  {\r
+    this.annotation = annotation;\r
 \r
-      range = annotation.graphMax - annotation.graphMin;\r
+    aboveAnnotationThreshold = aboveThreshold;\r
 \r
+    if (aboveThreshold != NO_THRESHOLD && annotation.threshold != null)\r
+    {\r
+      annotationThreshold = annotation.threshold;\r
     }\r
 \r
+    r1 = minColour.getRed();\r
+    g1 = minColour.getGreen();\r
+    b1 = minColour.getBlue();\r
 \r
-    public String getAnnotation()\r
-    {\r
-      return annotation.label;\r
-    }\r
+    rr = maxColour.getRed() - r1;\r
+    gg = maxColour.getGreen() - g1;\r
+    bb = maxColour.getBlue() - b1;\r
 \r
-    public int getAboveThreshold()\r
-    {\r
-      return aboveAnnotationThreshold;\r
-    }\r
+    range = annotation.graphMax - annotation.graphMin;\r
 \r
-    public float getAnnotationThreshold()\r
-    {\r
-      if(annotationThreshold==null)\r
-        return 0;\r
-      else\r
-        return annotationThreshold.value;\r
-    }\r
+  }\r
 \r
-    public ColourSchemeI getBaseColour()\r
-    {\r
-      return colourScheme;\r
-    }\r
+  public String getAnnotation()\r
+  {\r
+    return annotation.label;\r
+  }\r
 \r
-    public Color getMinColour()\r
-    {\r
-      return new Color( (int) r1, (int) g1, (int) b1);\r
-    }\r
+  public int getAboveThreshold()\r
+  {\r
+    return aboveAnnotationThreshold;\r
+  }\r
 \r
-    public Color getMaxColour()\r
+  public float getAnnotationThreshold()\r
+  {\r
+    if (annotationThreshold == null)\r
     {\r
-      return new Color( (int) (r1 + rr), (int) (g1 + gg), (int) (b1 + bb));\r
+      return 0;\r
     }\r
-\r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @param n DOCUMENT ME!\r
-     *\r
-     * @return DOCUMENT ME!\r
-     */\r
-    public Color findColour(char c)\r
+    else\r
     {\r
-        return Color.red;\r
+      return annotationThreshold.value;\r
     }\r
-\r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @param n DOCUMENT ME!\r
-     * @param j DOCUMENT ME!\r
-     *\r
-     * @return DOCUMENT ME!\r
-     */\r
-    public Color findColour(char c, int j)\r
+  }\r
+\r
+  public ColourSchemeI getBaseColour()\r
+  {\r
+    return colourScheme;\r
+  }\r
+\r
+  public Color getMinColour()\r
+  {\r
+    return new Color( (int) r1, (int) g1, (int) b1);\r
+  }\r
+\r
+  public Color getMaxColour()\r
+  {\r
+    return new Color( (int) (r1 + rr), (int) (g1 + gg), (int) (b1 + bb));\r
+  }\r
+\r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param n DOCUMENT ME!\r
+   *\r
+   * @return DOCUMENT ME!\r
+   */\r
+  public Color findColour(char c)\r
+  {\r
+    return Color.red;\r
+  }\r
+\r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param n DOCUMENT ME!\r
+   * @param j DOCUMENT ME!\r
+   *\r
+   * @return DOCUMENT ME!\r
+   */\r
+  public Color findColour(char c, int j)\r
+  {\r
+    Color currentColour = Color.white;\r
+\r
+    if ( (threshold == 0) || aboveThreshold(c, j))\r
     {\r
-        Color currentColour = Color.white;\r
-\r
-        if ((threshold == 0) || aboveThreshold(c, j))\r
+      if (j < annotation.annotations.length\r
+          && annotation.annotations[j] != null\r
+          && !jalview.util.Comparison.isGap(c))\r
+      {\r
+        if (aboveAnnotationThreshold == NO_THRESHOLD\r
+            ||\r
+            (annotationThreshold != null && aboveAnnotationThreshold == ABOVE_THRESHOLD &&\r
+             annotation.annotations[j].value >= annotationThreshold.value)\r
+            ||\r
+            (annotationThreshold != null && aboveAnnotationThreshold == BELOW_THRESHOLD &&\r
+             annotation.annotations[j].value <= annotationThreshold.value))\r
         {\r
-          if( j<annotation.annotations.length\r
-              && annotation.annotations[j]!=null\r
-              && !jalview.util.Comparison.isGap(c))\r
+          if (colourScheme != null)\r
           {\r
-            if(  aboveAnnotationThreshold==NO_THRESHOLD\r
-               || (annotationThreshold!=null && aboveAnnotationThreshold==ABOVE_THRESHOLD && annotation.annotations[j].value>=annotationThreshold.value)\r
-               || (annotationThreshold!=null && aboveAnnotationThreshold==BELOW_THRESHOLD && annotation.annotations[j].value<=annotationThreshold.value))\r
-            {\r
-              if(colourScheme!=null)\r
-              {\r
-                currentColour = colourScheme.findColour(c, j);\r
-              }\r
-              else if(range!=0)\r
-              {\r
-                dr = rr *\r
-                    ( (annotation.annotations[j].value - annotation.graphMin) /\r
-                     range)\r
-                    + r1;\r
-                dg = gg *\r
-                    ( (annotation.annotations[j].value - annotation.graphMin) /\r
-                     range)\r
-                    + g1;\r
-                db = bb *\r
-                    ( (annotation.annotations[j].value - annotation.graphMin) /\r
-                     range)\r
-                    + b1;\r
-\r
-                currentColour = new Color( (int) dr, (int) dg, (int) db);\r
-              }\r
-            }\r
+            currentColour = colourScheme.findColour(c, j);\r
+          }\r
+          else if (range != 0)\r
+          {\r
+            dr = rr *\r
+                ( (annotation.annotations[j].value - annotation.graphMin) /\r
+                 range)\r
+                + r1;\r
+            dg = gg *\r
+                ( (annotation.annotations[j].value - annotation.graphMin) /\r
+                 range)\r
+                + g1;\r
+            db = bb *\r
+                ( (annotation.annotations[j].value - annotation.graphMin) /\r
+                 range)\r
+                + b1;\r
+\r
+            currentColour = new Color( (int) dr, (int) dg, (int) db);\r
           }\r
         }\r
+      }\r
+    }\r
 \r
-        if(conservationColouring)\r
-         currentColour = applyConservation(currentColour, j);\r
-\r
-       return currentColour;\r
+    if (conservationColouring)\r
+    {\r
+      currentColour = applyConservation(currentColour, j);\r
     }\r
+\r
+    return currentColour;\r
+  }\r
 }\r