aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2015-10-04 00:35:30 +0000
committerAndreas Beeker <kiwiwings@apache.org>2015-10-04 00:35:30 +0000
commit012cfb107cc9b72f962085c284467a8907f48794 (patch)
treedf90bbeaf051cb2bc68bf3410ce0b9b6b99275e3 /src
parent6d5e89298648e480c29747ba878cc0ea35f263a3 (diff)
downloadpoi-012cfb107cc9b72f962085c284467a8907f48794.tar.gz
poi-012cfb107cc9b72f962085c284467a8907f48794.zip
sonar fixes
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1706648 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/poi/hpsf/Section.java19
-rw-r--r--src/java/org/apache/poi/poifs/filesystem/BlockStore.java6
-rw-r--r--src/java/org/apache/poi/poifs/property/NPropertyTable.java9
-rw-r--r--src/java/org/apache/poi/poifs/storage/BATBlock.java10
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/AggregateFunction.java2
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/NumericFunction.java2
-rw-r--r--src/java/org/apache/poi/ss/usermodel/FractionFormat.java9
-rw-r--r--src/java/org/apache/poi/ss/util/ImageUtils.java13
-rw-r--r--src/java/org/apache/poi/util/HexDump.java6
-rw-r--r--src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java12
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java124
-rw-r--r--src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java30
-rw-r--r--src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java2
13 files changed, 133 insertions, 111 deletions
diff --git a/src/java/org/apache/poi/hpsf/Section.java b/src/java/org/apache/poi/hpsf/Section.java
index 787462c635..b473572100 100644
--- a/src/java/org/apache/poi/hpsf/Section.java
+++ b/src/java/org/apache/poi/hpsf/Section.java
@@ -150,6 +150,7 @@ public class Section
* @exception UnsupportedEncodingException if the section's codepage is not
* supported.
*/
+ @SuppressWarnings("unchecked")
public Section(final byte[] src, final int offset)
throws UnsupportedEncodingException
{
@@ -332,19 +333,25 @@ public class Section
public boolean equals(Object obj) {
- if (this == obj)
+ if (this == obj) {
return true;
- if (obj == null)
+ }
+ if (obj == null) {
return false;
- if (getClass() != obj.getClass())
+ }
+ if (getClass() != obj.getClass()) {
return false;
+ }
PropertyListEntry other = (PropertyListEntry) obj;
- if (id != other.id)
+ if (id != other.id) {
return false;
- if (length != other.length)
+ }
+ if (length != other.length) {
return false;
- if (offset != other.offset)
+ }
+ if (offset != other.offset) {
return false;
+ }
return true;
}
diff --git a/src/java/org/apache/poi/poifs/filesystem/BlockStore.java b/src/java/org/apache/poi/poifs/filesystem/BlockStore.java
index 0ef8082270..a56d111f3f 100644
--- a/src/java/org/apache/poi/poifs/filesystem/BlockStore.java
+++ b/src/java/org/apache/poi/poifs/filesystem/BlockStore.java
@@ -80,7 +80,11 @@ public abstract class BlockStore {
protected class ChainLoopDetector {
private boolean[] used_blocks;
protected ChainLoopDetector(long rawSize) {
- int numBlocks = (int)Math.ceil( ((double)rawSize) / getBlockStoreBlockSize() );
+ int blkSize = getBlockStoreBlockSize();
+ int numBlocks = (int)(rawSize / blkSize);
+ if ((rawSize % blkSize) != 0) {
+ numBlocks++;
+ }
used_blocks = new boolean[numBlocks];
}
protected void claim(int offset) {
diff --git a/src/java/org/apache/poi/poifs/property/NPropertyTable.java b/src/java/org/apache/poi/poifs/property/NPropertyTable.java
index ec38ddecb2..5528064086 100644
--- a/src/java/org/apache/poi/poifs/property/NPropertyTable.java
+++ b/src/java/org/apache/poi/poifs/property/NPropertyTable.java
@@ -119,8 +119,13 @@ public final class NPropertyTable extends PropertyTableBase {
*/
public int countBlocks()
{
- int size = _properties.size() * POIFSConstants.PROPERTY_SIZE;
- return (int)Math.ceil( ((double)size) / _bigBigBlockSize.getBigBlockSize());
+ long rawSize = _properties.size() * POIFSConstants.PROPERTY_SIZE;
+ int blkSize = _bigBigBlockSize.getBigBlockSize();
+ int numBlocks = (int)(rawSize / blkSize);
+ if ((rawSize % blkSize) != 0) {
+ numBlocks++;
+ }
+ return numBlocks;
}
/**
diff --git a/src/java/org/apache/poi/poifs/storage/BATBlock.java b/src/java/org/apache/poi/poifs/storage/BATBlock.java
index 53099644ac..b04591dde4 100644
--- a/src/java/org/apache/poi/poifs/storage/BATBlock.java
+++ b/src/java/org/apache/poi/poifs/storage/BATBlock.java
@@ -265,9 +265,10 @@ public final class BATBlock extends BigBlock {
public static BATBlockAndIndex getBATBlockAndIndex(final int offset,
final HeaderBlock header, final List<BATBlock> bats) {
POIFSBigBlockSize bigBlockSize = header.getBigBlockSize();
+ int entriesPerBlock = bigBlockSize.getBATEntriesPerBlock();
- int whichBAT = (int)Math.floor(offset / bigBlockSize.getBATEntriesPerBlock());
- int index = offset % bigBlockSize.getBATEntriesPerBlock();
+ int whichBAT = offset / entriesPerBlock;
+ int index = offset % entriesPerBlock;
return new BATBlockAndIndex( index, bats.get(whichBAT) );
}
@@ -279,10 +280,11 @@ public final class BATBlock extends BigBlock {
public static BATBlockAndIndex getSBATBlockAndIndex(final int offset,
final HeaderBlock header, final List<BATBlock> sbats) {
POIFSBigBlockSize bigBlockSize = header.getBigBlockSize();
+ int entriesPerBlock = bigBlockSize.getBATEntriesPerBlock();
// SBATs are so much easier, as they're chained streams
- int whichSBAT = (int)Math.floor(offset / bigBlockSize.getBATEntriesPerBlock());
- int index = offset % bigBlockSize.getBATEntriesPerBlock();
+ int whichSBAT = offset / entriesPerBlock;
+ int index = offset % entriesPerBlock;
return new BATBlockAndIndex( index, sbats.get(whichSBAT) );
}
diff --git a/src/java/org/apache/poi/ss/formula/functions/AggregateFunction.java b/src/java/org/apache/poi/ss/formula/functions/AggregateFunction.java
index 084355d303..644086d31e 100644
--- a/src/java/org/apache/poi/ss/formula/functions/AggregateFunction.java
+++ b/src/java/org/apache/poi/ss/formula/functions/AggregateFunction.java
@@ -115,7 +115,7 @@ public abstract class AggregateFunction extends MultiOperandNumericFunction {
double n = (N - 1) * dn + 1;
if (n == 1d) {
result = StatsLib.kthSmallest(ds, 1);
- } else if (n == N) {
+ } else if (Double.compare(n, N) == 0) {
result = StatsLib.kthLargest(ds, 1);
} else {
int k = (int) n;
diff --git a/src/java/org/apache/poi/ss/formula/functions/NumericFunction.java b/src/java/org/apache/poi/ss/formula/functions/NumericFunction.java
index 38d8006537..72be101ca7 100644
--- a/src/java/org/apache/poi/ss/formula/functions/NumericFunction.java
+++ b/src/java/org/apache/poi/ss/formula/functions/NumericFunction.java
@@ -366,7 +366,7 @@ public abstract class NumericFunction implements Function {
double d1 = NumericFunction.singleOperandEvaluate(arg1, srcRowIndex, srcColumnIndex);
double logE = Math.log(d0);
double base = d1;
- if (base == Math.E) {
+ if (Double.compare(base, Math.E) == 0) {
result = logE;
} else {
result = logE / Math.log(base);
diff --git a/src/java/org/apache/poi/ss/usermodel/FractionFormat.java b/src/java/org/apache/poi/ss/usermodel/FractionFormat.java
index 202ccdae22..b371c4ec84 100644
--- a/src/java/org/apache/poi/ss/usermodel/FractionFormat.java
+++ b/src/java/org/apache/poi/ss/usermodel/FractionFormat.java
@@ -24,6 +24,8 @@ import java.util.regex.Pattern;
import org.apache.poi.ss.format.SimpleFraction;
import org.apache.poi.ss.formula.eval.NotImplementedException;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
/**
* <p>Format class that handles Excel style fractions, such as "# #/#" and "#/###"</p>
@@ -39,7 +41,8 @@ import org.apache.poi.ss.formula.eval.NotImplementedException;
@SuppressWarnings("serial")
public class FractionFormat extends Format {
- private final static Pattern DENOM_FORMAT_PATTERN = Pattern.compile("(?:(#+)|(\\d+))");
+ private static final POILogger LOGGER = POILogFactory.getLogger(FractionFormat.class);
+ private static final Pattern DENOM_FORMAT_PATTERN = Pattern.compile("(?:(#+)|(\\d+))");
//this was chosen to match the earlier limitation of max denom power
//it can be expanded to get closer to Excel's calculations
@@ -47,7 +50,7 @@ public class FractionFormat extends Format {
//but as of this writing, the numerators and denominators
//with formats of that nature on very small values were quite
//far from Excel's calculations
- private final static int MAX_DENOM_POW = 4;
+ private static final int MAX_DENOM_POW = 4;
//there are two options:
//a) an exact denominator is specified in the formatString
@@ -133,7 +136,7 @@ public class FractionFormat extends Format {
fract = SimpleFraction.buildFractionMaxDenominator(decPart, maxDenom);
}
} catch (RuntimeException e){
- e.printStackTrace();
+ LOGGER.log(POILogger.WARN, "Can't format fraction", e);
return Double.toString(doubleValue);
}
diff --git a/src/java/org/apache/poi/ss/util/ImageUtils.java b/src/java/org/apache/poi/ss/util/ImageUtils.java
index 2e851416ac..16176682ad 100644
--- a/src/java/org/apache/poi/ss/util/ImageUtils.java
+++ b/src/java/org/apache/poi/ss/util/ImageUtils.java
@@ -237,7 +237,7 @@ public class ImageUtils {
if (isHSSF) {
w *= 1 - anchor.getDx1()/1024d;
} else {
- w -= anchor.getDx1()/EMU_PER_PIXEL;
+ w -= anchor.getDx1()/(double)EMU_PER_PIXEL;
}
while(col2 < anchor.getCol2()){
@@ -247,7 +247,7 @@ public class ImageUtils {
if (isHSSF) {
w += sheet.getColumnWidthInPixels(col2) * anchor.getDx2()/1024d;
} else {
- w += anchor.getDx2()/EMU_PER_PIXEL;
+ w += anchor.getDx2()/(double)EMU_PER_PIXEL;
}
double h = 0;
@@ -257,7 +257,7 @@ public class ImageUtils {
if (isHSSF) {
h *= 1 - anchor.getDy1()/256d;
} else {
- h -= anchor.getDy1()/EMU_PER_PIXEL;
+ h -= anchor.getDy1()/(double)EMU_PER_PIXEL;
}
while(row2 < anchor.getRow2()){
@@ -267,10 +267,13 @@ public class ImageUtils {
if (isHSSF) {
h += getRowHeightInPixels(sheet,row2) * anchor.getDy2()/256;
} else {
- h += anchor.getDy2()/EMU_PER_PIXEL;
+ h += anchor.getDy2()/(double)EMU_PER_PIXEL;
}
- return new Dimension((int)w*EMU_PER_PIXEL, (int)h*EMU_PER_PIXEL);
+ w *= EMU_PER_PIXEL;
+ h *= EMU_PER_PIXEL;
+
+ return new Dimension((int)Math.rint(w), (int)Math.rint(h));
}
diff --git a/src/java/org/apache/poi/util/HexDump.java b/src/java/org/apache/poi/util/HexDump.java
index 1357b88f09..7eb8c85068 100644
--- a/src/java/org/apache/poi/util/HexDump.java
+++ b/src/java/org/apache/poi/util/HexDump.java
@@ -343,21 +343,21 @@ public class HexDump {
* @return string of 8 (zero padded) uppercase hex chars and prefixed with '0x'
*/
public static String intToHex(int value) {
- return xpad(value & 0xFFFFFFFF, 8, "0x");
+ return xpad(value & 0xFFFFFFFFL, 8, "0x");
}
/**
* @return string of 4 (zero padded) uppercase hex chars and prefixed with '0x'
*/
public static String shortToHex(int value) {
- return xpad(value & 0xFFFF, 4, "0x");
+ return xpad(value & 0xFFFFL, 4, "0x");
}
/**
* @return string of 2 (zero padded) uppercase hex chars and prefixed with '0x'
*/
public static String byteToHex(int value) {
- return xpad(value & 0xFF, 2, "0x");
+ return xpad(value & 0xFFL, 2, "0x");
}
private static String xpad(long value, int pad, String prefix) {
diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
index 26331fbccf..1d957e5a59 100644
--- a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
+++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
@@ -559,20 +559,18 @@ public final class PackagePropertiesPart extends PackagePart implements
* @throws InvalidFormatException
* Throws if the date format isnot valid.
*/
- private Nullable<Date> setDateValue(String s) throws InvalidFormatException {
- if (s == null || s.equals("")) {
+ private Nullable<Date> setDateValue(String dateStr) throws InvalidFormatException {
+ if (dateStr == null || dateStr.equals("")) {
return new Nullable<Date>();
}
- if (!s.endsWith("Z")) {
- s += "Z";
- }
+ String dateTzStr = dateStr.endsWith("Z") ? dateStr : (dateStr + "Z");
SimpleDateFormat df = new SimpleDateFormat(DEFAULT_DATEFORMAT, Locale.ROOT);
df.setTimeZone(LocaleUtil.TIMEZONE_UTC);
- Date d = df.parse(s, new ParsePosition(0));
+ Date d = df.parse(dateTzStr, new ParsePosition(0));
if (d == null) {
df = new SimpleDateFormat(ALTERNATIVE_DATEFORMAT, Locale.ROOT);
df.setTimeZone(LocaleUtil.TIMEZONE_UTC);
- d = df.parse(s, new ParsePosition(0));
+ d = df.parse(dateTzStr, new ParsePosition(0));
}
if (d == null) {
throw new InvalidFormatException("Date not well formated");
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java
index 6d17cbb4c7..79a5bd6d75 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideShow.java
@@ -6,7 +6,7 @@
(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
+ 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,
@@ -46,90 +46,90 @@ import org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument;
/**
* Experimental class to do low level processing of pptx files.
- *
+ *
* Most users should use the higher level {@link XMLSlideShow} instead.
- *
+ *
* If you are using these low level classes, then you
* will almost certainly need to refer to the OOXML
* specifications from
* http://www.ecma-international.org/publications/standards/Ecma-376.htm
- *
+ *
* WARNING - APIs expected to change rapidly
*/
public class XSLFSlideShow extends POIXMLDocument {
private PresentationDocument presentationDoc;
- /**
- * The embedded OLE2 files in the OPC package
- */
- private List<PackagePart> embedds;
+ /**
+ * The embedded OLE2 files in the OPC package
+ */
+ private List<PackagePart> embedds;
- @SuppressWarnings("deprecation")
+ @SuppressWarnings("deprecation")
public XSLFSlideShow(OPCPackage container) throws OpenXML4JException, IOException, XmlException {
super(container);
-
+
if(getCorePart().getContentType().equals(XSLFRelation.THEME_MANAGER.getContentType())) {
- rebase(getPackage());
+ rebase(getPackage());
}
-
+
presentationDoc =
PresentationDocument.Factory.parse(getCorePart().getInputStream());
-
- embedds = new LinkedList<PackagePart>();
- for (CTSlideIdListEntry ctSlide : getSlideReferences().getSldIdArray()) {
- PackagePart corePart = getCorePart();
- PackagePart slidePart = corePart.getRelatedPart(
- corePart.getRelationship(ctSlide.getId2()));
- for(PackageRelationship rel : slidePart.getRelationshipsByType(OLE_OBJECT_REL_TYPE))
- embedds.add(slidePart.getRelatedPart(rel)); // TODO: Add this reference to each slide as well
+ embedds = new LinkedList<PackagePart>();
+ for (CTSlideIdListEntry ctSlide : getSlideReferences().getSldIdArray()) {
+ PackagePart corePart = getCorePart();
+ PackagePart slidePart = corePart.getRelatedPart(corePart.getRelationship(ctSlide.getId2()));
+
+ for(PackageRelationship rel : slidePart.getRelationshipsByType(OLE_OBJECT_REL_TYPE)) {
+ // TODO: Add this reference to each slide as well
+ embedds.add(slidePart.getRelatedPart(rel));
+ }
- for(PackageRelationship rel : slidePart.getRelationshipsByType(PACK_OBJECT_REL_TYPE))
- embedds.add(slidePart.getRelatedPart(rel));
+ for (PackageRelationship rel : slidePart.getRelationshipsByType(PACK_OBJECT_REL_TYPE)) {
+ embedds.add(slidePart.getRelatedPart(rel));
+ }
}
}
public XSLFSlideShow(String file) throws OpenXML4JException, IOException, XmlException {
this(openPackage(file));
}
-
+
/**
* Returns the low level presentation base object
*/
- @Internal
+ @Internal
public CTPresentation getPresentation() {
return presentationDoc.getPresentation();
}
-
+
/**
* Returns the references from the presentation to its
* slides.
* You'll need these to figure out the slide ordering,
* and to get at the actual slides themselves
*/
- @Internal
+ @Internal
public CTSlideIdList getSlideReferences() {
- if(! getPresentation().isSetSldIdLst()) {
- getPresentation().setSldIdLst(
- CTSlideIdList.Factory.newInstance()
- );
- }
- return getPresentation().getSldIdLst();
+ if(! getPresentation().isSetSldIdLst()) {
+ getPresentation().setSldIdLst(CTSlideIdList.Factory.newInstance());
+ }
+ return getPresentation().getSldIdLst();
}
-
+
/**
* Returns the references from the presentation to its
* slide masters.
- * You'll need these to get at the actual slide
+ * You'll need these to get at the actual slide
* masters themselves
*/
- @Internal
+ @Internal
public CTSlideMasterIdList getSlideMasterReferences() {
return getPresentation().getSldMasterIdLst();
}
-
+
public PackagePart getSlideMasterPart(CTSlideMasterIdListEntry master) throws IOException, XmlException {
try {
- PackagePart corePart = getCorePart();
+ PackagePart corePart = getCorePart();
return corePart.getRelatedPart(
corePart.getRelationship(master.getId2())
);
@@ -141,7 +141,7 @@ public class XSLFSlideShow extends POIXMLDocument {
* Returns the low level slide master object from
* the supplied slide master reference
*/
- @Internal
+ @Internal
public CTSlideMaster getSlideMaster(CTSlideMasterIdListEntry master) throws IOException, XmlException {
PackagePart masterPart = getSlideMasterPart(master);
SldMasterDocument masterDoc =
@@ -151,10 +151,8 @@ public class XSLFSlideShow extends POIXMLDocument {
public PackagePart getSlidePart(CTSlideIdListEntry slide) throws IOException, XmlException {
try {
- PackagePart corePart = getCorePart();
- return corePart.getRelatedPart(
- corePart.getRelationship(slide.getId2())
- );
+ PackagePart corePart = getCorePart();
+ return corePart.getRelatedPart(corePart.getRelationship(slide.getId2()));
} catch(InvalidFormatException e) {
throw new XmlException(e);
}
@@ -163,7 +161,7 @@ public class XSLFSlideShow extends POIXMLDocument {
* Returns the low level slide object from
* the supplied slide reference
*/
- @Internal
+ @Internal
public CTSlide getSlide(CTSlideIdListEntry slide) throws IOException, XmlException {
PackagePart slidePart = getSlidePart(slide);
SldDocument slideDoc =
@@ -178,13 +176,13 @@ public class XSLFSlideShow extends POIXMLDocument {
public PackagePart getNodesPart(CTSlideIdListEntry parentSlide) throws IOException, XmlException {
PackageRelationshipCollection notes;
PackagePart slidePart = getSlidePart(parentSlide);
-
+
try {
notes = slidePart.getRelationshipsByType(XSLFRelation.NOTES.getRelation());
} catch(InvalidFormatException e) {
throw new IllegalStateException(e);
}
-
+
if(notes.size() == 0) {
// No notes for this slide
return null;
@@ -192,9 +190,9 @@ public class XSLFSlideShow extends POIXMLDocument {
if(notes.size() > 1) {
throw new IllegalStateException("Expecting 0 or 1 notes for a slide, but found " + notes.size());
}
-
+
try {
- return slidePart.getRelatedPart(notes.getRelationship(0));
+ return slidePart.getRelatedPart(notes.getRelationship(0));
} catch(InvalidFormatException e) {
throw new IllegalStateException(e);
}
@@ -203,32 +201,32 @@ public class XSLFSlideShow extends POIXMLDocument {
* Returns the low level notes object for the given
* slide, as found from the supplied slide reference
*/
- @Internal
+ @Internal
public CTNotesSlide getNotes(CTSlideIdListEntry slide) throws IOException, XmlException {
PackagePart notesPart = getNodesPart(slide);
if(notesPart == null)
return null;
-
+
NotesDocument notesDoc =
NotesDocument.Factory.parse(notesPart.getInputStream());
-
+
return notesDoc.getNotes();
}
-
+
/**
* Returns all the comments for the given slide
*/
- @Internal
+ @Internal
public CTCommentList getSlideComments(CTSlideIdListEntry slide) throws IOException, XmlException {
PackageRelationshipCollection commentRels;
PackagePart slidePart = getSlidePart(slide);
-
+
try {
commentRels = slidePart.getRelationshipsByType(XSLFRelation.COMMENTS.getRelation());
} catch(InvalidFormatException e) {
throw new IllegalStateException(e);
}
-
+
if(commentRels.size() == 0) {
// No comments for this slide
return null;
@@ -236,12 +234,12 @@ public class XSLFSlideShow extends POIXMLDocument {
if(commentRels.size() > 1) {
throw new IllegalStateException("Expecting 0 or 1 comments for a slide, but found " + commentRels.size());
}
-
+
try {
PackagePart cPart = slidePart.getRelatedPart(
commentRels.getRelationship(0)
);
- CmLstDocument commDoc =
+ CmLstDocument commDoc =
CmLstDocument.Factory.parse(cPart.getInputStream());
return commDoc.getCmLst();
} catch(InvalidFormatException e) {
@@ -249,12 +247,12 @@ public class XSLFSlideShow extends POIXMLDocument {
}
}
- /**
- * Get the document's embedded files.
- */
- @Override
- public List<PackagePart> getAllEmbedds() throws OpenXML4JException {
- return embedds;
- }
+ /**
+ * Get the document's embedded files.
+ */
+ @Override
+ public List<PackagePart> getAllEmbedds() throws OpenXML4JException {
+ return embedds;
+ }
}
diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java
index e8a3dfcf7a..02b2dbdaa3 100644
--- a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java
+++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java
@@ -915,21 +915,23 @@ public abstract class AbstractWordConverter
Element currentBlock, Range textRange, int currentTableLevel,
String hyperlink );
- protected void processImage( Element currentBlock, boolean inlined,
- Picture picture )
- {
+ protected void processImage( Element currentBlock, boolean inlined, Picture picture ) {
PicturesManager fileManager = getPicturesManager();
- if ( fileManager != null )
- {
- final int aspectRatioX = picture.getHorizontalScalingFactor();
- final int aspectRatioY = picture.getVerticalScalingFactor();
-
- final float imageWidth = aspectRatioX > 0 ? picture.getDxaGoal()
- * aspectRatioX / 1000 / AbstractWordUtils.TWIPS_PER_INCH
- : picture.getDxaGoal() / AbstractWordUtils.TWIPS_PER_INCH;
- final float imageHeight = aspectRatioY > 0 ? picture.getDyaGoal()
- * aspectRatioY / 1000 / AbstractWordUtils.TWIPS_PER_INCH
- : picture.getDyaGoal() / AbstractWordUtils.TWIPS_PER_INCH;
+ if ( fileManager != null ) {
+ final float aspectRatioX = picture.getHorizontalScalingFactor();
+ final float aspectRatioY = picture.getVerticalScalingFactor();
+
+ float imageWidth = picture.getDxaGoal();
+ if (aspectRatioX > 0) {
+ imageWidth *= aspectRatioX / 1000f;
+ }
+ imageWidth /= AbstractWordUtils.TWIPS_PER_INCH;
+
+ float imageHeight = picture.getDyaGoal();
+ if (aspectRatioY > 0) {
+ imageHeight *= aspectRatioY / 1000f;
+ }
+ imageHeight /= AbstractWordUtils.TWIPS_PER_INCH;
String url = fileManager.savePicture( picture.getContent(),
picture.suggestPictureType(),
diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java
index d3fe6613a6..e7ce790f7a 100644
--- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java
+++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java
@@ -381,7 +381,7 @@ public final class CharacterSprmUncompressor extends SprmUncompressor
//byte cInc = (byte)(((byte)(param & 0xfe00) >>> 4) >> 1);
byte cInc = (byte) ((operand & 0xff00) >>> 8);
- cInc = (byte) (cInc >>> 1);
+ cInc >>>= 1;
if (cInc != 0)
{
newCHP.setHps (Math.max (newCHP.getHps () + (cInc * 2), 2));