Merge branch 'develop' into features/JAL-2094_colourInterface
[jalview.git] / src / jalview / schemes / FeatureColour.java
index bdc70c9..d0babf4 100644 (file)
@@ -1,5 +1,6 @@
 package jalview.schemes;
 
+import jalview.api.ColorI;
 import jalview.api.FeatureColourI;
 import jalview.datamodel.SequenceFeature;
 import jalview.util.Format;
@@ -14,11 +15,11 @@ public class FeatureColour implements FeatureColourI
 {
   private static final String BAR = "|";
 
-  final private Color colour;
+  final private ColorI colour;
 
-  final private Color minColour;
+  final private ColorI minColour;
 
-  final private Color maxColour;
+  final private ColorI maxColour;
 
   private boolean graduatedColour;
 
@@ -107,11 +108,11 @@ public class FeatureColour implements FeatureColourI
         throw new IllegalArgumentException("Invalid colour descriptor: "
                 + descriptor);
       }
-      return new FeatureColour(colour);
+      return new FeatureColour(new Colour(colour));
     }
 
     /*
-     * autoScaled == true: colours range over actual score range
+     * autoScaled == true: colours range over actual score range; 
      * autoScaled == false ('abso'): colours range over min/max range
      */
     boolean autoScaled = true;
@@ -192,9 +193,9 @@ public class FeatureColour implements FeatureColourI
     FeatureColour featureColour;
     try
     {
-      featureColour = new FeatureColour(
-              new UserColourScheme(mincol).findColour('A'),
-              new UserColourScheme(maxcol).findColour('A'), min, max);
+      featureColour = new FeatureColour(new Colour(new UserColourScheme(
+              mincol).findColour('A')), new Colour(new UserColourScheme(
+              maxcol).findColour('A')), min, max);
       featureColour.setColourByLabel(labelColour);
       featureColour.setAutoScaled(autoScaled);
       // add in any additional parameters
@@ -255,7 +256,7 @@ public class FeatureColour implements FeatureColourI
    */
   public FeatureColour()
   {
-    this((Color) null);
+    this((ColorI) null);
   }
 
   /**
@@ -263,10 +264,10 @@ public class FeatureColour implements FeatureColourI
    * 
    * @param c
    */
-  public FeatureColour(Color c)
+  public FeatureColour(ColorI c)
   {
-    minColour = Color.WHITE;
-    maxColour = Color.BLACK;
+    minColour = new Colour(Color.WHITE);
+    maxColour = new Colour(Color.BLACK);
     minRed = 0f;
     minGreen = 0f;
     minBlue = 0f;
@@ -276,6 +277,11 @@ public class FeatureColour implements FeatureColourI
     colour = c;
   }
 
+  public FeatureColour(Color c)
+  {
+    this(new Colour(c));
+  }
+
   /**
    * Constructor given a colour range and a score range
    * 
@@ -284,7 +290,7 @@ public class FeatureColour implements FeatureColourI
    * @param min
    * @param max
    */
-  public FeatureColour(Color low, Color high, float min, float max)
+  public FeatureColour(ColorI low, ColorI high, float min, float max)
   {
     graduatedColour = true;
     colour = null;
@@ -310,6 +316,10 @@ public class FeatureColour implements FeatureColourI
     }
   }
 
+  public FeatureColour(Color low, Color high, float min, float max)
+  {
+    this(new Colour(low), new Colour(high), min, max);
+  }
   /**
    * Copy constructor
    * 
@@ -317,7 +327,6 @@ public class FeatureColour implements FeatureColourI
    */
   public FeatureColour(FeatureColour fc)
   {
-    graduatedColour = fc.graduatedColour;
     colour = fc.colour;
     minColour = fc.minColour;
     maxColour = fc.maxColour;
@@ -356,33 +365,20 @@ public class FeatureColour implements FeatureColourI
     return graduatedColour;
   }
 
-  /**
-   * Sets the 'graduated colour' flag. If true, also sets 'colour by label' to
-   * false.
-   */
-  void setGraduatedColour(boolean b)
-  {
-    graduatedColour = b;
-    if (b)
-    {
-      setColourByLabel(false);
-    }
-  }
-
   @Override
-  public Color getColour()
+  public ColorI getColour()
   {
     return colour;
   }
 
   @Override
-  public Color getMinColour()
+  public ColorI getMinColour()
   {
     return minColour;
   }
 
   @Override
-  public Color getMaxColour()
+  public ColorI getMaxColour()
   {
     return maxColour;
   }
@@ -406,6 +402,20 @@ public class FeatureColour implements FeatureColourI
       setGraduatedColour(false);
     }
   }
+
+  /**
+   * Sets the 'graduated colour' flag. If true, also sets 'colour by label' to
+   * false.
+   */
+  void setGraduatedColour(boolean b)
+  {
+    graduatedColour = b;
+    if (b)
+    {
+      setColourByLabel(false);
+    }
+  }
+
   @Override
   public boolean isBelowThreshold()
   {
@@ -507,12 +517,12 @@ public class FeatureColour implements FeatureColourI
    * @return
    */
   @Override
-  public Color getColor(SequenceFeature feature)
+  public ColorI getColor(SequenceFeature feature)
   {
     if (isColourByLabel())
     {
-      return UserColourScheme
-              .createColourFromName(feature.getDescription());
+      return new Colour(UserColourScheme.createColourFromName(feature
+              .getDescription()));
     }
 
     if (!isGraduatedColour())
@@ -543,7 +553,8 @@ public class FeatureColour implements FeatureColourI
     {
       scl = 1f;
     }
-    return new Color(minRed + scl * deltaRed, minGreen + scl * deltaGreen, minBlue + scl * deltaBlue);
+    return new Colour(new Color(minRed + scl * deltaRed, minGreen + scl
+            * deltaGreen, minBlue + scl * deltaBlue));
   }
 
   /**