/** @return font color index */
  public short getFontColorIndex() {
    if (_font.sizeOfColorArray() == 0) return -1;

    int idx = 0;
    CTColor color = _font.getColorArray(0);
    if (color.isSetIndexed()) idx = (int) color.getIndexed();
    return (short) idx;
  }
示例#2
0
 /** Standard Red Green Blue ctColor value (RGB) with applied tint. Alpha values are ignored. */
 public byte[] getRgbWithTint() {
   byte[] rgb = ctColor.getRgb();
   if (rgb != null) {
     if (rgb.length == 4) {
       byte[] tmp = new byte[3];
       System.arraycopy(rgb, 1, tmp, 0, 3);
       rgb = tmp;
     }
     for (int i = 0; i < rgb.length; i++) {
       rgb[i] = applyTint(rgb[i] & 0xFF, ctColor.getTint());
     }
   }
   return rgb;
 }
示例#3
0
 /**
  * Specifies the tint value applied to the ctColor.
  *
  * <p>If tint is supplied, then it is applied to the RGB value of the ctColor to determine the
  * final ctColor applied.
  *
  * <p>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.
  *
  * <p>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:
  *
  * <blockquote>
  *
  * <pre>
  * If (tint &lt; 0)
  * Lum' = Lum * (1.0 + tint)
  *
  * For example: Lum = 200; tint = -0.5; Darken 50%
  * Lum' = 200 * (0.5) =&gt; 100
  * For example: Lum = 200; tint = -1.0; Darken 100% (make black)
  * Lum' = 200 * (1.0-1.0) =&gt; 0
  * If (tint &gt; 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
  * </pre>
  *
  * </blockquote>
  *
  * @return the tint value
  */
 public double getTint() {
   // 20101211, [email protected]: Java's double precision is less than Excel's
   // e.g. value of 0.59999389629810485, 17 digits as stored in style.xml, Java interpret it
   // as 0.5999938962981048, 16 digits, the last digit is missing. This could cause 1
   // difference in RGB color.
   return ctColor.getTint();
 }
示例#4
0
  private byte[] getRGBOrARGB() {
    byte[] rgb = null;

    if (ctColor.isSetIndexed() && ctColor.getIndexed() > 0) {
      HSSFColor indexed = HSSFColor.getIndexHash().get((int) ctColor.getIndexed());
      if (indexed != null) {
        rgb = new byte[3];
        rgb[0] = (byte) indexed.getTriplet()[0];
        rgb[1] = (byte) indexed.getTriplet()[1];
        rgb[2] = (byte) indexed.getTriplet()[2];
        return rgb;
      }
    }

    if (!ctColor.isSetRgb()) {
      // No colour is available, sorry
      return null;
    }

    // Grab the colour
    rgb = ctColor.getRgb();

    if (rgb.length == 4) {
      // Good to go, return it as-is
      return rgb;
    }

    // For RGB colours, but not ARGB (we think...)
    // Excel gets black and white the wrong way around, so switch them

    // 20110321, [email protected]: Theme 0 and 1 shall switch, Theme 2 and 3 shall switch. It is
    // not correct to change here!
    // if (rgb[0] == 0 && rgb[1] == 0 && rgb[2] == 0) {
    //   rgb = new byte[] {-1, -1, -1};
    // }
    // else if (rgb[0] == -1 && rgb[1] == -1 && rgb[2] == -1) {
    //   rgb = new byte[] {0, 0, 0};
    // }
    return rgb;
  }
示例#5
0
 /**
  * Indexed ctColor value. Only used for backwards compatibility. References a ctColor in
  * indexedColors.
  */
 public void setIndexed(int indexed) {
   ctColor.setIndexed(indexed);
 }
示例#6
0
 /**
  * Indexed ctColor value. Only used for backwards compatibility. References a ctColor in
  * indexedColors.
  */
 public short getIndexed() {
   return (short) ctColor.getIndexed();
 }
示例#7
0
 /** A boolean value indicating the ctColor is automatic and system ctColor dependent. */
 public void setAuto(boolean auto) {
   ctColor.setAuto(auto);
 }
示例#8
0
 /** A boolean value indicating the ctColor is automatic and system ctColor dependent. */
 public boolean isAuto() {
   return ctColor.getAuto();
 }
示例#9
0
 public XSSFColor(byte[] rgb) {
   this();
   ctColor.setRgb(rgb);
 }
示例#10
0
 public XSSFColor(java.awt.Color clr) {
   this();
   ctColor.setRgb(new byte[] {(byte) clr.getRed(), (byte) clr.getGreen(), (byte) clr.getBlue()});
 }
示例#11
0
  public boolean equals(Object o) {
    if (o == null || !(o instanceof XSSFColor)) return false;

    XSSFColor cf = (XSSFColor) o;
    return ctColor.toString().equals(cf.getCTColor().toString());
  }
示例#12
0
 public int hashCode() {
   return ctColor.toString().hashCode();
 }
示例#13
0
 /**
  * Specifies the tint value applied to the ctColor.
  *
  * <p>If tint is supplied, then it is applied to the RGB value of the ctColor to determine the
  * final ctColor applied.
  *
  * <p>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.
  *
  * <p>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:
  *
  * <blockquote>
  *
  * <pre>
  * If (tint &lt; 0)
  * Lum' = Lum * (1.0 + tint)
  *
  * For example: Lum = 200; tint = -0.5; Darken 50%
  * Lum' = 200 * (0.5) =&gt; 100
  * For example: Lum = 200; tint = -1.0; Darken 100% (make black)
  * Lum' = 200 * (1.0-1.0) =&gt; 0
  * If (tint &gt; 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
  * </pre>
  *
  * </blockquote>
  *
  * @param tint the tint value
  */
 public void setTint(double tint) {
   ctColor.setTint(tint);
 }
示例#14
0
 /**
  * Index into the <clrScheme> collection, referencing a particular <sysClr> or <srgbClr> value
  * expressed in the Theme part.
  */
 public void setTheme(int theme) {
   ctColor.setTheme(theme);
 }
示例#15
0
 /**
  * Index into the <clrScheme> collection, referencing a particular <sysClr> or <srgbClr> value
  * expressed in the Theme part.
  */
 public int getTheme() {
   return (int) ctColor.getTheme();
 }
示例#16
0
 /** Standard Alpha Red Green Blue ctColor value (ARGB). */
 public void setRgb(byte[] rgb) {
   ctColor.setRgb(rgb);
 }