Importing release version 322 from old repos
This commit is contained in:
		
							
								
								
									
										156
									
								
								src/wsi/ra/diagram/ColorBarCalculator.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								src/wsi/ra/diagram/ColorBarCalculator.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,156 @@
 | 
			
		||||
/**
 | 
			
		||||
 *  Filename: $RCSfile: ColorBarCalculator.java,v $
 | 
			
		||||
 *  Purpose:  Calculates the color values for a legend-style color bar.
 | 
			
		||||
 *  Language: Java
 | 
			
		||||
 *  Compiler: JDK 1.2
 | 
			
		||||
 *  Authors:  Badreddin Abolmaali, Fred Rapp, Simon Wiest
 | 
			
		||||
 *  Version:  $Revision: 1.1.1.1 $
 | 
			
		||||
 *            $Date: 2003/07/03 14:59:41 $
 | 
			
		||||
 *            $Author: ulmerh $
 | 
			
		||||
 *  Copyright (c) Dept. Computer Architecture, University of Tuebingen, Germany
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package wsi.ra.diagram;
 | 
			
		||||
 | 
			
		||||
/*============================================================================
 | 
			
		||||
 * IMPORTS
 | 
			
		||||
 *============================================================================*/
 | 
			
		||||
 | 
			
		||||
import java.awt.*;
 | 
			
		||||
import java.awt.geom.*;
 | 
			
		||||
import java.awt.image.*;
 | 
			
		||||
import javax.swing.*;
 | 
			
		||||
 | 
			
		||||
import wsi.ra.math.*;
 | 
			
		||||
 | 
			
		||||
/*============================================================================
 | 
			
		||||
 * CLASS DECLARATION
 | 
			
		||||
 *============================================================================*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Calculates the color values for a legend-style color bar.
 | 
			
		||||
 */
 | 
			
		||||
public class ColorBarCalculator
 | 
			
		||||
{
 | 
			
		||||
  /*--------------------------------------------------------------------------
 | 
			
		||||
   * static public final member variables
 | 
			
		||||
   *--------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
  static public final int BLUE_TO_RED         = 0;
 | 
			
		||||
  static public final int GREY_SCALE          = 1;
 | 
			
		||||
  static public final int BLUE_SCALE          = 2;
 | 
			
		||||
  static public final int ALL_COLORS          = 3;
 | 
			
		||||
  // GREY_SCALE returns luminance values in [0.1;0.9], GREY_EXTENDED_SCALE in [0.0;1.0]
 | 
			
		||||
  static public final int GREY_EXTENDED_SCALE = 4;
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------
 | 
			
		||||
   * private member variables
 | 
			
		||||
   *--------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
  private int color_scale = BLUE_TO_RED;
 | 
			
		||||
  private boolean inverseScale = false;
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------
 | 
			
		||||
   * constructor
 | 
			
		||||
   *--------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
  public ColorBarCalculator(int color_scale)
 | 
			
		||||
  {
 | 
			
		||||
    this.color_scale = color_scale;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------
 | 
			
		||||
   * public methods
 | 
			
		||||
   *--------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
  public void setColorScale(int color_scale) { this.color_scale = color_scale; }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns color for the given float-value, which must be in the range from 0 to 1.
 | 
			
		||||
   * Warning: Creates new color object, better use the method 'getRGB' if possible.
 | 
			
		||||
   */
 | 
			
		||||
  public Color getColor(float value)
 | 
			
		||||
  {
 | 
			
		||||
    return new Color( getRGB(value) );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns color RGB-value for the given float-value, which must be in the range from 0 to 1.
 | 
			
		||||
   */
 | 
			
		||||
  public int getRGB(float value)
 | 
			
		||||
  {
 | 
			
		||||
    int rgbValue = 0;
 | 
			
		||||
    if(inverseScale) {
 | 
			
		||||
      value = 1 - value;
 | 
			
		||||
    }
 | 
			
		||||
    switch (color_scale)
 | 
			
		||||
    {
 | 
			
		||||
      case BLUE_TO_RED:
 | 
			
		||||
        float hue = value * (value + value * 0.8F) / 2.65F - 1F;
 | 
			
		||||
        rgbValue = Color.HSBtoRGB(hue, 0.6F, 1F);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case GREY_SCALE:
 | 
			
		||||
        rgbValue = Color.HSBtoRGB(0F, 0F, (value * 0.8F) + 0.1F);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case BLUE_SCALE:
 | 
			
		||||
        int rg = (int) (value * 0.95F * 256);
 | 
			
		||||
        int b  = (int) ((value/2.0F + 0.45F) * 256);
 | 
			
		||||
        rgbValue = rg * 0x10000 + rg * 0x100 + b;
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case ALL_COLORS:
 | 
			
		||||
        rgbValue = Color.HSBtoRGB(value, 0.6F, 1F);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case GREY_EXTENDED_SCALE:
 | 
			
		||||
        rgbValue = Color.HSBtoRGB(0F, 0F, value );
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    return rgbValue;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Reverts color scale (e.g. black will be white and vice versa).
 | 
			
		||||
   * @param isInverse Color scale is inverted, if <code>isInverse</code> is set to true.
 | 
			
		||||
   */
 | 
			
		||||
  public void setInverseScale(boolean isInverse) {
 | 
			
		||||
    inverseScale = isInverse;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns current scale mode.
 | 
			
		||||
   * @return <code>true</code> if scale is inverted, else <code>false</code>.
 | 
			
		||||
   */
 | 
			
		||||
  public boolean isInverseScale() {
 | 
			
		||||
   return inverseScale;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /*--------------------------------------------------------------------------
 | 
			
		||||
   * static public methods
 | 
			
		||||
   *--------------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns color for the given float-value, which must be in the range from 0 to 1.
 | 
			
		||||
   * Warning: Creates new color object, better use the method 'getRGB' if possible.
 | 
			
		||||
   */
 | 
			
		||||
  static public Color getDefaultColor(float value)
 | 
			
		||||
  {
 | 
			
		||||
    return new Color( getDefaultRGB(value) );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns color RGB-value for the given float-value, which must be in the range from 0 to 1.
 | 
			
		||||
   */
 | 
			
		||||
  static public int getDefaultRGB(float value)
 | 
			
		||||
  {
 | 
			
		||||
    float hue = value * (value + value * 0.8F) / 2.65F - 1F;
 | 
			
		||||
    return Color.HSBtoRGB(hue, 0.6F, 1F);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/****************************************************************************
 | 
			
		||||
 * END OF FILE
 | 
			
		||||
 ****************************************************************************/
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user