git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885215 13f79535-47bb-0310-9956-ffa450edef68tags/REL_5_0_0
@Override | @Override | ||||
public int init(LittleEndianInputStream leis, long recordSize, int recordFunction) throws IOException { | public int init(LittleEndianInputStream leis, long recordSize, int recordFunction) throws IOException { | ||||
//A 16-bit signed integer that defines the number of points in the array. | //A 16-bit signed integer that defines the number of points in the array. | ||||
int numberofPoints = leis.readShort(); | |||||
int numberOfPoints = leis.readShort(); | |||||
poly = new Path2D.Double(Path2D.WIND_EVEN_ODD, numberofPoints); | |||||
for (int i=0; i<numberofPoints; i++) { | |||||
poly = new Path2D.Double(Path2D.WIND_EVEN_ODD, numberOfPoints); | |||||
for (int i=0; i<numberOfPoints; i++) { | |||||
// A 16-bit signed integer that defines the horizontal (x) coordinate of the point. | // A 16-bit signed integer that defines the horizontal (x) coordinate of the point. | ||||
int x = leis.readShort(); | int x = leis.readShort(); | ||||
// A 16-bit signed integer that defines the vertical (y) coordinate of the point. | // A 16-bit signed integer that defines the vertical (y) coordinate of the point. | ||||
} | } | ||||
} | } | ||||
if (addClose()) { | |||||
if (numberOfPoints > 0 && addClose()) { | |||||
// polygons are closed / polylines not | // polygons are closed / polylines not | ||||
poly.closePath(); | poly.closePath(); | ||||
} | } | ||||
return LittleEndianConsts.SHORT_SIZE+numberofPoints*LittleEndianConsts.INT_SIZE; | |||||
return LittleEndianConsts.SHORT_SIZE+numberOfPoints*LittleEndianConsts.INT_SIZE; | |||||
} | } | ||||
@Override | @Override |
import org.apache.poi.util.RecordFormatException; | import org.apache.poi.util.RecordFormatException; | ||||
import org.junit.jupiter.api.Disabled; | import org.junit.jupiter.api.Disabled; | ||||
import org.junit.jupiter.api.Test; | import org.junit.jupiter.api.Test; | ||||
import org.junit.jupiter.params.ParameterizedTest; | |||||
import org.junit.jupiter.params.provider.CsvSource; | |||||
public class TestHwmfParsing { | public class TestHwmfParsing { | ||||
// for manual mass parsing and rendering tests of .wmfs use HemfPictureTest.paint() ! | // for manual mass parsing and rendering tests of .wmfs use HemfPictureTest.paint() ! | ||||
// ****************************************************************************** | // ****************************************************************************** | ||||
@Test | |||||
public void parse() throws IOException { | |||||
try (InputStream fis = samples.openResourceAsStream("santa.wmf")) { | |||||
@ParameterizedTest | |||||
@CsvSource({ | |||||
"santa.wmf, 581", | |||||
/* Bug 65063 */ | |||||
"empty-polygon-close.wmf, 272" | |||||
}) | |||||
public void parse(String file, int recordCnt) throws IOException { | |||||
try (InputStream fis = samples.openResourceAsStream(file)) { | |||||
HwmfPicture wmf = new HwmfPicture(fis); | HwmfPicture wmf = new HwmfPicture(fis); | ||||
List<HwmfRecord> records = wmf.getRecords(); | List<HwmfRecord> records = wmf.getRecords(); | ||||
assertEquals(581, records.size()); | |||||
assertEquals(recordCnt, records.size()); | |||||
} | } | ||||
} | } | ||||