Return-Path: X-Original-To: apmail-poi-commits-archive@minotaur.apache.org Delivered-To: apmail-poi-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5F8D218E53 for ; Tue, 14 Jul 2015 18:15:00 +0000 (UTC) Received: (qmail 9272 invoked by uid 500); 14 Jul 2015 18:14:50 -0000 Delivered-To: apmail-poi-commits-archive@poi.apache.org Received: (qmail 9236 invoked by uid 500); 14 Jul 2015 18:14:50 -0000 Mailing-List: contact commits-help@poi.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@poi.apache.org Delivered-To: mailing list commits@poi.apache.org Received: (qmail 9227 invoked by uid 99); 14 Jul 2015 18:14:50 -0000 Received: from eris.apache.org (HELO hades.apache.org) (140.211.11.105) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Jul 2015 18:14:50 +0000 Received: from hades.apache.org (localhost [127.0.0.1]) by hades.apache.org (ASF Mail Server at hades.apache.org) with ESMTP id 9C91CAC08DC for ; Tue, 14 Jul 2015 18:14:50 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1691046 - in /poi/trunk/src/java/org/apache/poi: hssf/record/cf/ hssf/usermodel/ ss/usermodel/ Date: Tue, 14 Jul 2015 18:14:50 -0000 To: commits@poi.apache.org From: nick@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20150714181450.9C91CAC08DC@hades.apache.org> Author: nick Date: Tue Jul 14 18:14:50 2015 New Revision: 1691046 URL: http://svn.apache.org/r1691046 Log: Fix inconsistent whitespace/formatting Modified: poi/trunk/src/java/org/apache/poi/hssf/record/cf/BorderFormatting.java poi/trunk/src/java/org/apache/poi/hssf/record/cf/CellRangeUtil.java poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java poi/trunk/src/java/org/apache/poi/hssf/record/cf/PatternFormatting.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java Modified: poi/trunk/src/java/org/apache/poi/hssf/record/cf/BorderFormatting.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/cf/BorderFormatting.java?rev=1691046&r1=1691045&r2=1691046&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/hssf/record/cf/BorderFormatting.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/cf/BorderFormatting.java Tue Jul 14 18:14:50 2015 @@ -25,11 +25,8 @@ import org.apache.poi.util.LittleEndianO /** * Border Formatting Block of the Conditional Formatting Rule Record. - * - * @author Dmitriy Kumshayev */ public final class BorderFormatting { - /** No border */ public final static short BORDER_NONE = 0x0; /** Thin border */ Modified: poi/trunk/src/java/org/apache/poi/hssf/record/cf/CellRangeUtil.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/cf/CellRangeUtil.java?rev=1691046&r1=1691045&r2=1691046&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/hssf/record/cf/CellRangeUtil.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/cf/CellRangeUtil.java Tue Jul 14 18:14:50 2015 @@ -23,97 +23,93 @@ import java.util.List; import org.apache.poi.ss.util.CellRangeAddress; /** - * - * @author Dmitriy Kumshayev + * TODO Should this move to org.apache.poi.ss.util ? */ -public final class CellRangeUtil -{ - - private CellRangeUtil() { - // no instance of this class - } - - public static final int NO_INTERSECTION = 1; - public static final int OVERLAP = 2; - /** first range is within the second range */ - public static final int INSIDE = 3; - /** first range encloses or is equal to the second */ - public static final int ENCLOSES = 4; - - /** - * Intersect this range with the specified range. - * - * @param crB - the specified range - * @return code which reflects how the specified range is related to this range.
- * Possible return codes are: - * NO_INTERSECTION - the specified range is outside of this range;
- * OVERLAP - both ranges partially overlap;
- * INSIDE - the specified range is inside of this one
- * ENCLOSES - the specified range encloses (possibly exactly the same as) this range
- */ - public static int intersect(CellRangeAddress crA, CellRangeAddress crB ) - { - - int firstRow = crB.getFirstRow(); - int lastRow = crB.getLastRow(); - int firstCol = crB.getFirstColumn(); - int lastCol = crB.getLastColumn(); - - if - ( +public final class CellRangeUtil { + private CellRangeUtil() { + // no instance of this class + } + + public static final int NO_INTERSECTION = 1; + public static final int OVERLAP = 2; + /** first range is within the second range */ + public static final int INSIDE = 3; + /** first range encloses or is equal to the second */ + public static final int ENCLOSES = 4; + + /** + * Intersect this range with the specified range. + * + * @param crB - the specified range + * @return code which reflects how the specified range is related to this range.
+ * Possible return codes are: + * NO_INTERSECTION - the specified range is outside of this range;
+ * OVERLAP - both ranges partially overlap;
+ * INSIDE - the specified range is inside of this one
+ * ENCLOSES - the specified range encloses (possibly exactly the same as) this range
+ */ + public static int intersect(CellRangeAddress crA, CellRangeAddress crB ) + { + + int firstRow = crB.getFirstRow(); + int lastRow = crB.getLastRow(); + int firstCol = crB.getFirstColumn(); + int lastCol = crB.getLastColumn(); + + if + ( gt(crA.getFirstRow(),lastRow) || lt(crA.getLastRow(),firstRow) || gt(crA.getFirstColumn(),lastCol) || lt(crA.getLastColumn(),firstCol) - ) - { - return NO_INTERSECTION; - } - else if( contains(crA, crB) ) - { - return INSIDE; - } - else if( contains(crB, crA)) - { - return ENCLOSES; - } - else - { - return OVERLAP; - } - - } - - /** - * Do all possible cell merges between cells of the list so that:
- *
  • if a cell range is completely inside of another cell range, it gets removed from the list - *
  • if two cells have a shared border, merge them into one bigger cell range - * @param cellRanges - * @return updated List of cell ranges - */ - public static CellRangeAddress[] mergeCellRanges(CellRangeAddress[] cellRanges) { - if(cellRanges.length < 1) { - return cellRanges; - } + ) + { + return NO_INTERSECTION; + } + else if( contains(crA, crB) ) + { + return INSIDE; + } + else if( contains(crB, crA)) + { + return ENCLOSES; + } + else + { + return OVERLAP; + } + } + + /** + * Do all possible cell merges between cells of the list so that:
    + *
  • if a cell range is completely inside of another cell range, it gets removed from the list + *
  • if two cells have a shared border, merge them into one bigger cell range + * @param cellRanges + * @return updated List of cell ranges + */ + public static CellRangeAddress[] mergeCellRanges(CellRangeAddress[] cellRanges) { + if(cellRanges.length < 1) { + return cellRanges; + } List lst = new ArrayList(); for(CellRangeAddress cr : cellRanges) { lst.add(cr); } List temp = mergeCellRanges(lst); - return toArray(temp); - } + return toArray(temp); + } - private static List mergeCellRanges(List cellRangeList) - { - // loop until either only one item is left or we did not merge anything any more + private static List mergeCellRanges(List cellRangeList) + { + // loop until either only one item is left or we did not merge anything any more while (cellRangeList.size() > 1) { boolean somethingGotMerged = false; // look at all cell-ranges for (int i = 0; i < cellRangeList.size(); i++) { CellRangeAddress range1 = cellRangeList.get(i); - + // compare each cell range to all other cell-ranges for (int j = i + 1; j < cellRangeList.size(); j++) { CellRangeAddress range2 = cellRangeList.get(j); @@ -139,16 +135,16 @@ public final class CellRangeUtil } } - return cellRangeList; - } - - /** - * @return the new range(s) to replace the supplied ones. null if no merge is possible - */ - private static CellRangeAddress[] mergeRanges(CellRangeAddress range1, CellRangeAddress range2) { - int x = intersect(range1, range2); - switch(x) - { + return cellRangeList; + } + + /** + * @return the new range(s) to replace the supplied ones. null if no merge is possible + */ + private static CellRangeAddress[] mergeRanges(CellRangeAddress range1, CellRangeAddress range2) { + int x = intersect(range1, range2); + switch(x) + { case CellRangeUtil.NO_INTERSECTION: // nothing in common: at most they could be adjacent to each other and thus form a single bigger area if(hasExactSharedBorder(range1, range2)) { @@ -171,108 +167,103 @@ public final class CellRangeUtil throw new RuntimeException("unexpected intersection result (" + x + ")"); } - - private static CellRangeAddress[] toArray(List temp) { - CellRangeAddress[] result = new CellRangeAddress[temp.size()]; - temp.toArray(result); - return result; - } - - + private static CellRangeAddress[] toArray(List temp) { + CellRangeAddress[] result = new CellRangeAddress[temp.size()]; + temp.toArray(result); + return result; + } + + /** + * Check if the specified range is located inside of this cell range. + * + * @param crB + * @return true if this cell range contains the argument range inside if it's area + */ + public static boolean contains(CellRangeAddress crA, CellRangeAddress crB) + { + int firstRow = crB.getFirstRow(); + int lastRow = crB.getLastRow(); + int firstCol = crB.getFirstColumn(); + int lastCol = crB.getLastColumn(); + return le(crA.getFirstRow(), firstRow) && ge(crA.getLastRow(), lastRow) + && le(crA.getFirstColumn(), firstCol) && ge(crA.getLastColumn(), lastCol); + } + + /** + * Check if the two cell ranges have a shared border. + * + * @return true if the ranges have a complete shared border (i.e. + * the two ranges together make a simple rectangular region. + */ + public static boolean hasExactSharedBorder(CellRangeAddress crA, CellRangeAddress crB) { + int oFirstRow = crB.getFirstRow(); + int oLastRow = crB.getLastRow(); + int oFirstCol = crB.getFirstColumn(); + int oLastCol = crB.getLastColumn(); + + if (crA.getFirstRow() > 0 && crA.getFirstRow()-1 == oLastRow || + oFirstRow > 0 && oFirstRow-1 == crA.getLastRow()) { + // ranges have a horizontal border in common + // make sure columns are identical: + return crA.getFirstColumn() == oFirstCol && crA.getLastColumn() == oLastCol; + } - /** - * Check if the specified range is located inside of this cell range. - * - * @param crB - * @return true if this cell range contains the argument range inside if it's area - */ - public static boolean contains(CellRangeAddress crA, CellRangeAddress crB) - { - int firstRow = crB.getFirstRow(); - int lastRow = crB.getLastRow(); - int firstCol = crB.getFirstColumn(); - int lastCol = crB.getLastColumn(); - return le(crA.getFirstRow(), firstRow) && ge(crA.getLastRow(), lastRow) - && le(crA.getFirstColumn(), firstCol) && ge(crA.getLastColumn(), lastCol); - } - - /** - * Check if the two cell ranges have a shared border. - * - * @return true if the ranges have a complete shared border (i.e. - * the two ranges together make a simple rectangular region. - */ - public static boolean hasExactSharedBorder(CellRangeAddress crA, CellRangeAddress crB) { - int oFirstRow = crB.getFirstRow(); - int oLastRow = crB.getLastRow(); - int oFirstCol = crB.getFirstColumn(); - int oLastCol = crB.getLastColumn(); - - if (crA.getFirstRow() > 0 && crA.getFirstRow()-1 == oLastRow || - oFirstRow > 0 && oFirstRow-1 == crA.getLastRow()) { - // ranges have a horizontal border in common - // make sure columns are identical: - return crA.getFirstColumn() == oFirstCol && crA.getLastColumn() == oLastCol; - } + if (crA.getFirstColumn()>0 && crA.getFirstColumn() - 1 == oLastCol || + oFirstCol>0 && crA.getLastColumn() == oFirstCol -1) { + // ranges have a vertical border in common + // make sure rows are identical: + return crA.getFirstRow() == oFirstRow && crA.getLastRow() == oLastRow; + } + return false; + } - if (crA.getFirstColumn()>0 && crA.getFirstColumn() - 1 == oLastCol || - oFirstCol>0 && crA.getLastColumn() == oFirstCol -1) { - // ranges have a vertical border in common - // make sure rows are identical: - return crA.getFirstRow() == oFirstRow && crA.getLastRow() == oLastRow; - } - return false; - } - - /** - * Create an enclosing CellRange for the two cell ranges. - * - * @return enclosing CellRange - */ - public static CellRangeAddress createEnclosingCellRange(CellRangeAddress crA, CellRangeAddress crB) { - if( crB == null) { - return crA.copy(); - } - - return - new CellRangeAddress( - lt(crB.getFirstRow(), crA.getFirstRow()) ?crB.getFirstRow() :crA.getFirstRow(), - gt(crB.getLastRow(), crA.getLastRow()) ?crB.getLastRow() :crA.getLastRow(), - lt(crB.getFirstColumn(),crA.getFirstColumn())?crB.getFirstColumn():crA.getFirstColumn(), - gt(crB.getLastColumn(), crA.getLastColumn()) ?crB.getLastColumn() :crA.getLastColumn() - ); - - } - - /** - * @return true if a < b - */ - private static boolean lt(int a, int b) - { - return a == -1 ? false : (b == -1 ? true : a < b); - } - - /** - * @return true if a <= b - */ - private static boolean le(int a, int b) - { - return a == b || lt(a,b); - } - - /** - * @return true if a > b - */ - private static boolean gt(int a, int b) - { - return lt(b,a); - } + /** + * Create an enclosing CellRange for the two cell ranges. + * + * @return enclosing CellRange + */ + public static CellRangeAddress createEnclosingCellRange(CellRangeAddress crA, CellRangeAddress crB) { + if( crB == null) { + return crA.copy(); + } - /** - * @return true if a >= b - */ - private static boolean ge(int a, int b) - { - return !lt(a,b); - } + return new CellRangeAddress( + lt(crB.getFirstRow(), crA.getFirstRow()) ?crB.getFirstRow() :crA.getFirstRow(), + gt(crB.getLastRow(), crA.getLastRow()) ?crB.getLastRow() :crA.getLastRow(), + lt(crB.getFirstColumn(),crA.getFirstColumn())?crB.getFirstColumn():crA.getFirstColumn(), + gt(crB.getLastColumn(), crA.getLastColumn()) ?crB.getLastColumn() :crA.getLastColumn() + ); + } + + /** + * @return true if a < b + */ + private static boolean lt(int a, int b) + { + return a == -1 ? false : (b == -1 ? true : a < b); + } + + /** + * @return true if a <= b + */ + private static boolean le(int a, int b) + { + return a == b || lt(a,b); + } + + /** + * @return true if a > b + */ + private static boolean gt(int a, int b) + { + return lt(b,a); + } + + /** + * @return true if a >= b + */ + private static boolean ge(int a, int b) + { + return !lt(a,b); + } } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java?rev=1691046&r1=1691045&r2=1691046&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java Tue Jul 14 18:14:50 2015 @@ -25,529 +25,524 @@ import org.apache.poi.util.LittleEndian; /** * Font Formatting Block of the Conditional Formatting Rule Record. - * - * @author Dmitriy Kumshayev */ -public final class FontFormatting -{ - private byte[] _rawData; - - private static final int OFFSET_FONT_NAME = 0; - private static final int OFFSET_FONT_HEIGHT = 64; - private static final int OFFSET_FONT_OPTIONS = 68; - private static final int OFFSET_FONT_WEIGHT = 72; - private static final int OFFSET_ESCAPEMENT_TYPE = 74; - private static final int OFFSET_UNDERLINE_TYPE = 76; - private static final int OFFSET_FONT_COLOR_INDEX = 80; - private static final int OFFSET_OPTION_FLAGS = 88; - private static final int OFFSET_ESCAPEMENT_TYPE_MODIFIED = 92; - private static final int OFFSET_UNDERLINE_TYPE_MODIFIED = 96; - private static final int OFFSET_FONT_WEIGHT_MODIFIED = 100; - private static final int OFFSET_NOT_USED1 = 104; - private static final int OFFSET_NOT_USED2 = 108; - private static final int OFFSET_NOT_USED3 = 112; // for some reason Excel always writes 0x7FFFFFFF at this offset - private static final int OFFSET_FONT_FORMATING_END = 116; - private static final int RAW_DATA_SIZE = 118; - - - public final static int FONT_CELL_HEIGHT_PRESERVED = 0xFFFFFFFF; - - // FONT OPTIONS MASKS - private static final BitField posture = BitFieldFactory.getInstance(0x00000002); - private static final BitField outline = BitFieldFactory.getInstance(0x00000008); - private static final BitField shadow = BitFieldFactory.getInstance(0x00000010); - private static final BitField cancellation = BitFieldFactory.getInstance(0x00000080); - - // OPTION FLAGS MASKS - - private static final BitField styleModified = BitFieldFactory.getInstance(0x00000002); - private static final BitField outlineModified = BitFieldFactory.getInstance(0x00000008); - private static final BitField shadowModified = BitFieldFactory.getInstance(0x00000010); - private static final BitField cancellationModified = BitFieldFactory.getInstance(0x00000080); - - /** Escapement type - None */ - public static final short SS_NONE = 0; - /** Escapement type - Superscript */ - public static final short SS_SUPER = 1; - /** Escapement type - Subscript */ - public static final short SS_SUB = 2; - /** Underline type - None */ - public static final byte U_NONE = 0; - /** Underline type - Single */ - public static final byte U_SINGLE = 1; - /** Underline type - Double */ - public static final byte U_DOUBLE = 2; - /** Underline type - Single Accounting */ - public static final byte U_SINGLE_ACCOUNTING = 0x21; - /** Underline type - Double Accounting */ - public static final byte U_DOUBLE_ACCOUNTING = 0x22; - /** Normal boldness (not bold) */ - private static final short FONT_WEIGHT_NORMAL = 0x190; - - /** - * Bold boldness (bold) - */ - private static final short FONT_WEIGHT_BOLD = 0x2bc; - - private FontFormatting(byte[] rawData) { - _rawData = rawData; - } - - public FontFormatting() - { - this(new byte[RAW_DATA_SIZE]); - - setFontHeight(-1); - setItalic(false); - setFontWieghtModified(false); - setOutline(false); - setShadow(false); - setStrikeout(false); - setEscapementType((short)0); - setUnderlineType((byte)0); - setFontColorIndex((short)-1); - - setFontStyleModified(false); - setFontOutlineModified(false); - setFontShadowModified(false); - setFontCancellationModified(false); - - setEscapementTypeModified(false); - setUnderlineTypeModified(false); - - setShort(OFFSET_FONT_NAME, 0); - setInt(OFFSET_NOT_USED1, 0x00000001); - setInt(OFFSET_NOT_USED2, 0x00000000); - setInt(OFFSET_NOT_USED3, 0x7FFFFFFF);// for some reason Excel always writes 0x7FFFFFFF at this offset - setShort(OFFSET_FONT_FORMATING_END, 0x0001); - } - - /** Creates new FontFormatting */ - public FontFormatting(RecordInputStream in) - { - this(new byte[RAW_DATA_SIZE]); - for (int i = 0; i < _rawData.length; i++) - { - _rawData[i] = in.readByte(); - } - } - - private short getShort(int offset) { - return LittleEndian.getShort( _rawData, offset); - } - private void setShort(int offset, int value) { - LittleEndian.putShort( _rawData, offset, (short)value); - } - private int getInt(int offset) { - return LittleEndian.getInt( _rawData, offset); - } - private void setInt(int offset, int value) { - LittleEndian.putInt( _rawData, offset, value); - } - - public byte[] getRawRecord() - { - return _rawData; - } - - public int getDataLength() { - return RAW_DATA_SIZE; - } - - /** - * sets the height of the font in 1/20th point units - * - * - * @param height fontheight (in points/20); or -1 to preserve the cell font height - */ - - public void setFontHeight(int height) - { - setInt(OFFSET_FONT_HEIGHT, height); - } - - /** - * gets the height of the font in 1/20th point units - * - * @return fontheight (in points/20); or -1 if not modified - */ - public int getFontHeight() - { - return getInt(OFFSET_FONT_HEIGHT); - } - - private void setFontOption(boolean option, BitField field) - { - int options = getInt(OFFSET_FONT_OPTIONS); - options = field.setBoolean(options, option); - setInt(OFFSET_FONT_OPTIONS, options); - } - - private boolean getFontOption(BitField field) - { - int options = getInt(OFFSET_FONT_OPTIONS); - return field.isSet(options); - } - - /** - * set the font to be italics or not - * - * @param italic - whether the font is italics or not - * @see #setFontOption(boolean, org.apache.poi.util.BitField) - */ - - public void setItalic(boolean italic) - { - setFontOption(italic, posture); - } - - /** - * get whether the font is to be italics or not - * - * @return italics - whether the font is italics or not - * @see #getFontOption(org.apache.poi.util.BitField) - */ - - public boolean isItalic() - { - return getFontOption(posture); - } - - public void setOutline(boolean on) - { - setFontOption(on, outline); - } - - public boolean isOutlineOn() - { - return getFontOption(outline); - } - - public void setShadow(boolean on) - { - setFontOption(on, shadow); - } - - public boolean isShadowOn() - { - return getFontOption(shadow); - } - - /** - * set the font to be stricken out or not - * - * @param strike - whether the font is stricken out or not - */ - - public void setStrikeout(boolean strike) - { - setFontOption(strike, cancellation); - } - - /** - * get whether the font is to be stricken out or not - * - * @return strike - whether the font is stricken out or not - * @see #getFontOption(org.apache.poi.util.BitField) - */ - - public boolean isStruckout() - { - return getFontOption(cancellation); - } - - /** - * set the font weight (100-1000dec or 0x64-0x3e8). Default is - * 0x190 for normal and 0x2bc for bold - * - * @param bw - a number between 100-1000 for the fonts "boldness" - */ - - private void setFontWeight(short pbw) - { - short bw = pbw; - if( bw<100) { bw=100; } - if( bw>1000){ bw=1000; } - setShort(OFFSET_FONT_WEIGHT, bw); - } - - /** - * set the font weight to bold (weight=700) or to normal(weight=400) boldness. - * - * @param bold - set font weight to bold if true; to normal otherwise - */ - public void setBold(boolean bold) - { - setFontWeight(bold?FONT_WEIGHT_BOLD:FONT_WEIGHT_NORMAL); - } - - /** - * get the font weight for this font (100-1000dec or 0x64-0x3e8). Default is - * 0x190 for normal and 0x2bc for bold - * - * @return bw - a number between 100-1000 for the fonts "boldness" - */ - - public short getFontWeight() - { - return getShort(OFFSET_FONT_WEIGHT); - } - - /** - * get whether the font weight is set to bold or not - * - * @return bold - whether the font is bold or not - */ - - public boolean isBold() - { - return getFontWeight()==FONT_WEIGHT_BOLD; - } - - /** - * get the type of super or subscript for the font - * - * @return super or subscript option - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB - */ - public short getEscapementType() - { - return getShort(OFFSET_ESCAPEMENT_TYPE); - } - - /** - * set the escapement type for the font - * - * @param escapementType super or subscript option - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB - */ - public void setEscapementType( short escapementType) - { - setShort(OFFSET_ESCAPEMENT_TYPE, escapementType); - } - - /** - * get the type of underlining for the font - * - * @return font underlining type - * - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_NONE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE_ACCOUNTING - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE_ACCOUNTING - */ - - public short getUnderlineType() - { - return getShort(OFFSET_UNDERLINE_TYPE); - } - - /** - * set the type of underlining type for the font - * - * @param underlineType underline option - * - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_NONE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE_ACCOUNTING - * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE_ACCOUNTING - */ - public void setUnderlineType( short underlineType) - { - setShort(OFFSET_UNDERLINE_TYPE, underlineType); - } - - - public short getFontColorIndex() - { - return (short)getInt(OFFSET_FONT_COLOR_INDEX); - } - - public void setFontColorIndex(short fci ) - { - setInt(OFFSET_FONT_COLOR_INDEX,fci); - } - - private boolean getOptionFlag(BitField field) - { - int optionFlags = getInt(OFFSET_OPTION_FLAGS); - int value = field.getValue(optionFlags); - return value==0? true : false ; - } - - private void setOptionFlag(boolean modified, BitField field) - { - int value = modified? 0 : 1; - int optionFlags = getInt(OFFSET_OPTION_FLAGS); - optionFlags = field.setValue(optionFlags, value); - setInt(OFFSET_OPTION_FLAGS, optionFlags); - } - - - public boolean isFontStyleModified() - { - return getOptionFlag(styleModified); - } - - - public void setFontStyleModified(boolean modified) - { - setOptionFlag(modified, styleModified); - } - - public boolean isFontOutlineModified() - { - return getOptionFlag(outlineModified); - } - - public void setFontOutlineModified(boolean modified) - { - setOptionFlag(modified, outlineModified); - } - - public boolean isFontShadowModified() - { - return getOptionFlag(shadowModified); - } - - public void setFontShadowModified(boolean modified) - { - setOptionFlag(modified, shadowModified); - } - public void setFontCancellationModified(boolean modified) - { - setOptionFlag(modified, cancellationModified); - } - - public boolean isFontCancellationModified() - { - return getOptionFlag(cancellationModified); - } - - public void setEscapementTypeModified(boolean modified) - { - int value = modified? 0 : 1; - setInt(OFFSET_ESCAPEMENT_TYPE_MODIFIED, value); - } - public boolean isEscapementTypeModified() - { - int escapementModified = getInt(OFFSET_ESCAPEMENT_TYPE_MODIFIED); - return escapementModified == 0; - } - - public void setUnderlineTypeModified(boolean modified) - { - int value = modified? 0 : 1; - setInt(OFFSET_UNDERLINE_TYPE_MODIFIED, value); - } - - public boolean isUnderlineTypeModified() - { - int underlineModified = getInt(OFFSET_UNDERLINE_TYPE_MODIFIED); - return underlineModified == 0; - } - - public void setFontWieghtModified(boolean modified) - { - int value = modified? 0 : 1; - setInt(OFFSET_FONT_WEIGHT_MODIFIED, value); - } - - public boolean isFontWeightModified() - { - int fontStyleModified = getInt(OFFSET_FONT_WEIGHT_MODIFIED); - return fontStyleModified == 0; - } - - public String toString() - { - StringBuffer buffer = new StringBuffer(); - buffer.append(" [Font Formatting]\n"); - - buffer.append(" .font height = ").append(getFontHeight()).append(" twips\n"); - - if( isFontStyleModified() ) - { - buffer.append(" .font posture = ").append(isItalic()?"Italic":"Normal").append("\n"); - } - else - { - buffer.append(" .font posture = ]not modified]").append("\n"); - } - - if( isFontOutlineModified() ) - { - buffer.append(" .font outline = ").append(isOutlineOn()).append("\n"); - } - else - { - buffer.append(" .font outline is not modified\n"); - } - - if( isFontShadowModified() ) - { - buffer.append(" .font shadow = ").append(isShadowOn()).append("\n"); - } - else - { - buffer.append(" .font shadow is not modified\n"); - } - - if( isFontCancellationModified() ) - { - buffer.append(" .font strikeout = ").append(isStruckout()).append("\n"); - } - else - { - buffer.append(" .font strikeout is not modified\n"); - } - - if( isFontStyleModified() ) - { - buffer.append(" .font weight = "). - append(getFontWeight()). - append( - getFontWeight() == FONT_WEIGHT_NORMAL ? "(Normal)" - : getFontWeight() == FONT_WEIGHT_BOLD ? "(Bold)" : "0x"+Integer.toHexString(getFontWeight())). - append("\n"); - } - else - { - buffer.append(" .font weight = ]not modified]").append("\n"); - } - - if( isEscapementTypeModified() ) - { - buffer.append(" .escapement type = ").append(getEscapementType()).append("\n"); - } - else - { - buffer.append(" .escapement type is not modified\n"); - } - - if( isUnderlineTypeModified() ) - { - buffer.append(" .underline type = ").append(getUnderlineType()).append("\n"); - } - else - { - buffer.append(" .underline type is not modified\n"); - } - buffer.append(" .color index = ").append("0x"+Integer.toHexString(getFontColorIndex()).toUpperCase()).append("\n"); - - buffer.append(" [/Font Formatting]\n"); - return buffer.toString(); - } - - public Object clone() - { - byte[] rawData = _rawData.clone(); - return new FontFormatting(rawData); - } +public final class FontFormatting { + private byte[] _rawData; + + private static final int OFFSET_FONT_NAME = 0; + private static final int OFFSET_FONT_HEIGHT = 64; + private static final int OFFSET_FONT_OPTIONS = 68; + private static final int OFFSET_FONT_WEIGHT = 72; + private static final int OFFSET_ESCAPEMENT_TYPE = 74; + private static final int OFFSET_UNDERLINE_TYPE = 76; + private static final int OFFSET_FONT_COLOR_INDEX = 80; + private static final int OFFSET_OPTION_FLAGS = 88; + private static final int OFFSET_ESCAPEMENT_TYPE_MODIFIED = 92; + private static final int OFFSET_UNDERLINE_TYPE_MODIFIED = 96; + private static final int OFFSET_FONT_WEIGHT_MODIFIED = 100; + private static final int OFFSET_NOT_USED1 = 104; + private static final int OFFSET_NOT_USED2 = 108; + private static final int OFFSET_NOT_USED3 = 112; // for some reason Excel always writes 0x7FFFFFFF at this offset + private static final int OFFSET_FONT_FORMATING_END = 116; + private static final int RAW_DATA_SIZE = 118; + + + public final static int FONT_CELL_HEIGHT_PRESERVED = 0xFFFFFFFF; + + // FONT OPTIONS MASKS + private static final BitField posture = BitFieldFactory.getInstance(0x00000002); + private static final BitField outline = BitFieldFactory.getInstance(0x00000008); + private static final BitField shadow = BitFieldFactory.getInstance(0x00000010); + private static final BitField cancellation = BitFieldFactory.getInstance(0x00000080); + + // OPTION FLAGS MASKS + + private static final BitField styleModified = BitFieldFactory.getInstance(0x00000002); + private static final BitField outlineModified = BitFieldFactory.getInstance(0x00000008); + private static final BitField shadowModified = BitFieldFactory.getInstance(0x00000010); + private static final BitField cancellationModified = BitFieldFactory.getInstance(0x00000080); + + /** Escapement type - None */ + public static final short SS_NONE = 0; + /** Escapement type - Superscript */ + public static final short SS_SUPER = 1; + /** Escapement type - Subscript */ + public static final short SS_SUB = 2; + /** Underline type - None */ + public static final byte U_NONE = 0; + /** Underline type - Single */ + public static final byte U_SINGLE = 1; + /** Underline type - Double */ + public static final byte U_DOUBLE = 2; + /** Underline type - Single Accounting */ + public static final byte U_SINGLE_ACCOUNTING = 0x21; + /** Underline type - Double Accounting */ + public static final byte U_DOUBLE_ACCOUNTING = 0x22; + /** Normal boldness (not bold) */ + private static final short FONT_WEIGHT_NORMAL = 0x190; + + /** + * Bold boldness (bold) + */ + private static final short FONT_WEIGHT_BOLD = 0x2bc; + + private FontFormatting(byte[] rawData) { + _rawData = rawData; + } + + public FontFormatting() + { + this(new byte[RAW_DATA_SIZE]); + + setFontHeight(-1); + setItalic(false); + setFontWieghtModified(false); + setOutline(false); + setShadow(false); + setStrikeout(false); + setEscapementType((short)0); + setUnderlineType((byte)0); + setFontColorIndex((short)-1); + + setFontStyleModified(false); + setFontOutlineModified(false); + setFontShadowModified(false); + setFontCancellationModified(false); + + setEscapementTypeModified(false); + setUnderlineTypeModified(false); + + setShort(OFFSET_FONT_NAME, 0); + setInt(OFFSET_NOT_USED1, 0x00000001); + setInt(OFFSET_NOT_USED2, 0x00000000); + setInt(OFFSET_NOT_USED3, 0x7FFFFFFF);// for some reason Excel always writes 0x7FFFFFFF at this offset + setShort(OFFSET_FONT_FORMATING_END, 0x0001); + } + + /** Creates new FontFormatting */ + public FontFormatting(RecordInputStream in) + { + this(new byte[RAW_DATA_SIZE]); + for (int i = 0; i < _rawData.length; i++) + { + _rawData[i] = in.readByte(); + } + } + + private short getShort(int offset) { + return LittleEndian.getShort( _rawData, offset); + } + private void setShort(int offset, int value) { + LittleEndian.putShort( _rawData, offset, (short)value); + } + private int getInt(int offset) { + return LittleEndian.getInt( _rawData, offset); + } + private void setInt(int offset, int value) { + LittleEndian.putInt( _rawData, offset, value); + } + + public byte[] getRawRecord() + { + return _rawData; + } + + public int getDataLength() { + return RAW_DATA_SIZE; + } + + /** + * sets the height of the font in 1/20th point units + * + * + * @param height fontheight (in points/20); or -1 to preserve the cell font height + */ + + public void setFontHeight(int height) + { + setInt(OFFSET_FONT_HEIGHT, height); + } + + /** + * gets the height of the font in 1/20th point units + * + * @return fontheight (in points/20); or -1 if not modified + */ + public int getFontHeight() + { + return getInt(OFFSET_FONT_HEIGHT); + } + + private void setFontOption(boolean option, BitField field) + { + int options = getInt(OFFSET_FONT_OPTIONS); + options = field.setBoolean(options, option); + setInt(OFFSET_FONT_OPTIONS, options); + } + + private boolean getFontOption(BitField field) + { + int options = getInt(OFFSET_FONT_OPTIONS); + return field.isSet(options); + } + + /** + * set the font to be italics or not + * + * @param italic - whether the font is italics or not + * @see #setFontOption(boolean, org.apache.poi.util.BitField) + */ + + public void setItalic(boolean italic) + { + setFontOption(italic, posture); + } + + /** + * get whether the font is to be italics or not + * + * @return italics - whether the font is italics or not + * @see #getFontOption(org.apache.poi.util.BitField) + */ + + public boolean isItalic() + { + return getFontOption(posture); + } + + public void setOutline(boolean on) + { + setFontOption(on, outline); + } + + public boolean isOutlineOn() + { + return getFontOption(outline); + } + + public void setShadow(boolean on) + { + setFontOption(on, shadow); + } + + public boolean isShadowOn() + { + return getFontOption(shadow); + } + + /** + * set the font to be stricken out or not + * + * @param strike - whether the font is stricken out or not + */ + public void setStrikeout(boolean strike) + { + setFontOption(strike, cancellation); + } + + /** + * get whether the font is to be stricken out or not + * + * @return strike - whether the font is stricken out or not + * @see #getFontOption(org.apache.poi.util.BitField) + */ + public boolean isStruckout() + { + return getFontOption(cancellation); + } + + /** + * set the font weight (100-1000dec or 0x64-0x3e8). Default is + * 0x190 for normal and 0x2bc for bold + * + * @param bw - a number between 100-1000 for the fonts "boldness" + */ + + private void setFontWeight(short pbw) + { + short bw = pbw; + if( bw<100) { bw=100; } + if( bw>1000){ bw=1000; } + setShort(OFFSET_FONT_WEIGHT, bw); + } + + /** + * set the font weight to bold (weight=700) or to normal(weight=400) boldness. + * + * @param bold - set font weight to bold if true; to normal otherwise + */ + public void setBold(boolean bold) + { + setFontWeight(bold?FONT_WEIGHT_BOLD:FONT_WEIGHT_NORMAL); + } + + /** + * get the font weight for this font (100-1000dec or 0x64-0x3e8). Default is + * 0x190 for normal and 0x2bc for bold + * + * @return bw - a number between 100-1000 for the fonts "boldness" + */ + + public short getFontWeight() + { + return getShort(OFFSET_FONT_WEIGHT); + } + + /** + * get whether the font weight is set to bold or not + * + * @return bold - whether the font is bold or not + */ + + public boolean isBold() + { + return getFontWeight()==FONT_WEIGHT_BOLD; + } + + /** + * get the type of super or subscript for the font + * + * @return super or subscript option + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB + */ + public short getEscapementType() + { + return getShort(OFFSET_ESCAPEMENT_TYPE); + } + + /** + * set the escapement type for the font + * + * @param escapementType super or subscript option + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB + */ + public void setEscapementType( short escapementType) + { + setShort(OFFSET_ESCAPEMENT_TYPE, escapementType); + } + + /** + * get the type of underlining for the font + * + * @return font underlining type + * + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_NONE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE_ACCOUNTING + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE_ACCOUNTING + */ + public short getUnderlineType() + { + return getShort(OFFSET_UNDERLINE_TYPE); + } + + /** + * set the type of underlining type for the font + * + * @param underlineType underline option + * + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_NONE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE_ACCOUNTING + * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE_ACCOUNTING + */ + public void setUnderlineType( short underlineType) + { + setShort(OFFSET_UNDERLINE_TYPE, underlineType); + } + + + public short getFontColorIndex() + { + return (short)getInt(OFFSET_FONT_COLOR_INDEX); + } + + public void setFontColorIndex(short fci ) + { + setInt(OFFSET_FONT_COLOR_INDEX,fci); + } + + private boolean getOptionFlag(BitField field) + { + int optionFlags = getInt(OFFSET_OPTION_FLAGS); + int value = field.getValue(optionFlags); + return value==0? true : false ; + } + + private void setOptionFlag(boolean modified, BitField field) + { + int value = modified? 0 : 1; + int optionFlags = getInt(OFFSET_OPTION_FLAGS); + optionFlags = field.setValue(optionFlags, value); + setInt(OFFSET_OPTION_FLAGS, optionFlags); + } + + + public boolean isFontStyleModified() + { + return getOptionFlag(styleModified); + } + + + public void setFontStyleModified(boolean modified) + { + setOptionFlag(modified, styleModified); + } + + public boolean isFontOutlineModified() + { + return getOptionFlag(outlineModified); + } + + public void setFontOutlineModified(boolean modified) + { + setOptionFlag(modified, outlineModified); + } + + public boolean isFontShadowModified() + { + return getOptionFlag(shadowModified); + } + + public void setFontShadowModified(boolean modified) + { + setOptionFlag(modified, shadowModified); + } + public void setFontCancellationModified(boolean modified) + { + setOptionFlag(modified, cancellationModified); + } + + public boolean isFontCancellationModified() + { + return getOptionFlag(cancellationModified); + } + + public void setEscapementTypeModified(boolean modified) + { + int value = modified? 0 : 1; + setInt(OFFSET_ESCAPEMENT_TYPE_MODIFIED, value); + } + public boolean isEscapementTypeModified() + { + int escapementModified = getInt(OFFSET_ESCAPEMENT_TYPE_MODIFIED); + return escapementModified == 0; + } + + public void setUnderlineTypeModified(boolean modified) + { + int value = modified? 0 : 1; + setInt(OFFSET_UNDERLINE_TYPE_MODIFIED, value); + } + + public boolean isUnderlineTypeModified() + { + int underlineModified = getInt(OFFSET_UNDERLINE_TYPE_MODIFIED); + return underlineModified == 0; + } + + public void setFontWieghtModified(boolean modified) + { + int value = modified? 0 : 1; + setInt(OFFSET_FONT_WEIGHT_MODIFIED, value); + } + + public boolean isFontWeightModified() + { + int fontStyleModified = getInt(OFFSET_FONT_WEIGHT_MODIFIED); + return fontStyleModified == 0; + } + + public String toString() + { + StringBuffer buffer = new StringBuffer(); + buffer.append(" [Font Formatting]\n"); + + buffer.append(" .font height = ").append(getFontHeight()).append(" twips\n"); + + if( isFontStyleModified() ) + { + buffer.append(" .font posture = ").append(isItalic()?"Italic":"Normal").append("\n"); + } + else + { + buffer.append(" .font posture = ]not modified]").append("\n"); + } + + if( isFontOutlineModified() ) + { + buffer.append(" .font outline = ").append(isOutlineOn()).append("\n"); + } + else + { + buffer.append(" .font outline is not modified\n"); + } + + if( isFontShadowModified() ) + { + buffer.append(" .font shadow = ").append(isShadowOn()).append("\n"); + } + else + { + buffer.append(" .font shadow is not modified\n"); + } + + if( isFontCancellationModified() ) + { + buffer.append(" .font strikeout = ").append(isStruckout()).append("\n"); + } + else + { + buffer.append(" .font strikeout is not modified\n"); + } + + if( isFontStyleModified() ) + { + buffer.append(" .font weight = "). + append(getFontWeight()). + append( + getFontWeight() == FONT_WEIGHT_NORMAL ? "(Normal)" + : getFontWeight() == FONT_WEIGHT_BOLD ? "(Bold)" + : "0x"+Integer.toHexString(getFontWeight())). + append("\n"); + } + else + { + buffer.append(" .font weight = ]not modified]").append("\n"); + } + + if( isEscapementTypeModified() ) + { + buffer.append(" .escapement type = ").append(getEscapementType()).append("\n"); + } + else + { + buffer.append(" .escapement type is not modified\n"); + } + + if( isUnderlineTypeModified() ) + { + buffer.append(" .underline type = ").append(getUnderlineType()).append("\n"); + } + else + { + buffer.append(" .underline type is not modified\n"); + } + buffer.append(" .color index = ").append("0x"+Integer.toHexString(getFontColorIndex()).toUpperCase()).append("\n"); + + buffer.append(" [/Font Formatting]\n"); + return buffer.toString(); + } + + public Object clone() + { + byte[] rawData = _rawData.clone(); + return new FontFormatting(rawData); + } } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/cf/PatternFormatting.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/cf/PatternFormatting.java?rev=1691046&r1=1691045&r2=1691046&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/hssf/record/cf/PatternFormatting.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/cf/PatternFormatting.java Tue Jul 14 18:14:50 2015 @@ -24,8 +24,6 @@ import org.apache.poi.util.LittleEndianO /** * Pattern Formatting Block of the Conditional Formatting Rule Record. - * - * @author Dmitriy Kumshayev */ public final class PatternFormatting implements Cloneable { /** No background */ Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java?rev=1691046&r1=1691045&r2=1691046&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java Tue Jul 14 18:14:50 2015 @@ -25,57 +25,54 @@ import org.apache.poi.ss.usermodel.Color * High level representation for Font Formatting component * of Conditional Formatting settings */ -public final class HSSFFontFormatting implements org.apache.poi.ss.usermodel.FontFormatting -{ - /** Underline type - None */ - public final static byte U_NONE = FontFormatting.U_NONE; - /** Underline type - Single */ - public final static byte U_SINGLE = FontFormatting.U_SINGLE; - /** Underline type - Double */ - public final static byte U_DOUBLE = FontFormatting.U_DOUBLE; - /** Underline type - Single Accounting */ - public final static byte U_SINGLE_ACCOUNTING = FontFormatting.U_SINGLE_ACCOUNTING; - /** Underline type - Double Accounting */ - public final static byte U_DOUBLE_ACCOUNTING = FontFormatting.U_DOUBLE_ACCOUNTING; - - private final FontFormatting fontFormatting; - private final HSSFWorkbook workbook; - - protected HSSFFontFormatting(CFRuleBase cfRuleRecord, HSSFWorkbook workbook) - { - this.fontFormatting = cfRuleRecord.getFontFormatting(); - this.workbook = workbook; - } - - protected FontFormatting getFontFormattingBlock() - { - return fontFormatting; - } - - /** - * get the type of super or subscript for the font - * - * @return super or subscript option - * @see #SS_NONE - * @see #SS_SUPER - * @see #SS_SUB - */ - public short getEscapementType() - { - return fontFormatting.getEscapementType(); - } - - /** - * @return font color index - */ - public short getFontColorIndex() - { - return fontFormatting.getFontColorIndex(); - } - - public HSSFColor getFontColor() { - return workbook.getCustomPalette().getColor( - getFontColorIndex() +public final class HSSFFontFormatting implements org.apache.poi.ss.usermodel.FontFormatting { + /** Underline type - None */ + public final static byte U_NONE = FontFormatting.U_NONE; + /** Underline type - Single */ + public final static byte U_SINGLE = FontFormatting.U_SINGLE; + /** Underline type - Double */ + public final static byte U_DOUBLE = FontFormatting.U_DOUBLE; + /** Underline type - Single Accounting */ + public final static byte U_SINGLE_ACCOUNTING = FontFormatting.U_SINGLE_ACCOUNTING; + /** Underline type - Double Accounting */ + public final static byte U_DOUBLE_ACCOUNTING = FontFormatting.U_DOUBLE_ACCOUNTING; + + private final FontFormatting fontFormatting; + private final HSSFWorkbook workbook; + + protected HSSFFontFormatting(CFRuleBase cfRuleRecord, HSSFWorkbook workbook) { + this.fontFormatting = cfRuleRecord.getFontFormatting(); + this.workbook = workbook; + } + + protected FontFormatting getFontFormattingBlock() { + return fontFormatting; + } + + /** + * get the type of super or subscript for the font + * + * @return super or subscript option + * @see #SS_NONE + * @see #SS_SUPER + * @see #SS_SUB + */ + public short getEscapementType() + { + return fontFormatting.getEscapementType(); + } + + /** + * @return font color index + */ + public short getFontColorIndex() + { + return fontFormatting.getFontColorIndex(); + } + + public HSSFColor getFontColor() { + return workbook.getCustomPalette().getColor( + getFontColorIndex() ); } @@ -83,7 +80,7 @@ public final class HSSFFontFormatting im if (color != null && !(color instanceof HSSFColor)) { throw new IllegalArgumentException("Only HSSFColor objects are supported"); } - + HSSFColor hcolor = (HSSFColor)color; if (hcolor == null) { fontFormatting.setFontColorIndex((short)0); @@ -93,328 +90,319 @@ public final class HSSFFontFormatting im } /** - * gets the height of the font in 1/20th point units - * - * @return fontheight (in points/20); or -1 if not modified - */ - public int getFontHeight() - { - return fontFormatting.getFontHeight(); - } - - /** - * get the font weight for this font (100-1000dec or 0x64-0x3e8). Default is - * 0x190 for normal and 0x2bc for bold - * - * @return bw - a number between 100-1000 for the fonts "boldness" - */ - - public short getFontWeight() - { - return fontFormatting.getFontWeight(); - } - - /** - * @see org.apache.poi.hssf.record.cf.FontFormatting#getRawRecord() - */ - protected byte[] getRawRecord() - { - return fontFormatting.getRawRecord(); - } - - /** - * get the type of underlining for the font - * - * @return font underlining type - * - * @see #U_NONE - * @see #U_SINGLE - * @see #U_DOUBLE - * @see #U_SINGLE_ACCOUNTING - * @see #U_DOUBLE_ACCOUNTING - */ - public short getUnderlineType() - { - return fontFormatting.getUnderlineType(); - } - - /** - * get whether the font weight is set to bold or not - * - * @return bold - whether the font is bold or not - */ - public boolean isBold() - { - return fontFormatting.isFontWeightModified() && fontFormatting.isBold(); - } - - /** - * @return true if escapement type was modified from default - */ - public boolean isEscapementTypeModified() - { - return fontFormatting.isEscapementTypeModified(); - } - - /** - * @return true if font cancellation was modified from default - */ - public boolean isFontCancellationModified() - { - return fontFormatting.isFontCancellationModified(); - } - - /** - * @return true if font outline type was modified from default - */ - public boolean isFontOutlineModified() - { - return fontFormatting.isFontOutlineModified(); - } - - /** - * @return true if font shadow type was modified from default - */ - public boolean isFontShadowModified() - { - return fontFormatting.isFontShadowModified(); - } - - /** - * @return true if font style was modified from default - */ - public boolean isFontStyleModified() - { - return fontFormatting.isFontStyleModified(); - } - - /** - * @return true if font style was set to italic - */ - public boolean isItalic() - { - return fontFormatting.isFontStyleModified() && fontFormatting.isItalic(); - } - - /** - * @return true if font outline is on - */ - public boolean isOutlineOn() - { - return fontFormatting.isFontOutlineModified() && fontFormatting.isOutlineOn(); - } - - /** - * @return true if font shadow is on - */ - public boolean isShadowOn() - { - return fontFormatting.isFontOutlineModified() && fontFormatting.isShadowOn(); - } - - /** - * @return true if font strikeout is on - */ - public boolean isStruckout() - { - return fontFormatting.isFontCancellationModified() && fontFormatting.isStruckout(); - } - - /** - * @return true if font underline type was modified from default - */ - public boolean isUnderlineTypeModified() - { - return fontFormatting.isUnderlineTypeModified(); - } - - /** - * @return true if font weight was modified from default - */ - public boolean isFontWeightModified() - { - return fontFormatting.isFontWeightModified(); - } - - /** - * set font style options. - * - * @param italic - if true, set posture style to italic, otherwise to normal - * @param bold if true, set font weight to bold, otherwise to normal - */ - - public void setFontStyle(boolean italic, boolean bold) - { - boolean modified = italic || bold; - fontFormatting.setItalic(italic); - fontFormatting.setBold(bold); - fontFormatting.setFontStyleModified(modified); - fontFormatting.setFontWieghtModified(modified); - } - - /** - * set font style options to default values (non-italic, non-bold) - */ - public void resetFontStyle() - { - setFontStyle(false,false); - } - - /** - * set the escapement type for the font - * - * @param escapementType super or subscript option - * @see #SS_NONE - * @see #SS_SUPER - * @see #SS_SUB - */ - public void setEscapementType(short escapementType) - { - switch(escapementType) - { - case HSSFFontFormatting.SS_SUB: - case HSSFFontFormatting.SS_SUPER: - fontFormatting.setEscapementType(escapementType); - fontFormatting.setEscapementTypeModified(true); - break; - case HSSFFontFormatting.SS_NONE: - fontFormatting.setEscapementType(escapementType); - fontFormatting.setEscapementTypeModified(false); - break; - default: - } - } - - /** - * @param modified - * @see org.apache.poi.hssf.record.cf.FontFormatting#setEscapementTypeModified(boolean) - */ - public void setEscapementTypeModified(boolean modified) - { - fontFormatting.setEscapementTypeModified(modified); - } - - /** - * @param modified - * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontCancellationModified(boolean) - */ - public void setFontCancellationModified(boolean modified) - { - fontFormatting.setFontCancellationModified(modified); - } - - /** - * @param fci - * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontColorIndex(short) - */ - public void setFontColorIndex(short fci) - { - fontFormatting.setFontColorIndex(fci); - } - - /** - * @param height - * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontHeight(int) - */ - public void setFontHeight(int height) - { - fontFormatting.setFontHeight(height); - } - - /** - * @param modified - * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontOutlineModified(boolean) - */ - public void setFontOutlineModified(boolean modified) - { - fontFormatting.setFontOutlineModified(modified); - } - - /** - * @param modified - * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontShadowModified(boolean) - */ - public void setFontShadowModified(boolean modified) - { - fontFormatting.setFontShadowModified(modified); - } - - /** - * @param modified - * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontStyleModified(boolean) - */ - public void setFontStyleModified(boolean modified) - { - fontFormatting.setFontStyleModified(modified); - } - - /** - * @param on - * @see org.apache.poi.hssf.record.cf.FontFormatting#setOutline(boolean) - */ - public void setOutline(boolean on) - { - fontFormatting.setOutline(on); - fontFormatting.setFontOutlineModified(on); - } - - /** - * @param on - * @see org.apache.poi.hssf.record.cf.FontFormatting#setShadow(boolean) - */ - public void setShadow(boolean on) - { - fontFormatting.setShadow(on); - fontFormatting.setFontShadowModified(on); - } - - /** - * @param strike - * @see org.apache.poi.hssf.record.cf.FontFormatting#setStrikeout(boolean) - */ - public void setStrikeout(boolean strike) - { - fontFormatting.setStrikeout(strike); - fontFormatting.setFontCancellationModified(strike); - } - - /** - * set the type of underlining type for the font - * - * @param underlineType super or subscript option - * - * @see #U_NONE - * @see #U_SINGLE - * @see #U_DOUBLE - * @see #U_SINGLE_ACCOUNTING - * @see #U_DOUBLE_ACCOUNTING - */ - public void setUnderlineType(short underlineType) - { - switch(underlineType) - { - case HSSFFontFormatting.U_SINGLE: - case HSSFFontFormatting.U_DOUBLE: - case HSSFFontFormatting.U_SINGLE_ACCOUNTING: - case HSSFFontFormatting.U_DOUBLE_ACCOUNTING: - fontFormatting.setUnderlineType(underlineType); - setUnderlineTypeModified(true); - break; - - case HSSFFontFormatting.U_NONE: - fontFormatting.setUnderlineType(underlineType); - setUnderlineTypeModified(false); - break; - default: - } - } - - /** - * @param modified - * @see org.apache.poi.hssf.record.cf.FontFormatting#setUnderlineTypeModified(boolean) - */ - public void setUnderlineTypeModified(boolean modified) - { - fontFormatting.setUnderlineTypeModified(modified); - } + * gets the height of the font in 1/20th point units + * + * @return fontheight (in points/20); or -1 if not modified + */ + public int getFontHeight() { + return fontFormatting.getFontHeight(); + } + + /** + * get the font weight for this font (100-1000dec or 0x64-0x3e8). Default is + * 0x190 for normal and 0x2bc for bold + * + * @return bw - a number between 100-1000 for the fonts "boldness" + */ + public short getFontWeight() { + return fontFormatting.getFontWeight(); + } + + /** + * @see org.apache.poi.hssf.record.cf.FontFormatting#getRawRecord() + */ + protected byte[] getRawRecord() { + return fontFormatting.getRawRecord(); + } + + /** + * get the type of underlining for the font + * + * @return font underlining type + * + * @see #U_NONE + * @see #U_SINGLE + * @see #U_DOUBLE + * @see #U_SINGLE_ACCOUNTING + * @see #U_DOUBLE_ACCOUNTING + */ + public short getUnderlineType() + { + return fontFormatting.getUnderlineType(); + } + + /** + * get whether the font weight is set to bold or not + * + * @return bold - whether the font is bold or not + */ + public boolean isBold() + { + return fontFormatting.isFontWeightModified() && fontFormatting.isBold(); + } + + /** + * @return true if escapement type was modified from default + */ + public boolean isEscapementTypeModified() + { + return fontFormatting.isEscapementTypeModified(); + } + + /** + * @return true if font cancellation was modified from default + */ + public boolean isFontCancellationModified() + { + return fontFormatting.isFontCancellationModified(); + } + + /** + * @return true if font outline type was modified from default + */ + public boolean isFontOutlineModified() + { + return fontFormatting.isFontOutlineModified(); + } + + /** + * @return true if font shadow type was modified from default + */ + public boolean isFontShadowModified() + { + return fontFormatting.isFontShadowModified(); + } + + /** + * @return true if font style was modified from default + */ + public boolean isFontStyleModified() + { + return fontFormatting.isFontStyleModified(); + } + + /** + * @return true if font style was set to italic + */ + public boolean isItalic() + { + return fontFormatting.isFontStyleModified() && fontFormatting.isItalic(); + } + + /** + * @return true if font outline is on + */ + public boolean isOutlineOn() + { + return fontFormatting.isFontOutlineModified() && fontFormatting.isOutlineOn(); + } + + /** + * @return true if font shadow is on + */ + public boolean isShadowOn() + { + return fontFormatting.isFontOutlineModified() && fontFormatting.isShadowOn(); + } + + /** + * @return true if font strikeout is on + */ + public boolean isStruckout() + { + return fontFormatting.isFontCancellationModified() && fontFormatting.isStruckout(); + } + + /** + * @return true if font underline type was modified from default + */ + public boolean isUnderlineTypeModified() + { + return fontFormatting.isUnderlineTypeModified(); + } + + /** + * @return true if font weight was modified from default + */ + public boolean isFontWeightModified() + { + return fontFormatting.isFontWeightModified(); + } + + /** + * set font style options. + * + * @param italic - if true, set posture style to italic, otherwise to normal + * @param bold if true, set font weight to bold, otherwise to normal + */ + + public void setFontStyle(boolean italic, boolean bold) + { + boolean modified = italic || bold; + fontFormatting.setItalic(italic); + fontFormatting.setBold(bold); + fontFormatting.setFontStyleModified(modified); + fontFormatting.setFontWieghtModified(modified); + } + + /** + * set font style options to default values (non-italic, non-bold) + */ + public void resetFontStyle() + { + setFontStyle(false,false); + } + + /** + * set the escapement type for the font + * + * @param escapementType super or subscript option + * @see #SS_NONE + * @see #SS_SUPER + * @see #SS_SUB + */ + public void setEscapementType(short escapementType) { + switch(escapementType) { + case HSSFFontFormatting.SS_SUB: + case HSSFFontFormatting.SS_SUPER: + fontFormatting.setEscapementType(escapementType); + fontFormatting.setEscapementTypeModified(true); + break; + case HSSFFontFormatting.SS_NONE: + fontFormatting.setEscapementType(escapementType); + fontFormatting.setEscapementTypeModified(false); + break; + default: + } + } + + /** + * @param modified + * @see org.apache.poi.hssf.record.cf.FontFormatting#setEscapementTypeModified(boolean) + */ + public void setEscapementTypeModified(boolean modified) { + fontFormatting.setEscapementTypeModified(modified); + } + + /** + * @param modified + * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontCancellationModified(boolean) + */ + public void setFontCancellationModified(boolean modified) + { + fontFormatting.setFontCancellationModified(modified); + } + + /** + * @param fci + * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontColorIndex(short) + */ + public void setFontColorIndex(short fci) + { + fontFormatting.setFontColorIndex(fci); + } + + /** + * @param height + * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontHeight(int) + */ + public void setFontHeight(int height) + { + fontFormatting.setFontHeight(height); + } + + /** + * @param modified + * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontOutlineModified(boolean) + */ + public void setFontOutlineModified(boolean modified) + { + fontFormatting.setFontOutlineModified(modified); + } + + /** + * @param modified + * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontShadowModified(boolean) + */ + public void setFontShadowModified(boolean modified) + { + fontFormatting.setFontShadowModified(modified); + } + + /** + * @param modified + * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontStyleModified(boolean) + */ + public void setFontStyleModified(boolean modified) + { + fontFormatting.setFontStyleModified(modified); + } + + /** + * @param on + * @see org.apache.poi.hssf.record.cf.FontFormatting#setOutline(boolean) + */ + public void setOutline(boolean on) + { + fontFormatting.setOutline(on); + fontFormatting.setFontOutlineModified(on); + } + + /** + * @param on + * @see org.apache.poi.hssf.record.cf.FontFormatting#setShadow(boolean) + */ + public void setShadow(boolean on) + { + fontFormatting.setShadow(on); + fontFormatting.setFontShadowModified(on); + } + + /** + * @param strike + * @see org.apache.poi.hssf.record.cf.FontFormatting#setStrikeout(boolean) + */ + public void setStrikeout(boolean strike) + { + fontFormatting.setStrikeout(strike); + fontFormatting.setFontCancellationModified(strike); + } + + /** + * set the type of underlining type for the font + * + * @param underlineType super or subscript option + * + * @see #U_NONE + * @see #U_SINGLE + * @see #U_DOUBLE + * @see #U_SINGLE_ACCOUNTING + * @see #U_DOUBLE_ACCOUNTING + */ + public void setUnderlineType(short underlineType) { + switch(underlineType) { + case HSSFFontFormatting.U_SINGLE: + case HSSFFontFormatting.U_DOUBLE: + case HSSFFontFormatting.U_SINGLE_ACCOUNTING: + case HSSFFontFormatting.U_DOUBLE_ACCOUNTING: + fontFormatting.setUnderlineType(underlineType); + setUnderlineTypeModified(true); + break; + + case HSSFFontFormatting.U_NONE: + fontFormatting.setUnderlineType(underlineType); + setUnderlineTypeModified(false); + break; + default: + } + } + + /** + * @param modified + * @see org.apache.poi.hssf.record.cf.FontFormatting#setUnderlineTypeModified(boolean) + */ + public void setUnderlineTypeModified(boolean modified) + { + fontFormatting.setUnderlineTypeModified(modified); + } } Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java?rev=1691046&r1=1691045&r2=1691046&view=diff ============================================================================== --- poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java Tue Jul 14 18:14:50 2015 @@ -22,9 +22,6 @@ package org.apache.poi.ss.usermodel; /** * High level representation for Font Formatting component * of Conditional Formatting settings - * - * @author Dmitriy Kumshayev - * @author Yegor Kozlov */ public interface FontFormatting { /** Escapement type - None */ --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org For additional commands, e-mail: commits-help@poi.apache.org