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 2006/04/21 15:43:55 UTC

svn commit: r395880 - /jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java

Author: nick
Date: Fri Apr 21 06:43:53 2006
New Revision: 395880

URL: http://svn.apache.org/viewcvs?rev=395880&view=rev
Log:
Bug fix for newly created bitmask values (part of bug 39324). A few enhancements to make adding new TextPropCollections easier

Modified:
    jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java

Modified: jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java?rev=395880&r1=395879&r2=395880&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java (original)
+++ jakarta/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java Fri Apr 21 06:43:53 2006
@@ -173,10 +173,12 @@
 		paragraphStyles = new LinkedList();
 		charStyles = new LinkedList();
 
-		TextPropCollection defaultParagraphTextProps = new TextPropCollection(parentTextSize, (short)0);
+		TextPropCollection defaultParagraphTextProps = 
+			new TextPropCollection(parentTextSize, (short)0);
 		paragraphStyles.add(defaultParagraphTextProps);
 
-		TextPropCollection defaultCharacterTextProps = new TextPropCollection(parentTextSize);
+		TextPropCollection defaultCharacterTextProps = 
+			new TextPropCollection(parentTextSize);
 		charStyles.add(defaultCharacterTextProps);
 
 		// Set us as now initialised
@@ -271,6 +273,11 @@
 
 			// Save this properties set
 			charStyles.add(thisCollection);
+			
+			// Handle extra 1 char styles at the end
+			if(pos < rawContents.length && textHandled == size) {
+				size++;
+			}
 		}
 
 		// Handle anything left over
@@ -309,6 +316,27 @@
 
 		rawContents	= baos.toByteArray();
 	}
+	
+	/**
+	 * Create a new Paragraph TextPropCollection, and add it to the list
+	 * @param charactersCovered The number of characters this TextPropCollection will cover
+	 * @return the new TextPropCollection, which will then be in the list
+	 */
+	public TextPropCollection addParagraphTextPropCollection(int charactersCovered) {
+		TextPropCollection tpc = new TextPropCollection(charactersCovered, (short)0);
+		paragraphStyles.add(tpc);
+		return tpc;
+	}
+	/**
+	 * Create a new Character TextPropCollection, and add it to the list
+	 * @param charactersCovered The number of characters this TextPropCollection will cover
+	 * @return the new TextPropCollection, which will then be in the list
+	 */
+	public TextPropCollection addCharacterTextPropCollection(int charactersCovered) {
+		TextPropCollection tpc = new TextPropCollection(charactersCovered);
+		charStyles.add(tpc);
+		return tpc;
+	}
 
 
 /* ************************************************************************ */
@@ -320,7 +348,7 @@
 	 * Used to hold the number of characters affected, the list of active
 	 *  properties, and the random reserved field if required.
 	 */
-	public static class TextPropCollection {
+	public class TextPropCollection {
 		private int charactersCovered;
 		private short reservedField;
 		private LinkedList textPropList;
@@ -373,17 +401,6 @@
 		}
 
 		/**
-		 * Create a new collection of text properties (be they paragraph
-		 *  or character) which will be groked via a subsequent call to
-		 *  buildTextPropList().
-		 */
-		public TextPropCollection(int charactersCovered, short reservedField) {
-			this.charactersCovered = charactersCovered;
-			this.reservedField = reservedField;
-			textPropList = new LinkedList();
-		}
-
-		/**
 		 * For an existing set of text properties, build the list of 
 		 *  properties coded for in a given run of properties.
 		 * @return the number of bytes that were used encoding the properties list
@@ -415,9 +432,20 @@
 
 		/**
 		 * Create a new collection of text properties (be they paragraph
+		 *  or character) which will be groked via a subsequent call to
+		 *  buildTextPropList().
+		 */
+		private TextPropCollection(int charactersCovered, short reservedField) {
+			this.charactersCovered = charactersCovered;
+			this.reservedField = reservedField;
+			textPropList = new LinkedList();
+		}
+
+		/**
+		 * Create a new collection of text properties (be they paragraph
 		 *  or character) for a run of text without any
 		 */
-		public TextPropCollection(int textSize) {
+		private TextPropCollection(int textSize) {
 			charactersCovered = textSize;
 			reservedField = -1;
 			textPropList = new LinkedList();
@@ -434,7 +462,7 @@
 		/**
 		 * Writes out to disk the header, and then all the properties
 		 */
-		private void writeOut(OutputStream o) throws IOException {
+		protected void writeOut(OutputStream o) throws IOException {
 			// First goes the number of characters we affect
 			writeLittleEndian(charactersCovered,o);
 
@@ -487,6 +515,7 @@
 			this.sizeOfDataBlock = sizeOfDataBlock;
 			this.maskInHeader = maskInHeader;
 			this.propName = propName;
+			this.dataValue = 0;
 		}
 
 		/**
@@ -557,6 +586,11 @@
 			this.propName = overallName;
 			subPropMasks = new int[subPropNames.length];
 			subPropMatches = new boolean[subPropNames.length];
+			
+			// Initialise the masks list
+			for(int i=0; i<subPropMasks.length; i++) {
+				subPropMasks[i] = (1 << i);
+			}
 		}
 		
 		/**
@@ -576,7 +610,6 @@
 
 			// Figure out the values of the sub properties
 			for(int i=0; i< subPropMatches.length; i++) {
-				subPropMasks[i] = (1 << i);
 				subPropMatches[i] = false;
 				if((dataValue & subPropMasks[i]) != 0) {
 					subPropMatches[i] = true;



---------------------------------------------------------------------
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/