nick        2005/11/29 13:18:59

  Modified:    src/scratchpad/src/org/apache/poi/hslf/model TextRun.java
               src/scratchpad/src/org/apache/poi/hslf/usermodel
                        RichTextRun.java
  Log:
  Get a bit further with building up RichTextRuns
  
  Revision  Changes    Path
  1.7       +17 -1     
jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java
  
  Index: TextRun.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TextRun.java      13 Nov 2005 13:28:34 -0000      1.6
  +++ TextRun.java      29 Nov 2005 21:18:58 -0000      1.7
  @@ -80,20 +80,36 @@
                        _charAtom = tca;
                        _isUnicode = true;
                }
  +             String runRawText = getText();
                
                // Figure out the rich text runs
                // TODO: Handle when paragraph style and character styles don't 
match up
                LinkedList pStyles = new LinkedList();
                LinkedList cStyles = new LinkedList();
                if(_styleAtom != null) {
  +                     _styleAtom.setParentTextSize(runRawText.length());
                        pStyles = _styleAtom.getParagraphStyles();
                        cStyles = _styleAtom.getCharacterStyles();
                }
                if(pStyles.size() != cStyles.size()) {
                        throw new RuntimeException("Don't currently handle case 
of overlapping styles");
                }
  +             
  +             int pos = 0;
                _rtRuns = new RichTextRun[pStyles.size()];
  -             //for(int i=0; i<)
  +             for(int i=0; i<_rtRuns.length; i++) {
  +                     TextPropCollection pProps = 
(TextPropCollection)pStyles.get(i);
  +                     TextPropCollection cProps = 
(TextPropCollection)cStyles.get(i);
  +                     int len = cProps.getCharactersCovered();
  +                     _rtRuns[i] = new RichTextRun(this, pos, len, pProps, 
cProps);
  +                     pos += len;
  +             }
  +             
  +             // Handle case of no current style, with a default
  +             if(_rtRuns.length == 0) {
  +                     _rtRuns = new RichTextRun[1];
  +                     _rtRuns[0] = new RichTextRun(this, 0, 
runRawText.length());
  +             }
        }
        
        
  
  
  
  1.2       +37 -2     
jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java
  
  Index: RichTextRun.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RichTextRun.java  7 Nov 2005 22:24:15 -0000       1.1
  +++ RichTextRun.java  29 Nov 2005 21:18:59 -0000      1.2
  @@ -20,6 +20,7 @@
   package org.apache.poi.hslf.usermodel;
   
   import org.apache.poi.hslf.model.TextRun;
  +import org.apache.poi.hslf.record.StyleTextPropAtom.TextPropCollection;
   
   /**
    * Represents a run of text, all with the same style
  @@ -40,18 +41,39 @@
        /** How long a string (in the parent TextRun) we represent */
        private int length;
        
  -     /** Our paragraph and character style */
  +     /** 
  +      * Our paragraph and character style.
  +      * Note - we may share the Paragraph style with another RichTextRun
  +      *  (the Character style should be ours alone) 
  +      */
  +     private TextPropCollection paragraphStyle;
  +     private TextPropCollection characterStyle;
        
        /**
  -      * Create a new wrapper around a rich text string
  +      * Create a new wrapper around a (currently not)
  +      *  rich text string
         * @param parent
         * @param startAt
         * @param len
         */
        public RichTextRun(TextRun parent, int startAt, int len) {
  +             this(parent, startAt, len, null, null);
  +     }
  +     /**
  +      * Create a new wrapper around a rich text string
  +      * @param parent The parent TextRun
  +      * @param startAt The start position of this run
  +      * @param len The length of this run
  +      * @param pStyle The paragraph style property collection
  +      * @param cStyle The character style property collection
  +      */
  +     public RichTextRun(TextRun parent, int startAt, int len, 
  +     TextPropCollection pStyle,  TextPropCollection cStyle) {
                parentRun = parent;
                startPos = startAt;
                length = len;
  +             paragraphStyle = pStyle;
  +             characterStyle = cStyle;
        }
        
        /**
  @@ -82,4 +104,17 @@
        public void updateStartPosition(int startAt) {
                startPos = startAt;
        }
  +     
  +     
  +     
  +     /**
  +      * Unit Testing Only - get the underlying paragraph style collection.
  +      * For normal use, use the friendly setters and getters 
  +      */
  +     public TextPropCollection _getRawParagraphStyle() { return 
paragraphStyle; }
  +     /**
  +      * Unit Testing Only - get the underlying character style collection.
  +      * For normal use, use the friendly setters and getters 
  +      */
  +     public TextPropCollection _getRawCharacterStyle() { return 
characterStyle; }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/

Reply via email to