/* ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
==================================================================== */

package org.apache.poi.hssf.record.cf;

import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.util.LittleEndianOutput;

Border Formatting Block of the Conditional Formatting Rule Record.
/** * Border Formatting Block of the Conditional Formatting Rule Record. */
public final class BorderFormatting implements Cloneable {
No border
/** No border */
public final static short BORDER_NONE = 0x0;
Thin border
/** Thin border */
public final static short BORDER_THIN = 0x1;
Medium border
/** Medium border */
public final static short BORDER_MEDIUM = 0x2;
dash border
/** dash border */
public final static short BORDER_DASHED = 0x3;
dot border
/** dot border */
public final static short BORDER_HAIR = 0x4;
Thick border
/** Thick border */
public final static short BORDER_THICK = 0x5;
double-line border
/** double-line border */
public final static short BORDER_DOUBLE = 0x6;
hair-line border
/** hair-line border */
public final static short BORDER_DOTTED = 0x7;
Medium dashed border
/** Medium dashed border */
public final static short BORDER_MEDIUM_DASHED = 0x8;
dash-dot border
/** dash-dot border */
public final static short BORDER_DASH_DOT = 0x9;
medium dash-dot border
/** medium dash-dot border */
public final static short BORDER_MEDIUM_DASH_DOT = 0xA;
dash-dot-dot border
/** dash-dot-dot border */
public final static short BORDER_DASH_DOT_DOT = 0xB;
medium dash-dot-dot border
/** medium dash-dot-dot border */
public final static short BORDER_MEDIUM_DASH_DOT_DOT = 0xC;
slanted dash-dot border
/** slanted dash-dot border */
public final static short BORDER_SLANTED_DASH_DOT = 0xD; // BORDER FORMATTING BLOCK // For Border Line Style codes see HSSFCellStyle.BORDER_XXXXXX private int field_13_border_styles1; private static final BitField bordLeftLineStyle = BitFieldFactory.getInstance(0x0000000F); private static final BitField bordRightLineStyle = BitFieldFactory.getInstance(0x000000F0); private static final BitField bordTopLineStyle = BitFieldFactory.getInstance(0x00000F00); private static final BitField bordBottomLineStyle= BitFieldFactory.getInstance(0x0000F000); private static final BitField bordLeftLineColor = BitFieldFactory.getInstance(0x007F0000); private static final BitField bordRightLineColor = BitFieldFactory.getInstance(0x3F800000); private static final BitField bordTlBrLineOnOff = BitFieldFactory.getInstance(0x40000000); private static final BitField bordBlTrtLineOnOff = BitFieldFactory.getInstance(0x80000000); private int field_14_border_styles2; private static final BitField bordTopLineColor = BitFieldFactory.getInstance(0x0000007F); private static final BitField bordBottomLineColor= BitFieldFactory.getInstance(0x00003f80); private static final BitField bordDiagLineColor = BitFieldFactory.getInstance(0x001FC000); private static final BitField bordDiagLineStyle = BitFieldFactory.getInstance(0x01E00000); public BorderFormatting() { field_13_border_styles1 = 0; field_14_border_styles2 = 0; }
Creates new FontFormatting
/** Creates new FontFormatting */
public BorderFormatting(LittleEndianInput in) { field_13_border_styles1 = in.readInt(); field_14_border_styles2 = in.readInt(); } public int getDataLength() { return 8; }
set the type of border to use for the left border of the cell
Params:
  • border – type
See Also:
/** * set the type of border to use for the left border of the cell * @param border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public void setBorderLeft(int border) { field_13_border_styles1 = bordLeftLineStyle.setValue(field_13_border_styles1, border); }
get the type of border to use for the left border of the cell
See Also:
Returns:border type
/** * get the type of border to use for the left border of the cell * @return border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public int getBorderLeft() { return bordLeftLineStyle.getValue(field_13_border_styles1); }
set the type of border to use for the right border of the cell
Params:
  • border – type
See Also:
/** * set the type of border to use for the right border of the cell * @param border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public void setBorderRight(int border) { field_13_border_styles1 = bordRightLineStyle.setValue(field_13_border_styles1, border); }
get the type of border to use for the right border of the cell
See Also:
Returns:border type
/** * get the type of border to use for the right border of the cell * @return border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public int getBorderRight() { return bordRightLineStyle.getValue(field_13_border_styles1); }
set the type of border to use for the top border of the cell
Params:
  • border – type
See Also:
/** * set the type of border to use for the top border of the cell * @param border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public void setBorderTop(int border) { field_13_border_styles1 = bordTopLineStyle.setValue(field_13_border_styles1, border); }
get the type of border to use for the top border of the cell
See Also:
Returns:border type
/** * get the type of border to use for the top border of the cell * @return border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public int getBorderTop() { return bordTopLineStyle.getValue(field_13_border_styles1); }
set the type of border to use for the bottom border of the cell
Params:
  • border – type
See Also:
/** * set the type of border to use for the bottom border of the cell * @param border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public void setBorderBottom(int border) { field_13_border_styles1 = bordBottomLineStyle.setValue(field_13_border_styles1, border); }
get the type of border to use for the bottom border of the cell
See Also:
Returns:border type
/** * get the type of border to use for the bottom border of the cell * @return border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public int getBorderBottom() { return bordBottomLineStyle.getValue(field_13_border_styles1); }
set the type of border to use for the diagonal border of the cell
Params:
  • border – type
See Also:
/** * set the type of border to use for the diagonal border of the cell * @param border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public void setBorderDiagonal(int border) { field_14_border_styles2 = bordDiagLineStyle.setValue(field_14_border_styles2, border); }
get the type of border to use for the diagonal border of the cell
See Also:
Returns:border type
/** * get the type of border to use for the diagonal border of the cell * @return border type * @see #BORDER_NONE * @see #BORDER_THIN * @see #BORDER_MEDIUM * @see #BORDER_DASHED * @see #BORDER_DOTTED * @see #BORDER_THICK * @see #BORDER_DOUBLE * @see #BORDER_HAIR * @see #BORDER_MEDIUM_DASHED * @see #BORDER_DASH_DOT * @see #BORDER_MEDIUM_DASH_DOT * @see #BORDER_DASH_DOT_DOT * @see #BORDER_MEDIUM_DASH_DOT_DOT * @see #BORDER_SLANTED_DASH_DOT */
public int getBorderDiagonal() { return bordDiagLineStyle.getValue(field_14_border_styles2); }
set the color to use for the left border
Params:
  • color – The index of the color definition
/** * set the color to use for the left border * @param color The index of the color definition */
public void setLeftBorderColor(int color) { field_13_border_styles1 = bordLeftLineColor.setValue(field_13_border_styles1, color); }
get the color to use for the left border
See Also:
  • getColor.getColor(short)
Returns: The index of the color definition
/** * get the color to use for the left border * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return The index of the color definition */
public int getLeftBorderColor() { return bordLeftLineColor.getValue(field_13_border_styles1); }
set the color to use for the right border
Params:
  • color – The index of the color definition
/** * set the color to use for the right border * @param color The index of the color definition */
public void setRightBorderColor(int color) { field_13_border_styles1 = bordRightLineColor.setValue(field_13_border_styles1, color); }
get the color to use for the right border
See Also:
  • getColor.getColor(short)
Returns:The index of the color definition
/** * get the color to use for the right border * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return The index of the color definition */
public int getRightBorderColor() { return bordRightLineColor.getValue(field_13_border_styles1); }
set the color to use for the top border
Params:
  • color – The index of the color definition
/** * set the color to use for the top border * @param color The index of the color definition */
public void setTopBorderColor(int color) { field_14_border_styles2 = bordTopLineColor.setValue(field_14_border_styles2, color); }
get the color to use for the top border
See Also:
  • getColor.getColor(short)
Returns:The index of the color definition
/** * get the color to use for the top border * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return The index of the color definition */
public int getTopBorderColor() { return bordTopLineColor.getValue(field_14_border_styles2); }
set the color to use for the bottom border
Params:
  • color – The index of the color definition
/** * set the color to use for the bottom border * @param color The index of the color definition */
public void setBottomBorderColor(int color) { field_14_border_styles2 = bordBottomLineColor.setValue(field_14_border_styles2, color); }
get the color to use for the bottom border
See Also:
  • getColor.getColor(short)
Returns:The index of the color definition
/** * get the color to use for the bottom border * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return The index of the color definition */
public int getBottomBorderColor() { return bordBottomLineColor.getValue(field_14_border_styles2); }
set the color to use for the diagonal borders
Params:
  • color – The index of the color definition
/** * set the color to use for the diagonal borders * @param color The index of the color definition */
public void setDiagonalBorderColor(int color) { field_14_border_styles2 = bordDiagLineColor.setValue(field_14_border_styles2, color); }
get the color to use for the diagonal border
See Also:
  • getColor.getColor(short)
Returns:The index of the color definition
/** * get the color to use for the diagonal border * @see org.apache.poi.hssf.usermodel.HSSFPalette#getColor(short) * @return The index of the color definition */
public int getDiagonalBorderColor() { return bordDiagLineColor.getValue(field_14_border_styles2); }
Of/off bottom left to top right line
Params:
  • on – - if true - on, otherwise off
/** * Of/off bottom left to top right line * * @param on - if <code>true</code> - on, otherwise off */
public void setForwardDiagonalOn(boolean on) { field_13_border_styles1 = bordBlTrtLineOnOff.setBoolean(field_13_border_styles1, on); }
Of/off top left to bottom right line
Params:
  • on – - if true - on, otherwise off
/** * Of/off top left to bottom right line * * @param on - if <code>true</code> - on, otherwise off */
public void setBackwardDiagonalOn(boolean on) { field_13_border_styles1 = bordTlBrLineOnOff.setBoolean(field_13_border_styles1, on); }
Returns:true if forward diagonal is on
/** * @return <code>true</code> if forward diagonal is on */
public boolean isForwardDiagonalOn() { return bordBlTrtLineOnOff.isSet(field_13_border_styles1); }
Returns:true if backward diagonal is on
/** * @return <code>true</code> if backward diagonal is on */
public boolean isBackwardDiagonalOn() { return bordTlBrLineOnOff.isSet(field_13_border_styles1); } public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append(" [Border Formatting]\n"); buffer.append(" .lftln = ").append(Integer.toHexString(getBorderLeft())).append("\n"); buffer.append(" .rgtln = ").append(Integer.toHexString(getBorderRight())).append("\n"); buffer.append(" .topln = ").append(Integer.toHexString(getBorderTop())).append("\n"); buffer.append(" .btmln = ").append(Integer.toHexString(getBorderBottom())).append("\n"); buffer.append(" .leftborder= ").append(Integer.toHexString(getLeftBorderColor())).append("\n"); buffer.append(" .rghtborder= ").append(Integer.toHexString(getRightBorderColor())).append("\n"); buffer.append(" .topborder= ").append(Integer.toHexString(getTopBorderColor())).append("\n"); buffer.append(" .bottomborder= ").append(Integer.toHexString(getBottomBorderColor())).append("\n"); buffer.append(" .fwdiag= ").append(isForwardDiagonalOn()).append("\n"); buffer.append(" .bwdiag= ").append(isBackwardDiagonalOn()).append("\n"); buffer.append(" [/Border Formatting]\n"); return buffer.toString(); } @Override public BorderFormatting clone() { BorderFormatting rec = new BorderFormatting(); rec.field_13_border_styles1 = field_13_border_styles1; rec.field_14_border_styles2 = field_14_border_styles2; return rec; } public int serialize(int offset, byte [] data) { LittleEndian.putInt(data, offset+0, field_13_border_styles1); LittleEndian.putInt(data, offset+4, field_14_border_styles2); return 8; } public void serialize(LittleEndianOutput out) { out.writeInt(field_13_border_styles1); out.writeInt(field_14_border_styles2); } }