poi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sack...@apache.org
Subject cvs commit: jakarta-poi/src/scratchpad/src/org/apache/poi/hwpf/model ListTables.java SectionTable.java
Date Thu, 08 Apr 2004 11:51:12 GMT
sackley     2004/04/08 04:51:12

  Modified:    src/scratchpad/src/org/apache/poi/hwpf/model ListTables.java
                        SectionTable.java
  Log:
  patch and latest bug fixes
  
  Revision  Changes    Path
  1.3       +19 -52    jakarta-poi/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java
  
  Index: ListTables.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ListTables.java	6 Apr 2004 04:44:01 -0000	1.2
  +++ ListTables.java	8 Apr 2004 11:51:12 -0000	1.3
  @@ -1,56 +1,20 @@
   /* ====================================================================
  - * The Apache Software License, Version 1.1
  - *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  - * reserved.
  - *
  - * Redistribution and use in source and binary forms, with or without
  - * modification, are permitted provided that the following conditions
  - * are met:
  - *
  - * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer.
  - *
  - * 2. Redistributions in binary form must reproduce the above copyright
  - *    notice, this list of conditions and the following disclaimer in
  - *    the documentation and/or other materials provided with the
  - *    distribution.
  - *
  - * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:
  - *       "This product includes software developed by the
  - *        Apache Software Foundation (http://www.apache.org/)."
  - *    Alternately, this acknowledgment may appear in the software itself,
  - *    if and wherever such third-party acknowledgments normally appear.
  - *
  - * 4. The names "Apache" and "Apache Software Foundation" and
  - *    "Apache POI" must not be used to endorse or promote products
  - *    derived from this software without prior written permission. For
  - *    written permission, please contact apache@apache.org.
  - *
  - * 5. Products derived from this software may not be called "Apache",
  - *    "Apache POI", nor may "Apache" appear in their name, without
  - *    prior written permission of the Apache Software Foundation.
  - *
  - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - * SUCH DAMAGE.
  - * ====================================================================
  - *
  - * This software consists of voluntary contributions made by many
  - * individuals on behalf of the Apache Software Foundation.  For more
  - * information on the Apache Software Foundation, please see
  - * <http://www.apache.org/>.
  - */
  +   Copyright 2002-2004   Apache Software Foundation
  +
  +   Licensed 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.hwpf.model;
   
  @@ -66,6 +30,9 @@
   import java.io.ByteArrayOutputStream;
   import java.io.IOException;
   
  +/**
  + * @author Ryan Ackley
  + */
   public class ListTables
   {
     private static final int LIST_DATA_SIZE = 28;
  
  
  
  1.3       +53 -5     jakarta-poi/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java
  
  Index: SectionTable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SectionTable.java	6 Apr 2004 04:44:01 -0000	1.2
  +++ SectionTable.java	8 Apr 2004 11:51:12 -0000	1.3
  @@ -19,6 +19,7 @@
   import java.util.ArrayList;
   import java.io.ByteArrayOutputStream;
   import java.io.IOException;
  +import java.util.List;
   
   import org.apache.poi.util.LittleEndian;
   import org.apache.poi.hwpf.model.io.*;
  @@ -31,16 +32,19 @@
     private static final int SED_SIZE = 12;
   
     private ArrayList _sections = new ArrayList();
  +  private List _text;
   
     public SectionTable()
     {
     }
   
  +
     public SectionTable(byte[] documentStream, byte[] tableStream, int offset,
  -                      int size, int fcMin)
  +                      int size, int fcMin,
  +                      List tpt)
     {
       PlexOfCps sedPlex = new PlexOfCps(tableStream, offset, size, SED_SIZE);
  -
  +    _text = tpt;
       int length = sedPlex.length();
   
       for (int x = 0; x < length; x++)
  @@ -53,7 +57,7 @@
         // check for the optimization
         if (fileOffset == 0xffffffff)
         {
  -        _sections.add(new SEPX(sed, node.getStart(), node.getEnd(), new byte[0]));
  +        _sections.add(new SEPX(sed, CPtoFC(node.getStart()), CPtoFC(node.getEnd()), new
byte[0]));
         }
         else
         {
  @@ -62,7 +66,7 @@
           byte[] buf = new byte[sepxSize];
           fileOffset += LittleEndian.SHORT_SIZE;
           System.arraycopy(documentStream, fileOffset, buf, 0, buf.length);
  -        _sections.add(new SEPX(sed, node.getStart(), node.getEnd(), buf));
  +        _sections.add(new SEPX(sed, CPtoFC(node.getStart()), CPtoFC(node.getEnd()), buf));
         }
       }
     }
  @@ -81,6 +85,50 @@
       }
     }
   
  +  private int CPtoFC(int cp)
  +  {
  +    int size = _text.size();
  +    int x = 0;
  +    int end = 0;
  +    int fc = 0;
  +    for (; x < size; x++)
  +    {
  +      TextPiece piece = (TextPiece)_text.get(x);
  +      int currentStart = end;
  +      end += ((piece.getEnd()- piece.getStart())/(piece.usesUnicode() ? 2 : 1));
  +      if (cp <= end)
  +      {
  +        fc += ((cp - currentStart) * (piece.usesUnicode() ? 2 : 1));
  +        break;
  +      }
  +      else
  +      {
  +        fc += (piece.getEnd() - piece.getStart());
  +      }
  +    }
  +    return fc;
  +  }
  +
  +  private int FCtoCP(int fc)
  +  {
  +    int size = _text.size();
  +    int cp = 0;
  +    for (int x = 0; x < size; x++)
  +    {
  +      TextPiece piece = (TextPiece)_text.get(x);
  +
  +      if (fc <= piece.getEnd())
  +      {
  +        cp += ((fc - piece.getStart())/ (piece.usesUnicode() ? 2 : 1));
  +        break;
  +      }
  +      else
  +      {
  +        cp += ((piece.getEnd() - piece.getStart())/ (piece.usesUnicode() ? 2 : 1));
  +      }
  +    }
  +    return cp;
  +  }
   
     public ArrayList getSections()
     {
  @@ -115,7 +163,7 @@
         sed.setFc(offset);
   
         // add the section descriptor bytes to the PlexOfCps.
  -      GenericPropertyNode property = new GenericPropertyNode(sepx.getStart(), sepx.getEnd(),
sed.toByteArray());
  +      GenericPropertyNode property = new GenericPropertyNode(FCtoCP(sepx.getStart()), FCtoCP(sepx.getEnd()),
sed.toByteArray());
         plex.addProperty(property);
   
         offset = docStream.getOffset();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: poi-dev-help@jakarta.apache.org


Mime
View raw message