You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by ni...@apache.org on 2005/08/01 19:36:52 UTC
cvs commit: jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/record StyleTextPropAtom.java
nick 2005/08/01 10:36:52
Modified: src/scratchpad/src/org/apache/poi/hslf/record
StyleTextPropAtom.java
Log:
Add support for setting some of the style properties
Revision Changes Path
1.2 +89 -10 jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java
Index: StyleTextPropAtom.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StyleTextPropAtom.java 31 Jul 2005 18:06:26 -0000 1.1
+++ StyleTextPropAtom.java 1 Aug 2005 17:36:52 -0000 1.2
@@ -25,9 +25,10 @@
import java.util.Vector;
/**
- * A StyleTextPropAtom (type 4001). Holds character properties (font type,
- * font size, colour, bold, italic etc) and paragraph properties
- * (alignment, line spacing etc) for a block of text
+ * A StyleTextPropAtom (type 4001). Holds basic character properties
+ * (bold, italic, underline, possibly more?) and paragraph properties
+ * (alignment, line spacing etc) for the block of text (TextBytesAtom
+ * or TextCharsAtom) that this record follows
*
* @author Nick Burch
*/
@@ -55,6 +56,15 @@
return charStyles;
}
+ /**
+ * Set the number of characters covered by these text styles.
+ * This must equal the number of characters in the Text record
+ * that precedes this record, or things won't behave properly
+ */
+ public void setParagraphStyleCharactersCoveredLength(int len) {
+ paraStyleLen = (short)len;
+ }
+
/* *************** record code follows ********************** */
@@ -110,6 +120,25 @@
System.arraycopy(source,start+8+10+cpos,reserved,0,reserved.length);
}
+ /**
+ * A new set of text style properties for some text without any
+ */
+ public StyleTextPropAtom() {
+ _header = new byte[8];
+ reserved = new byte[0];
+ charStyles = new CharacterStyle[0];
+
+ // Set our type
+ LittleEndian.putInt(_header,2,(short)_type);
+ // Our initial size is 10
+ LittleEndian.putInt(_header,4,10);
+
+ // Blank paragraph style
+ paraStyleLen = 0;
+ paraStyle1 = 0;
+ paraStyle2 = 0;
+ }
+
/**
* We are of type 4001
*/
@@ -159,6 +188,13 @@
private int style2;
private short style3;
+ // style1 0x00010000
+ private static final int BOLD_STYLE = 65536;
+ // style1 0x00020000
+ private static final int ITALIC_STYLE = 131072;
+ // style1 0x00040000
+ private static final int UNDERLINED_STYLE = 262144;
+
/** Create a new Character Style from on-disk data */
protected CharacterStyle(short len, int s1, int s2, short s3) {
styleLen = len;
@@ -183,30 +219,73 @@
}
}
- /** Return the number of characters covered by these properties */
+
+ /**
+ * Return the number of characters covered by these properties.
+ * If it's the last CharacterStyle of a StyleTextPropAtom, it
+ * will normally be 0, indicating it applies to all the remaining
+ * text.
+ */
public int getCharactersCoveredLength() {
return styleLen;
}
+ /**
+ * Set the number of characters covered by these properties.
+ * If this is the last CharacterStyle of a StyleTextPropAtom, then
+ * a value of 0 should be used
+ */
+ public void setCharactersCoveredLength(int len) {
+ styleLen = (short)len;
+ }
+
+
/** Checks to see if the text is bold */
public boolean isBold() {
- // style1 0x00010000
- if ((style1 & 65536) == 65536) { return true; }
+ if ((style1 & BOLD_STYLE) == BOLD_STYLE) { return true; }
return false;
}
/** Checks to see if the text is italic */
public boolean isItalic() {
- // style1 0x00020000
- if ((style1 & 131072) == 131072) { return true; }
+ if ((style1 & ITALIC_STYLE) == ITALIC_STYLE) { return true; }
return false;
}
/** Checks to see if the text is underlined */
public boolean isUnderlined() {
- // style1 0x00040000
- if ((style1 & 262144) == 262144) { return true; }
+ if ((style1 & UNDERLINED_STYLE) == UNDERLINED_STYLE) { return true; }
return false;
}
+
+ /** Sets the text to be bold/not bold */
+ public void setBold(boolean bold) {
+ if(bold == isBold()) { return; }
+ if(bold) {
+ style1 += BOLD_STYLE;
+ } else {
+ style1 -= BOLD_STYLE;
+ }
+ }
+
+ /** Sets the text to be italic/not italic */
+ public void setItalic(boolean italic) {
+ if(italic == isItalic()) { return; }
+ if(italic) {
+ style1 += ITALIC_STYLE;
+ } else {
+ style1 -= ITALIC_STYLE;
+ }
+ }
+
+ /** Sets the text to be underlined/not underlined */
+ public void setUnderlined(boolean underlined) {
+ if(underlined == isUnderlined()) { return; }
+ if(underlined) {
+ style1 += UNDERLINED_STYLE;
+ } else {
+ style1 -= UNDERLINED_STYLE;
+ }
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/