org.apache.poi.ss.usermodel
Class ExtendedColor

java.lang.Object
  extended by org.apache.poi.ss.usermodel.ExtendedColor
All Implemented Interfaces:
Color
Direct Known Subclasses:
HSSFExtendedColor

public abstract class ExtendedColor
extends java.lang.Object
implements Color

Represents a XSSF-style color (based on either a XSSFColor or a ExtendedColor


Constructor Summary
ExtendedColor()
           
 
Method Summary
abstract  byte[] getARGB()
           
 java.lang.String getARGBHex()
           
abstract  short getIndex()
           
protected abstract  byte[] getIndexedRGB()
           
abstract  byte[] getRGB()
           
protected  byte[] getRGBOrARGB()
           
 byte[] getRGBWithTint()
           
protected abstract  byte[] getStoredRBG()
           
abstract  int getTheme()
           
abstract  double getTint()
          Specifies the tint value applied to the ctColor.
abstract  boolean isAuto()
           
abstract  boolean isIndexed()
           
abstract  boolean isRGB()
           
abstract  boolean isThemed()
           
 void setARGBHex(java.lang.String argb)
          Sets the ARGB value from hex format, eg FF0077FF.
protected  void setColor(java.awt.Color clr)
           
abstract  void setRGB(byte[] rgb)
          Sets the Red Green Blue or Alpha Red Green Blue
abstract  void setTint(double tint)
          Specifies the tint value applied to the ctColor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExtendedColor

public ExtendedColor()
Method Detail

setColor

protected void setColor(java.awt.Color clr)
Parameters:
clr - awt Color to set

isAuto

public abstract boolean isAuto()
Returns:
true if the color is automatic

isIndexed

public abstract boolean isIndexed()
Returns:
true if the color is indexed

isRGB

public abstract boolean isRGB()
Returns:
true if the color is RGB / ARGB

isThemed

public abstract boolean isThemed()
Returns:
true if the color is from a Theme

getIndex

public abstract short getIndex()
Returns:
Indexed Color index value, if isIndexed() is true

getTheme

public abstract int getTheme()
Returns:
Index of Theme color, if isThemed() is true

getRGB

public abstract byte[] getRGB()
Returns:
Standard Red Green Blue ctColor value (RGB) bytes. If there was an A (Alpha) value, it will be stripped.

getARGB

public abstract byte[] getARGB()
Returns:
Standard Alpha Red Green Blue ctColor value (ARGB) bytes.

getStoredRBG

protected abstract byte[] getStoredRBG()
Returns:
RGB or ARGB bytes or null

setRGB

public abstract void setRGB(byte[] rgb)
Sets the Red Green Blue or Alpha Red Green Blue

Parameters:
rgb - bytes

getRGBOrARGB

protected byte[] getRGBOrARGB()
Returns:
RGB or ARGB bytes, either stored or by index

getIndexedRGB

protected abstract byte[] getIndexedRGB()
Returns:
index color RGB bytes, if isIndexed() == true, null if not indexed or index is invalid

getRGBWithTint

public byte[] getRGBWithTint()
Returns:
Standard Red Green Blue ctColor value (RGB) bytes with applied tint. Alpha values are ignored.

getARGBHex

public java.lang.String getARGBHex()
Returns:
the ARGB value in hex string format, eg FF00FF00. Works for both regular and indexed colours.

setARGBHex

public void setARGBHex(java.lang.String argb)
Sets the ARGB value from hex format, eg FF0077FF. Only works for regular (non-indexed) colours

Parameters:
argb - color ARGB hex string

getTint

public abstract double getTint()
Specifies the tint value applied to the ctColor.

If tint is supplied, then it is applied to the RGB value of the ctColor to determine the final ctColor applied.

The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and 1.0 means 100% lighten. Also, 0.0 means no change.

In loading the RGB value, it is converted to HLS where HLS values are (0..HLSMAX), where HLSMAX is currently 255.

Here are some examples of how to apply tint to ctColor:
 If (tint < 0)
 Lum' = Lum * (1.0 + tint)

 For example: Lum = 200; tint = -0.5; Darken 50%
 Lum' = 200 * (0.5) => 100
 For example: Lum = 200; tint = -1.0; Darken 100% (make black)
 Lum' = 200 * (1.0-1.0) => 0
 If (tint > 0)
 Lum' = Lum * (1.0-tint) + (HLSMAX - HLSMAX * (1.0-tint))
 For example: Lum = 100; tint = 0.75; Lighten 75%

 Lum' = 100 * (1-.75) + (HLSMAX - HLSMAX*(1-.75))
 = 100 * .25 + (255 - 255 * .25)
 = 25 + (255 - 63) = 25 + 192 = 217
 For example: Lum = 100; tint = 1.0; Lighten 100% (make white)
 Lum' = 100 * (1-1) + (HLSMAX - HLSMAX*(1-1))
 = 100 * 0 + (255 - 255 * 0)
 = 0 + (255 - 0) = 255
 

Returns:
the tint value

setTint

public abstract void setTint(double tint)
Specifies the tint value applied to the ctColor.

If tint is supplied, then it is applied to the RGB value of the ctColor to determine the final ctColor applied.

The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and 1.0 means 100% lighten. Also, 0.0 means no change.

In loading the RGB value, it is converted to HLS where HLS values are (0..HLSMAX), where HLSMAX is currently 255.

Here are some examples of how to apply tint to ctColor:
 If (tint < 0)
 Lum' = Lum * (1.0 + tint)

 For example: Lum = 200; tint = -0.5; Darken 50%
 Lum' = 200 * (0.5) => 100
 For example: Lum = 200; tint = -1.0; Darken 100% (make black)
 Lum' = 200 * (1.0-1.0) => 0
 If (tint > 0)
 Lum' = Lum * (1.0-tint) + (HLSMAX - HLSMAX * (1.0-tint))
 For example: Lum = 100; tint = 0.75; Lighten 75%

 Lum' = 100 * (1-.75) + (HLSMAX - HLSMAX*(1-.75))
 = 100 * .25 + (255 - 255 * .25)
 = 25 + (255 - 63) = 25 + 192 = 217
 For example: Lum = 100; tint = 1.0; Lighten 100% (make white)
 Lum' = 100 * (1-1) + (HLSMAX - HLSMAX*(1-1))
 = 100 * 0 + (255 - 255 * 0)
 = 0 + (255 - 0) = 255
 

Parameters:
tint - the tint value