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 6E65AD819 for ; Sun, 23 Sep 2012 12:58:25 +0000 (UTC) Received: (qmail 80445 invoked by uid 500); 23 Sep 2012 12:58:25 -0000 Delivered-To: apmail-poi-commits-archive@poi.apache.org Received: (qmail 80411 invoked by uid 500); 23 Sep 2012 12:58:25 -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 80402 invoked by uid 99); 23 Sep 2012 12:58:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Sep 2012 12:58:25 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Sep 2012 12:58:23 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8E99B23888CD for ; Sun, 23 Sep 2012 12:57:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1389039 - in /poi/trunk/src/scratchpad: src/org/apache/poi/hwpf/ src/org/apache/poi/hwpf/sprm/ testcases/org/apache/poi/hwpf/converter/ Date: Sun, 23 Sep 2012 12:57:40 -0000 To: commits@poi.apache.org From: sergey@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120923125740.8E99B23888CD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergey Date: Sun Sep 23 12:57:39 2012 New Revision: 1389039 URL: http://svn.apache.org/viewvc?rev=1389039&view=rev Log: refactor list format override structures (was marked with @Internal annotation) Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmOperation.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java?rev=1389039&r1=1389038&r2=1389039&view=diff ============================================================================== --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java Sun Sep 23 12:57:39 2012 @@ -346,12 +346,13 @@ public final class HWPFDocument extends _ss = new StyleSheet(_tableStream, _fib.getFcStshf()); _ft = new FontTable(_tableStream, _fib.getFcSttbfffn(), _fib.getLcbSttbfffn()); - int listOffset = _fib.getFcPlcfLst(); - int lfoOffset = _fib.getFcPlfLfo(); - if (listOffset != 0 && _fib.getLcbPlcfLst() != 0) - { - _lt = new ListTables(_tableStream, _fib.getFcPlcfLst(), _fib.getFcPlfLfo()); - } + int listOffset = _fib.getFcPlfLst(); + int lfoOffset = _fib.getFcPlfLfo(); + if ( listOffset != 0 && _fib.getLcbPlfLst() != 0 ) + { + _lt = new ListTables( _tableStream, listOffset, _fib.getFcPlfLfo(), + _fib.getLcbPlfLfo() ); + } int sbtOffset = _fib.getFcSttbSavedBy(); int sbtLength = _fib.getLcbSttbSavedBy(); @@ -830,9 +831,7 @@ public final class HWPFDocument extends * Microsoft Office Word 97-2007 Binary File Format (.doc) * Specification; Page 26 of 210 */ - _fib.setFcPlfLfo( tableStream.getOffset() ); - _lt.writeListOverridesTo( tableStream ); - _fib.setLcbPlfLfo( tableStream.getOffset() - tableOffset ); + _lt.writeListOverridesTo( _fib, tableStream ); tableOffset = tableStream.getOffset(); } @@ -1024,14 +1023,15 @@ public final class HWPFDocument extends return _tableStream; } - public int registerList(HWPFList list) - { - if (_lt == null) + public int registerList( HWPFList list ) { - _lt = new ListTables(); + if ( _lt == null ) + { + _lt = new ListTables(); + } + return _lt.addList( list.getListData(), list.getLFO(), + list.getLFOData() ); } - return _lt.addList(list.getListData(), list.getOverride()); - } public void delete(int start, int length) { Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java?rev=1389039&r1=1389038&r2=1389039&view=diff ============================================================================== --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java Sun Sep 23 12:57:39 2012 @@ -159,9 +159,10 @@ public final class ParagraphSprmUncompre case 0xa: newPAP.setIlvl ((byte) sprm.getOperand()); break; - case 0xb: - newPAP.setIlfo (sprm.getOperand()); - break; + case 0xb: + /* sprmPIlfo -- 0x460B */ + newPAP.setIlfo( sprm.getOperandShortSigned() ); + break; case 0xc: newPAP.setFNoLnn (sprm.getOperand() != 0); break; Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmOperation.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmOperation.java?rev=1389039&r1=1389038&r2=1389039&view=diff ============================================================================== --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmOperation.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmOperation.java Sun Sep 23 12:57:39 2012 @@ -134,6 +134,15 @@ public final class SprmOperation } } + public short getOperandShortSigned() + { + if ( getSizeCode() != 2 && getSizeCode() != 4 && getSizeCode() != 5 ) + throw new UnsupportedOperationException( + "Current SPRM doesn't have signed short operand: " + this ); + + return LittleEndian.getShort( _grpprl, _gOffset ); + } + public int getOperation() { return BITFIELD_OP.getValue( _value ); Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java?rev=1389039&r1=1389038&r2=1389039&view=diff ============================================================================== --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java Sun Sep 23 12:57:39 2012 @@ -35,4 +35,11 @@ public class TestWordToTextConverter ext assertTrue( foundText .contains( "Soak the rice in water for three to four hours" ) ); } + + public void testBug53380_3() throws Exception + { + HWPFDocument doc = HWPFTestDataSamples + .openSampleFile( "Bug53380_3.doc" ); + WordToTextConverter.getText( doc ); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org For additional commands, e-mail: commits-help@poi.apache.org