Fixing compiler warnings - unnecessary typecasts
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@805284 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
995d8fe73f
commit
c83d6bfa24
@ -238,7 +238,6 @@ public class AddDimensionedImage {
|
|||||||
String imageFile, double reqImageWidthMM, double reqImageHeightMM,
|
String imageFile, double reqImageWidthMM, double reqImageHeightMM,
|
||||||
int resizeBehaviour) throws FileNotFoundException, IOException,
|
int resizeBehaviour) throws FileNotFoundException, IOException,
|
||||||
IllegalArgumentException {
|
IllegalArgumentException {
|
||||||
HSSFRow row = null;
|
|
||||||
HSSFClientAnchor anchor = null;
|
HSSFClientAnchor anchor = null;
|
||||||
HSSFPatriarch patriarch = null;
|
HSSFPatriarch patriarch = null;
|
||||||
ClientAnchorDetail rowClientAnchorDetail = null;
|
ClientAnchorDetail rowClientAnchorDetail = null;
|
||||||
@ -485,7 +484,6 @@ public class AddDimensionedImage {
|
|||||||
double colWidthMM = 0.0D;
|
double colWidthMM = 0.0D;
|
||||||
double overlapMM = 0.0D;
|
double overlapMM = 0.0D;
|
||||||
double coordinatePositionsPerMM = 0.0D;
|
double coordinatePositionsPerMM = 0.0D;
|
||||||
int fromNumber = startingColumn;
|
|
||||||
int toColumn = startingColumn;
|
int toColumn = startingColumn;
|
||||||
int inset = 0;
|
int inset = 0;
|
||||||
|
|
||||||
@ -706,8 +704,6 @@ public class AddDimensionedImage {
|
|||||||
* @param args the command line arguments
|
* @param args the command line arguments
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
File file = null;
|
|
||||||
FileInputStream fis = null;
|
|
||||||
FileOutputStream fos = null;
|
FileOutputStream fos = null;
|
||||||
HSSFWorkbook workbook = null;
|
HSSFWorkbook workbook = null;
|
||||||
HSSFSheet sheet = null;
|
HSSFSheet sheet = null;
|
||||||
@ -892,7 +888,7 @@ public class AddDimensionedImage {
|
|||||||
int pixels = (widthUnits / EXCEL_COLUMN_WIDTH_FACTOR)
|
int pixels = (widthUnits / EXCEL_COLUMN_WIDTH_FACTOR)
|
||||||
* UNIT_OFFSET_LENGTH;
|
* UNIT_OFFSET_LENGTH;
|
||||||
int offsetWidthUnits = widthUnits % EXCEL_COLUMN_WIDTH_FACTOR;
|
int offsetWidthUnits = widthUnits % EXCEL_COLUMN_WIDTH_FACTOR;
|
||||||
pixels += Math.round((float) offsetWidthUnits /
|
pixels += Math.round(offsetWidthUnits /
|
||||||
((float) EXCEL_COLUMN_WIDTH_FACTOR / UNIT_OFFSET_LENGTH));
|
((float) EXCEL_COLUMN_WIDTH_FACTOR / UNIT_OFFSET_LENGTH));
|
||||||
return pixels;
|
return pixels;
|
||||||
}
|
}
|
||||||
|
@ -211,10 +211,10 @@ public class Util
|
|||||||
* @return <code>true</code> if the collections are equal, else
|
* @return <code>true</code> if the collections are equal, else
|
||||||
* <code>false</code>.
|
* <code>false</code>.
|
||||||
*/
|
*/
|
||||||
public static boolean equals(final Collection c1, final Collection c2)
|
public static boolean equals(Collection<?> c1, Collection<?> c2)
|
||||||
{
|
{
|
||||||
final Object[] o1 = c1.toArray();
|
Object[] o1 = c1.toArray();
|
||||||
final Object[] o2 = c2.toArray();
|
Object[] o2 = c2.toArray();
|
||||||
return internalEquals(o1, o2);
|
return internalEquals(o1, o2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,14 +229,14 @@ public class Util
|
|||||||
* @return <code>true</code> if the object arrays are equal,
|
* @return <code>true</code> if the object arrays are equal,
|
||||||
* <code>false</code> if they are not.
|
* <code>false</code> if they are not.
|
||||||
*/
|
*/
|
||||||
public static boolean equals(final Object[] c1, final Object[] c2)
|
public static boolean equals(Object[] c1, Object[] c2)
|
||||||
{
|
{
|
||||||
final Object[] o1 = (Object[]) c1.clone();
|
final Object[] o1 = c1.clone();
|
||||||
final Object[] o2 = (Object[]) c2.clone();
|
final Object[] o2 = c2.clone();
|
||||||
return internalEquals(o1, o2);
|
return internalEquals(o1, o2);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean internalEquals(final Object[] o1, final Object[] o2)
|
private static boolean internalEquals(Object[] o1, Object[] o2)
|
||||||
{
|
{
|
||||||
for (int i1 = 0; i1 < o1.length; i1++)
|
for (int i1 = 0; i1 < o1.length; i1++)
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ public final class EventRecordFactory {
|
|||||||
if (sids == null) {
|
if (sids == null) {
|
||||||
_sids = null;
|
_sids = null;
|
||||||
} else {
|
} else {
|
||||||
_sids = (short[]) sids.clone();
|
_sids = sids.clone();
|
||||||
Arrays.sort(_sids); // for faster binary search
|
Arrays.sort(_sids); // for faster binary search
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ final class LinkTable {
|
|||||||
_crns = crns;
|
_crns = crns;
|
||||||
}
|
}
|
||||||
public CRNRecord[] getCrns() {
|
public CRNRecord[] getCrns() {
|
||||||
return (CRNRecord[]) _crns.clone();
|
return _crns.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ final class LinkTable {
|
|||||||
|
|
||||||
public ExternalBookBlock(RecordStream rs) {
|
public ExternalBookBlock(RecordStream rs) {
|
||||||
_externalBookRecord = (SupBookRecord) rs.getNext();
|
_externalBookRecord = (SupBookRecord) rs.getNext();
|
||||||
List temp = new ArrayList();
|
List<Object> temp = new ArrayList<Object>();
|
||||||
while(rs.peekNextClass() == ExternalNameRecord.class) {
|
while(rs.peekNextClass() == ExternalNameRecord.class) {
|
||||||
temp.add(rs.getNext());
|
temp.add(rs.getNext());
|
||||||
}
|
}
|
||||||
@ -141,7 +141,7 @@ final class LinkTable {
|
|||||||
|
|
||||||
private final ExternalBookBlock[] _externalBookBlocks;
|
private final ExternalBookBlock[] _externalBookBlocks;
|
||||||
private final ExternSheetRecord _externSheetRecord;
|
private final ExternSheetRecord _externSheetRecord;
|
||||||
private final List _definedNames;
|
private final List<NameRecord> _definedNames;
|
||||||
private final int _recordCount;
|
private final int _recordCount;
|
||||||
private final WorkbookRecordList _workbookRecordList; // TODO - would be nice to remove this
|
private final WorkbookRecordList _workbookRecordList; // TODO - would be nice to remove this
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ final class LinkTable {
|
|||||||
_workbookRecordList = workbookRecordList;
|
_workbookRecordList = workbookRecordList;
|
||||||
RecordStream rs = new RecordStream(inputList, startIndex);
|
RecordStream rs = new RecordStream(inputList, startIndex);
|
||||||
|
|
||||||
List temp = new ArrayList();
|
List<ExternalBookBlock> temp = new ArrayList<ExternalBookBlock>();
|
||||||
while(rs.peekNextClass() == SupBookRecord.class) {
|
while(rs.peekNextClass() == SupBookRecord.class) {
|
||||||
temp.add(new ExternalBookBlock(rs));
|
temp.add(new ExternalBookBlock(rs));
|
||||||
}
|
}
|
||||||
@ -171,7 +171,7 @@ final class LinkTable {
|
|||||||
_externSheetRecord = null;
|
_externSheetRecord = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
_definedNames = new ArrayList();
|
_definedNames = new ArrayList<NameRecord>();
|
||||||
// collect zero or more DEFINEDNAMEs id=0x18
|
// collect zero or more DEFINEDNAMEs id=0x18
|
||||||
while(rs.peekNextClass() == NameRecord.class) {
|
while(rs.peekNextClass() == NameRecord.class) {
|
||||||
NameRecord nr = (NameRecord)rs.getNext();
|
NameRecord nr = (NameRecord)rs.getNext();
|
||||||
@ -183,9 +183,9 @@ final class LinkTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static ExternSheetRecord readExtSheetRecord(RecordStream rs) {
|
private static ExternSheetRecord readExtSheetRecord(RecordStream rs) {
|
||||||
List temp = new ArrayList(2);
|
List<ExternSheetRecord> temp = new ArrayList<ExternSheetRecord>(2);
|
||||||
while(rs.peekNextClass() == ExternSheetRecord.class) {
|
while(rs.peekNextClass() == ExternSheetRecord.class) {
|
||||||
temp.add(rs.getNext());
|
temp.add((ExternSheetRecord) rs.getNext());
|
||||||
}
|
}
|
||||||
|
|
||||||
int nItems = temp.size();
|
int nItems = temp.size();
|
||||||
@ -195,7 +195,7 @@ final class LinkTable {
|
|||||||
}
|
}
|
||||||
if (nItems == 1) {
|
if (nItems == 1) {
|
||||||
// this is the normal case. There should be just one ExternSheetRecord
|
// this is the normal case. There should be just one ExternSheetRecord
|
||||||
return (ExternSheetRecord) temp.get(0);
|
return temp.get(0);
|
||||||
}
|
}
|
||||||
// Some apps generate multiple ExternSheetRecords (see bug 45698).
|
// Some apps generate multiple ExternSheetRecords (see bug 45698).
|
||||||
// It seems like the best thing to do might be to combine these into one
|
// It seems like the best thing to do might be to combine these into one
|
||||||
@ -206,7 +206,7 @@ final class LinkTable {
|
|||||||
|
|
||||||
public LinkTable(int numberOfSheets, WorkbookRecordList workbookRecordList) {
|
public LinkTable(int numberOfSheets, WorkbookRecordList workbookRecordList) {
|
||||||
_workbookRecordList = workbookRecordList;
|
_workbookRecordList = workbookRecordList;
|
||||||
_definedNames = new ArrayList();
|
_definedNames = new ArrayList<NameRecord>();
|
||||||
_externalBookBlocks = new ExternalBookBlock[] {
|
_externalBookBlocks = new ExternalBookBlock[] {
|
||||||
new ExternalBookBlock(numberOfSheets),
|
new ExternalBookBlock(numberOfSheets),
|
||||||
};
|
};
|
||||||
@ -267,7 +267,7 @@ final class LinkTable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public NameRecord getNameRecord(int index) {
|
public NameRecord getNameRecord(int index) {
|
||||||
return (NameRecord) _definedNames.get(index);
|
return _definedNames.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addName(NameRecord name) {
|
public void addName(NameRecord name) {
|
||||||
|
@ -465,7 +465,7 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
|||||||
pos += temp;
|
pos += temp;
|
||||||
|
|
||||||
// Write the matching OBJ record
|
// Write the matching OBJ record
|
||||||
Record obj = (Record) shapeToObj.get( shapes.get( i ) );
|
Record obj = shapeToObj.get( shapes.get( i ) );
|
||||||
temp = obj.serialize( pos, data );
|
temp = obj.serialize( pos, data );
|
||||||
pos += temp;
|
pos += temp;
|
||||||
|
|
||||||
@ -552,8 +552,7 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
|||||||
if(topContainer == null) {
|
if(topContainer == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
topContainer = (EscherContainerRecord)
|
topContainer = topContainer.getChildContainers().get(0);
|
||||||
topContainer.getChildContainers().get(0);
|
|
||||||
|
|
||||||
List tcc = topContainer.getChildContainers();
|
List tcc = topContainer.getChildContainers();
|
||||||
if(tcc.size() == 0) {
|
if(tcc.size() == 0) {
|
||||||
|
@ -68,9 +68,6 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
/** Offsets relative the start of the current SST or continue record */
|
/** Offsets relative the start of the current SST or continue record */
|
||||||
int[] bucketRelativeOffsets;
|
int[] bucketRelativeOffsets;
|
||||||
|
|
||||||
/**
|
|
||||||
* default constructor
|
|
||||||
*/
|
|
||||||
public SSTRecord()
|
public SSTRecord()
|
||||||
{
|
{
|
||||||
field_1_num_strings = 0;
|
field_1_num_strings = 0;
|
||||||
@ -86,8 +83,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
*
|
*
|
||||||
* @return the index of that string in the table
|
* @return the index of that string in the table
|
||||||
*/
|
*/
|
||||||
|
public int addString(UnicodeString string)
|
||||||
public int addString( final UnicodeString string )
|
|
||||||
{
|
{
|
||||||
field_1_num_strings++;
|
field_1_num_strings++;
|
||||||
UnicodeString ucs = ( string == null ) ? EMPTY_STRING
|
UnicodeString ucs = ( string == null ) ? EMPTY_STRING
|
||||||
@ -95,12 +91,9 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
int rval;
|
int rval;
|
||||||
int index = field_3_strings.getIndex(ucs);
|
int index = field_3_strings.getIndex(ucs);
|
||||||
|
|
||||||
if ( index != -1 )
|
if ( index != -1 ) {
|
||||||
{
|
|
||||||
rval = index;
|
rval = index;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
// This is a new string -- we didn't see it among the
|
// This is a new string -- we didn't see it among the
|
||||||
// strings we've already collected
|
// strings we've already collected
|
||||||
rval = field_3_strings.size();
|
rval = field_3_strings.size();
|
||||||
@ -113,7 +106,6 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
/**
|
/**
|
||||||
* @return number of strings
|
* @return number of strings
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getNumStrings()
|
public int getNumStrings()
|
||||||
{
|
{
|
||||||
return field_1_num_strings;
|
return field_1_num_strings;
|
||||||
@ -122,7 +114,6 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
/**
|
/**
|
||||||
* @return number of unique strings
|
* @return number of unique strings
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getNumUniqueStrings()
|
public int getNumUniqueStrings()
|
||||||
{
|
{
|
||||||
return field_2_num_unique_strings;
|
return field_2_num_unique_strings;
|
||||||
@ -136,8 +127,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
*
|
*
|
||||||
* @return the desired string
|
* @return the desired string
|
||||||
*/
|
*/
|
||||||
|
public UnicodeString getString(int id )
|
||||||
public UnicodeString getString( final int id )
|
|
||||||
{
|
{
|
||||||
return (UnicodeString) field_3_strings.get( id );
|
return (UnicodeString) field_3_strings.get( id );
|
||||||
}
|
}
|
||||||
@ -148,9 +138,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
*
|
*
|
||||||
* @return string representation
|
* @return string representation
|
||||||
*/
|
*/
|
||||||
|
public String toString() {
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
|
||||||
buffer.append( "[SST]\n" );
|
buffer.append( "[SST]\n" );
|
||||||
@ -168,11 +156,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public short getSid() {
|
||||||
* @return sid
|
|
||||||
*/
|
|
||||||
public short getSid()
|
|
||||||
{
|
|
||||||
return sid;
|
return sid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,9 +238,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
*
|
*
|
||||||
* @param in the RecordInputstream to read the record from
|
* @param in the RecordInputstream to read the record from
|
||||||
*/
|
*/
|
||||||
|
public SSTRecord(RecordInputStream in) {
|
||||||
public SSTRecord( RecordInputStream in )
|
|
||||||
{
|
|
||||||
// this method is ALWAYS called after construction -- using
|
// this method is ALWAYS called after construction -- using
|
||||||
// the nontrivial constructor, of course -- so this is where
|
// the nontrivial constructor, of course -- so this is where
|
||||||
// we initialize our fields
|
// we initialize our fields
|
||||||
@ -272,7 +254,6 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
* @return an iterator of the strings we hold. All instances are
|
* @return an iterator of the strings we hold. All instances are
|
||||||
* UnicodeStrings
|
* UnicodeStrings
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Iterator getStrings()
|
Iterator getStrings()
|
||||||
{
|
{
|
||||||
return field_3_strings.iterator();
|
return field_3_strings.iterator();
|
||||||
@ -281,9 +262,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
/**
|
/**
|
||||||
* @return count of the strings we hold.
|
* @return count of the strings we hold.
|
||||||
*/
|
*/
|
||||||
|
int countStrings() {
|
||||||
int countStrings()
|
|
||||||
{
|
|
||||||
return field_3_strings.size();
|
return field_3_strings.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,8 +273,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
bucketRelativeOffsets = serializer.getBucketRelativeOffsets();
|
bucketRelativeOffsets = serializer.getBucketRelativeOffsets();
|
||||||
}
|
}
|
||||||
|
|
||||||
SSTDeserializer getDeserializer()
|
SSTDeserializer getDeserializer() {
|
||||||
{
|
|
||||||
return deserializer;
|
return deserializer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,15 +290,14 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
* SST record.
|
* SST record.
|
||||||
* @return The new SST record.
|
* @return The new SST record.
|
||||||
*/
|
*/
|
||||||
public ExtSSTRecord createExtSSTRecord(int sstOffset)
|
public ExtSSTRecord createExtSSTRecord(int sstOffset) {
|
||||||
{
|
|
||||||
if (bucketAbsoluteOffsets == null || bucketAbsoluteOffsets == null)
|
if (bucketAbsoluteOffsets == null || bucketAbsoluteOffsets == null)
|
||||||
throw new IllegalStateException("SST record has not yet been serialized.");
|
throw new IllegalStateException("SST record has not yet been serialized.");
|
||||||
|
|
||||||
ExtSSTRecord extSST = new ExtSSTRecord();
|
ExtSSTRecord extSST = new ExtSSTRecord();
|
||||||
extSST.setNumStringsPerBucket((short)8);
|
extSST.setNumStringsPerBucket((short)8);
|
||||||
int[] absoluteOffsets = (int[]) bucketAbsoluteOffsets.clone();
|
int[] absoluteOffsets = bucketAbsoluteOffsets.clone();
|
||||||
int[] relativeOffsets = (int[]) bucketRelativeOffsets.clone();
|
int[] relativeOffsets = bucketRelativeOffsets.clone();
|
||||||
for ( int i = 0; i < absoluteOffsets.length; i++ )
|
for ( int i = 0; i < absoluteOffsets.length; i++ )
|
||||||
absoluteOffsets[i] += sstOffset;
|
absoluteOffsets[i] += sstOffset;
|
||||||
extSST.setBucketOffsets(absoluteOffsets, relativeOffsets);
|
extSST.setBucketOffsets(absoluteOffsets, relativeOffsets);
|
||||||
@ -333,8 +310,7 @@ public final class SSTRecord extends ContinuableRecord {
|
|||||||
*
|
*
|
||||||
* @return The size of the ExtSST record in bytes.
|
* @return The size of the ExtSST record in bytes.
|
||||||
*/
|
*/
|
||||||
public int calcExtSSTRecordSize()
|
public int calcExtSSTRecordSize() {
|
||||||
{
|
|
||||||
return ExtSSTRecord.getRecordSizeForStrings(field_3_strings.size());
|
return ExtSSTRecord.getRecordSizeForStrings(field_3_strings.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -543,7 +543,7 @@ public final class FontFormatting
|
|||||||
|
|
||||||
public Object clone()
|
public Object clone()
|
||||||
{
|
{
|
||||||
byte[] rawData = (byte[]) _rawData.clone();
|
byte[] rawData = _rawData.clone();
|
||||||
return new FontFormatting(rawData);
|
return new FontFormatting(rawData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,10 +53,7 @@ public final class OperandResolver {
|
|||||||
if (result instanceof ErrorEval) {
|
if (result instanceof ErrorEval) {
|
||||||
throw new EvaluationException((ErrorEval) result);
|
throw new EvaluationException((ErrorEval) result);
|
||||||
}
|
}
|
||||||
if (result instanceof ValueEval) {
|
return result;
|
||||||
return (ValueEval) result;
|
|
||||||
}
|
|
||||||
throw new RuntimeException("Unexpected eval type (" + result.getClass().getName() + ")");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -283,7 +283,7 @@ public class EscherGraphics
|
|||||||
excelFont = new Font( font.getName(), font.getStyle(), (int) ( font.getSize() / verticalPixelsPerPoint ));
|
excelFont = new Font( font.getName(), font.getStyle(), (int) ( font.getSize() / verticalPixelsPerPoint ));
|
||||||
}
|
}
|
||||||
FontDetails d = StaticFontMetrics.getFontDetails( excelFont );
|
FontDetails d = StaticFontMetrics.getFontDetails( excelFont );
|
||||||
int width = (int) ( (d.getStringWidth( str ) * 8) + 12 );
|
int width = d.getStringWidth( str ) * 8 + 12;
|
||||||
int height = (int) ( ( font.getSize() / verticalPixelsPerPoint ) + 6 ) * 2;
|
int height = (int) ( ( font.getSize() / verticalPixelsPerPoint ) + 6 ) * 2;
|
||||||
y -= ( font.getSize() / verticalPixelsPerPoint ) + 2 * verticalPixelsPerPoint; // we want to draw the shape from the top-left
|
y -= ( font.getSize() / verticalPixelsPerPoint ) + 2 * verticalPixelsPerPoint; // we want to draw the shape from the top-left
|
||||||
HSSFTextbox textbox = escherGroup.createTextbox( new HSSFChildAnchor( x, y, x + width, y + height ) );
|
HSSFTextbox textbox = escherGroup.createTextbox( new HSSFChildAnchor( x, y, x + width, y + height ) );
|
||||||
@ -454,7 +454,7 @@ public class EscherGraphics
|
|||||||
|
|
||||||
public void setClip(int x, int y, int width, int height)
|
public void setClip(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
setClip(((Shape) (new Rectangle(x,y,width,height))));
|
setClip(new Rectangle(x,y,width,height));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setClip(Shape shape)
|
public void setClip(Shape shape)
|
||||||
|
@ -70,14 +70,13 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
* @author Glen Stampoultzis (glens at apache.org)
|
* @author Glen Stampoultzis (glens at apache.org)
|
||||||
*/
|
*/
|
||||||
public class EscherGraphics2d extends Graphics2D
|
public final class EscherGraphics2d extends Graphics2D {
|
||||||
{
|
private EscherGraphics _escherGraphics;
|
||||||
private EscherGraphics escherGraphics;
|
private BufferedImage _img;
|
||||||
private BufferedImage img;
|
private AffineTransform _trans;
|
||||||
private AffineTransform trans;
|
private Stroke _stroke;
|
||||||
private Stroke stroke;
|
private Paint _paint;
|
||||||
private Paint paint;
|
private Shape _deviceclip;
|
||||||
private Shape deviceclip;
|
|
||||||
private POILogger logger = POILogFactory.getLogger(getClass());
|
private POILogger logger = POILogFactory.getLogger(getClass());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -87,7 +86,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
*/
|
*/
|
||||||
public EscherGraphics2d(EscherGraphics escherGraphics)
|
public EscherGraphics2d(EscherGraphics escherGraphics)
|
||||||
{
|
{
|
||||||
this.escherGraphics = escherGraphics;
|
this._escherGraphics = escherGraphics;
|
||||||
setImg( new BufferedImage(1, 1, 2) );
|
setImg( new BufferedImage(1, 1, 2) );
|
||||||
setColor(Color.black);
|
setColor(Color.black);
|
||||||
}
|
}
|
||||||
@ -130,7 +129,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public Graphics create()
|
public Graphics create()
|
||||||
{
|
{
|
||||||
EscherGraphics2d g2d = new EscherGraphics2d(escherGraphics);
|
EscherGraphics2d g2d = new EscherGraphics2d(_escherGraphics);
|
||||||
return g2d;
|
return g2d;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,8 +147,8 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
Line2D shape2d = (Line2D) shape;
|
Line2D shape2d = (Line2D) shape;
|
||||||
|
|
||||||
int width = 0;
|
int width = 0;
|
||||||
if (stroke != null && stroke instanceof BasicStroke) {
|
if (_stroke != null && _stroke instanceof BasicStroke) {
|
||||||
width = (int) ((BasicStroke)stroke).getLineWidth() * 12700;
|
width = (int) ((BasicStroke)_stroke).getLineWidth() * 12700;
|
||||||
}
|
}
|
||||||
|
|
||||||
drawLine((int)shape2d.getX1(), (int)shape2d.getY1(), (int)shape2d.getX2(), (int)shape2d.getY2(), width);
|
drawLine((int)shape2d.getX1(), (int)shape2d.getY1(), (int)shape2d.getX2(), (int)shape2d.getY2(), width);
|
||||||
@ -223,7 +222,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
public void drawImage(BufferedImage bufferedimage, BufferedImageOp op, int x, int y)
|
public void drawImage(BufferedImage bufferedimage, BufferedImageOp op, int x, int y)
|
||||||
{
|
{
|
||||||
BufferedImage img = op.filter(bufferedimage, null);
|
BufferedImage img = op.filter(bufferedimage, null);
|
||||||
drawImage(((Image) (img)), new AffineTransform(1.0F, 0.0F, 0.0F, 1.0F, x, y), null);
|
drawImage(img, new AffineTransform(1.0F, 0.0F, 0.0F, 1.0F, x, y), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawLine(int x1, int y1, int x2, int y2, int width)
|
public void drawLine(int x1, int y1, int x2, int y2, int width)
|
||||||
@ -234,8 +233,8 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
public void drawLine(int x1, int y1, int x2, int y2)
|
public void drawLine(int x1, int y1, int x2, int y2)
|
||||||
{
|
{
|
||||||
int width = 0;
|
int width = 0;
|
||||||
if (stroke != null && stroke instanceof BasicStroke) {
|
if (_stroke != null && _stroke instanceof BasicStroke) {
|
||||||
width = (int) ((BasicStroke)stroke).getLineWidth() * 12700;
|
width = (int) ((BasicStroke)_stroke).getLineWidth() * 12700;
|
||||||
}
|
}
|
||||||
getEscherGraphics().drawLine(x1,y1,x2,y2, width);
|
getEscherGraphics().drawLine(x1,y1,x2,y2, width);
|
||||||
// draw(new GeneralPath(new java.awt.geom.Line2D.Float(x1, y1, x2, y2)));
|
// draw(new GeneralPath(new java.awt.geom.Line2D.Float(x1, y1, x2, y2)));
|
||||||
@ -268,7 +267,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public void drawRect(int x, int y, int width, int height)
|
public void drawRect(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
escherGraphics.drawRect(x,y,width,height);
|
_escherGraphics.drawRect(x,y,width,height);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawRenderableImage(RenderableImage renderableimage, AffineTransform affinetransform)
|
public void drawRenderableImage(RenderableImage renderableimage, AffineTransform affinetransform)
|
||||||
@ -325,7 +324,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public void fillOval(int x, int y, int width, int height)
|
public void fillOval(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
escherGraphics.fillOval(x,y,width,height);
|
_escherGraphics.fillOval(x,y,width,height);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -349,7 +348,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
*/
|
*/
|
||||||
public void fillPolygon(int xPoints[], int yPoints[], int nPoints)
|
public void fillPolygon(int xPoints[], int yPoints[], int nPoints)
|
||||||
{
|
{
|
||||||
escherGraphics.fillPolygon(xPoints, yPoints, nPoints);
|
_escherGraphics.fillPolygon(xPoints, yPoints, nPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fillRect(int x, int y, int width, int height)
|
public void fillRect(int x, int y, int width, int height)
|
||||||
@ -382,15 +381,15 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public Rectangle getClipBounds()
|
public Rectangle getClipBounds()
|
||||||
{
|
{
|
||||||
if(getDeviceclip() != null)
|
if(getDeviceclip() != null) {
|
||||||
return getClip().getBounds();
|
return getClip().getBounds();
|
||||||
else
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color getColor()
|
public Color getColor()
|
||||||
{
|
{
|
||||||
return escherGraphics.getColor();
|
return _escherGraphics.getColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Composite getComposite()
|
public Composite getComposite()
|
||||||
@ -421,7 +420,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public Paint getPaint()
|
public Paint getPaint()
|
||||||
{
|
{
|
||||||
return paint;
|
return _paint;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getRenderingHint(java.awt.RenderingHints.Key key)
|
public Object getRenderingHint(java.awt.RenderingHints.Key key)
|
||||||
@ -436,7 +435,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public Stroke getStroke()
|
public Stroke getStroke()
|
||||||
{
|
{
|
||||||
return stroke;
|
return _stroke;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AffineTransform getTransform()
|
public AffineTransform getTransform()
|
||||||
@ -474,7 +473,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public void setClip(int i, int j, int k, int l)
|
public void setClip(int i, int j, int k, int l)
|
||||||
{
|
{
|
||||||
setClip(((Shape) (new Rectangle(i, j, k, l))));
|
setClip(new Rectangle(i, j, k, l));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setClip(Shape shape)
|
public void setClip(Shape shape)
|
||||||
@ -484,7 +483,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public void setColor(Color c)
|
public void setColor(Color c)
|
||||||
{
|
{
|
||||||
escherGraphics.setColor(c);
|
_escherGraphics.setColor(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setComposite(Composite composite)
|
public void setComposite(Composite composite)
|
||||||
@ -501,7 +500,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
{
|
{
|
||||||
if(paint1 != null)
|
if(paint1 != null)
|
||||||
{
|
{
|
||||||
paint = paint1;
|
_paint = paint1;
|
||||||
if(paint1 instanceof Color)
|
if(paint1 instanceof Color)
|
||||||
setColor( (Color)paint1 );
|
setColor( (Color)paint1 );
|
||||||
}
|
}
|
||||||
@ -524,7 +523,7 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
public void setStroke(Stroke s)
|
public void setStroke(Stroke s)
|
||||||
{
|
{
|
||||||
stroke = s;
|
_stroke = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTransform(AffineTransform affinetransform)
|
public void setTransform(AffineTransform affinetransform)
|
||||||
@ -571,42 +570,42 @@ public class EscherGraphics2d extends Graphics2D
|
|||||||
|
|
||||||
private EscherGraphics getEscherGraphics()
|
private EscherGraphics getEscherGraphics()
|
||||||
{
|
{
|
||||||
return escherGraphics;
|
return _escherGraphics;
|
||||||
}
|
}
|
||||||
|
|
||||||
private BufferedImage getImg()
|
private BufferedImage getImg()
|
||||||
{
|
{
|
||||||
return img;
|
return _img;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setImg( BufferedImage img )
|
private void setImg( BufferedImage img )
|
||||||
{
|
{
|
||||||
this.img = img;
|
this._img = img;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Graphics2D getG2D()
|
private Graphics2D getG2D()
|
||||||
{
|
{
|
||||||
return (Graphics2D) img.getGraphics();
|
return (Graphics2D) _img.getGraphics();
|
||||||
}
|
}
|
||||||
|
|
||||||
private AffineTransform getTrans()
|
private AffineTransform getTrans()
|
||||||
{
|
{
|
||||||
return trans;
|
return _trans;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setTrans( AffineTransform trans )
|
private void setTrans( AffineTransform trans )
|
||||||
{
|
{
|
||||||
this.trans = trans;
|
this._trans = trans;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Shape getDeviceclip()
|
private Shape getDeviceclip()
|
||||||
{
|
{
|
||||||
return deviceclip;
|
return _deviceclip;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDeviceclip( Shape deviceclip )
|
private void setDeviceclip( Shape deviceclip )
|
||||||
{
|
{
|
||||||
this.deviceclip = deviceclip;
|
this._deviceclip = deviceclip;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,13 +28,12 @@ import org.apache.poi.hssf.util.HSSFColor;
|
|||||||
*
|
*
|
||||||
* @author Brian Sanders (bsanders at risklabs dot com)
|
* @author Brian Sanders (bsanders at risklabs dot com)
|
||||||
*/
|
*/
|
||||||
public class HSSFPalette
|
public final class HSSFPalette {
|
||||||
{
|
private PaletteRecord _palette;
|
||||||
private PaletteRecord palette;
|
|
||||||
|
|
||||||
protected HSSFPalette(PaletteRecord palette)
|
protected HSSFPalette(PaletteRecord palette)
|
||||||
{
|
{
|
||||||
this.palette = palette;
|
_palette = palette;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,15 +45,14 @@ public class HSSFPalette
|
|||||||
public HSSFColor getColor(short index)
|
public HSSFColor getColor(short index)
|
||||||
{
|
{
|
||||||
//Handle the special AUTOMATIC case
|
//Handle the special AUTOMATIC case
|
||||||
if (index == HSSFColor.AUTOMATIC.index)
|
if (index == HSSFColor.AUTOMATIC.index) {
|
||||||
return HSSFColor.AUTOMATIC.getInstance();
|
return HSSFColor.AUTOMATIC.getInstance();
|
||||||
else {
|
}
|
||||||
byte[] b = palette.getColor(index);
|
byte[] b = _palette.getColor(index);
|
||||||
if (b != null)
|
if (b != null)
|
||||||
{
|
{
|
||||||
return new CustomColor(index, b);
|
return new CustomColor(index, b);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -77,9 +75,9 @@ public class HSSFPalette
|
|||||||
*/
|
*/
|
||||||
public HSSFColor findColor(byte red, byte green, byte blue)
|
public HSSFColor findColor(byte red, byte green, byte blue)
|
||||||
{
|
{
|
||||||
byte[] b = palette.getColor(PaletteRecord.FIRST_COLOR_INDEX);
|
byte[] b = _palette.getColor(PaletteRecord.FIRST_COLOR_INDEX);
|
||||||
for (short i = (short) PaletteRecord.FIRST_COLOR_INDEX; b != null;
|
for (short i = PaletteRecord.FIRST_COLOR_INDEX; b != null;
|
||||||
b = palette.getColor(++i))
|
b = _palette.getColor(++i))
|
||||||
{
|
{
|
||||||
if (b[0] == red && b[1] == green && b[2] == blue)
|
if (b[0] == red && b[1] == green && b[2] == blue)
|
||||||
{
|
{
|
||||||
@ -104,9 +102,9 @@ public class HSSFPalette
|
|||||||
{
|
{
|
||||||
HSSFColor result = null;
|
HSSFColor result = null;
|
||||||
int minColorDistance = Integer.MAX_VALUE;
|
int minColorDistance = Integer.MAX_VALUE;
|
||||||
byte[] b = palette.getColor(PaletteRecord.FIRST_COLOR_INDEX);
|
byte[] b = _palette.getColor(PaletteRecord.FIRST_COLOR_INDEX);
|
||||||
for (short i = (short) PaletteRecord.FIRST_COLOR_INDEX; b != null;
|
for (short i = PaletteRecord.FIRST_COLOR_INDEX; b != null;
|
||||||
b = palette.getColor(++i))
|
b = _palette.getColor(++i))
|
||||||
{
|
{
|
||||||
int colorDistance = Math.abs(red - b[0]) +
|
int colorDistance = Math.abs(red - b[0]) +
|
||||||
Math.abs(green - b[1]) + Math.abs(blue - b[2]);
|
Math.abs(green - b[1]) + Math.abs(blue - b[2]);
|
||||||
@ -129,7 +127,7 @@ public class HSSFPalette
|
|||||||
*/
|
*/
|
||||||
public void setColorAtIndex(short index, byte red, byte green, byte blue)
|
public void setColorAtIndex(short index, byte red, byte green, byte blue)
|
||||||
{
|
{
|
||||||
palette.setColor(index, red, green, blue);
|
_palette.setColor(index, red, green, blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -144,9 +142,9 @@ public class HSSFPalette
|
|||||||
*/
|
*/
|
||||||
public HSSFColor addColor( byte red, byte green, byte blue )
|
public HSSFColor addColor( byte red, byte green, byte blue )
|
||||||
{
|
{
|
||||||
byte[] b = palette.getColor(PaletteRecord.FIRST_COLOR_INDEX);
|
byte[] b = _palette.getColor(PaletteRecord.FIRST_COLOR_INDEX);
|
||||||
short i;
|
short i;
|
||||||
for (i = (short) PaletteRecord.FIRST_COLOR_INDEX; i < PaletteRecord.STANDARD_PALETTE_SIZE + PaletteRecord.FIRST_COLOR_INDEX; b = palette.getColor(++i))
|
for (i = PaletteRecord.FIRST_COLOR_INDEX; i < PaletteRecord.STANDARD_PALETTE_SIZE + PaletteRecord.FIRST_COLOR_INDEX; b = _palette.getColor(++i))
|
||||||
{
|
{
|
||||||
if (b == null)
|
if (b == null)
|
||||||
{
|
{
|
||||||
@ -157,49 +155,48 @@ public class HSSFPalette
|
|||||||
throw new RuntimeException("Could not find free color index");
|
throw new RuntimeException("Could not find free color index");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class CustomColor extends HSSFColor
|
private static final class CustomColor extends HSSFColor {
|
||||||
{
|
private short _byteOffset;
|
||||||
private short byteOffset;
|
private byte _red;
|
||||||
private byte red;
|
private byte _green;
|
||||||
private byte green;
|
private byte _blue;
|
||||||
private byte blue;
|
|
||||||
|
|
||||||
private CustomColor(short byteOffset, byte[] colors)
|
public CustomColor(short byteOffset, byte[] colors)
|
||||||
{
|
{
|
||||||
this(byteOffset, colors[0], colors[1], colors[2]);
|
this(byteOffset, colors[0], colors[1], colors[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CustomColor(short byteOffset, byte red, byte green, byte blue)
|
private CustomColor(short byteOffset, byte red, byte green, byte blue)
|
||||||
{
|
{
|
||||||
this.byteOffset = byteOffset;
|
_byteOffset = byteOffset;
|
||||||
this.red = red;
|
_red = red;
|
||||||
this.green = green;
|
_green = green;
|
||||||
this.blue = blue;
|
_blue = blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getIndex()
|
public short getIndex()
|
||||||
{
|
{
|
||||||
return byteOffset;
|
return _byteOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public short[] getTriplet()
|
public short[] getTriplet()
|
||||||
{
|
{
|
||||||
return new short[]
|
return new short[]
|
||||||
{
|
{
|
||||||
(short) (red & 0xff),
|
(short) (_red & 0xff),
|
||||||
(short) (green & 0xff),
|
(short) (_green & 0xff),
|
||||||
(short) (blue & 0xff)
|
(short) (_blue & 0xff)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHexString()
|
public String getHexString()
|
||||||
{
|
{
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
sb.append(getGnumericPart(red));
|
sb.append(getGnumericPart(_red));
|
||||||
sb.append(':');
|
sb.append(':');
|
||||||
sb.append(getGnumericPart(green));
|
sb.append(getGnumericPart(_green));
|
||||||
sb.append(':');
|
sb.append(':');
|
||||||
sb.append(getGnumericPart(blue));
|
sb.append(getGnumericPart(_blue));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1136,7 +1136,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm
|
|||||||
*/
|
*/
|
||||||
public HSSFCellStyle getCellStyleAt(short idx)
|
public HSSFCellStyle getCellStyleAt(short idx)
|
||||||
{
|
{
|
||||||
ExtendedFormatRecord xfr = workbook.getExFormatAt((int)idx);
|
ExtendedFormatRecord xfr = workbook.getExFormatAt(idx);
|
||||||
HSSFCellStyle style = new HSSFCellStyle(idx, xfr, this);
|
HSSFCellStyle style = new HSSFCellStyle(idx, xfr, this);
|
||||||
|
|
||||||
return style;
|
return style;
|
||||||
|
@ -27,19 +27,16 @@ package org.apache.poi.hssf.util;
|
|||||||
* @see org.apache.poi.hssf.record.MulRKRecord
|
* @see org.apache.poi.hssf.record.MulRKRecord
|
||||||
* @see org.apache.poi.hssf.record.RKRecord
|
* @see org.apache.poi.hssf.record.RKRecord
|
||||||
*/
|
*/
|
||||||
public class RKUtil
|
public final class RKUtil {
|
||||||
{
|
private RKUtil() {
|
||||||
private RKUtil()
|
// no instances of this class
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do the dirty work of decoding; made a private static method to
|
* Do the dirty work of decoding; made a private static method to
|
||||||
* facilitate testing the algorithm
|
* facilitate testing the algorithm
|
||||||
*/
|
*/
|
||||||
|
public static double decodeNumber(int number) {
|
||||||
public static double decodeNumber(int number)
|
|
||||||
{
|
|
||||||
long raw_number = number;
|
long raw_number = number;
|
||||||
|
|
||||||
// mask off the two low-order bits, 'cause they're not part of
|
// mask off the two low-order bits, 'cause they're not part of
|
||||||
@ -51,7 +48,7 @@ public class RKUtil
|
|||||||
{
|
{
|
||||||
// ok, it's just a plain ol' int; we can handle this
|
// ok, it's just a plain ol' int; we can handle this
|
||||||
// trivially by casting
|
// trivially by casting
|
||||||
rvalue = ( double ) (raw_number);
|
rvalue = raw_number;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -72,5 +69,4 @@ public class RKUtil
|
|||||||
|
|
||||||
return rvalue;
|
return rvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
* @param stream the InputStream we read data from
|
* @param stream the InputStream we read data from
|
||||||
*/
|
*/
|
||||||
public POIFSDocument(String name, InputStream stream) throws IOException {
|
public POIFSDocument(String name, InputStream stream) throws IOException {
|
||||||
List blocks = new ArrayList();
|
List<DocumentBlock> blocks = new ArrayList<DocumentBlock>();
|
||||||
|
|
||||||
_size = 0;
|
_size = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -142,7 +142,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DocumentBlock[] bigBlocks = (DocumentBlock[]) blocks.toArray(new DocumentBlock[blocks.size()]);
|
DocumentBlock[] bigBlocks = blocks.toArray(new DocumentBlock[blocks.size()]);
|
||||||
|
|
||||||
_big_store = new BigBlockStore(bigBlocks);
|
_big_store = new BigBlockStore(bigBlocks);
|
||||||
_property = new DocumentProperty(name, _size);
|
_property = new DocumentProperty(name, _size);
|
||||||
@ -249,9 +249,8 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
}
|
}
|
||||||
if (_property.shouldUseSmallBlocks()) {
|
if (_property.shouldUseSmallBlocks()) {
|
||||||
return SmallDocumentBlock.getDataInputBlock(_small_store.getBlocks(), offset);
|
return SmallDocumentBlock.getDataInputBlock(_small_store.getBlocks(), offset);
|
||||||
} else {
|
|
||||||
return DocumentBlock.getDataInputBlock(_big_store.getBlocks(), offset);
|
|
||||||
}
|
}
|
||||||
|
return DocumentBlock.getDataInputBlock(_big_store.getBlocks(), offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -377,11 +376,11 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
|
|
||||||
/* ********** END begin implementation of POIFSViewable ********** */
|
/* ********** END begin implementation of POIFSViewable ********** */
|
||||||
private static final class SmallBlockStore {
|
private static final class SmallBlockStore {
|
||||||
private SmallDocumentBlock[] smallBlocks;
|
private SmallDocumentBlock[] _smallBlocks;
|
||||||
private final POIFSDocumentPath path;
|
private final POIFSDocumentPath _path;
|
||||||
private final String name;
|
private final String _name;
|
||||||
private final int size;
|
private final int _size;
|
||||||
private final POIFSWriterListener writer;
|
private final POIFSWriterListener _writer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -389,11 +388,11 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
* @param blocks blocks to construct the store from
|
* @param blocks blocks to construct the store from
|
||||||
*/
|
*/
|
||||||
SmallBlockStore(SmallDocumentBlock[] blocks) {
|
SmallBlockStore(SmallDocumentBlock[] blocks) {
|
||||||
smallBlocks = (SmallDocumentBlock[]) blocks.clone();
|
_smallBlocks = blocks.clone();
|
||||||
this.path = null;
|
this._path = null;
|
||||||
this.name = null;
|
this._name = null;
|
||||||
this.size = -1;
|
this._size = -1;
|
||||||
this.writer = null;
|
this._writer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -405,41 +404,41 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
* @param writer the object that will eventually write the document
|
* @param writer the object that will eventually write the document
|
||||||
*/
|
*/
|
||||||
SmallBlockStore(POIFSDocumentPath path, String name, int size, POIFSWriterListener writer) {
|
SmallBlockStore(POIFSDocumentPath path, String name, int size, POIFSWriterListener writer) {
|
||||||
smallBlocks = new SmallDocumentBlock[0];
|
_smallBlocks = new SmallDocumentBlock[0];
|
||||||
this.path = path;
|
this._path = path;
|
||||||
this.name = name;
|
this._name = name;
|
||||||
this.size = size;
|
this._size = size;
|
||||||
this.writer = writer;
|
this._writer = writer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return <code>true</code> if this store is a valid source of data
|
* @return <code>true</code> if this store is a valid source of data
|
||||||
*/
|
*/
|
||||||
boolean isValid() {
|
boolean isValid() {
|
||||||
return smallBlocks.length > 0 || writer != null;
|
return _smallBlocks.length > 0 || _writer != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the SmallDocumentBlocks
|
* @return the SmallDocumentBlocks
|
||||||
*/
|
*/
|
||||||
SmallDocumentBlock[] getBlocks() {
|
SmallDocumentBlock[] getBlocks() {
|
||||||
if (isValid() && writer != null) {
|
if (isValid() && _writer != null) {
|
||||||
ByteArrayOutputStream stream = new ByteArrayOutputStream(size);
|
ByteArrayOutputStream stream = new ByteArrayOutputStream(_size);
|
||||||
DocumentOutputStream dstream = new DocumentOutputStream(stream, size);
|
DocumentOutputStream dstream = new DocumentOutputStream(stream, _size);
|
||||||
|
|
||||||
writer.processPOIFSWriterEvent(new POIFSWriterEvent(dstream, path, name, size));
|
_writer.processPOIFSWriterEvent(new POIFSWriterEvent(dstream, _path, _name, _size));
|
||||||
smallBlocks = SmallDocumentBlock.convert(stream.toByteArray(), size);
|
_smallBlocks = SmallDocumentBlock.convert(stream.toByteArray(), _size);
|
||||||
}
|
}
|
||||||
return smallBlocks;
|
return _smallBlocks;
|
||||||
}
|
}
|
||||||
} // end private class SmallBlockStore
|
} // end private class SmallBlockStore
|
||||||
|
|
||||||
private static final class BigBlockStore {
|
private static final class BigBlockStore {
|
||||||
private DocumentBlock[] bigBlocks;
|
private DocumentBlock[] bigBlocks;
|
||||||
private final POIFSDocumentPath path;
|
private final POIFSDocumentPath _path;
|
||||||
private final String name;
|
private final String _name;
|
||||||
private final int size;
|
private final int _size;
|
||||||
private final POIFSWriterListener writer;
|
private final POIFSWriterListener _writer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -447,11 +446,11 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
* @param blocks the blocks making up the store
|
* @param blocks the blocks making up the store
|
||||||
*/
|
*/
|
||||||
BigBlockStore(DocumentBlock[] blocks) {
|
BigBlockStore(DocumentBlock[] blocks) {
|
||||||
bigBlocks = (DocumentBlock[]) blocks.clone();
|
bigBlocks = blocks.clone();
|
||||||
this.path = null;
|
_path = null;
|
||||||
this.name = null;
|
_name = null;
|
||||||
this.size = -1;
|
_size = -1;
|
||||||
this.writer = null;
|
_writer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -464,29 +463,29 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
*/
|
*/
|
||||||
BigBlockStore(POIFSDocumentPath path, String name, int size, POIFSWriterListener writer) {
|
BigBlockStore(POIFSDocumentPath path, String name, int size, POIFSWriterListener writer) {
|
||||||
bigBlocks = new DocumentBlock[0];
|
bigBlocks = new DocumentBlock[0];
|
||||||
this.path = path;
|
_path = path;
|
||||||
this.name = name;
|
_name = name;
|
||||||
this.size = size;
|
_size = size;
|
||||||
this.writer = writer;
|
_writer = writer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return <code>true</code> if this store is a valid source of data
|
* @return <code>true</code> if this store is a valid source of data
|
||||||
*/
|
*/
|
||||||
boolean isValid() {
|
boolean isValid() {
|
||||||
return bigBlocks.length > 0 || writer != null;
|
return bigBlocks.length > 0 || _writer != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the DocumentBlocks
|
* @return the DocumentBlocks
|
||||||
*/
|
*/
|
||||||
DocumentBlock[] getBlocks() {
|
DocumentBlock[] getBlocks() {
|
||||||
if (isValid() && writer != null) {
|
if (isValid() && _writer != null) {
|
||||||
ByteArrayOutputStream stream = new ByteArrayOutputStream(size);
|
ByteArrayOutputStream stream = new ByteArrayOutputStream(_size);
|
||||||
DocumentOutputStream dstream = new DocumentOutputStream(stream, size);
|
DocumentOutputStream dstream = new DocumentOutputStream(stream, _size);
|
||||||
|
|
||||||
writer.processPOIFSWriterEvent(new POIFSWriterEvent(dstream, path, name, size));
|
_writer.processPOIFSWriterEvent(new POIFSWriterEvent(dstream, _path, _name, _size));
|
||||||
bigBlocks = DocumentBlock.convert(stream.toByteArray(), size);
|
bigBlocks = DocumentBlock.convert(stream.toByteArray(), _size);
|
||||||
}
|
}
|
||||||
return bigBlocks;
|
return bigBlocks;
|
||||||
}
|
}
|
||||||
@ -498,10 +497,10 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
*/
|
*/
|
||||||
void writeBlocks(OutputStream stream) throws IOException {
|
void writeBlocks(OutputStream stream) throws IOException {
|
||||||
if (isValid()) {
|
if (isValid()) {
|
||||||
if (writer != null) {
|
if (_writer != null) {
|
||||||
DocumentOutputStream dstream = new DocumentOutputStream(stream, size);
|
DocumentOutputStream dstream = new DocumentOutputStream(stream, _size);
|
||||||
|
|
||||||
writer.processPOIFSWriterEvent(new POIFSWriterEvent(dstream, path, name, size));
|
_writer.processPOIFSWriterEvent(new POIFSWriterEvent(dstream, _path, _name, _size));
|
||||||
dstream.writeFiller(countBlocks() * POIFSConstants.BIG_BLOCK_SIZE,
|
dstream.writeFiller(countBlocks() * POIFSConstants.BIG_BLOCK_SIZE,
|
||||||
DocumentBlock.getFillByte());
|
DocumentBlock.getFillByte());
|
||||||
} else {
|
} else {
|
||||||
@ -518,10 +517,10 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView
|
|||||||
int countBlocks() {
|
int countBlocks() {
|
||||||
|
|
||||||
if (isValid()) {
|
if (isValid()) {
|
||||||
if (writer == null) {
|
if (_writer == null) {
|
||||||
return bigBlocks.length;
|
return bigBlocks.length;
|
||||||
}
|
}
|
||||||
return (size + POIFSConstants.BIG_BLOCK_SIZE - 1)
|
return (_size + POIFSConstants.BIG_BLOCK_SIZE - 1)
|
||||||
/ POIFSConstants.BIG_BLOCK_SIZE;
|
/ POIFSConstants.BIG_BLOCK_SIZE;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -39,9 +39,7 @@ import org.apache.poi.util.ShortField;
|
|||||||
* @author Marc Johnson (mjohnson at apache dot org)
|
* @author Marc Johnson (mjohnson at apache dot org)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public abstract class Property
|
public abstract class Property implements Child, POIFSViewable {
|
||||||
implements Child, POIFSViewable
|
|
||||||
{
|
|
||||||
static final private byte _default_fill = ( byte ) 0x00;
|
static final private byte _default_fill = ( byte ) 0x00;
|
||||||
static final private int _name_size_offset = 0x40;
|
static final private int _name_size_offset = 0x40;
|
||||||
static final private int _max_name_length =
|
static final private int _max_name_length =
|
||||||
@ -88,10 +86,6 @@ public abstract class Property
|
|||||||
private Child _next_child;
|
private Child _next_child;
|
||||||
private Child _previous_child;
|
private Child _previous_child;
|
||||||
|
|
||||||
/**
|
|
||||||
* Default constructor
|
|
||||||
*/
|
|
||||||
|
|
||||||
protected Property()
|
protected Property()
|
||||||
{
|
{
|
||||||
_raw_data = new byte[ POIFSConstants.PROPERTY_SIZE ];
|
_raw_data = new byte[ POIFSConstants.PROPERTY_SIZE ];
|
||||||
@ -129,8 +123,7 @@ public abstract class Property
|
|||||||
* @param array byte data
|
* @param array byte data
|
||||||
* @param offset offset into byte data
|
* @param offset offset into byte data
|
||||||
*/
|
*/
|
||||||
|
protected Property(int index, byte [] array, int offset)
|
||||||
protected Property(final int index, final byte [] array, final int offset)
|
|
||||||
{
|
{
|
||||||
_raw_data = new byte[ POIFSConstants.PROPERTY_SIZE ];
|
_raw_data = new byte[ POIFSConstants.PROPERTY_SIZE ];
|
||||||
System.arraycopy(array, offset, _raw_data, 0,
|
System.arraycopy(array, offset, _raw_data, 0,
|
||||||
@ -187,8 +180,7 @@ public abstract class Property
|
|||||||
* @exception IOException on problems writing to the specified
|
* @exception IOException on problems writing to the specified
|
||||||
* stream.
|
* stream.
|
||||||
*/
|
*/
|
||||||
|
public void writeData(OutputStream stream)
|
||||||
public void writeData(final OutputStream stream)
|
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
stream.write(_raw_data);
|
stream.write(_raw_data);
|
||||||
@ -200,8 +192,7 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @param startBlock the start block index
|
* @param startBlock the start block index
|
||||||
*/
|
*/
|
||||||
|
public void setStartBlock(int startBlock)
|
||||||
public void setStartBlock(final int startBlock)
|
|
||||||
{
|
{
|
||||||
_start_block.set(startBlock, _raw_data);
|
_start_block.set(startBlock, _raw_data);
|
||||||
}
|
}
|
||||||
@ -209,7 +200,6 @@ public abstract class Property
|
|||||||
/**
|
/**
|
||||||
* @return the start block
|
* @return the start block
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getStartBlock()
|
public int getStartBlock()
|
||||||
{
|
{
|
||||||
return _start_block.get();
|
return _start_block.get();
|
||||||
@ -220,7 +210,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return size in bytes
|
* @return size in bytes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getSize()
|
public int getSize()
|
||||||
{
|
{
|
||||||
return _size.get();
|
return _size.get();
|
||||||
@ -232,7 +221,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return true if the size is less than _big_block_minimum_bytes
|
* @return true if the size is less than _big_block_minimum_bytes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean shouldUseSmallBlocks()
|
public boolean shouldUseSmallBlocks()
|
||||||
{
|
{
|
||||||
return Property.isSmall(_size.get());
|
return Property.isSmall(_size.get());
|
||||||
@ -246,8 +234,7 @@ public abstract class Property
|
|||||||
* @return true if the length is less than
|
* @return true if the length is less than
|
||||||
* _big_block_minimum_bytes
|
* _big_block_minimum_bytes
|
||||||
*/
|
*/
|
||||||
|
public static boolean isSmall(int length)
|
||||||
public static boolean isSmall(final int length)
|
|
||||||
{
|
{
|
||||||
return length < _big_block_minimum_bytes;
|
return length < _big_block_minimum_bytes;
|
||||||
}
|
}
|
||||||
@ -257,7 +244,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return property name as String
|
* @return property name as String
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public String getName()
|
public String getName()
|
||||||
{
|
{
|
||||||
return _name;
|
return _name;
|
||||||
@ -266,7 +252,6 @@ public abstract class Property
|
|||||||
/**
|
/**
|
||||||
* @return true if a directory type Property
|
* @return true if a directory type Property
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract public boolean isDirectory();
|
abstract public boolean isDirectory();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -284,7 +269,7 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @param name the new name
|
* @param name the new name
|
||||||
*/
|
*/
|
||||||
protected final void setName(final String name)
|
protected void setName(String name)
|
||||||
{
|
{
|
||||||
char[] char_array = name.toCharArray();
|
char[] char_array = name.toCharArray();
|
||||||
int limit = Math.min(char_array.length, _max_name_length);
|
int limit = Math.min(char_array.length, _max_name_length);
|
||||||
@ -329,8 +314,7 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @param propertyType the property type (root, file, directory)
|
* @param propertyType the property type (root, file, directory)
|
||||||
*/
|
*/
|
||||||
|
protected void setPropertyType(byte propertyType)
|
||||||
protected void setPropertyType(final byte propertyType)
|
|
||||||
{
|
{
|
||||||
_property_type.set(propertyType, _raw_data);
|
_property_type.set(propertyType, _raw_data);
|
||||||
}
|
}
|
||||||
@ -340,8 +324,7 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @param nodeColor the node color (red or black)
|
* @param nodeColor the node color (red or black)
|
||||||
*/
|
*/
|
||||||
|
protected void setNodeColor(byte nodeColor)
|
||||||
protected void setNodeColor(final byte nodeColor)
|
|
||||||
{
|
{
|
||||||
_node_color.set(nodeColor, _raw_data);
|
_node_color.set(nodeColor, _raw_data);
|
||||||
}
|
}
|
||||||
@ -351,8 +334,7 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @param child the child property's index in the Property Table
|
* @param child the child property's index in the Property Table
|
||||||
*/
|
*/
|
||||||
|
protected void setChildProperty(int child)
|
||||||
protected void setChildProperty(final int child)
|
|
||||||
{
|
{
|
||||||
_child_property.set(child, _raw_data);
|
_child_property.set(child, _raw_data);
|
||||||
}
|
}
|
||||||
@ -362,7 +344,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return child property index
|
* @return child property index
|
||||||
*/
|
*/
|
||||||
|
|
||||||
protected int getChildIndex()
|
protected int getChildIndex()
|
||||||
{
|
{
|
||||||
return _child_property.get();
|
return _child_property.get();
|
||||||
@ -373,8 +354,7 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @param size the size of the document, in bytes
|
* @param size the size of the document, in bytes
|
||||||
*/
|
*/
|
||||||
|
protected void setSize(int size)
|
||||||
protected void setSize(final int size)
|
|
||||||
{
|
{
|
||||||
_size.set(size, _raw_data);
|
_size.set(size, _raw_data);
|
||||||
}
|
}
|
||||||
@ -385,8 +365,7 @@ public abstract class Property
|
|||||||
* @param index this Property's index within its containing
|
* @param index this Property's index within its containing
|
||||||
* Property Table
|
* Property Table
|
||||||
*/
|
*/
|
||||||
|
protected void setIndex(int index)
|
||||||
protected void setIndex(final int index)
|
|
||||||
{
|
{
|
||||||
_index = index;
|
_index = index;
|
||||||
}
|
}
|
||||||
@ -396,7 +375,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return the index of this Property within its Property Table
|
* @return the index of this Property within its Property Table
|
||||||
*/
|
*/
|
||||||
|
|
||||||
protected int getIndex()
|
protected int getIndex()
|
||||||
{
|
{
|
||||||
return _index;
|
return _index;
|
||||||
@ -406,7 +384,6 @@ public abstract class Property
|
|||||||
* Perform whatever activities need to be performed prior to
|
* Perform whatever activities need to be performed prior to
|
||||||
* writing
|
* writing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract protected void preWrite();
|
abstract protected void preWrite();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -414,7 +391,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return index of next sibling
|
* @return index of next sibling
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int getNextChildIndex()
|
int getNextChildIndex()
|
||||||
{
|
{
|
||||||
return _next_property.get();
|
return _next_property.get();
|
||||||
@ -425,7 +401,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return index of previous sibling
|
* @return index of previous sibling
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int getPreviousChildIndex()
|
int getPreviousChildIndex()
|
||||||
{
|
{
|
||||||
return _previous_property.get();
|
return _previous_property.get();
|
||||||
@ -438,20 +413,16 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return true if the index is valid
|
* @return true if the index is valid
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static boolean isValidIndex(int index)
|
static boolean isValidIndex(int index)
|
||||||
{
|
{
|
||||||
return index != _NO_INDEX;
|
return index != _NO_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ********** START implementation of Child ********** */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the next Child, if any
|
* Get the next Child, if any
|
||||||
*
|
*
|
||||||
* @return the next Child; may return null
|
* @return the next Child; may return null
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Child getNextChild()
|
public Child getNextChild()
|
||||||
{
|
{
|
||||||
return _next_child;
|
return _next_child;
|
||||||
@ -462,7 +433,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return the previous Child; may return null
|
* @return the previous Child; may return null
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Child getPreviousChild()
|
public Child getPreviousChild()
|
||||||
{
|
{
|
||||||
return _previous_child;
|
return _previous_child;
|
||||||
@ -474,8 +444,7 @@ public abstract class Property
|
|||||||
* @param child the new 'next' child; may be null, which has the
|
* @param child the new 'next' child; may be null, which has the
|
||||||
* effect of saying there is no 'next' child
|
* effect of saying there is no 'next' child
|
||||||
*/
|
*/
|
||||||
|
public void setNextChild(Child child)
|
||||||
public void setNextChild(final Child child)
|
|
||||||
{
|
{
|
||||||
_next_child = child;
|
_next_child = child;
|
||||||
_next_property.set((child == null) ? _NO_INDEX
|
_next_property.set((child == null) ? _NO_INDEX
|
||||||
@ -489,8 +458,7 @@ public abstract class Property
|
|||||||
* @param child the new 'previous' child; may be null, which has
|
* @param child the new 'previous' child; may be null, which has
|
||||||
* the effect of saying there is no 'previous' child
|
* the effect of saying there is no 'previous' child
|
||||||
*/
|
*/
|
||||||
|
public void setPreviousChild(Child child)
|
||||||
public void setPreviousChild(final Child child)
|
|
||||||
{
|
{
|
||||||
_previous_child = child;
|
_previous_child = child;
|
||||||
_previous_property.set((child == null) ? _NO_INDEX
|
_previous_property.set((child == null) ? _NO_INDEX
|
||||||
@ -498,16 +466,12 @@ public abstract class Property
|
|||||||
.getIndex(), _raw_data);
|
.getIndex(), _raw_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ********** END implementation of Child ********** */
|
|
||||||
/* ********** START begin implementation of POIFSViewable ********** */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an array of objects, some of which may implement
|
* Get an array of objects, some of which may implement
|
||||||
* POIFSViewable
|
* POIFSViewable
|
||||||
*
|
*
|
||||||
* @return an array of Object; may not be null, but may be empty
|
* @return an array of Object; may not be null, but may be empty
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Object [] getViewableArray()
|
public Object [] getViewableArray()
|
||||||
{
|
{
|
||||||
Object[] results = new Object[ 5 ];
|
Object[] results = new Object[ 5 ];
|
||||||
@ -518,11 +482,11 @@ public abstract class Property
|
|||||||
long time = _days_1.get();
|
long time = _days_1.get();
|
||||||
|
|
||||||
time <<= 32;
|
time <<= 32;
|
||||||
time += (( long ) _seconds_1.get()) & 0x0000FFFFL;
|
time += _seconds_1.get() & 0x0000FFFFL;
|
||||||
results[ 3 ] = "Time 1 = " + time;
|
results[ 3 ] = "Time 1 = " + time;
|
||||||
time = _days_2.get();
|
time = _days_2.get();
|
||||||
time <<= 32;
|
time <<= 32;
|
||||||
time += (( long ) _seconds_2.get()) & 0x0000FFFFL;
|
time += _seconds_2.get() & 0x0000FFFFL;
|
||||||
results[ 4 ] = "Time 2 = " + time;
|
results[ 4 ] = "Time 2 = " + time;
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@ -534,7 +498,6 @@ public abstract class Property
|
|||||||
* @return an Iterator; may not be null, but may have an empty
|
* @return an Iterator; may not be null, but may have an empty
|
||||||
* back end store
|
* back end store
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Iterator getViewableIterator()
|
public Iterator getViewableIterator()
|
||||||
{
|
{
|
||||||
return Collections.EMPTY_LIST.iterator();
|
return Collections.EMPTY_LIST.iterator();
|
||||||
@ -547,7 +510,6 @@ public abstract class Property
|
|||||||
* @return true if a viewer should call getViewableArray, false if
|
* @return true if a viewer should call getViewableArray, false if
|
||||||
* a viewer should call getViewableIterator
|
* a viewer should call getViewableIterator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean preferArray()
|
public boolean preferArray()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -559,7 +521,6 @@ public abstract class Property
|
|||||||
*
|
*
|
||||||
* @return short description
|
* @return short description
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public String getShortDescription()
|
public String getShortDescription()
|
||||||
{
|
{
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
@ -567,7 +528,4 @@ public abstract class Property
|
|||||||
buffer.append("Property: \"").append(getName()).append("\"");
|
buffer.append("Property: \"").append(getName()).append("\"");
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/* ********** END begin implementation of POIFSViewable ********** */
|
|
||||||
} // end public abstract class Property
|
|
||||||
|
|
||||||
|
@ -393,8 +393,7 @@ public final class WorkbookEvaluator {
|
|||||||
return fe.getFreeRefFunction().evaluate(ops, workbook, sheetIndex, srcRowNum, srcColNum);
|
return fe.getFreeRefFunction().evaluate(ops, workbook, sheetIndex, srcRowNum, srcColNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO - fix return type of this evaluate method:
|
return operation.evaluate(ops, srcRowNum, (short)srcColNum);
|
||||||
return (ValueEval) operation.evaluate(ops, srcRowNum, (short)srcColNum);
|
|
||||||
}
|
}
|
||||||
private SheetRefEvaluator createExternSheetRefEvaluator(EvaluationTracker tracker,
|
private SheetRefEvaluator createExternSheetRefEvaluator(EvaluationTracker tracker,
|
||||||
ExternSheetReferenceToken ptg) {
|
ExternSheetReferenceToken ptg) {
|
||||||
|
@ -26,35 +26,34 @@ package org.apache.poi.ss.util;
|
|||||||
* @author Andrew C. Oliver acoliver at apache dot org
|
* @author Andrew C. Oliver acoliver at apache dot org
|
||||||
* @deprecated (Aug-2008) use {@link CellRangeAddress}
|
* @deprecated (Aug-2008) use {@link CellRangeAddress}
|
||||||
*/
|
*/
|
||||||
public class Region implements Comparable {
|
public class Region implements Comparable<Region> {
|
||||||
private int rowFrom;
|
private int _rowFrom;
|
||||||
private short colFrom;
|
private short _colFrom;
|
||||||
private int rowTo;
|
private int _rowTo;
|
||||||
private short colTo;
|
private short _colTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance of Region (0,0 - 0,0)
|
* Creates a new instance of Region (0,0 - 0,0)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Region()
|
public Region()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public Region(int rowFrom, short colFrom, int rowTo, short colTo)
|
public Region(int rowFrom, short colFrom, int rowTo, short colTo)
|
||||||
{
|
{
|
||||||
this.rowFrom = rowFrom;
|
this._rowFrom = rowFrom;
|
||||||
this.rowTo = rowTo;
|
this._rowTo = rowTo;
|
||||||
this.colFrom = colFrom;
|
this._colFrom = colFrom;
|
||||||
this.colTo = colTo;
|
this._colTo = colTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Region(String ref) {
|
public Region(String ref) {
|
||||||
CellReference cellReferenceFrom = new CellReference(ref.substring(0, ref.indexOf(":")));
|
CellReference cellReferenceFrom = new CellReference(ref.substring(0, ref.indexOf(":")));
|
||||||
CellReference cellReferenceTo = new CellReference(ref.substring(ref.indexOf(":") + 1));
|
CellReference cellReferenceTo = new CellReference(ref.substring(ref.indexOf(":") + 1));
|
||||||
this.rowFrom = cellReferenceFrom.getRow();
|
this._rowFrom = cellReferenceFrom.getRow();
|
||||||
this.colFrom = (short) cellReferenceFrom.getCol();
|
this._colFrom = cellReferenceFrom.getCol();
|
||||||
this.rowTo = cellReferenceTo.getRow();
|
this._rowTo = cellReferenceTo.getRow();
|
||||||
this.colTo = (short) cellReferenceTo.getCol();
|
this._colTo = cellReferenceTo.getCol();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -63,10 +62,9 @@ public class Region implements Comparable {
|
|||||||
*
|
*
|
||||||
* @return column number for the upper left hand corner
|
* @return column number for the upper left hand corner
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public short getColumnFrom()
|
public short getColumnFrom()
|
||||||
{
|
{
|
||||||
return colFrom;
|
return _colFrom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,10 +72,9 @@ public class Region implements Comparable {
|
|||||||
*
|
*
|
||||||
* @return row number for the upper left hand corner
|
* @return row number for the upper left hand corner
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getRowFrom()
|
public int getRowFrom()
|
||||||
{
|
{
|
||||||
return rowFrom;
|
return _rowFrom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +85,7 @@ public class Region implements Comparable {
|
|||||||
|
|
||||||
public short getColumnTo()
|
public short getColumnTo()
|
||||||
{
|
{
|
||||||
return colTo;
|
return _colTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,10 +93,9 @@ public class Region implements Comparable {
|
|||||||
*
|
*
|
||||||
* @return row number for the lower right hand corner
|
* @return row number for the lower right hand corner
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int getRowTo()
|
public int getRowTo()
|
||||||
{
|
{
|
||||||
return rowTo;
|
return _rowTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -107,10 +103,9 @@ public class Region implements Comparable {
|
|||||||
*
|
*
|
||||||
* @param colFrom column number for the upper left hand corner
|
* @param colFrom column number for the upper left hand corner
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setColumnFrom(short colFrom)
|
public void setColumnFrom(short colFrom)
|
||||||
{
|
{
|
||||||
this.colFrom = colFrom;
|
this._colFrom = colFrom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -118,10 +113,9 @@ public class Region implements Comparable {
|
|||||||
*
|
*
|
||||||
* @param rowFrom row number for the upper left hand corner
|
* @param rowFrom row number for the upper left hand corner
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setRowFrom(int rowFrom)
|
public void setRowFrom(int rowFrom)
|
||||||
{
|
{
|
||||||
this.rowFrom = rowFrom;
|
this._rowFrom = rowFrom;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -132,7 +126,7 @@ public class Region implements Comparable {
|
|||||||
|
|
||||||
public void setColumnTo(short colTo)
|
public void setColumnTo(short colTo)
|
||||||
{
|
{
|
||||||
this.colTo = colTo;
|
this._colTo = colTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -140,10 +134,9 @@ public class Region implements Comparable {
|
|||||||
*
|
*
|
||||||
* @param rowTo row number for the lower right hand corner
|
* @param rowTo row number for the lower right hand corner
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setRowTo(int rowTo)
|
public void setRowTo(int rowTo)
|
||||||
{
|
{
|
||||||
this.rowTo = rowTo;
|
this._rowTo = rowTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -153,11 +146,10 @@ public class Region implements Comparable {
|
|||||||
* @return <code>true</code> if the cell is in the range and
|
* @return <code>true</code> if the cell is in the range and
|
||||||
* <code>false</code> if it is not
|
* <code>false</code> if it is not
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean contains(int row, short col)
|
public boolean contains(int row, short col)
|
||||||
{
|
{
|
||||||
if ((this.rowFrom <= row) && (this.rowTo >= row)
|
if ((this._rowFrom <= row) && (this._rowTo >= row)
|
||||||
&& (this.colFrom <= col) && (this.colTo >= col))
|
&& (this._colFrom <= col) && (this._colTo >= col))
|
||||||
{
|
{
|
||||||
|
|
||||||
// System.out.println("Region ("+rowFrom+","+colFrom+","+rowTo+","+
|
// System.out.println("Region ("+rowFrom+","+colFrom+","+rowTo+","+
|
||||||
@ -181,7 +173,6 @@ public class Region implements Comparable {
|
|||||||
* @param r region
|
* @param r region
|
||||||
* @see #compareTo(Object)
|
* @see #compareTo(Object)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int compareTo(Region r)
|
public int compareTo(Region r)
|
||||||
{
|
{
|
||||||
if ((this.getRowFrom() == r.getRowFrom())
|
if ((this.getRowFrom() == r.getRowFrom())
|
||||||
@ -201,16 +192,11 @@ public class Region implements Comparable {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int compareTo(Object o)
|
|
||||||
{
|
|
||||||
return compareTo(( Region ) o);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the size of the region (number of cells in the area).
|
* @return the size of the region (number of cells in the area).
|
||||||
*/
|
*/
|
||||||
public int getArea() {
|
public int getArea() {
|
||||||
return (rowTo - rowFrom + 1) * (colTo - colFrom + 1);
|
return (_rowTo - _rowFrom + 1) * (_colTo - _colFrom + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -263,8 +249,8 @@ public class Region implements Comparable {
|
|||||||
* @return the string reference for this region
|
* @return the string reference for this region
|
||||||
*/
|
*/
|
||||||
public String getRegionRef() {
|
public String getRegionRef() {
|
||||||
CellReference cellRefFrom = new CellReference(rowFrom, colFrom);
|
CellReference cellRefFrom = new CellReference(_rowFrom, _colFrom);
|
||||||
CellReference cellRefTo = new CellReference(rowTo, colTo);
|
CellReference cellRefTo = new CellReference(_rowTo, _colTo);
|
||||||
String ref = cellRefFrom.formatAsString() + ":" + cellRefTo.formatAsString();
|
String ref = cellRefFrom.formatAsString() + ":" + cellRefTo.formatAsString();
|
||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
@ -16,7 +15,6 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
==================================================================== */
|
==================================================================== */
|
||||||
|
|
||||||
|
|
||||||
package org.apache.poi.util;
|
package org.apache.poi.util;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -89,34 +87,20 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Marc Johnson (mjohnson at apache dot org)
|
* @author Marc Johnson (mjohnson at apache dot org)
|
||||||
*/
|
*/
|
||||||
public final class BinaryTree // final for performance
|
//for performance
|
||||||
|
public class BinaryTree extends AbstractMap {
|
||||||
extends AbstractMap
|
final Node[] _root;
|
||||||
{
|
int _size = 0;
|
||||||
private Node[] _root = new Node[]
|
int _modifications = 0;
|
||||||
{
|
private final Set[] _key_set = new Set[] { null, null };
|
||||||
null, null
|
private final Set[] _entry_set = new Set[] { null, null };
|
||||||
};
|
private final Collection[] _value_collection = new Collection[] { null, null };
|
||||||
private int _size = 0;
|
static int _KEY = 0;
|
||||||
private int _modifications = 0;
|
static int _VALUE = 1;
|
||||||
private Set[] _key_set = new Set[]
|
private static int _INDEX_SUM = _KEY + _VALUE;
|
||||||
{
|
private static int _MINIMUM_INDEX = 0;
|
||||||
null, null
|
private static int _INDEX_COUNT = 2;
|
||||||
};
|
private static String[] _data_name = new String[]
|
||||||
private Set[] _entry_set = new Set[]
|
|
||||||
{
|
|
||||||
null, null
|
|
||||||
};
|
|
||||||
private Collection[] _value_collection = new Collection[]
|
|
||||||
{
|
|
||||||
null, null
|
|
||||||
};
|
|
||||||
private static final int _KEY = 0;
|
|
||||||
private static final int _VALUE = 1;
|
|
||||||
private static final int _INDEX_SUM = _KEY + _VALUE;
|
|
||||||
private static final int _MINIMUM_INDEX = 0;
|
|
||||||
private static final int _INDEX_COUNT = 2;
|
|
||||||
private static final String[] _data_name = new String[]
|
|
||||||
{
|
{
|
||||||
"key", "value"
|
"key", "value"
|
||||||
};
|
};
|
||||||
@ -124,9 +108,8 @@ public final class BinaryTree // final for performance
|
|||||||
/**
|
/**
|
||||||
* Construct a new BinaryTree
|
* Construct a new BinaryTree
|
||||||
*/
|
*/
|
||||||
|
public BinaryTree() {
|
||||||
public BinaryTree()
|
_root = new Node[]{ null, null, };
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -146,11 +129,11 @@ public final class BinaryTree // final for performance
|
|||||||
* or duplicate values in the
|
* or duplicate values in the
|
||||||
* map
|
* map
|
||||||
*/
|
*/
|
||||||
|
public BinaryTree(Map map)
|
||||||
public BinaryTree(final Map map)
|
|
||||||
throws ClassCastException, NullPointerException,
|
throws ClassCastException, NullPointerException,
|
||||||
IllegalArgumentException
|
IllegalArgumentException
|
||||||
{
|
{
|
||||||
|
this();
|
||||||
putAll(map);
|
putAll(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,8 +150,7 @@ public final class BinaryTree // final for performance
|
|||||||
* inappropriate type for this map.
|
* inappropriate type for this map.
|
||||||
* @exception NullPointerException if the value is null
|
* @exception NullPointerException if the value is null
|
||||||
*/
|
*/
|
||||||
|
public Object getKeyForValue(Object value)
|
||||||
public Object getKeyForValue(final Object value)
|
|
||||||
throws ClassCastException, NullPointerException
|
throws ClassCastException, NullPointerException
|
||||||
{
|
{
|
||||||
return doGet(( Comparable ) value, _VALUE);
|
return doGet(( Comparable ) value, _VALUE);
|
||||||
@ -182,8 +164,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return previous key associated with specified value, or null
|
* @return previous key associated with specified value, or null
|
||||||
* if there was no mapping for value.
|
* if there was no mapping for value.
|
||||||
*/
|
*/
|
||||||
|
public Object removeValue(Object value)
|
||||||
public Object removeValue(final Object value)
|
|
||||||
{
|
{
|
||||||
return doRemove(( Comparable ) value, _VALUE);
|
return doRemove(( Comparable ) value, _VALUE);
|
||||||
}
|
}
|
||||||
@ -207,7 +188,6 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return a set view of the mappings contained in this map.
|
* @return a set view of the mappings contained in this map.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Set entrySetByValue()
|
public Set entrySetByValue()
|
||||||
{
|
{
|
||||||
if (_entry_set[ _VALUE ] == null)
|
if (_entry_set[ _VALUE ] == null)
|
||||||
@ -423,8 +403,7 @@ public final class BinaryTree // final for performance
|
|||||||
* key. null if the specified key or value could not be
|
* key. null if the specified key or value could not be
|
||||||
* found
|
* found
|
||||||
*/
|
*/
|
||||||
|
private Object doRemove(Comparable o, int index)
|
||||||
private Object doRemove(final Comparable o, final int index)
|
|
||||||
{
|
{
|
||||||
Node node = lookup(o, index);
|
Node node = lookup(o, index);
|
||||||
Object rval = null;
|
Object rval = null;
|
||||||
@ -447,8 +426,7 @@ public final class BinaryTree // final for performance
|
|||||||
* key was mapped); null if we couldn't find the specified
|
* key was mapped); null if we couldn't find the specified
|
||||||
* object
|
* object
|
||||||
*/
|
*/
|
||||||
|
private Object doGet(Comparable o, int index)
|
||||||
private Object doGet(final Comparable o, final int index)
|
|
||||||
{
|
{
|
||||||
checkNonNullComparable(o, index);
|
checkNonNullComparable(o, index);
|
||||||
Node node = lookup(o, index);
|
Node node = lookup(o, index);
|
||||||
@ -464,8 +442,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return _VALUE (if _KEY was specified), else _KEY
|
* @return _VALUE (if _KEY was specified), else _KEY
|
||||||
*/
|
*/
|
||||||
|
private int oppositeIndex(int index)
|
||||||
private int oppositeIndex(final int index)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
// old trick ... to find the opposite of a value, m or n,
|
// old trick ... to find the opposite of a value, m or n,
|
||||||
@ -483,8 +460,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return the desired Node, or null if there is no mapping of the
|
* @return the desired Node, or null if there is no mapping of the
|
||||||
* specified data
|
* specified data
|
||||||
*/
|
*/
|
||||||
|
public Node lookup(Comparable data, int index)
|
||||||
private Node lookup(final Comparable data, final int index)
|
|
||||||
{
|
{
|
||||||
Node rval = null;
|
Node rval = null;
|
||||||
Node node = _root[ index ];
|
Node node = _root[ index ];
|
||||||
@ -498,12 +474,9 @@ public final class BinaryTree // final for performance
|
|||||||
rval = node;
|
rval = node;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
node = (cmp < 0) ? node.getLeft(index)
|
node = (cmp < 0) ? node.getLeft(index)
|
||||||
: node.getRight(index);
|
: node.getRight(index);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,10 +489,9 @@ public final class BinaryTree // final for performance
|
|||||||
* @return negative value if o1 < o2; 0 if o1 == o2; positive
|
* @return negative value if o1 < o2; 0 if o1 == o2; positive
|
||||||
* value if o1 > o2
|
* value if o1 > o2
|
||||||
*/
|
*/
|
||||||
|
private static int compare(Comparable o1, Comparable o2)
|
||||||
private static int compare(final Comparable o1, final Comparable o2)
|
|
||||||
{
|
{
|
||||||
return (( Comparable ) o1).compareTo(o2);
|
return o1.compareTo(o2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -532,8 +504,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return the smallest node, from the specified node, in the
|
* @return the smallest node, from the specified node, in the
|
||||||
* specified mapping
|
* specified mapping
|
||||||
*/
|
*/
|
||||||
|
static Node leastNode(Node node, int index)
|
||||||
private static Node leastNode(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
Node rval = node;
|
Node rval = node;
|
||||||
|
|
||||||
@ -555,8 +526,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return the specified node
|
* @return the specified node
|
||||||
*/
|
*/
|
||||||
|
static Node nextGreater(Node node, int index)
|
||||||
private Node nextGreater(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
Node rval = null;
|
Node rval = null;
|
||||||
|
|
||||||
@ -601,9 +571,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param to the node whose color we're changing; may be null
|
* @param to the node whose color we're changing; may be null
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static void copyColor(Node from, Node to, int index)
|
||||||
private static void copyColor(final Node from, final Node to,
|
|
||||||
final int index)
|
|
||||||
{
|
{
|
||||||
if (to != null)
|
if (to != null)
|
||||||
{
|
{
|
||||||
@ -627,11 +595,9 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static boolean isRed(Node node, int index)
|
||||||
private static boolean isRed(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return ((node == null) ? false
|
return node == null ? false : node.isRed(index);
|
||||||
: node.isRed(index));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -641,11 +607,9 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static boolean isBlack(Node node, int index)
|
||||||
private static boolean isBlack(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return ((node == null) ? true
|
return node == null ? true : node.isBlack(index);
|
||||||
: node.isBlack(index));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -654,8 +618,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static void makeRed(Node node, int index)
|
||||||
private static void makeRed(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
if (node != null)
|
if (node != null)
|
||||||
{
|
{
|
||||||
@ -669,8 +632,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static void makeBlack(Node node, int index)
|
||||||
private static void makeBlack(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
if (node != null)
|
if (node != null)
|
||||||
{
|
{
|
||||||
@ -685,8 +647,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static Node getGrandParent(Node node, int index)
|
||||||
private static Node getGrandParent(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return getParent(getParent(node, index), index);
|
return getParent(getParent(node, index), index);
|
||||||
}
|
}
|
||||||
@ -698,8 +659,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static Node getParent(Node node, int index)
|
||||||
private static Node getParent(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return ((node == null) ? null
|
return ((node == null) ? null
|
||||||
: node.getParent(index));
|
: node.getParent(index));
|
||||||
@ -712,8 +672,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static Node getRightChild(Node node, int index)
|
||||||
private static Node getRightChild(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return (node == null) ? null
|
return (node == null) ? null
|
||||||
: node.getRight(index);
|
: node.getRight(index);
|
||||||
@ -726,8 +685,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static Node getLeftChild(Node node, int index)
|
||||||
private static Node getLeftChild(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return (node == null) ? null
|
return (node == null) ? null
|
||||||
: node.getLeft(index);
|
: node.getLeft(index);
|
||||||
@ -744,15 +702,14 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static boolean isLeftChild(Node node, int index) {
|
||||||
private static boolean isLeftChild(final Node node, final int index)
|
if (node == null) {
|
||||||
{
|
return true;
|
||||||
return (node == null) ? true
|
}
|
||||||
: ((node.getParent(index) == null) ? false
|
if (node.getParent(index) == null) {
|
||||||
: (node
|
return false;
|
||||||
== node.getParent(
|
}
|
||||||
index).getLeft(
|
return node == node.getParent(index).getLeft(index);
|
||||||
index)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -766,15 +723,15 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node (may be null) in question
|
* @param node the node (may be null) in question
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private static boolean isRightChild(Node node, int index)
|
||||||
private static boolean isRightChild(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
return (node == null) ? true
|
if (node == null) {
|
||||||
: ((node.getParent(index) == null) ? false
|
return true;
|
||||||
: (node
|
}
|
||||||
== node.getParent(
|
if (node.getParent(index) == null) {
|
||||||
index).getRight(
|
return false;
|
||||||
index)));
|
}
|
||||||
|
return node == node.getParent(index).getRight(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -783,8 +740,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node to be rotated
|
* @param node the node to be rotated
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private void rotateLeft(Node node, int index)
|
||||||
private void rotateLeft(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
Node right_child = node.getRight(index);
|
Node right_child = node.getRight(index);
|
||||||
|
|
||||||
@ -818,8 +774,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node to be rotated
|
* @param node the node to be rotated
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private void rotateRight(Node node, int index)
|
||||||
private void rotateRight(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
Node left_child = node.getLeft(index);
|
Node left_child = node.getLeft(index);
|
||||||
|
|
||||||
@ -854,8 +809,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param inserted_node the node to be inserted
|
* @param inserted_node the node to be inserted
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private void doRedBlackInsert(Node inserted_node, int index)
|
||||||
private void doRedBlackInsert(final Node inserted_node, final int index)
|
|
||||||
{
|
{
|
||||||
Node current_node = inserted_node;
|
Node current_node = inserted_node;
|
||||||
|
|
||||||
@ -931,8 +885,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @param deleted_node the node to be deleted
|
* @param deleted_node the node to be deleted
|
||||||
*/
|
*/
|
||||||
|
void doRedBlackDelete(Node deleted_node)
|
||||||
private void doRedBlackDelete(final Node deleted_node)
|
|
||||||
{
|
{
|
||||||
for (int index = _MINIMUM_INDEX; index < _INDEX_COUNT; index++)
|
for (int index = _MINIMUM_INDEX; index < _INDEX_COUNT; index++)
|
||||||
{
|
{
|
||||||
@ -1023,9 +976,8 @@ public final class BinaryTree // final for performance
|
|||||||
* @param replacement_node the node being replaced
|
* @param replacement_node the node being replaced
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private void doRedBlackDeleteFixup(Node replacement_node,
|
||||||
private void doRedBlackDeleteFixup(final Node replacement_node,
|
int index)
|
||||||
final int index)
|
|
||||||
{
|
{
|
||||||
Node current_node = replacement_node;
|
Node current_node = replacement_node;
|
||||||
|
|
||||||
@ -1121,8 +1073,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param y another node
|
* @param y another node
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
private void swapPosition(Node x, Node y, int index)
|
||||||
private void swapPosition(final Node x, final Node y, final int index)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
// Save initial values.
|
// Save initial values.
|
||||||
@ -1244,9 +1195,8 @@ public final class BinaryTree // final for performance
|
|||||||
* @exception NullPointerException if o is null
|
* @exception NullPointerException if o is null
|
||||||
* @exception ClassCastException if o is not Comparable
|
* @exception ClassCastException if o is not Comparable
|
||||||
*/
|
*/
|
||||||
|
private static void checkNonNullComparable(Object o,
|
||||||
private static void checkNonNullComparable(final Object o,
|
int index)
|
||||||
final int index)
|
|
||||||
{
|
{
|
||||||
if (o == null)
|
if (o == null)
|
||||||
{
|
{
|
||||||
@ -1268,8 +1218,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @exception NullPointerException if key is null
|
* @exception NullPointerException if key is null
|
||||||
* @exception ClassCastException if key is not Comparable
|
* @exception ClassCastException if key is not Comparable
|
||||||
*/
|
*/
|
||||||
|
private static void checkKey(Object key)
|
||||||
private static void checkKey(final Object key)
|
|
||||||
{
|
{
|
||||||
checkNonNullComparable(key, _KEY);
|
checkNonNullComparable(key, _KEY);
|
||||||
}
|
}
|
||||||
@ -1282,8 +1231,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @exception NullPointerException if value is null
|
* @exception NullPointerException if value is null
|
||||||
* @exception ClassCastException if value is not Comparable
|
* @exception ClassCastException if value is not Comparable
|
||||||
*/
|
*/
|
||||||
|
private static void checkValue(Object value)
|
||||||
private static void checkValue(final Object value)
|
|
||||||
{
|
{
|
||||||
checkNonNullComparable(value, _VALUE);
|
checkNonNullComparable(value, _VALUE);
|
||||||
}
|
}
|
||||||
@ -1298,8 +1246,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @exception NullPointerException if key or value is null
|
* @exception NullPointerException if key or value is null
|
||||||
* @exception ClassCastException if key or value is not Comparable
|
* @exception ClassCastException if key or value is not Comparable
|
||||||
*/
|
*/
|
||||||
|
private static void checkKeyAndValue(Object key, Object value)
|
||||||
private static void checkKeyAndValue(final Object key, final Object value)
|
|
||||||
{
|
{
|
||||||
checkKey(key);
|
checkKey(key);
|
||||||
checkValue(value);
|
checkValue(value);
|
||||||
@ -1310,7 +1257,6 @@ public final class BinaryTree // final for performance
|
|||||||
* concurrent modification of the map through the map and through
|
* concurrent modification of the map through the map and through
|
||||||
* an Iterator from one of its Set or Collection views
|
* an Iterator from one of its Set or Collection views
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private void modify()
|
private void modify()
|
||||||
{
|
{
|
||||||
_modifications++;
|
_modifications++;
|
||||||
@ -1319,7 +1265,6 @@ public final class BinaryTree // final for performance
|
|||||||
/**
|
/**
|
||||||
* bump up the size and note that the map has changed
|
* bump up the size and note that the map has changed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private void grow()
|
private void grow()
|
||||||
{
|
{
|
||||||
modify();
|
modify();
|
||||||
@ -1329,7 +1274,6 @@ public final class BinaryTree // final for performance
|
|||||||
/**
|
/**
|
||||||
* decrement the size and note that the map has changed
|
* decrement the size and note that the map has changed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private void shrink()
|
private void shrink()
|
||||||
{
|
{
|
||||||
modify();
|
modify();
|
||||||
@ -1344,8 +1288,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @exception IllegalArgumentException if the node already exists
|
* @exception IllegalArgumentException if the node already exists
|
||||||
* in the value mapping
|
* in the value mapping
|
||||||
*/
|
*/
|
||||||
|
private void insertValue(Node newNode)
|
||||||
private void insertValue(final Node newNode)
|
|
||||||
throws IllegalArgumentException
|
throws IllegalArgumentException
|
||||||
{
|
{
|
||||||
Node node = _root[ _VALUE ];
|
Node node = _root[ _VALUE ];
|
||||||
@ -1400,7 +1343,6 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return the number of key-value mappings in this map.
|
* @return the number of key-value mappings in this map.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int size()
|
public int size()
|
||||||
{
|
{
|
||||||
return _size;
|
return _size;
|
||||||
@ -1419,8 +1361,7 @@ public final class BinaryTree // final for performance
|
|||||||
* type for this map.
|
* type for this map.
|
||||||
* @exception NullPointerException if the key is null
|
* @exception NullPointerException if the key is null
|
||||||
*/
|
*/
|
||||||
|
public boolean containsKey(Object key)
|
||||||
public boolean containsKey(final Object key)
|
|
||||||
throws ClassCastException, NullPointerException
|
throws ClassCastException, NullPointerException
|
||||||
{
|
{
|
||||||
checkKey(key);
|
checkKey(key);
|
||||||
@ -1436,8 +1377,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return true if this map maps one or more keys to the specified
|
* @return true if this map maps one or more keys to the specified
|
||||||
* value.
|
* value.
|
||||||
*/
|
*/
|
||||||
|
public boolean containsValue(Object value)
|
||||||
public boolean containsValue(final Object value)
|
|
||||||
{
|
{
|
||||||
checkValue(value);
|
checkValue(value);
|
||||||
return lookup(( Comparable ) value, _VALUE) != null;
|
return lookup(( Comparable ) value, _VALUE) != null;
|
||||||
@ -1456,8 +1396,7 @@ public final class BinaryTree // final for performance
|
|||||||
* type for this map.
|
* type for this map.
|
||||||
* @exception NullPointerException if the key is null
|
* @exception NullPointerException if the key is null
|
||||||
*/
|
*/
|
||||||
|
public Object get(Object key)
|
||||||
public Object get(final Object key)
|
|
||||||
throws ClassCastException, NullPointerException
|
throws ClassCastException, NullPointerException
|
||||||
{
|
{
|
||||||
return doGet(( Comparable ) key, _KEY);
|
return doGet(( Comparable ) key, _KEY);
|
||||||
@ -1483,8 +1422,7 @@ public final class BinaryTree // final for performance
|
|||||||
* value duplicates an
|
* value duplicates an
|
||||||
* existing value
|
* existing value
|
||||||
*/
|
*/
|
||||||
|
public Object put(Object key, Object value)
|
||||||
public Object put(final Object key, final Object value)
|
|
||||||
throws ClassCastException, NullPointerException,
|
throws ClassCastException, NullPointerException,
|
||||||
IllegalArgumentException
|
IllegalArgumentException
|
||||||
{
|
{
|
||||||
@ -1562,8 +1500,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return previous value associated with specified key, or null
|
* @return previous value associated with specified key, or null
|
||||||
* if there was no mapping for key.
|
* if there was no mapping for key.
|
||||||
*/
|
*/
|
||||||
|
public Object remove(Object key)
|
||||||
public Object remove(final Object key)
|
|
||||||
{
|
{
|
||||||
return doRemove(( Comparable ) key, _KEY);
|
return doRemove(( Comparable ) key, _KEY);
|
||||||
}
|
}
|
||||||
@ -1571,7 +1508,6 @@ public final class BinaryTree // final for performance
|
|||||||
/**
|
/**
|
||||||
* Removes all mappings from this map
|
* Removes all mappings from this map
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void clear()
|
public void clear()
|
||||||
{
|
{
|
||||||
modify();
|
modify();
|
||||||
@ -1592,7 +1528,6 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return a set view of the keys contained in this map.
|
* @return a set view of the keys contained in this map.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Set keySet()
|
public Set keySet()
|
||||||
{
|
{
|
||||||
if (_key_set[ _KEY ] == null)
|
if (_key_set[ _KEY ] == null)
|
||||||
@ -1650,7 +1585,6 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return a collection view of the values contained in this map.
|
* @return a collection view of the values contained in this map.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Collection values()
|
public Collection values()
|
||||||
{
|
{
|
||||||
if (_value_collection[ _KEY ] == null)
|
if (_value_collection[ _KEY ] == null)
|
||||||
@ -1723,7 +1657,6 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return a set view of the mappings contained in this map.
|
* @return a set view of the mappings contained in this map.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Set entrySet()
|
public Set entrySet()
|
||||||
{
|
{
|
||||||
if (_entry_set[ _KEY ] == null)
|
if (_entry_set[ _KEY ] == null)
|
||||||
@ -1803,8 +1736,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @param type
|
* @param type
|
||||||
*/
|
*/
|
||||||
|
BinaryTreeIterator(int type)
|
||||||
BinaryTreeIterator(final int type)
|
|
||||||
{
|
{
|
||||||
_type = type;
|
_type = type;
|
||||||
_expected_modifications = BinaryTree.this._modifications;
|
_expected_modifications = BinaryTree.this._modifications;
|
||||||
@ -1825,7 +1757,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return true if the iterator has more elements.
|
* @return true if the iterator has more elements.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public final boolean hasNext()
|
public boolean hasNext()
|
||||||
{
|
{
|
||||||
return _next_node != null;
|
return _next_node != null;
|
||||||
}
|
}
|
||||||
@ -1842,7 +1774,7 @@ public final class BinaryTree // final for performance
|
|||||||
* back
|
* back
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public final Object next()
|
public Object next()
|
||||||
throws NoSuchElementException, ConcurrentModificationException
|
throws NoSuchElementException, ConcurrentModificationException
|
||||||
{
|
{
|
||||||
if (_next_node == null)
|
if (_next_node == null)
|
||||||
@ -1878,7 +1810,7 @@ public final class BinaryTree // final for performance
|
|||||||
* back
|
* back
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public final void remove()
|
public void remove()
|
||||||
throws IllegalStateException, ConcurrentModificationException
|
throws IllegalStateException, ConcurrentModificationException
|
||||||
{
|
{
|
||||||
if (_last_returned_node == null)
|
if (_last_returned_node == null)
|
||||||
@ -1897,7 +1829,7 @@ public final class BinaryTree // final for performance
|
|||||||
/* ********** END implementation of Iterator ********** */
|
/* ********** END implementation of Iterator ********** */
|
||||||
} // end private abstract class BinaryTreeIterator
|
} // end private abstract class BinaryTreeIterator
|
||||||
|
|
||||||
// final for performance
|
// for performance
|
||||||
private static final class Node
|
private static final class Node
|
||||||
implements Map.Entry
|
implements Map.Entry
|
||||||
{
|
{
|
||||||
@ -1917,7 +1849,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param value
|
* @param value
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Node(final Comparable key, final Comparable value)
|
Node(Comparable key, Comparable value)
|
||||||
{
|
{
|
||||||
_data = new Comparable[]
|
_data = new Comparable[]
|
||||||
{
|
{
|
||||||
@ -1949,8 +1881,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return the key or value
|
* @return the key or value
|
||||||
*/
|
*/
|
||||||
|
public Comparable getData(int index)
|
||||||
private Comparable getData(final int index)
|
|
||||||
{
|
{
|
||||||
return _data[ index ];
|
return _data[ index ];
|
||||||
}
|
}
|
||||||
@ -1961,8 +1892,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the new left node
|
* @param node the new left node
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void setLeft(Node node, int index)
|
||||||
private void setLeft(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
_left[ index ] = node;
|
_left[ index ] = node;
|
||||||
}
|
}
|
||||||
@ -1975,7 +1905,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return the left node -- may be null
|
* @return the left node -- may be null
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private Node getLeft(final int index)
|
public Node getLeft(int index)
|
||||||
{
|
{
|
||||||
return _left[ index ];
|
return _left[ index ];
|
||||||
}
|
}
|
||||||
@ -1986,8 +1916,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the new right node
|
* @param node the new right node
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void setRight(Node node, int index)
|
||||||
private void setRight(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
_right[ index ] = node;
|
_right[ index ] = node;
|
||||||
}
|
}
|
||||||
@ -2000,7 +1929,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @return the right node -- may be null
|
* @return the right node -- may be null
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private Node getRight(final int index)
|
public Node getRight(int index)
|
||||||
{
|
{
|
||||||
return _right[ index ];
|
return _right[ index ];
|
||||||
}
|
}
|
||||||
@ -2011,8 +1940,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the new parent node
|
* @param node the new parent node
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void setParent(Node node, int index)
|
||||||
private void setParent(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
_parent[ index ] = node;
|
_parent[ index ] = node;
|
||||||
}
|
}
|
||||||
@ -2024,8 +1952,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return the parent node -- may be null
|
* @return the parent node -- may be null
|
||||||
*/
|
*/
|
||||||
|
public Node getParent(int index)
|
||||||
private Node getParent(final int index)
|
|
||||||
{
|
{
|
||||||
return _parent[ index ];
|
return _parent[ index ];
|
||||||
}
|
}
|
||||||
@ -2036,8 +1963,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node to swap with
|
* @param node the node to swap with
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void swapColors(Node node, int index)
|
||||||
private void swapColors(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
// Swap colors -- old hacker's trick
|
// Swap colors -- old hacker's trick
|
||||||
@ -2053,8 +1979,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return true if black (which is represented as a true boolean)
|
* @return true if black (which is represented as a true boolean)
|
||||||
*/
|
*/
|
||||||
|
public boolean isBlack(int index)
|
||||||
private boolean isBlack(final int index)
|
|
||||||
{
|
{
|
||||||
return _black[ index ];
|
return _black[ index ];
|
||||||
}
|
}
|
||||||
@ -2066,8 +1991,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @return true if non-black
|
* @return true if non-black
|
||||||
*/
|
*/
|
||||||
|
public boolean isRed(int index)
|
||||||
private boolean isRed(final int index)
|
|
||||||
{
|
{
|
||||||
return !_black[ index ];
|
return !_black[ index ];
|
||||||
}
|
}
|
||||||
@ -2077,8 +2001,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void setBlack(int index)
|
||||||
private void setBlack(final int index)
|
|
||||||
{
|
{
|
||||||
_black[ index ] = true;
|
_black[ index ] = true;
|
||||||
}
|
}
|
||||||
@ -2088,8 +2011,7 @@ public final class BinaryTree // final for performance
|
|||||||
*
|
*
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void setRed(int index)
|
||||||
private void setRed(final int index)
|
|
||||||
{
|
{
|
||||||
_black[ index ] = false;
|
_black[ index ] = false;
|
||||||
}
|
}
|
||||||
@ -2100,8 +2022,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param node the node whose color we're adopting
|
* @param node the node whose color we're adopting
|
||||||
* @param index _KEY or _VALUE
|
* @param index _KEY or _VALUE
|
||||||
*/
|
*/
|
||||||
|
public void copyColor(Node node, int index)
|
||||||
private void copyColor(final Node node, final int index)
|
|
||||||
{
|
{
|
||||||
_black[ index ] = node._black[ index ];
|
_black[ index ] = node._black[ index ];
|
||||||
}
|
}
|
||||||
@ -2111,7 +2032,6 @@ public final class BinaryTree // final for performance
|
|||||||
/**
|
/**
|
||||||
* @return the key corresponding to this entry.
|
* @return the key corresponding to this entry.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Object getKey()
|
public Object getKey()
|
||||||
{
|
{
|
||||||
return _data[ _KEY ];
|
return _data[ _KEY ];
|
||||||
@ -2120,7 +2040,6 @@ public final class BinaryTree // final for performance
|
|||||||
/**
|
/**
|
||||||
* @return the value corresponding to this entry.
|
* @return the value corresponding to this entry.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Object getValue()
|
public Object getValue()
|
||||||
{
|
{
|
||||||
return _data[ _VALUE ];
|
return _data[ _VALUE ];
|
||||||
@ -2133,10 +2052,7 @@ public final class BinaryTree // final for performance
|
|||||||
* @param ignored
|
* @param ignored
|
||||||
*
|
*
|
||||||
* @return does not return
|
* @return does not return
|
||||||
*
|
|
||||||
* @exception UnsupportedOperationException
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Object setValue(Object ignored)
|
public Object setValue(Object ignored)
|
||||||
throws UnsupportedOperationException
|
throws UnsupportedOperationException
|
||||||
{
|
{
|
||||||
@ -2154,7 +2070,6 @@ public final class BinaryTree // final for performance
|
|||||||
* @return true if the specified object is equal to this map
|
* @return true if the specified object is equal to this map
|
||||||
* entry.
|
* entry.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
if (this == o)
|
if (this == o)
|
||||||
@ -2188,5 +2103,4 @@ public final class BinaryTree // final for performance
|
|||||||
|
|
||||||
/* ********** END implementation of Map.Entry ********** */
|
/* ********** END implementation of Map.Entry ********** */
|
||||||
}
|
}
|
||||||
} // end public class BinaryTree
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
contributor license agreements. See the NOTICE file distributed with
|
contributor license agreements. See the NOTICE file distributed with
|
||||||
@ -16,7 +15,6 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
==================================================================== */
|
==================================================================== */
|
||||||
|
|
||||||
|
|
||||||
package org.apache.poi.util;
|
package org.apache.poi.util;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -31,25 +29,23 @@ import java.util.*;
|
|||||||
* @author Glen Stampoultzis (glens at apache.org)
|
* @author Glen Stampoultzis (glens at apache.org)
|
||||||
* @author Nicola Ken Barozzi (nicolaken at apache.org)
|
* @author Nicola Ken Barozzi (nicolaken at apache.org)
|
||||||
*/
|
*/
|
||||||
|
public abstract class POILogger {
|
||||||
|
|
||||||
public abstract class POILogger
|
public static int DEBUG = 1;
|
||||||
{
|
public static int INFO = 3;
|
||||||
|
public static int WARN = 5;
|
||||||
public static final int DEBUG = 1;
|
public static int ERROR = 7;
|
||||||
public static final int INFO = 3;
|
public static int FATAL = 9;
|
||||||
public static final int WARN = 5;
|
|
||||||
public static final int ERROR = 7;
|
|
||||||
public static final int FATAL = 9;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* package scope so it cannot be instantiated outside of the util
|
* package scope so it cannot be instantiated outside of the util
|
||||||
* package. You need a POILogger? Go to the POILogFactory for one
|
* package. You need a POILogger? Go to the POILogFactory for one
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
POILogger()
|
POILogger() {
|
||||||
{}
|
// no fields to initialise
|
||||||
|
}
|
||||||
|
|
||||||
abstract public void initialize(final String cat);
|
abstract public void initialize(String cat);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log a message
|
* Log a message
|
||||||
@ -57,7 +53,7 @@ public abstract class POILogger
|
|||||||
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
* @param obj1 The object to log. This is converted to a string.
|
* @param obj1 The object to log. This is converted to a string.
|
||||||
*/
|
*/
|
||||||
abstract public void log(final int level, final Object obj1);
|
abstract public void log(int level, Object obj1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log a message
|
* Log a message
|
||||||
@ -66,7 +62,7 @@ public abstract class POILogger
|
|||||||
* @param obj1 The object to log. This is converted to a string.
|
* @param obj1 The object to log. This is converted to a string.
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
abstract public void log(final int level, final Object obj1,
|
abstract public void log(int level, Object obj1,
|
||||||
final Throwable exception);
|
final Throwable exception);
|
||||||
|
|
||||||
|
|
||||||
@ -75,7 +71,7 @@ public abstract class POILogger
|
|||||||
*
|
*
|
||||||
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
*/
|
*/
|
||||||
abstract public boolean check(final int level);
|
abstract public boolean check(int level);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log a message. Lazily appends Object parameters together.
|
* Log a message. Lazily appends Object parameters together.
|
||||||
@ -84,16 +80,7 @@ public abstract class POILogger
|
|||||||
* @param obj1 first object to place in the message
|
* @param obj1 first object to place in the message
|
||||||
* @param obj2 second object to place in the message
|
* @param obj2 second object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2)
|
||||||
/**
|
|
||||||
* Log a message. Lazily appends Object parameters together.
|
|
||||||
*
|
|
||||||
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
|
||||||
* @param obj1 first object to place in the message
|
|
||||||
* @param obj2 second object to place in the message
|
|
||||||
*/
|
|
||||||
|
|
||||||
public void log(final int level, final Object obj1, final Object obj2)
|
|
||||||
{
|
{
|
||||||
if (check(level))
|
if (check(level))
|
||||||
{
|
{
|
||||||
@ -109,9 +96,8 @@ public abstract class POILogger
|
|||||||
* @param obj2 second Object to place in the message
|
* @param obj2 second Object to place in the message
|
||||||
* @param obj3 third Object to place in the message
|
* @param obj3 third Object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3)
|
||||||
final Object obj3)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -132,9 +118,8 @@ public abstract class POILogger
|
|||||||
* @param obj3 third Object to place in the message
|
* @param obj3 third Object to place in the message
|
||||||
* @param obj4 fourth Object to place in the message
|
* @param obj4 fourth Object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4)
|
||||||
final Object obj3, final Object obj4)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -156,9 +141,8 @@ public abstract class POILogger
|
|||||||
* @param obj4 fourth Object to place in the message
|
* @param obj4 fourth Object to place in the message
|
||||||
* @param obj5 fifth Object to place in the message
|
* @param obj5 fifth Object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5)
|
||||||
final Object obj3, final Object obj4, final Object obj5)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -181,10 +165,9 @@ public abstract class POILogger
|
|||||||
* @param obj5 fifth Object to place in the message
|
* @param obj5 fifth Object to place in the message
|
||||||
* @param obj6 sixth Object to place in the message
|
* @param obj6 sixth Object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
Object obj6)
|
||||||
final Object obj6)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -208,10 +191,9 @@ public abstract class POILogger
|
|||||||
* @param obj6 sixth Object to place in the message
|
* @param obj6 sixth Object to place in the message
|
||||||
* @param obj7 seventh Object to place in the message
|
* @param obj7 seventh Object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
Object obj6, Object obj7)
|
||||||
final Object obj6, final Object obj7)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -237,10 +219,9 @@ public abstract class POILogger
|
|||||||
* @param obj7 seventh Object to place in the message
|
* @param obj7 seventh Object to place in the message
|
||||||
* @param obj8 eighth Object to place in the message
|
* @param obj8 eighth Object to place in the message
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
Object obj6, Object obj7, Object obj8)
|
||||||
final Object obj6, final Object obj7, final Object obj8)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -259,8 +240,7 @@ public abstract class POILogger
|
|||||||
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, final Throwable exception)
|
||||||
public void log(final int level, final Throwable exception)
|
|
||||||
{
|
{
|
||||||
log(level, null, exception);
|
log(level, null, exception);
|
||||||
}
|
}
|
||||||
@ -273,8 +253,7 @@ public abstract class POILogger
|
|||||||
* @param obj2 second Object to place in the message
|
* @param obj2 second Object to place in the message
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
|
||||||
final Throwable exception)
|
final Throwable exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -295,9 +274,8 @@ public abstract class POILogger
|
|||||||
* @param obj3 third object to place in the message
|
* @param obj3 third object to place in the message
|
||||||
* @param exception An error message to be logged
|
* @param exception An error message to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, final Throwable exception)
|
||||||
final Object obj3, final Throwable exception)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -318,9 +296,8 @@ public abstract class POILogger
|
|||||||
* @param obj4 fourth object to place in the message
|
* @param obj4 fourth object to place in the message
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4,
|
||||||
final Object obj3, final Object obj4,
|
|
||||||
final Throwable exception)
|
final Throwable exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -343,9 +320,8 @@ public abstract class POILogger
|
|||||||
* @param obj5 fifth object to place in the message
|
* @param obj5 fifth object to place in the message
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
|
||||||
final Throwable exception)
|
final Throwable exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -369,10 +345,9 @@ public abstract class POILogger
|
|||||||
* @param obj6 sixth object to place in the message
|
* @param obj6 sixth object to place in the message
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
Object obj6, final Throwable exception)
|
||||||
final Object obj6, final Throwable exception)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -397,10 +372,9 @@ public abstract class POILogger
|
|||||||
* @param obj7 seventh object to place in the message
|
* @param obj7 seventh object to place in the message
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
Object obj6, Object obj7,
|
||||||
final Object obj6, final Object obj7,
|
|
||||||
final Throwable exception)
|
final Throwable exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -427,10 +401,9 @@ public abstract class POILogger
|
|||||||
* @param obj8 eighth object to place in the message
|
* @param obj8 eighth object to place in the message
|
||||||
* @param exception An exception to be logged
|
* @param exception An exception to be logged
|
||||||
*/
|
*/
|
||||||
|
public void log(int level, Object obj1, Object obj2,
|
||||||
public void log(final int level, final Object obj1, final Object obj2,
|
Object obj3, Object obj4, Object obj5,
|
||||||
final Object obj3, final Object obj4, final Object obj5,
|
Object obj6, Object obj7, Object obj8,
|
||||||
final Object obj6, final Object obj7, final Object obj8,
|
|
||||||
final Throwable exception)
|
final Throwable exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -467,9 +440,8 @@ public abstract class POILogger
|
|||||||
* @param message The message to log.
|
* @param message The message to log.
|
||||||
* @param obj1 The first object to match against.
|
* @param obj1 The first object to match against.
|
||||||
*/
|
*/
|
||||||
|
public void logFormatted(int level, String message,
|
||||||
public void logFormatted(final int level, final String message,
|
Object obj1)
|
||||||
final Object obj1)
|
|
||||||
{
|
{
|
||||||
commonLogFormatted(level, message, new Object[]
|
commonLogFormatted(level, message, new Object[]
|
||||||
{
|
{
|
||||||
@ -502,9 +474,8 @@ public abstract class POILogger
|
|||||||
* @param obj1 The first object to match against.
|
* @param obj1 The first object to match against.
|
||||||
* @param obj2 The second object to match against.
|
* @param obj2 The second object to match against.
|
||||||
*/
|
*/
|
||||||
|
public void logFormatted(int level, String message,
|
||||||
public void logFormatted(final int level, final String message,
|
Object obj1, Object obj2)
|
||||||
final Object obj1, final Object obj2)
|
|
||||||
{
|
{
|
||||||
commonLogFormatted(level, message, new Object[]
|
commonLogFormatted(level, message, new Object[]
|
||||||
{
|
{
|
||||||
@ -538,10 +509,9 @@ public abstract class POILogger
|
|||||||
* @param obj2 The second object to match against.
|
* @param obj2 The second object to match against.
|
||||||
* @param obj3 The third object to match against.
|
* @param obj3 The third object to match against.
|
||||||
*/
|
*/
|
||||||
|
public void logFormatted(int level, String message,
|
||||||
public void logFormatted(final int level, final String message,
|
Object obj1, Object obj2,
|
||||||
final Object obj1, final Object obj2,
|
Object obj3)
|
||||||
final Object obj3)
|
|
||||||
{
|
{
|
||||||
commonLogFormatted(level, message, new Object[]
|
commonLogFormatted(level, message, new Object[]
|
||||||
{
|
{
|
||||||
@ -576,10 +546,9 @@ public abstract class POILogger
|
|||||||
* @param obj3 The third object to match against.
|
* @param obj3 The third object to match against.
|
||||||
* @param obj4 The forth object to match against.
|
* @param obj4 The forth object to match against.
|
||||||
*/
|
*/
|
||||||
|
public void logFormatted(int level, String message,
|
||||||
public void logFormatted(final int level, final String message,
|
Object obj1, Object obj2,
|
||||||
final Object obj1, final Object obj2,
|
Object obj3, Object obj4)
|
||||||
final Object obj3, final Object obj4)
|
|
||||||
{
|
{
|
||||||
commonLogFormatted(level, message, new Object[]
|
commonLogFormatted(level, message, new Object[]
|
||||||
{
|
{
|
||||||
@ -587,8 +556,8 @@ public abstract class POILogger
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void commonLogFormatted(final int level, final String message,
|
private void commonLogFormatted(int level, String message,
|
||||||
final Object [] unflatParams)
|
Object [] unflatParams)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
@ -611,21 +580,20 @@ public abstract class POILogger
|
|||||||
/**
|
/**
|
||||||
* Flattens any contained objects. Only tranverses one level deep.
|
* Flattens any contained objects. Only tranverses one level deep.
|
||||||
*/
|
*/
|
||||||
|
private Object [] flattenArrays(Object [] objects)
|
||||||
private Object [] flattenArrays(final Object [] objects)
|
|
||||||
{
|
{
|
||||||
List results = new ArrayList();
|
List<Object> results = new ArrayList<Object>();
|
||||||
|
|
||||||
for (int i = 0; i < objects.length; i++)
|
for (int i = 0; i < objects.length; i++)
|
||||||
{
|
{
|
||||||
results.addAll(objectToObjectArray(objects[ i ]));
|
results.addAll(objectToObjectArray(objects[ i ]));
|
||||||
}
|
}
|
||||||
return ( Object [] ) results.toArray(new Object[ results.size() ]);
|
return results.toArray(new Object[ results.size() ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List objectToObjectArray(Object object)
|
private List<Object> objectToObjectArray(Object object)
|
||||||
{
|
{
|
||||||
List results = new ArrayList();
|
List<Object> results = new ArrayList<Object>();
|
||||||
|
|
||||||
if (object instanceof byte [])
|
if (object instanceof byte [])
|
||||||
{
|
{
|
||||||
@ -705,6 +673,4 @@ public abstract class POILogger
|
|||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} // end package scope abstract class POILogger
|
|
||||||
|
|
||||||
|
@ -588,10 +588,10 @@ public abstract class OPCPackage implements RelationshipSource {
|
|||||||
PackagePart[] parts = this.getPartsImpl();
|
PackagePart[] parts = this.getPartsImpl();
|
||||||
this.partList = new PackagePartCollection();
|
this.partList = new PackagePartCollection();
|
||||||
for (PackagePart part : parts) {
|
for (PackagePart part : parts) {
|
||||||
if (partList.containsKey(part.partName))
|
if (partList.containsKey(part._partName))
|
||||||
throw new InvalidFormatException(
|
throw new InvalidFormatException(
|
||||||
"A part with the name '"
|
"A part with the name '"
|
||||||
+ part.partName
|
+ part._partName
|
||||||
+ "' already exist : Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]");
|
+ "' already exist : Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]");
|
||||||
|
|
||||||
// Check OPC compliance rule M4.1
|
// Check OPC compliance rule M4.1
|
||||||
@ -605,29 +605,29 @@ public abstract class OPCPackage implements RelationshipSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PartUnmarshaller partUnmarshaller = partUnmarshallers
|
PartUnmarshaller partUnmarshaller = partUnmarshallers
|
||||||
.get(part.contentType);
|
.get(part._contentType);
|
||||||
|
|
||||||
if (partUnmarshaller != null) {
|
if (partUnmarshaller != null) {
|
||||||
UnmarshallContext context = new UnmarshallContext(this,
|
UnmarshallContext context = new UnmarshallContext(this,
|
||||||
part.partName);
|
part._partName);
|
||||||
try {
|
try {
|
||||||
PackagePart unmarshallPart = partUnmarshaller
|
PackagePart unmarshallPart = partUnmarshaller
|
||||||
.unmarshall(context, part.getInputStream());
|
.unmarshall(context, part.getInputStream());
|
||||||
partList.put(unmarshallPart.partName, unmarshallPart);
|
partList.put(unmarshallPart._partName, unmarshallPart);
|
||||||
|
|
||||||
// Core properties case
|
// Core properties case
|
||||||
if (unmarshallPart instanceof PackagePropertiesPart)
|
if (unmarshallPart instanceof PackagePropertiesPart)
|
||||||
this.packageProperties = (PackagePropertiesPart) unmarshallPart;
|
this.packageProperties = (PackagePropertiesPart) unmarshallPart;
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
logger.log(POILogger.WARN, "Unmarshall operation : IOException for "
|
logger.log(POILogger.WARN, "Unmarshall operation : IOException for "
|
||||||
+ part.partName);
|
+ part._partName);
|
||||||
continue;
|
continue;
|
||||||
} catch (InvalidOperationException invoe) {
|
} catch (InvalidOperationException invoe) {
|
||||||
throw new InvalidFormatException(invoe.getMessage());
|
throw new InvalidFormatException(invoe.getMessage());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
partList.put(part.partName, part);
|
partList.put(part._partName, part);
|
||||||
} catch (InvalidOperationException e) {
|
} catch (InvalidOperationException e) {
|
||||||
throw new InvalidFormatException(e.getMessage());
|
throw new InvalidFormatException(e.getMessage());
|
||||||
}
|
}
|
||||||
@ -779,20 +779,20 @@ public abstract class OPCPackage implements RelationshipSource {
|
|||||||
throw new IllegalArgumentException("part");
|
throw new IllegalArgumentException("part");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (partList.containsKey(part.partName)) {
|
if (partList.containsKey(part._partName)) {
|
||||||
if (!partList.get(part.partName).isDeleted()) {
|
if (!partList.get(part._partName).isDeleted()) {
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
"A part with the name '"
|
"A part with the name '"
|
||||||
+ part.partName.getName()
|
+ part._partName.getName()
|
||||||
+ "' already exists : Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]");
|
+ "' already exists : Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]");
|
||||||
}
|
}
|
||||||
// If the specified partis flagged as deleted, we make it
|
// If the specified partis flagged as deleted, we make it
|
||||||
// available
|
// available
|
||||||
part.setDeleted(false);
|
part.setDeleted(false);
|
||||||
// and delete the old part to replace it thereafeter
|
// and delete the old part to replace it thereafeter
|
||||||
this.partList.remove(part.partName);
|
this.partList.remove(part._partName);
|
||||||
}
|
}
|
||||||
this.partList.put(part.partName, part);
|
this.partList.put(part._partName, part);
|
||||||
this.isDirty = true;
|
this.isDirty = true;
|
||||||
return part;
|
return part;
|
||||||
}
|
}
|
||||||
@ -893,11 +893,11 @@ public abstract class OPCPackage implements RelationshipSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finally delete its relationship part if one exists
|
// Finally delete its relationship part if one exists
|
||||||
this.removePart(relPart.partName);
|
this.removePart(relPart._partName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete the specified part
|
// Delete the specified part
|
||||||
this.removePart(partToRemove.partName);
|
this.removePart(partToRemove._partName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -39,32 +39,32 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
/**
|
/**
|
||||||
* This part's container.
|
* This part's container.
|
||||||
*/
|
*/
|
||||||
protected OPCPackage container;
|
protected OPCPackage _container;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The part name. (required by the specification [M1.1])
|
* The part name. (required by the specification [M1.1])
|
||||||
*/
|
*/
|
||||||
protected PackagePartName partName;
|
protected PackagePartName _partName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of content of this part. (required by the specification [M1.2])
|
* The type of content of this part. (required by the specification [M1.2])
|
||||||
*/
|
*/
|
||||||
protected ContentType contentType;
|
protected ContentType _contentType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag to know if this part is a relationship.
|
* Flag to know if this part is a relationship.
|
||||||
*/
|
*/
|
||||||
private boolean isRelationshipPart;
|
private boolean _isRelationshipPart;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag to know if this part has been logically deleted.
|
* Flag to know if this part has been logically deleted.
|
||||||
*/
|
*/
|
||||||
private boolean isDeleted;
|
private boolean _isDeleted;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This part's relationships.
|
* This part's relationships.
|
||||||
*/
|
*/
|
||||||
private PackageRelationshipCollection relationships;
|
private PackageRelationshipCollection _relationships;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
@ -100,12 +100,12 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
protected PackagePart(OPCPackage pack, PackagePartName partName,
|
protected PackagePart(OPCPackage pack, PackagePartName partName,
|
||||||
ContentType contentType, boolean loadRelationships)
|
ContentType contentType, boolean loadRelationships)
|
||||||
throws InvalidFormatException {
|
throws InvalidFormatException {
|
||||||
this.partName = partName;
|
_partName = partName;
|
||||||
this.contentType = contentType;
|
_contentType = contentType;
|
||||||
this.container = (ZipPackage) pack; // TODO - enforcing ZipPackage here - perhaps should change constructor signature
|
_container = pack;
|
||||||
|
|
||||||
// Check if this part is a relationship part
|
// Check if this part is a relationship part
|
||||||
isRelationshipPart = this.partName.isRelationshipPartURI();
|
_isRelationshipPart = this._partName.isRelationshipPartURI();
|
||||||
|
|
||||||
// Load relationships if any
|
// Load relationships if any
|
||||||
if (loadRelationships)
|
if (loadRelationships)
|
||||||
@ -174,8 +174,8 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
throw new IllegalArgumentException("relationshipType");
|
throw new IllegalArgumentException("relationshipType");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relationships == null) {
|
if (_relationships == null) {
|
||||||
relationships = new PackageRelationshipCollection();
|
_relationships = new PackageRelationshipCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
URI targetURI;
|
URI targetURI;
|
||||||
@ -185,7 +185,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
throw new IllegalArgumentException("Invalid target - " + e);
|
throw new IllegalArgumentException("Invalid target - " + e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return relationships.addRelationship(targetURI, TargetMode.EXTERNAL,
|
return _relationships.addRelationship(targetURI, TargetMode.EXTERNAL,
|
||||||
relationshipType, id);
|
relationshipType, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,7 +235,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
*/
|
*/
|
||||||
public PackageRelationship addRelationship(PackagePartName targetPartName,
|
public PackageRelationship addRelationship(PackagePartName targetPartName,
|
||||||
TargetMode targetMode, String relationshipType, String id) {
|
TargetMode targetMode, String relationshipType, String id) {
|
||||||
container.throwExceptionIfReadOnly();
|
_container.throwExceptionIfReadOnly();
|
||||||
|
|
||||||
if (targetPartName == null) {
|
if (targetPartName == null) {
|
||||||
throw new IllegalArgumentException("targetPartName");
|
throw new IllegalArgumentException("targetPartName");
|
||||||
@ -247,16 +247,16 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
throw new IllegalArgumentException("relationshipType");
|
throw new IllegalArgumentException("relationshipType");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.isRelationshipPart || targetPartName.isRelationshipPartURI()) {
|
if (this._isRelationshipPart || targetPartName.isRelationshipPartURI()) {
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
"Rule M1.25: The Relationships part shall not have relationships to any other part.");
|
"Rule M1.25: The Relationships part shall not have relationships to any other part.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relationships == null) {
|
if (_relationships == null) {
|
||||||
relationships = new PackageRelationshipCollection();
|
_relationships = new PackageRelationshipCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
return relationships.addRelationship(targetPartName.getURI(),
|
return _relationships.addRelationship(targetPartName.getURI(),
|
||||||
targetMode, relationshipType, id);
|
targetMode, relationshipType, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,7 +305,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
*/
|
*/
|
||||||
public PackageRelationship addRelationship(URI targetURI,
|
public PackageRelationship addRelationship(URI targetURI,
|
||||||
TargetMode targetMode, String relationshipType, String id) {
|
TargetMode targetMode, String relationshipType, String id) {
|
||||||
container.throwExceptionIfReadOnly();
|
_container.throwExceptionIfReadOnly();
|
||||||
|
|
||||||
if (targetURI == null) {
|
if (targetURI == null) {
|
||||||
throw new IllegalArgumentException("targetPartName");
|
throw new IllegalArgumentException("targetPartName");
|
||||||
@ -319,17 +319,17 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
|
|
||||||
// Try to retrieve the target part
|
// Try to retrieve the target part
|
||||||
|
|
||||||
if (this.isRelationshipPart
|
if (this._isRelationshipPart
|
||||||
|| PackagingURIHelper.isRelationshipPartURI(targetURI)) {
|
|| PackagingURIHelper.isRelationshipPartURI(targetURI)) {
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
"Rule M1.25: The Relationships part shall not have relationships to any other part.");
|
"Rule M1.25: The Relationships part shall not have relationships to any other part.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (relationships == null) {
|
if (_relationships == null) {
|
||||||
relationships = new PackageRelationshipCollection();
|
_relationships = new PackageRelationshipCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
return relationships.addRelationship(targetURI,
|
return _relationships.addRelationship(targetURI,
|
||||||
targetMode, relationshipType, id);
|
targetMode, relationshipType, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,8 +337,8 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* @see org.apache.poi.openxml4j.opc.RelationshipSource#clearRelationships()
|
* @see org.apache.poi.openxml4j.opc.RelationshipSource#clearRelationships()
|
||||||
*/
|
*/
|
||||||
public void clearRelationships() {
|
public void clearRelationships() {
|
||||||
if (relationships != null) {
|
if (_relationships != null) {
|
||||||
relationships.clear();
|
_relationships.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,9 +350,9 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* @see org.apache.poi.openxml4j.opc.RelationshipSource#removeRelationship(java.lang.String)
|
* @see org.apache.poi.openxml4j.opc.RelationshipSource#removeRelationship(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public void removeRelationship(String id) {
|
public void removeRelationship(String id) {
|
||||||
this.container.throwExceptionIfReadOnly();
|
this._container.throwExceptionIfReadOnly();
|
||||||
if (this.relationships != null)
|
if (this._relationships != null)
|
||||||
this.relationships.removeRelationship(id);
|
this._relationships.removeRelationship(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -376,7 +376,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* @see org.apache.poi.openxml4j.opc.RelationshipSource#getRelationship(java.lang.String)
|
* @see org.apache.poi.openxml4j.opc.RelationshipSource#getRelationship(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public PackageRelationship getRelationship(String id) {
|
public PackageRelationship getRelationship(String id) {
|
||||||
return this.relationships.getRelationshipByID(id);
|
return this._relationships.getRelationshipByID(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -394,7 +394,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
*/
|
*/
|
||||||
public PackageRelationshipCollection getRelationshipsByType(
|
public PackageRelationshipCollection getRelationshipsByType(
|
||||||
String relationshipType) throws InvalidFormatException {
|
String relationshipType) throws InvalidFormatException {
|
||||||
container.throwExceptionIfWriteOnly();
|
_container.throwExceptionIfWriteOnly();
|
||||||
|
|
||||||
return getRelationshipsCore(relationshipType);
|
return getRelationshipsCore(relationshipType);
|
||||||
}
|
}
|
||||||
@ -415,12 +415,12 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
*/
|
*/
|
||||||
private PackageRelationshipCollection getRelationshipsCore(String filter)
|
private PackageRelationshipCollection getRelationshipsCore(String filter)
|
||||||
throws InvalidFormatException {
|
throws InvalidFormatException {
|
||||||
this.container.throwExceptionIfWriteOnly();
|
this._container.throwExceptionIfWriteOnly();
|
||||||
if (relationships == null) {
|
if (_relationships == null) {
|
||||||
this.throwExceptionIfRelationship();
|
this.throwExceptionIfRelationship();
|
||||||
relationships = new PackageRelationshipCollection(this);
|
_relationships = new PackageRelationshipCollection(this);
|
||||||
}
|
}
|
||||||
return new PackageRelationshipCollection(relationships, filter);
|
return new PackageRelationshipCollection(_relationships, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -431,7 +431,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* @see org.apache.poi.openxml4j.opc.RelationshipSource#hasRelationships()
|
* @see org.apache.poi.openxml4j.opc.RelationshipSource#hasRelationships()
|
||||||
*/
|
*/
|
||||||
public boolean hasRelationships() {
|
public boolean hasRelationships() {
|
||||||
return (!this.isRelationshipPart && (relationships != null && relationships
|
return (!this._isRelationshipPart && (_relationships != null && _relationships
|
||||||
.size() > 0));
|
.size() > 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,8 +466,8 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
InputStream inStream = this.getInputStreamImpl();
|
InputStream inStream = this.getInputStreamImpl();
|
||||||
if (inStream == null) {
|
if (inStream == null) {
|
||||||
throw new IOException("Can't obtain the input stream from "
|
throw new IOException("Can't obtain the input stream from "
|
||||||
+ partName.getName());
|
+ _partName.getName());
|
||||||
} else
|
}
|
||||||
return inStream;
|
return inStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -485,12 +485,12 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
// this part into a MemoryPackagePart instance for write purpose.
|
// this part into a MemoryPackagePart instance for write purpose.
|
||||||
if (this instanceof ZipPackagePart) {
|
if (this instanceof ZipPackagePart) {
|
||||||
// Delete logically this part
|
// Delete logically this part
|
||||||
this.container.removePart(this.partName);
|
_container.removePart(this._partName);
|
||||||
|
|
||||||
// Create a memory part
|
// Create a memory part
|
||||||
PackagePart part = container.createPart(this.partName,
|
PackagePart part = _container.createPart(this._partName,
|
||||||
this.contentType.toString(), false);
|
this._contentType.toString(), false);
|
||||||
part.relationships = this.relationships;
|
part._relationships = this._relationships;
|
||||||
if (part == null) {
|
if (part == null) {
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
"Can't create a temporary part !");
|
"Can't create a temporary part !");
|
||||||
@ -510,7 +510,7 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
*/
|
*/
|
||||||
private void throwExceptionIfRelationship()
|
private void throwExceptionIfRelationship()
|
||||||
throws InvalidOperationException {
|
throws InvalidOperationException {
|
||||||
if (this.isRelationshipPart)
|
if (this._isRelationshipPart)
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
"Can do this operation on a relationship part !");
|
"Can do this operation on a relationship part !");
|
||||||
}
|
}
|
||||||
@ -522,9 +522,9 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* Throws if
|
* Throws if
|
||||||
*/
|
*/
|
||||||
private void loadRelationships() throws InvalidFormatException {
|
private void loadRelationships() throws InvalidFormatException {
|
||||||
if (this.relationships == null && !this.isRelationshipPart) {
|
if (this._relationships == null && !this._isRelationshipPart) {
|
||||||
this.throwExceptionIfRelationship();
|
this.throwExceptionIfRelationship();
|
||||||
relationships = new PackageRelationshipCollection(this);
|
_relationships = new PackageRelationshipCollection(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,14 +536,14 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* @return the uri
|
* @return the uri
|
||||||
*/
|
*/
|
||||||
public PackagePartName getPartName() {
|
public PackagePartName getPartName() {
|
||||||
return partName;
|
return _partName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the contentType
|
* @return the contentType
|
||||||
*/
|
*/
|
||||||
public String getContentType() {
|
public String getContentType() {
|
||||||
return contentType.toString();
|
return _contentType.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -560,29 +560,29 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
*/
|
*/
|
||||||
public void setContentType(String contentType)
|
public void setContentType(String contentType)
|
||||||
throws InvalidFormatException {
|
throws InvalidFormatException {
|
||||||
if (container == null)
|
if (_container == null)
|
||||||
this.contentType = new ContentType(contentType);
|
this._contentType = new ContentType(contentType);
|
||||||
else
|
else
|
||||||
throw new InvalidOperationException(
|
throw new InvalidOperationException(
|
||||||
"You can't change the content type of a part.");
|
"You can't change the content type of a part.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public OPCPackage getPackage() {
|
public OPCPackage getPackage() {
|
||||||
return container;
|
return _container;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if this part is a relationship
|
* @return true if this part is a relationship
|
||||||
*/
|
*/
|
||||||
public boolean isRelationshipPart() {
|
public boolean isRelationshipPart() {
|
||||||
return this.isRelationshipPart;
|
return this._isRelationshipPart;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if this part has been logically deleted
|
* @return true if this part has been logically deleted
|
||||||
*/
|
*/
|
||||||
public boolean isDeleted() {
|
public boolean isDeleted() {
|
||||||
return isDeleted;
|
return _isDeleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -590,13 +590,13 @@ public abstract class PackagePart implements RelationshipSource {
|
|||||||
* the isDeleted to set
|
* the isDeleted to set
|
||||||
*/
|
*/
|
||||||
public void setDeleted(boolean isDeleted) {
|
public void setDeleted(boolean isDeleted) {
|
||||||
this.isDeleted = isDeleted;
|
this._isDeleted = isDeleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Name: " + this.partName + " - Content Type: "
|
return "Name: " + this._partName + " - Content Type: "
|
||||||
+ this.contentType.toString();
|
+ this._contentType.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------- Abstract methods ------------- */
|
/*-------------- Abstract methods ------------- */
|
||||||
|
@ -178,7 +178,7 @@ public final class PackageRelationship {
|
|||||||
if (source == null) {
|
if (source == null) {
|
||||||
return PackagingURIHelper.PACKAGE_ROOT_URI;
|
return PackagingURIHelper.PACKAGE_ROOT_URI;
|
||||||
}
|
}
|
||||||
return source.partName.getURI();
|
return source._partName.getURI();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -121,7 +121,7 @@ public final class PackageRelationshipCollection implements
|
|||||||
*/
|
*/
|
||||||
public PackageRelationshipCollection(PackagePart part)
|
public PackageRelationshipCollection(PackagePart part)
|
||||||
throws InvalidFormatException {
|
throws InvalidFormatException {
|
||||||
this(part.container, part);
|
this(part._container, part);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -429,15 +429,15 @@ public final class PackageRelationshipCollection implements
|
|||||||
} else {
|
} else {
|
||||||
str = relationshipsByID.size() + " relationship(s) = [";
|
str = relationshipsByID.size() + " relationship(s) = [";
|
||||||
}
|
}
|
||||||
if ((relationshipPart != null) && (relationshipPart.partName != null)) {
|
if ((relationshipPart != null) && (relationshipPart._partName != null)) {
|
||||||
str = str + "," + relationshipPart.partName;
|
str = str + "," + relationshipPart._partName;
|
||||||
} else {
|
} else {
|
||||||
str = str + ",relationshipPart=null";
|
str = str + ",relationshipPart=null";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Source of this relationship
|
// Source of this relationship
|
||||||
if ((sourcePart != null) && (sourcePart.partName != null)) {
|
if ((sourcePart != null) && (sourcePart._partName != null)) {
|
||||||
str = str + "," + sourcePart.partName;
|
str = str + "," + sourcePart._partName;
|
||||||
} else {
|
} else {
|
||||||
str = str + ",sourcePart=null";
|
str = str + ",sourcePart=null";
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,6 @@ public interface RelationshipSource {
|
|||||||
* @return <b>true</b> if the specified relationship exists in this part,
|
* @return <b>true</b> if the specified relationship exists in this part,
|
||||||
* else returns <b>false</b>
|
* else returns <b>false</b>
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("finally")
|
|
||||||
public abstract boolean isRelationshipExists(PackageRelationship rel);
|
public abstract boolean isRelationshipExists(PackageRelationship rel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -423,7 +423,7 @@ public final class ZipPackage extends Package {
|
|||||||
+ ZipHelper.getZipItemNameFromOPCName(part
|
+ ZipHelper.getZipItemNameFromOPCName(part
|
||||||
.getPartName().getName()) + "'");
|
.getPartName().getName()) + "'");
|
||||||
PartMarshaller marshaller = partMarshallers
|
PartMarshaller marshaller = partMarshallers
|
||||||
.get(part.contentType);
|
.get(part._contentType);
|
||||||
if (marshaller != null) {
|
if (marshaller != null) {
|
||||||
if (!marshaller.marshall(part, zos)) {
|
if (!marshaller.marshall(part, zos)) {
|
||||||
throw new OpenXML4JException(
|
throw new OpenXML4JException(
|
||||||
|
@ -98,7 +98,7 @@ public class ZipPackagePart extends PackagePart {
|
|||||||
protected InputStream getInputStreamImpl() throws IOException {
|
protected InputStream getInputStreamImpl() throws IOException {
|
||||||
// We use the getInputStream() method from java.util.zip.ZipFile
|
// We use the getInputStream() method from java.util.zip.ZipFile
|
||||||
// class which return an InputStream to this part zip entry.
|
// class which return an InputStream to this part zip entry.
|
||||||
return ((ZipPackage) container).getZipArchive()
|
return ((ZipPackage) _container).getZipArchive()
|
||||||
.getInputStream(zipEntry);
|
.getInputStream(zipEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ public class ZipPackagePart extends PackagePart {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean load(InputStream ios) throws InvalidFormatException {
|
public boolean load(InputStream ios) {
|
||||||
throw new InvalidOperationException("Method not implemented !");
|
throw new InvalidOperationException("Method not implemented !");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ import org.dom4j.io.SAXReader;
|
|||||||
* Manage package content types ([Content_Types].xml part).
|
* Manage package content types ([Content_Types].xml part).
|
||||||
*
|
*
|
||||||
* @author Julien Chable
|
* @author Julien Chable
|
||||||
* @version 1.0
|
|
||||||
*/
|
*/
|
||||||
public abstract class ContentTypeManager {
|
public abstract class ContentTypeManager {
|
||||||
|
|
||||||
@ -342,9 +341,8 @@ public abstract class ContentTypeManager {
|
|||||||
if (this.container != null && this.container.getPart(partName) != null) {
|
if (this.container != null && this.container.getPart(partName) != null) {
|
||||||
throw new OpenXML4JRuntimeException(
|
throw new OpenXML4JRuntimeException(
|
||||||
"Rule M2.4 exception : this error should NEVER happen, if so please send a mail to the developers team, thanks !");
|
"Rule M2.4 exception : this error should NEVER happen, if so please send a mail to the developers team, thanks !");
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -459,8 +457,8 @@ public abstract class ContentTypeManager {
|
|||||||
Entry<PackagePartName, String> entry) {
|
Entry<PackagePartName, String> entry) {
|
||||||
root.addElement(OVERRIDE_TAG_NAME).addAttribute(
|
root.addElement(OVERRIDE_TAG_NAME).addAttribute(
|
||||||
PART_NAME_ATTRIBUTE_NAME,
|
PART_NAME_ATTRIBUTE_NAME,
|
||||||
((PackagePartName) entry.getKey()).getName()).addAttribute(
|
entry.getKey().getName()).addAttribute(
|
||||||
CONTENT_TYPE_ATTRIBUTE_NAME, (String) entry.getValue());
|
CONTENT_TYPE_ATTRIBUTE_NAME, entry.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -474,9 +472,9 @@ public abstract class ContentTypeManager {
|
|||||||
*/
|
*/
|
||||||
private void appendDefaultType(Element root, Entry<String, String> entry) {
|
private void appendDefaultType(Element root, Entry<String, String> entry) {
|
||||||
root.addElement(DEFAULT_TAG_NAME).addAttribute(
|
root.addElement(DEFAULT_TAG_NAME).addAttribute(
|
||||||
EXTENSION_ATTRIBUTE_NAME, (String) entry.getKey())
|
EXTENSION_ATTRIBUTE_NAME, entry.getKey())
|
||||||
.addAttribute(CONTENT_TYPE_ATTRIBUTE_NAME,
|
.addAttribute(CONTENT_TYPE_ATTRIBUTE_NAME,
|
||||||
(String) entry.getValue());
|
entry.getValue());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor implements org.apach
|
|||||||
StringBuffer text = new StringBuffer();
|
StringBuffer text = new StringBuffer();
|
||||||
|
|
||||||
for(int i=0; i<workbook.getNumberOfSheets(); i++) {
|
for(int i=0; i<workbook.getNumberOfSheets(); i++) {
|
||||||
XSSFSheet sheet = (XSSFSheet)workbook.getSheetAt(i);
|
XSSFSheet sheet = workbook.getSheetAt(i);
|
||||||
if(includeSheetNames) {
|
if(includeSheetNames) {
|
||||||
text.append(workbook.getSheetName(i) + "\n");
|
text.append(workbook.getSheetName(i) + "\n");
|
||||||
}
|
}
|
||||||
|
@ -585,9 +585,11 @@ public final class XSSFCell implements Cell {
|
|||||||
*/
|
*/
|
||||||
public byte getErrorCellValue() {
|
public byte getErrorCellValue() {
|
||||||
String code = getErrorCellString();
|
String code = getErrorCellString();
|
||||||
if(code == null) return 0;
|
if (code == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return (byte)FormulaError.forString(code).getCode();
|
return FormulaError.forString(code).getCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -145,9 +145,8 @@ public class XSSFCellStyle implements CellStyle {
|
|||||||
CTCellAlignment align = cellXf.getAlignment();
|
CTCellAlignment align = cellXf.getAlignment();
|
||||||
if(align != null && align.isSetHorizontal()) {
|
if(align != null && align.isSetHorizontal()) {
|
||||||
return HorizontalAlignment.values()[align.getHorizontal().intValue()-1];
|
return HorizontalAlignment.values()[align.getHorizontal().intValue()-1];
|
||||||
} else {
|
|
||||||
return HorizontalAlignment.GENERAL;
|
|
||||||
}
|
}
|
||||||
|
return HorizontalAlignment.GENERAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -865,7 +864,7 @@ public class XSSFCellStyle implements CellStyle {
|
|||||||
*/
|
*/
|
||||||
public void setDataFormat(short fmt) {
|
public void setDataFormat(short fmt) {
|
||||||
cellXf.setApplyNumberFormat(true);
|
cellXf.setApplyNumberFormat(true);
|
||||||
cellXf.setNumFmtId((long)fmt);
|
cellXf.setNumFmtId(fmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -285,7 +285,7 @@ public class XSSFPrintSetup implements PrintSetup {
|
|||||||
* @see PaperSize
|
* @see PaperSize
|
||||||
*/
|
*/
|
||||||
public PaperSize getPaperSizeEnum() {
|
public PaperSize getPaperSizeEnum() {
|
||||||
return PaperSize.values()[((int) getPaperSize() - 1)];
|
return PaperSize.values()[getPaperSize() - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1333,7 +1333,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
.getOutlineLevel(), true);
|
.getOutlineLevel(), true);
|
||||||
|
|
||||||
// write collapse field
|
// write collapse field
|
||||||
setColumn((int) (lastColMax + 1), null, 0, null, null, Boolean.TRUE);
|
setColumn(lastColMax + 1, null, 0, null, null, Boolean.TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1895,8 +1895,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
endLevel = 0;
|
endLevel = 0;
|
||||||
endHidden = false;
|
endHidden = false;
|
||||||
} else {
|
} else {
|
||||||
endLevel = (int) (getRow(endOfOutlineGroupIdx).getCTRow()
|
endLevel = getRow(endOfOutlineGroupIdx).getCTRow().getOutlineLevel();
|
||||||
.getOutlineLevel());
|
|
||||||
endHidden = getRow(endOfOutlineGroupIdx).getCTRow().getHidden();
|
endHidden = getRow(endOfOutlineGroupIdx).getCTRow().getHidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ import org.apache.poi.POIXMLDocumentPart;
|
|||||||
import org.apache.poi.openxml4j.opc.OPCPackage;
|
import org.apache.poi.openxml4j.opc.OPCPackage;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
||||||
|
|
||||||
|
import junit.framework.AssertionFailedError;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
|
||||||
@ -135,7 +136,9 @@ public class TestCommentsTable extends TestCase {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertNotNull(ct);
|
if (ct == null) {
|
||||||
|
throw new AssertionFailedError("didn't find comments table");
|
||||||
|
}
|
||||||
assertEquals(2, ct.getNumberOfComments());
|
assertEquals(2, ct.getNumberOfComments());
|
||||||
assertEquals(1, ct.getNumberOfAuthors());
|
assertEquals(1, ct.getNumberOfAuthors());
|
||||||
|
|
||||||
@ -153,7 +156,9 @@ public class TestCommentsTable extends TestCase {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertNotNull(ct);
|
if (ct == null) {
|
||||||
|
throw new AssertionFailedError("didn't find comments table");
|
||||||
|
}
|
||||||
|
|
||||||
assertEquals(2, ct.getNumberOfComments());
|
assertEquals(2, ct.getNumberOfComments());
|
||||||
assertEquals(1, ct.getNumberOfAuthors());
|
assertEquals(1, ct.getNumberOfAuthors());
|
||||||
@ -209,11 +214,11 @@ public class TestCommentsTable extends TestCase {
|
|||||||
assertTrue(xml.exists());
|
assertTrue(xml.exists());
|
||||||
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
||||||
Sheet sheet1 = workbook.getSheetAt(0);
|
XSSFSheet sheet1 = workbook.getSheetAt(0);
|
||||||
XSSFSheet sheet2 = (XSSFSheet)workbook.getSheetAt(1);
|
XSSFSheet sheet2 = workbook.getSheetAt(1);
|
||||||
|
|
||||||
assertTrue( ((XSSFSheet)sheet1).hasComments() );
|
assertTrue( sheet1.hasComments() );
|
||||||
assertFalse( ((XSSFSheet)sheet2).hasComments() );
|
assertFalse( sheet2.hasComments() );
|
||||||
|
|
||||||
// Change on comment on sheet 1, and add another into
|
// Change on comment on sheet 1, and add another into
|
||||||
// sheet 2
|
// sheet 2
|
||||||
@ -237,7 +242,7 @@ public class TestCommentsTable extends TestCase {
|
|||||||
|
|
||||||
// Check we still have comments where we should do
|
// Check we still have comments where we should do
|
||||||
sheet1 = workbook.getSheetAt(0);
|
sheet1 = workbook.getSheetAt(0);
|
||||||
sheet2 = (XSSFSheet)workbook.getSheetAt(1);
|
sheet2 = workbook.getSheetAt(1);
|
||||||
assertNotNull(sheet1.getRow(4).getCell(2).getCellComment());
|
assertNotNull(sheet1.getRow(4).getCell(2).getCellComment());
|
||||||
assertNotNull(sheet1.getRow(6).getCell(2).getCellComment());
|
assertNotNull(sheet1.getRow(6).getCell(2).getCellComment());
|
||||||
assertNotNull(sheet2.getRow(2).getCell(1).getCellComment());
|
assertNotNull(sheet2.getRow(2).getCell(1).getCellComment());
|
||||||
@ -262,11 +267,11 @@ public class TestCommentsTable extends TestCase {
|
|||||||
assertTrue(xml.exists());
|
assertTrue(xml.exists());
|
||||||
|
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
||||||
Sheet sheet1 = workbook.getSheetAt(0);
|
XSSFSheet sheet1 = workbook.getSheetAt(0);
|
||||||
XSSFSheet sheet2 = (XSSFSheet)workbook.getSheetAt(1);
|
XSSFSheet sheet2 = workbook.getSheetAt(1);
|
||||||
|
|
||||||
assertTrue( ((XSSFSheet)sheet1).hasComments() );
|
assertTrue( sheet1.hasComments() );
|
||||||
assertFalse( ((XSSFSheet)sheet2).hasComments() );
|
assertFalse( sheet2.hasComments() );
|
||||||
|
|
||||||
assertEquals("Nick Burch",
|
assertEquals("Nick Burch",
|
||||||
sheet1.getRow(4).getCell(2).getCellComment().getAuthor());
|
sheet1.getRow(4).getCell(2).getCellComment().getAuthor());
|
||||||
|
@ -48,7 +48,7 @@ public final class TestXSSFHyperlink extends BaseTestHyperlink {
|
|||||||
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
||||||
assertEquals(3, workbook.getNumberOfSheets());
|
assertEquals(3, workbook.getNumberOfSheets());
|
||||||
|
|
||||||
XSSFSheet sheet = (XSSFSheet)workbook.getSheetAt(0);
|
XSSFSheet sheet = workbook.getSheetAt(0);
|
||||||
|
|
||||||
// Check the hyperlinks
|
// Check the hyperlinks
|
||||||
assertEquals(4, sheet.getNumHyperlinks());
|
assertEquals(4, sheet.getNumHyperlinks());
|
||||||
@ -65,7 +65,7 @@ public final class TestXSSFHyperlink extends BaseTestHyperlink {
|
|||||||
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
|
||||||
CreationHelper createHelper = workbook.getCreationHelper();
|
CreationHelper createHelper = workbook.getCreationHelper();
|
||||||
assertEquals(3, workbook.getNumberOfSheets());
|
assertEquals(3, workbook.getNumberOfSheets());
|
||||||
XSSFSheet sheet = (XSSFSheet)workbook.getSheetAt(0);
|
XSSFSheet sheet = workbook.getSheetAt(0);
|
||||||
|
|
||||||
// Check hyperlinks
|
// Check hyperlinks
|
||||||
assertEquals(4, sheet.getNumHyperlinks());
|
assertEquals(4, sheet.getNumHyperlinks());
|
||||||
@ -81,7 +81,7 @@ public final class TestXSSFHyperlink extends BaseTestHyperlink {
|
|||||||
assertNotNull(wb2.getSheetAt(1));
|
assertNotNull(wb2.getSheetAt(1));
|
||||||
assertNotNull(wb2.getSheetAt(2));
|
assertNotNull(wb2.getSheetAt(2));
|
||||||
|
|
||||||
sheet = (XSSFSheet)wb2.getSheetAt(0);
|
sheet = wb2.getSheetAt(0);
|
||||||
|
|
||||||
|
|
||||||
// Check hyperlinks again
|
// Check hyperlinks again
|
||||||
|
@ -167,8 +167,8 @@ public final class StyleSheet {
|
|||||||
break;
|
break;
|
||||||
case 0x9:
|
case 0x9:
|
||||||
newCHP._fSpec = true;
|
newCHP._fSpec = true;
|
||||||
newCHP._ftcSym = (short)Utils.convertBytesToShort(varParam, 0);
|
newCHP._ftcSym = Utils.convertBytesToShort(varParam, 0);
|
||||||
newCHP._xchSym = (short)Utils.convertBytesToShort(varParam, 2);
|
newCHP._xchSym = Utils.convertBytesToShort(varParam, 2);
|
||||||
break;
|
break;
|
||||||
case 0xa:
|
case 0xa:
|
||||||
newCHP._fOle2 = getFlag(param);
|
newCHP._fOle2 = getFlag(param);
|
||||||
@ -453,8 +453,8 @@ public final class StyleSheet {
|
|||||||
doCHPOperation(oldCHP, newCHP, 0x47, param, varParam, grpprl, offset, styleSheet);
|
doCHPOperation(oldCHP, newCHP, 0x47, param, varParam, grpprl, offset, styleSheet);
|
||||||
break;
|
break;
|
||||||
case 0x4d:
|
case 0x4d:
|
||||||
float percentage = (float)param/100.0f;
|
float percentage = param/100.0f;
|
||||||
int add = (int)((float)percentage * (float)newCHP._hps);
|
int add = (int)(percentage * newCHP._hps);
|
||||||
newCHP._hps += add;
|
newCHP._hps += add;
|
||||||
break;
|
break;
|
||||||
case 0x4e:
|
case 0x4e:
|
||||||
@ -485,7 +485,7 @@ public final class StyleSheet {
|
|||||||
break;
|
break;
|
||||||
case 0x57:
|
case 0x57:
|
||||||
newCHP._fPropMark = getFlag(varParam[0]);
|
newCHP._fPropMark = getFlag(varParam[0]);
|
||||||
newCHP._ibstPropRMark = (short)Utils.convertBytesToShort(varParam, 1);
|
newCHP._ibstPropRMark = Utils.convertBytesToShort(varParam, 1);
|
||||||
newCHP._dttmPropRMark = Utils.convertBytesToInt(varParam, 3);
|
newCHP._dttmPropRMark = Utils.convertBytesToInt(varParam, 3);
|
||||||
break;
|
break;
|
||||||
case 0x58:
|
case 0x58:
|
||||||
@ -512,7 +512,7 @@ public final class StyleSheet {
|
|||||||
break;
|
break;
|
||||||
case 0x62:
|
case 0x62:
|
||||||
newCHP._fDispFldRMark = getFlag(varParam[0]);
|
newCHP._fDispFldRMark = getFlag(varParam[0]);
|
||||||
newCHP._ibstDispFldRMark = (short)Utils.convertBytesToShort(varParam, 1);
|
newCHP._ibstDispFldRMark = Utils.convertBytesToShort(varParam, 1);
|
||||||
newCHP._dttmDispFldRMark = Utils.convertBytesToInt(varParam, 3);
|
newCHP._dttmDispFldRMark = Utils.convertBytesToInt(varParam, 3);
|
||||||
System.arraycopy(varParam, 7, newCHP._xstDispFldRMark, 0, 32);
|
System.arraycopy(varParam, 7, newCHP._xstDispFldRMark, 0, 32);
|
||||||
break;
|
break;
|
||||||
@ -524,8 +524,8 @@ public final class StyleSheet {
|
|||||||
newCHP._dttmRMarkDel[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
newCHP._dttmRMarkDel[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x65:
|
case 0x65:
|
||||||
newCHP._brc[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newCHP._brc[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newCHP._brc[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newCHP._brc[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x66:
|
case 0x66:
|
||||||
newCHP._shd = (short)param;
|
newCHP._shd = (short)param;
|
||||||
@ -834,28 +834,28 @@ public final class StyleSheet {
|
|||||||
newPAP._wr = (byte)param;
|
newPAP._wr = (byte)param;
|
||||||
break;
|
break;
|
||||||
case 0x24:
|
case 0x24:
|
||||||
newPAP._brcTop[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newPAP._brcTop[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newPAP._brcTop[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newPAP._brcTop[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x25:
|
case 0x25:
|
||||||
newPAP._brcLeft[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newPAP._brcLeft[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newPAP._brcLeft[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newPAP._brcLeft[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x26:
|
case 0x26:
|
||||||
newPAP._brcBottom[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newPAP._brcBottom[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newPAP._brcBottom[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newPAP._brcBottom[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x27:
|
case 0x27:
|
||||||
newPAP._brcRight[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newPAP._brcRight[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newPAP._brcRight[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newPAP._brcRight[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x28:
|
case 0x28:
|
||||||
newPAP._brcBetween[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newPAP._brcBetween[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newPAP._brcBetween[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newPAP._brcBetween[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x29:
|
case 0x29:
|
||||||
newPAP._brcBar[0] = (short)Utils.convertBytesToShort(grpprl, offset - 4);
|
newPAP._brcBar[0] = Utils.convertBytesToShort(grpprl, offset - 4);
|
||||||
newPAP._brcBar[1] = (short)Utils.convertBytesToShort(grpprl, offset - 2);
|
newPAP._brcBar[1] = Utils.convertBytesToShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x2a:
|
case 0x2a:
|
||||||
newPAP._fNoAutoHyph = (byte)param;
|
newPAP._fNoAutoHyph = (byte)param;
|
||||||
|
@ -35,9 +35,9 @@ import org.apache.poi.util.LittleEndian;
|
|||||||
*
|
*
|
||||||
* @author Ryan Ackley
|
* @author Ryan Ackley
|
||||||
*/
|
*/
|
||||||
|
public final class WordDocument {
|
||||||
public final class WordDocument
|
// TODO - name this constant properly
|
||||||
{
|
private static final float K_1440_0F = 1440.0f;
|
||||||
/** byte buffer containing the main Document stream*/
|
/** byte buffer containing the main Document stream*/
|
||||||
byte[] _header;
|
byte[] _header;
|
||||||
/** contains all style information for this document see Word 97 Doc spec*/
|
/** contains all style information for this document see Word 97 Doc spec*/
|
||||||
@ -1160,19 +1160,19 @@ public final class WordDocument
|
|||||||
}
|
}
|
||||||
if(pap._dxaLeft > 0)
|
if(pap._dxaLeft > 0)
|
||||||
{
|
{
|
||||||
buf.append("start-indent=\"" + ((float)pap._dxaLeft)/1440.0f + "in\"\r\n");
|
buf.append("start-indent=\"" + pap._dxaLeft/K_1440_0F + "in\"\r\n");
|
||||||
}
|
}
|
||||||
if(pap._dxaRight > 0)
|
if(pap._dxaRight > 0)
|
||||||
{
|
{
|
||||||
buf.append("end-indent=\"" + ((float)pap._dxaRight)/1440.0f + "in\"\r\n");
|
buf.append("end-indent=\"" + pap._dxaRight/K_1440_0F + "in\"\r\n");
|
||||||
}
|
}
|
||||||
if(pap._dxaLeft1 != 0)
|
if(pap._dxaLeft1 != 0)
|
||||||
{
|
{
|
||||||
buf.append("text-indent=\"" + ((float)pap._dxaLeft1)/1440.0f + "in\"\r\n");
|
buf.append("text-indent=\"" + pap._dxaLeft1/K_1440_0F + "in\"\r\n");
|
||||||
}
|
}
|
||||||
if(pap._lspd[1] == 0)
|
if(pap._lspd[1] == 0)
|
||||||
{
|
{
|
||||||
//buf.append("line-height=\"" + ((float)pap._lspd[0])/1440.0f + "in\"\r\n");
|
//buf.append("line-height=\"" + pap._lspd[0]/K_1440_0F + "in\"\r\n");
|
||||||
}
|
}
|
||||||
addBorder(buf, pap._brcTop, "top");
|
addBorder(buf, pap._brcTop, "top");
|
||||||
addBorder(buf, pap._brcBottom, "bottom");
|
addBorder(buf, pap._brcBottom, "bottom");
|
||||||
@ -1190,7 +1190,7 @@ public final class WordDocument
|
|||||||
buf.append("font-size=\"" + (chp._hps / 2) + "pt\" ");
|
buf.append("font-size=\"" + (chp._hps / 2) + "pt\" ");
|
||||||
buf.append("color=\"" + getColor(chp._ico) + "\" ");
|
buf.append("color=\"" + getColor(chp._ico) + "\" ");
|
||||||
//not supported by fop
|
//not supported by fop
|
||||||
//buf.append("letter-spacing=\"" + ((double)chp._dxaSpace)/1440.0f + "in\" ");
|
//buf.append("letter-spacing=\"" + ((double)chp._dxaSpace)/K_1440_0F + "in\" ");
|
||||||
|
|
||||||
addBorder(buf, chp._brc, "top");
|
addBorder(buf, chp._brc, "top");
|
||||||
addBorder(buf, chp._brc, "bottom");
|
addBorder(buf, chp._brc, "bottom");
|
||||||
@ -1236,11 +1236,11 @@ public final class WordDocument
|
|||||||
}
|
}
|
||||||
if(chp._paddingStart != 0)
|
if(chp._paddingStart != 0)
|
||||||
{
|
{
|
||||||
buf.append("padding-start=\"" + (float)chp._paddingStart/1440.0f + "in\" ");
|
buf.append("padding-start=\"" + chp._paddingStart/K_1440_0F + "in\" ");
|
||||||
}
|
}
|
||||||
if(chp._paddingEnd != 0)
|
if(chp._paddingEnd != 0)
|
||||||
{
|
{
|
||||||
buf.append("padding-end=\"" + (float)chp._paddingEnd/1440.0f + "in\" ");
|
buf.append("padding-end=\"" + chp._paddingEnd/K_1440_0F + "in\" ");
|
||||||
}
|
}
|
||||||
buf.append(">");
|
buf.append(">");
|
||||||
}
|
}
|
||||||
@ -1416,12 +1416,12 @@ public final class WordDocument
|
|||||||
private String createPageMaster(SEP sep, String type, int section,
|
private String createPageMaster(SEP sep, String type, int section,
|
||||||
String regionBefore, String regionAfter)
|
String regionBefore, String regionAfter)
|
||||||
{
|
{
|
||||||
float height = ((float)sep._yaPage)/1440.0f;
|
float height = sep._yaPage/K_1440_0F;
|
||||||
float width = ((float)sep._xaPage)/1440.0f;
|
float width = sep._xaPage/K_1440_0F;
|
||||||
float leftMargin = ((float)sep._dxaLeft)/1440.0f;
|
float leftMargin = sep._dxaLeft/K_1440_0F;
|
||||||
float rightMargin = ((float)sep._dxaRight)/1440.0f;
|
float rightMargin = sep._dxaRight/K_1440_0F;
|
||||||
float topMargin = ((float)sep._dyaTop)/1440.0f;
|
float topMargin = sep._dyaTop/K_1440_0F;
|
||||||
float bottomMargin = ((float)sep._dyaBottom)/1440.0f;
|
float bottomMargin = sep._dyaBottom/K_1440_0F;
|
||||||
|
|
||||||
//add these to the header
|
//add these to the header
|
||||||
String thisPage = type + "-page" + section;
|
String thisPage = type + "-page" + section;
|
||||||
@ -1452,7 +1452,7 @@ public final class WordDocument
|
|||||||
_headerBuffer.append("column-count=\"" + (sep._ccolM1 + 1) + "\" ");
|
_headerBuffer.append("column-count=\"" + (sep._ccolM1 + 1) + "\" ");
|
||||||
if(sep._fEvenlySpaced)
|
if(sep._fEvenlySpaced)
|
||||||
{
|
{
|
||||||
_headerBuffer.append("column-gap=\"" + ((float)(sep._dxaColumns))/1440.0f + "in\"");
|
_headerBuffer.append("column-gap=\"" + sep._dxaColumns/K_1440_0F + "in\"");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1478,7 +1478,7 @@ public final class WordDocument
|
|||||||
if((brc[0] & 0xff00) != 0 && brc[0] != -1)
|
if((brc[0] & 0xff00) != 0 && brc[0] != -1)
|
||||||
{
|
{
|
||||||
int type = (brc[0] & 0xff00) >> 8;
|
int type = (brc[0] & 0xff00) >> 8;
|
||||||
float width = ((float)(brc[0] & 0x00ff))/8.0f;
|
float width = (brc[0] & 0x00ff)/8.0f;
|
||||||
String style = getBorderStyle(brc[0]);
|
String style = getBorderStyle(brc[0]);
|
||||||
String color = getColor(brc[1] & 0x00ff);
|
String color = getColor(brc[1] & 0x00ff);
|
||||||
String thickness = getBorderThickness(brc[0]);
|
String thickness = getBorderThickness(brc[0]);
|
||||||
@ -1764,7 +1764,7 @@ public final class WordDocument
|
|||||||
rowBuffer.append("<fo:table-row ");
|
rowBuffer.append("<fo:table-row ");
|
||||||
if(tap._dyaRowHeight > 0)
|
if(tap._dyaRowHeight > 0)
|
||||||
{
|
{
|
||||||
rowBuffer.append("height=\"" + ((float)tap._dyaRowHeight)/1440.0f + "in\" ");
|
rowBuffer.append("height=\"" + tap._dyaRowHeight/K_1440_0F + "in\" ");
|
||||||
}
|
}
|
||||||
if(tap._fCantSplit)
|
if(tap._fCantSplit)
|
||||||
{
|
{
|
||||||
@ -1777,9 +1777,9 @@ public final class WordDocument
|
|||||||
TC tc = tap._rgtc[y];
|
TC tc = tap._rgtc[y];
|
||||||
overrideCellBorder(x, y, size, tap._itcMac, tc, tap);
|
overrideCellBorder(x, y, size, tap._itcMac, tc, tap);
|
||||||
rowBuffer.append("<fo:table-cell ");
|
rowBuffer.append("<fo:table-cell ");
|
||||||
rowBuffer.append("width=\"" + ((float)(tap._rgdxaCenter[y+1] - tap._rgdxaCenter[y]))/1440.0f + "in\" ");
|
rowBuffer.append("width=\"" + (tap._rgdxaCenter[y+1] - tap._rgdxaCenter[y])/K_1440_0F + "in\" ");
|
||||||
rowBuffer.append("padding-start=\"" + ((float)tap._dxaGapHalf)/1440.0f + "in\" ");
|
rowBuffer.append("padding-start=\"" + tap._dxaGapHalf/K_1440_0F + "in\" ");
|
||||||
rowBuffer.append("padding-end=\"" + ((float)tap._dxaGapHalf)/1440.0f + "in\" ");
|
rowBuffer.append("padding-end=\"" + tap._dxaGapHalf/K_1440_0F + "in\" ");
|
||||||
addBorder(rowBuffer, tc._brcTop, "top");
|
addBorder(rowBuffer, tc._brcTop, "top");
|
||||||
addBorder(rowBuffer, tc._brcLeft, "left");
|
addBorder(rowBuffer, tc._brcLeft, "left");
|
||||||
addBorder(rowBuffer, tc._brcBottom, "bottom");
|
addBorder(rowBuffer, tc._brcBottom, "bottom");
|
||||||
|
@ -224,8 +224,8 @@ public final class StyleSheet implements HDFType {
|
|||||||
break;
|
break;
|
||||||
case 0x9:
|
case 0x9:
|
||||||
newCHP.setFSpec(true);
|
newCHP.setFSpec(true);
|
||||||
newCHP.setFtcSym((short)LittleEndian.getShort(varParam, 0));
|
newCHP.setFtcSym(LittleEndian.getShort(varParam, 0));
|
||||||
newCHP.setXchSym((short)LittleEndian.getShort(varParam, 2));
|
newCHP.setXchSym(LittleEndian.getShort(varParam, 2));
|
||||||
break;
|
break;
|
||||||
case 0xa:
|
case 0xa:
|
||||||
newCHP.setFOle2(getFlag(param));
|
newCHP.setFOle2(getFlag(param));
|
||||||
@ -517,8 +517,8 @@ public final class StyleSheet implements HDFType {
|
|||||||
doCHPOperation(oldCHP, newCHP, 0x47, param, varParam, grpprl, offset, styleSheet);
|
doCHPOperation(oldCHP, newCHP, 0x47, param, varParam, grpprl, offset, styleSheet);
|
||||||
break;
|
break;
|
||||||
case 0x4d:
|
case 0x4d:
|
||||||
float percentage = (float)param/100.0f;
|
float percentage = param/100.0f;
|
||||||
int add = (int)((float)percentage * (float)newCHP.getHps());
|
int add = (int)(percentage * newCHP.getHps());
|
||||||
newCHP.setHps(newCHP.getHps() + add);
|
newCHP.setHps(newCHP.getHps() + add);
|
||||||
break;
|
break;
|
||||||
case 0x4e:
|
case 0x4e:
|
||||||
@ -549,7 +549,7 @@ public final class StyleSheet implements HDFType {
|
|||||||
break;
|
break;
|
||||||
case 0x57:
|
case 0x57:
|
||||||
newCHP.setFPropMark(varParam[0]);
|
newCHP.setFPropMark(varParam[0]);
|
||||||
newCHP.setIbstPropRMark((short)LittleEndian.getShort(varParam, 1));
|
newCHP.setIbstPropRMark(LittleEndian.getShort(varParam, 1));
|
||||||
newCHP.setDttmPropRMark(LittleEndian.getInt(varParam, 3));
|
newCHP.setDttmPropRMark(LittleEndian.getInt(varParam, 3));
|
||||||
break;
|
break;
|
||||||
case 0x58:
|
case 0x58:
|
||||||
@ -577,7 +577,7 @@ public final class StyleSheet implements HDFType {
|
|||||||
case 0x62:
|
case 0x62:
|
||||||
byte[] xstDispFldRMark = new byte[32];
|
byte[] xstDispFldRMark = new byte[32];
|
||||||
newCHP.setFDispFldRMark(varParam[0]);
|
newCHP.setFDispFldRMark(varParam[0]);
|
||||||
newCHP.setIbstDispFldRMark((short)LittleEndian.getShort(varParam, 1));
|
newCHP.setIbstDispFldRMark(LittleEndian.getShort(varParam, 1));
|
||||||
newCHP.setDttmDispFldRMark(LittleEndian.getInt(varParam, 3));
|
newCHP.setDttmDispFldRMark(LittleEndian.getInt(varParam, 3));
|
||||||
System.arraycopy(varParam, 7, xstDispFldRMark, 0, 32);
|
System.arraycopy(varParam, 7, xstDispFldRMark, 0, 32);
|
||||||
newCHP.setXstDispFldRMark(xstDispFldRMark);
|
newCHP.setXstDispFldRMark(xstDispFldRMark);
|
||||||
@ -593,8 +593,8 @@ public final class StyleSheet implements HDFType {
|
|||||||
break;
|
break;
|
||||||
case 0x65:
|
case 0x65:
|
||||||
short[] brc = new short[2];
|
short[] brc = new short[2];
|
||||||
brc[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brc[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brc[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brc[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
newCHP.setBrc(brc);
|
newCHP.setBrc(brc);
|
||||||
break;
|
break;
|
||||||
case 0x66:
|
case 0x66:
|
||||||
@ -947,33 +947,33 @@ public final class StyleSheet implements HDFType {
|
|||||||
break;
|
break;
|
||||||
case 0x24:
|
case 0x24:
|
||||||
short[] brcTop = newPAP.getBrcTop();
|
short[] brcTop = newPAP.getBrcTop();
|
||||||
brcTop[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brcTop[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brcTop[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brcTop[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x25:
|
case 0x25:
|
||||||
short[] brcLeft = newPAP.getBrcLeft();
|
short[] brcLeft = newPAP.getBrcLeft();
|
||||||
brcLeft[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brcLeft[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brcLeft[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brcLeft[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x26:
|
case 0x26:
|
||||||
short[] brcBottom = newPAP.getBrcBottom();
|
short[] brcBottom = newPAP.getBrcBottom();
|
||||||
brcBottom[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brcBottom[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brcBottom[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brcBottom[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x27:
|
case 0x27:
|
||||||
short[] brcRight = newPAP.getBrcRight();
|
short[] brcRight = newPAP.getBrcRight();
|
||||||
brcRight[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brcRight[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brcRight[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brcRight[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x28:
|
case 0x28:
|
||||||
short[] brcBetween = newPAP.getBrcBetween();
|
short[] brcBetween = newPAP.getBrcBetween();
|
||||||
brcBetween[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brcBetween[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brcBetween[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brcBetween[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x29:
|
case 0x29:
|
||||||
short[] brcBar = newPAP.getBrcBar();
|
short[] brcBar = newPAP.getBrcBar();
|
||||||
brcBar[0] = (short)LittleEndian.getShort(grpprl, offset - 4);
|
brcBar[0] = LittleEndian.getShort(grpprl, offset - 4);
|
||||||
brcBar[1] = (short)LittleEndian.getShort(grpprl, offset - 2);
|
brcBar[1] = LittleEndian.getShort(grpprl, offset - 2);
|
||||||
break;
|
break;
|
||||||
case 0x2a:
|
case 0x2a:
|
||||||
newPAP.setFNoAutoHyph((byte)param);
|
newPAP.setFNoAutoHyph((byte)param);
|
||||||
|
@ -814,9 +814,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFBold(boolean value)
|
public void setFBold(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fBold.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fBold.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -826,7 +824,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFBold()
|
public boolean isFBold()
|
||||||
{
|
{
|
||||||
return fBold.isSet(field_2_format_flags);
|
return fBold.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -835,9 +832,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFItalic(boolean value)
|
public void setFItalic(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fItalic.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fItalic.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -847,7 +842,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFItalic()
|
public boolean isFItalic()
|
||||||
{
|
{
|
||||||
return fItalic.isSet(field_2_format_flags);
|
return fItalic.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -856,9 +850,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFRMarkDel(boolean value)
|
public void setFRMarkDel(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fRMarkDel.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fRMarkDel.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -868,7 +860,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFRMarkDel()
|
public boolean isFRMarkDel()
|
||||||
{
|
{
|
||||||
return fRMarkDel.isSet(field_2_format_flags);
|
return fRMarkDel.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -877,9 +868,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFOutline(boolean value)
|
public void setFOutline(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fOutline.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fOutline.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -889,7 +878,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFOutline()
|
public boolean isFOutline()
|
||||||
{
|
{
|
||||||
return fOutline.isSet(field_2_format_flags);
|
return fOutline.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -898,9 +886,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFFldVanish(boolean value)
|
public void setFFldVanish(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fFldVanish.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fFldVanish.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -910,7 +896,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFFldVanish()
|
public boolean isFFldVanish()
|
||||||
{
|
{
|
||||||
return fFldVanish.isSet(field_2_format_flags);
|
return fFldVanish.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -919,9 +904,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFSmallCaps(boolean value)
|
public void setFSmallCaps(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fSmallCaps.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fSmallCaps.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -931,7 +914,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFSmallCaps()
|
public boolean isFSmallCaps()
|
||||||
{
|
{
|
||||||
return fSmallCaps.isSet(field_2_format_flags);
|
return fSmallCaps.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -940,9 +922,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFCaps(boolean value)
|
public void setFCaps(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fCaps.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fCaps.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -952,7 +932,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFCaps()
|
public boolean isFCaps()
|
||||||
{
|
{
|
||||||
return fCaps.isSet(field_2_format_flags);
|
return fCaps.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -961,9 +940,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFVanish(boolean value)
|
public void setFVanish(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fVanish.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fVanish.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -973,7 +950,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFVanish()
|
public boolean isFVanish()
|
||||||
{
|
{
|
||||||
return fVanish.isSet(field_2_format_flags);
|
return fVanish.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -982,9 +958,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFRMark(boolean value)
|
public void setFRMark(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fRMark.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fRMark.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -994,7 +968,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFRMark()
|
public boolean isFRMark()
|
||||||
{
|
{
|
||||||
return fRMark.isSet(field_2_format_flags);
|
return fRMark.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1003,9 +976,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFSpec(boolean value)
|
public void setFSpec(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fSpec.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fSpec.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1015,7 +986,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFSpec()
|
public boolean isFSpec()
|
||||||
{
|
{
|
||||||
return fSpec.isSet(field_2_format_flags);
|
return fSpec.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1024,9 +994,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFStrike(boolean value)
|
public void setFStrike(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fStrike.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fStrike.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1036,7 +1004,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFStrike()
|
public boolean isFStrike()
|
||||||
{
|
{
|
||||||
return fStrike.isSet(field_2_format_flags);
|
return fStrike.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1045,9 +1012,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFObj(boolean value)
|
public void setFObj(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fObj.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fObj.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1057,7 +1022,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFObj()
|
public boolean isFObj()
|
||||||
{
|
{
|
||||||
return fObj.isSet(field_2_format_flags);
|
return fObj.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1066,9 +1030,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFShadow(boolean value)
|
public void setFShadow(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fShadow.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fShadow.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1078,7 +1040,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFShadow()
|
public boolean isFShadow()
|
||||||
{
|
{
|
||||||
return fShadow.isSet(field_2_format_flags);
|
return fShadow.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1087,9 +1048,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFLowerCase(boolean value)
|
public void setFLowerCase(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fLowerCase.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fLowerCase.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1099,7 +1058,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFLowerCase()
|
public boolean isFLowerCase()
|
||||||
{
|
{
|
||||||
return fLowerCase.isSet(field_2_format_flags);
|
return fLowerCase.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1108,9 +1066,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFData(boolean value)
|
public void setFData(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fData.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fData.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1120,7 +1076,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFData()
|
public boolean isFData()
|
||||||
{
|
{
|
||||||
return fData.isSet(field_2_format_flags);
|
return fData.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1129,9 +1084,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFOle2(boolean value)
|
public void setFOle2(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fOle2.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fOle2.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1141,7 +1094,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFOle2()
|
public boolean isFOle2()
|
||||||
{
|
{
|
||||||
return fOle2.isSet(field_2_format_flags);
|
return fOle2.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1150,9 +1102,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFEmboss(boolean value)
|
public void setFEmboss(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fEmboss.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fEmboss.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1162,7 +1112,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFEmboss()
|
public boolean isFEmboss()
|
||||||
{
|
{
|
||||||
return fEmboss.isSet(field_3_format_flags1);
|
return fEmboss.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1171,9 +1120,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFImprint(boolean value)
|
public void setFImprint(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fImprint.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fImprint.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1183,7 +1130,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFImprint()
|
public boolean isFImprint()
|
||||||
{
|
{
|
||||||
return fImprint.isSet(field_3_format_flags1);
|
return fImprint.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1192,9 +1138,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFDStrike(boolean value)
|
public void setFDStrike(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fDStrike.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fDStrike.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1204,7 +1148,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFDStrike()
|
public boolean isFDStrike()
|
||||||
{
|
{
|
||||||
return fDStrike.isSet(field_3_format_flags1);
|
return fDStrike.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1213,9 +1156,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFUsePgsuSettings(boolean value)
|
public void setFUsePgsuSettings(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fUsePgsuSettings.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fUsePgsuSettings.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1225,7 +1166,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFUsePgsuSettings()
|
public boolean isFUsePgsuSettings()
|
||||||
{
|
{
|
||||||
return fUsePgsuSettings.isSet(field_3_format_flags1);
|
return fUsePgsuSettings.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1235,8 +1175,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setIcoHighlight(byte value)
|
public void setIcoHighlight(byte value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)icoHighlight.setValue(field_33_Highlight, value);
|
field_33_Highlight = (short)icoHighlight.setValue(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1246,7 +1184,6 @@ public abstract class CHPAbstractType
|
|||||||
public byte getIcoHighlight()
|
public byte getIcoHighlight()
|
||||||
{
|
{
|
||||||
return ( byte )icoHighlight.getValue(field_33_Highlight);
|
return ( byte )icoHighlight.getValue(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1256,8 +1193,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFHighlight(boolean value)
|
public void setFHighlight(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fHighlight.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fHighlight.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1267,7 +1202,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFHighlight()
|
public boolean isFHighlight()
|
||||||
{
|
{
|
||||||
return fHighlight.isSet(field_33_Highlight);
|
return fHighlight.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1277,8 +1211,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setKcd(byte value)
|
public void setKcd(byte value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)kcd.setValue(field_33_Highlight, value);
|
field_33_Highlight = (short)kcd.setValue(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1288,7 +1220,6 @@ public abstract class CHPAbstractType
|
|||||||
public byte getKcd()
|
public byte getKcd()
|
||||||
{
|
{
|
||||||
return ( byte )kcd.getValue(field_33_Highlight);
|
return ( byte )kcd.getValue(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1298,8 +1229,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFNavHighlight(boolean value)
|
public void setFNavHighlight(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fNavHighlight.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fNavHighlight.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1309,7 +1238,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFNavHighlight()
|
public boolean isFNavHighlight()
|
||||||
{
|
{
|
||||||
return fNavHighlight.isSet(field_33_Highlight);
|
return fNavHighlight.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1319,8 +1247,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFChsDiff(boolean value)
|
public void setFChsDiff(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fChsDiff.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fChsDiff.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1330,7 +1256,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFChsDiff()
|
public boolean isFChsDiff()
|
||||||
{
|
{
|
||||||
return fChsDiff.isSet(field_33_Highlight);
|
return fChsDiff.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1340,8 +1265,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFMacChs(boolean value)
|
public void setFMacChs(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fMacChs.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fMacChs.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1351,7 +1274,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFMacChs()
|
public boolean isFMacChs()
|
||||||
{
|
{
|
||||||
return fMacChs.isSet(field_33_Highlight);
|
return fMacChs.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1361,8 +1283,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFFtcAsciSym(boolean value)
|
public void setFFtcAsciSym(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fFtcAsciSym.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fFtcAsciSym.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1372,12 +1292,5 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFFtcAsciSym()
|
public boolean isFFtcAsciSym()
|
||||||
{
|
{
|
||||||
return fFtcAsciSym.isSet(field_33_Highlight);
|
return fFtcAsciSym.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // END OF CLASS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -50,8 +50,10 @@ public static byte fromInt(int b) {
|
|||||||
* This is a convenience method
|
* This is a convenience method
|
||||||
*/
|
*/
|
||||||
public static int fromByte(byte b) {
|
public static int fromByte(byte b) {
|
||||||
if(b >= 0) return (int)b;
|
if(b >= 0) {
|
||||||
return (int)(b + 256);
|
return b;
|
||||||
|
}
|
||||||
|
return b + 256;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -183,7 +185,7 @@ public void compress(InputStream src, OutputStream res) throws IOException {
|
|||||||
* Need our own class to handle keeping track of the
|
* Need our own class to handle keeping track of the
|
||||||
* code buffer, pending bytes to write out etc.
|
* code buffer, pending bytes to write out etc.
|
||||||
*/
|
*/
|
||||||
private class Compressor {
|
private static final class Compressor {
|
||||||
// We use 12 bit codes:
|
// We use 12 bit codes:
|
||||||
// * 0-255 are real bytes
|
// * 0-255 are real bytes
|
||||||
// * 256-4095 are the substring codes
|
// * 256-4095 are the substring codes
|
||||||
@ -213,6 +215,9 @@ private class Compressor {
|
|||||||
// And how many bits we've already set
|
// And how many bits we've already set
|
||||||
int maskBitsSet = 0;
|
int maskBitsSet = 0;
|
||||||
|
|
||||||
|
public Compressor() {
|
||||||
|
//
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Returns the last place that the bytes from rawCode are found
|
* Returns the last place that the bytes from rawCode are found
|
||||||
* at in the buffer, or -1 if they can't be found
|
* at in the buffer, or -1 if they can't be found
|
||||||
|
@ -51,11 +51,11 @@ public abstract class ChunkHeader {
|
|||||||
} else if(documentVersion == 5 || documentVersion == 4) {
|
} else if(documentVersion == 5 || documentVersion == 4) {
|
||||||
ChunkHeaderV4V5 ch = new ChunkHeaderV4V5();
|
ChunkHeaderV4V5 ch = new ChunkHeaderV4V5();
|
||||||
|
|
||||||
ch.type = (int)LittleEndian.getShort(data, offset + 0);
|
ch.type = LittleEndian.getShort(data, offset + 0);
|
||||||
ch.id = (int)LittleEndian.getShort(data, offset + 2);
|
ch.id = LittleEndian.getShort(data, offset + 2);
|
||||||
ch.unknown2 = (short)LittleEndian.getUnsignedByte(data, offset + 4);
|
ch.unknown2 = (short)LittleEndian.getUnsignedByte(data, offset + 4);
|
||||||
ch.unknown3 = (short)LittleEndian.getUnsignedByte(data, offset + 5);
|
ch.unknown3 = (short)LittleEndian.getUnsignedByte(data, offset + 5);
|
||||||
ch.unknown1 = (short)LittleEndian.getShort(data, offset + 6);
|
ch.unknown1 = LittleEndian.getShort(data, offset + 6);
|
||||||
ch.length = (int)LittleEndian.getUInt(data, offset + 8);
|
ch.length = (int)LittleEndian.getUInt(data, offset + 8);
|
||||||
|
|
||||||
return ch;
|
return ch;
|
||||||
|
@ -257,7 +257,7 @@ public final class HSLFSlideShow extends POIDocument {
|
|||||||
Record[] rec = new Record[lst.size()];
|
Record[] rec = new Record[lst.size()];
|
||||||
for (int i = 0; i < a.length; i++) {
|
for (int i = 0; i < a.length; i++) {
|
||||||
Integer offset = (Integer)a[i];
|
Integer offset = (Integer)a[i];
|
||||||
rec[i] = (Record)Record.buildRecordAtOffset(docstream, offset.intValue());
|
rec[i] = Record.buildRecordAtOffset(docstream, offset.intValue());
|
||||||
if(rec[i] instanceof PersistRecord) {
|
if(rec[i] instanceof PersistRecord) {
|
||||||
PersistRecord psr = (PersistRecord)rec[i];
|
PersistRecord psr = (PersistRecord)rec[i];
|
||||||
Integer id = (Integer)offset2id.get(offset);
|
Integer id = (Integer)offset2id.get(offset);
|
||||||
|
@ -41,9 +41,7 @@ import org.apache.poi.util.LittleEndian;
|
|||||||
*
|
*
|
||||||
* @author Nick Burch
|
* @author Nick Burch
|
||||||
*/
|
*/
|
||||||
|
public final class SlideShowDumper {
|
||||||
public final class SlideShowDumper
|
|
||||||
{
|
|
||||||
private InputStream istream;
|
private InputStream istream;
|
||||||
private POIFSFileSystem filesystem;
|
private POIFSFileSystem filesystem;
|
||||||
|
|
||||||
@ -196,7 +194,7 @@ public final class SlideShowDumper
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String makeHex(short s) {
|
public String makeHex(short s) {
|
||||||
String hex = Integer.toHexString((int)s).toUpperCase();
|
String hex = Integer.toHexString(s).toUpperCase();
|
||||||
if(hex.length() == 1) { return "0" + hex; }
|
if(hex.length() == 1) { return "0" + hex; }
|
||||||
return hex;
|
return hex;
|
||||||
}
|
}
|
||||||
@ -232,7 +230,7 @@ public void walkTree(int depth, int startPos, int maxLen) {
|
|||||||
System.out.println(ind + "That's a " + recordName);
|
System.out.println(ind + "That's a " + recordName);
|
||||||
|
|
||||||
// Now check if it's a container or not
|
// Now check if it's a container or not
|
||||||
int container = (int)opt & 0x0f;
|
int container = opt & 0x0f;
|
||||||
|
|
||||||
// BinaryTagData seems to contain records, but it
|
// BinaryTagData seems to contain records, but it
|
||||||
// isn't tagged as doing so. Try stepping in anyway
|
// isn't tagged as doing so. Try stepping in anyway
|
||||||
|
@ -53,9 +53,7 @@ import org.apache.poi.hslf.model.TextRun;
|
|||||||
*
|
*
|
||||||
* @author Nick Burch
|
* @author Nick Burch
|
||||||
*/
|
*/
|
||||||
|
public final class QuickButCruddyTextExtractor {
|
||||||
public final class QuickButCruddyTextExtractor
|
|
||||||
{
|
|
||||||
private POIFSFileSystem fs;
|
private POIFSFileSystem fs;
|
||||||
private InputStream is;
|
private InputStream is;
|
||||||
private byte[] pptContents;
|
private byte[] pptContents;
|
||||||
@ -169,7 +167,7 @@ public final class QuickButCruddyTextExtractor
|
|||||||
|
|
||||||
// If it's a container, step into it and return
|
// If it's a container, step into it and return
|
||||||
// (If it's a container, option byte 1 BINARY_AND 0x0f will be 0x0f)
|
// (If it's a container, option byte 1 BINARY_AND 0x0f will be 0x0f)
|
||||||
int container = (int)opt & 0x0f;
|
int container = opt & 0x0f;
|
||||||
if(container == 0x0f) {
|
if(container == 0x0f) {
|
||||||
return (startPos+8);
|
return (startPos+8);
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,22 @@
|
|||||||
|
|
||||||
package org.apache.poi.hslf.model;
|
package org.apache.poi.hslf.model;
|
||||||
|
|
||||||
import org.apache.poi.ddf.*;
|
import java.awt.geom.AffineTransform;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import java.awt.geom.GeneralPath;
|
||||||
import org.apache.poi.util.POILogger;
|
import java.awt.geom.PathIterator;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.geom.*;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.poi.ddf.EscherArrayProperty;
|
||||||
|
import org.apache.poi.ddf.EscherContainerRecord;
|
||||||
|
import org.apache.poi.ddf.EscherOptRecord;
|
||||||
|
import org.apache.poi.ddf.EscherProperties;
|
||||||
|
import org.apache.poi.ddf.EscherSimpleProperty;
|
||||||
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
import org.apache.poi.util.POILogger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A "Freeform" shape.
|
* A "Freeform" shape.
|
||||||
@ -85,8 +94,8 @@ public final class Freeform extends AutoShape {
|
|||||||
Rectangle2D bounds = path.getBounds2D();
|
Rectangle2D bounds = path.getBounds2D();
|
||||||
PathIterator it = path.getPathIterator(new AffineTransform());
|
PathIterator it = path.getPathIterator(new AffineTransform());
|
||||||
|
|
||||||
ArrayList segInfo = new ArrayList();
|
List<byte[]> segInfo = new ArrayList<byte[]>();
|
||||||
ArrayList pntInfo = new ArrayList();
|
List<Point2D.Double> pntInfo = new ArrayList<Point2D.Double>();
|
||||||
boolean isClosed = false;
|
boolean isClosed = false;
|
||||||
while (!it.isDone()) {
|
while (!it.isDone()) {
|
||||||
double[] vals = new double[6];
|
double[] vals = new double[6];
|
||||||
@ -135,7 +144,7 @@ public final class Freeform extends AutoShape {
|
|||||||
verticesProp.setNumberOfElementsInMemory(pntInfo.size());
|
verticesProp.setNumberOfElementsInMemory(pntInfo.size());
|
||||||
verticesProp.setSizeOfElements(0xFFF0);
|
verticesProp.setSizeOfElements(0xFFF0);
|
||||||
for (int i = 0; i < pntInfo.size(); i++) {
|
for (int i = 0; i < pntInfo.size(); i++) {
|
||||||
Point2D.Double pnt = (Point2D.Double)pntInfo.get(i);
|
Point2D.Double pnt = pntInfo.get(i);
|
||||||
byte[] data = new byte[4];
|
byte[] data = new byte[4];
|
||||||
LittleEndian.putShort(data, 0, (short)((pnt.getX() - bounds.getX())*MASTER_DPI/POINT_DPI));
|
LittleEndian.putShort(data, 0, (short)((pnt.getX() - bounds.getX())*MASTER_DPI/POINT_DPI));
|
||||||
LittleEndian.putShort(data, 2, (short)((pnt.getY() - bounds.getY())*MASTER_DPI/POINT_DPI));
|
LittleEndian.putShort(data, 2, (short)((pnt.getY() - bounds.getY())*MASTER_DPI/POINT_DPI));
|
||||||
@ -148,7 +157,7 @@ public final class Freeform extends AutoShape {
|
|||||||
segmentsProp.setNumberOfElementsInMemory(segInfo.size());
|
segmentsProp.setNumberOfElementsInMemory(segInfo.size());
|
||||||
segmentsProp.setSizeOfElements(0x2);
|
segmentsProp.setSizeOfElements(0x2);
|
||||||
for (int i = 0; i < segInfo.size(); i++) {
|
for (int i = 0; i < segInfo.size(); i++) {
|
||||||
byte[] seg = (byte[])segInfo.get(i);
|
byte[] seg = segInfo.get(i);
|
||||||
segmentsProp.setElement(i, seg);
|
segmentsProp.setElement(i, seg);
|
||||||
}
|
}
|
||||||
opt.addEscherProperty(segmentsProp);
|
opt.addEscherProperty(segmentsProp);
|
||||||
@ -171,10 +180,10 @@ public final class Freeform extends AutoShape {
|
|||||||
opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__SHAPEPATH, 0x4));
|
opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__SHAPEPATH, 0x4));
|
||||||
|
|
||||||
EscherArrayProperty verticesProp = (EscherArrayProperty)getEscherProperty(opt, (short)(EscherProperties.GEOMETRY__VERTICES + 0x4000));
|
EscherArrayProperty verticesProp = (EscherArrayProperty)getEscherProperty(opt, (short)(EscherProperties.GEOMETRY__VERTICES + 0x4000));
|
||||||
if(verticesProp == null) verticesProp = (EscherArrayProperty)getEscherProperty(opt, (short)(EscherProperties.GEOMETRY__VERTICES));
|
if(verticesProp == null) verticesProp = (EscherArrayProperty)getEscherProperty(opt, EscherProperties.GEOMETRY__VERTICES);
|
||||||
|
|
||||||
EscherArrayProperty segmentsProp = (EscherArrayProperty)getEscherProperty(opt, (short)(EscherProperties.GEOMETRY__SEGMENTINFO + 0x4000));
|
EscherArrayProperty segmentsProp = (EscherArrayProperty)getEscherProperty(opt, (short)(EscherProperties.GEOMETRY__SEGMENTINFO + 0x4000));
|
||||||
if(segmentsProp == null) segmentsProp = (EscherArrayProperty)getEscherProperty(opt, (short)(EscherProperties.GEOMETRY__SEGMENTINFO));
|
if(segmentsProp == null) segmentsProp = (EscherArrayProperty)getEscherProperty(opt, EscherProperties.GEOMETRY__SEGMENTINFO);
|
||||||
|
|
||||||
//sanity check
|
//sanity check
|
||||||
if(verticesProp == null) {
|
if(verticesProp == null) {
|
||||||
|
@ -58,7 +58,7 @@ public final class CString extends RecordAtom {
|
|||||||
* The meaning of the count is specific to the type of the parent record
|
* The meaning of the count is specific to the type of the parent record
|
||||||
*/
|
*/
|
||||||
public int getOptions() {
|
public int getOptions() {
|
||||||
return (int)LittleEndian.getShort(_header);
|
return LittleEndian.getShort(_header);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,9 +30,7 @@ import java.io.ByteArrayOutputStream;
|
|||||||
*
|
*
|
||||||
* @author Nick Burch
|
* @author Nick Burch
|
||||||
*/
|
*/
|
||||||
|
public final class ColorSchemeAtom extends RecordAtom {
|
||||||
public final class ColorSchemeAtom extends RecordAtom
|
|
||||||
{
|
|
||||||
private byte[] _header;
|
private byte[] _header;
|
||||||
private static long _type = 2032l;
|
private static long _type = 2032l;
|
||||||
|
|
||||||
@ -108,14 +106,14 @@ public final class ColorSchemeAtom extends RecordAtom
|
|||||||
System.arraycopy(source,start,_header,0,8);
|
System.arraycopy(source,start,_header,0,8);
|
||||||
|
|
||||||
// Grab the rgb values
|
// Grab the rgb values
|
||||||
backgroundColourRGB = (int)LittleEndian.getInt(source,start+8+0);
|
backgroundColourRGB = LittleEndian.getInt(source,start+8+0);
|
||||||
textAndLinesColourRGB = (int)LittleEndian.getInt(source,start+8+4);
|
textAndLinesColourRGB = LittleEndian.getInt(source,start+8+4);
|
||||||
shadowsColourRGB = (int)LittleEndian.getInt(source,start+8+8);
|
shadowsColourRGB = LittleEndian.getInt(source,start+8+8);
|
||||||
titleTextColourRGB = (int)LittleEndian.getInt(source,start+8+12);
|
titleTextColourRGB = LittleEndian.getInt(source,start+8+12);
|
||||||
fillsColourRGB = (int)LittleEndian.getInt(source,start+8+16);
|
fillsColourRGB = LittleEndian.getInt(source,start+8+16);
|
||||||
accentColourRGB = (int)LittleEndian.getInt(source,start+8+20);
|
accentColourRGB = LittleEndian.getInt(source,start+8+20);
|
||||||
accentAndHyperlinkColourRGB = (int)LittleEndian.getInt(source,start+8+24);
|
accentAndHyperlinkColourRGB = LittleEndian.getInt(source,start+8+24);
|
||||||
accentAndFollowingHyperlinkColourRGB = (int)LittleEndian.getInt(source,start+8+28);
|
accentAndFollowingHyperlinkColourRGB = LittleEndian.getInt(source,start+8+28);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,7 +179,7 @@ public final class ColorSchemeAtom extends RecordAtom
|
|||||||
byte[] with_zero = new byte[4];
|
byte[] with_zero = new byte[4];
|
||||||
System.arraycopy(rgb,0,with_zero,0,3);
|
System.arraycopy(rgb,0,with_zero,0,3);
|
||||||
with_zero[3] = 0;
|
with_zero[3] = 0;
|
||||||
int ret = (int)LittleEndian.getInt(with_zero,0);
|
int ret = LittleEndian.getInt(with_zero,0);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,5 +214,4 @@ public final class ColorSchemeAtom extends RecordAtom
|
|||||||
fillsColourRGB, accentColourRGB, accentAndHyperlinkColourRGB, accentAndFollowingHyperlinkColourRGB};
|
fillsColourRGB, accentColourRGB, accentAndHyperlinkColourRGB, accentAndFollowingHyperlinkColourRGB};
|
||||||
return clr[idx];
|
return clr[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -80,16 +80,23 @@ public final class DocumentAtom extends RecordAtom
|
|||||||
|
|
||||||
/** Was the document saved with True Type fonts embeded? */
|
/** Was the document saved with True Type fonts embeded? */
|
||||||
public boolean getSaveWithFonts() {
|
public boolean getSaveWithFonts() {
|
||||||
if(saveWithFonts == 0) { return false; } else { return true; } }
|
return saveWithFonts != 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Have the placeholders on the title slide been omitted? */
|
/** Have the placeholders on the title slide been omitted? */
|
||||||
public boolean getOmitTitlePlace() {
|
public boolean getOmitTitlePlace() {
|
||||||
if(omitTitlePlace == 0) { return false; } else { return true; } }
|
return omitTitlePlace != 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Is this a Bi-Directional PPT Doc? */
|
/** Is this a Bi-Directional PPT Doc? */
|
||||||
public boolean getRightToLeft() {
|
public boolean getRightToLeft() {
|
||||||
if(rightToLeft == 0) { return false; } else { return true; } }
|
return rightToLeft != 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Are comment shapes visible? */
|
/** Are comment shapes visible? */
|
||||||
public boolean getShowComments() {
|
public boolean getShowComments() {
|
||||||
if(showComments == 0) { return false; } else { return true; } }
|
return showComments != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* *************** record code follows ********************** */
|
/* *************** record code follows ********************** */
|
||||||
@ -118,10 +125,10 @@ public final class DocumentAtom extends RecordAtom
|
|||||||
handoutMasterPersist = LittleEndian.getInt(source,start+28+8);
|
handoutMasterPersist = LittleEndian.getInt(source,start+28+8);
|
||||||
|
|
||||||
// Get the ID of the first slide
|
// Get the ID of the first slide
|
||||||
firstSlideNum = (int)LittleEndian.getShort(source,start+32+8);
|
firstSlideNum = LittleEndian.getShort(source,start+32+8);
|
||||||
|
|
||||||
// Get the slide size type
|
// Get the slide size type
|
||||||
slideSizeType = (int)LittleEndian.getShort(source,start+34+8);
|
slideSizeType = LittleEndian.getShort(source,start+34+8);
|
||||||
|
|
||||||
// Get the booleans as bytes
|
// Get the booleans as bytes
|
||||||
saveWithFonts = source[start+36+8];
|
saveWithFonts = source[start+36+8];
|
||||||
|
@ -32,9 +32,7 @@ import java.io.ByteArrayOutputStream;
|
|||||||
*
|
*
|
||||||
* @author Nick Burch
|
* @author Nick Burch
|
||||||
*/
|
*/
|
||||||
|
public final class EscherTextboxWrapper extends RecordContainer {
|
||||||
public final class EscherTextboxWrapper extends RecordContainer
|
|
||||||
{
|
|
||||||
private EscherTextboxRecord _escherRecord;
|
private EscherTextboxRecord _escherRecord;
|
||||||
private long _type;
|
private long _type;
|
||||||
private int shapeId;
|
private int shapeId;
|
||||||
@ -49,7 +47,7 @@ public final class EscherTextboxWrapper extends RecordContainer
|
|||||||
*/
|
*/
|
||||||
public EscherTextboxWrapper(EscherTextboxRecord textbox) {
|
public EscherTextboxWrapper(EscherTextboxRecord textbox) {
|
||||||
_escherRecord = textbox;
|
_escherRecord = textbox;
|
||||||
_type = (long)_escherRecord.getRecordId();
|
_type = _escherRecord.getRecordId();
|
||||||
|
|
||||||
// Find the child records in the escher data
|
// Find the child records in the escher data
|
||||||
byte[] data = _escherRecord.getData();
|
byte[] data = _escherRecord.getData();
|
||||||
|
@ -65,7 +65,7 @@ public final class NotesAtom extends RecordAtom
|
|||||||
System.arraycopy(source,start,_header,0,8);
|
System.arraycopy(source,start,_header,0,8);
|
||||||
|
|
||||||
// Get the slide ID
|
// Get the slide ID
|
||||||
slideID = (int)LittleEndian.getInt(source,start+8);
|
slideID = LittleEndian.getInt(source,start+8);
|
||||||
|
|
||||||
// Grok the flags, stored as bits
|
// Grok the flags, stored as bits
|
||||||
int flags = LittleEndian.getUShort(source,start+12);
|
int flags = LittleEndian.getUShort(source,start+12);
|
||||||
|
@ -86,8 +86,8 @@ public final class SlideAtom extends RecordAtom
|
|||||||
layoutAtom = new SSlideLayoutAtom(SSlideLayoutAtomData);
|
layoutAtom = new SSlideLayoutAtom(SSlideLayoutAtomData);
|
||||||
|
|
||||||
// Get the IDs of the master and notes
|
// Get the IDs of the master and notes
|
||||||
masterID = (int)LittleEndian.getInt(source,start+12+8);
|
masterID = LittleEndian.getInt(source,start+12+8);
|
||||||
notesID = (int)LittleEndian.getInt(source,start+16+8);
|
notesID = LittleEndian.getInt(source,start+16+8);
|
||||||
|
|
||||||
// Grok the flags, stored as bits
|
// Grok the flags, stored as bits
|
||||||
int flags = LittleEndian.getUShort(source,start+20+8);
|
int flags = LittleEndian.getUShort(source,start+20+8);
|
||||||
@ -214,7 +214,7 @@ public final class SlideAtom extends RecordAtom
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Grab out our data
|
// Grab out our data
|
||||||
geometry = (int)LittleEndian.getInt(data,0);
|
geometry = LittleEndian.getInt(data,0);
|
||||||
placeholderIDs = new byte[8];
|
placeholderIDs = new byte[8];
|
||||||
System.arraycopy(data,4,placeholderIDs,0,8);
|
System.arraycopy(data,4,placeholderIDs,0,8);
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,7 @@ import java.io.OutputStream;
|
|||||||
*
|
*
|
||||||
* @author Nick Burch
|
* @author Nick Burch
|
||||||
*/
|
*/
|
||||||
|
public final class SlidePersistAtom extends RecordAtom {
|
||||||
public final class SlidePersistAtom extends RecordAtom
|
|
||||||
{
|
|
||||||
private byte[] _header;
|
private byte[] _header;
|
||||||
private static long _type = 1011l;
|
private static long _type = 1011l;
|
||||||
|
|
||||||
@ -76,10 +74,10 @@ public final class SlidePersistAtom extends RecordAtom
|
|||||||
System.arraycopy(source,start,_header,0,8);
|
System.arraycopy(source,start,_header,0,8);
|
||||||
|
|
||||||
// Grab the reference ID
|
// Grab the reference ID
|
||||||
refID = (int)LittleEndian.getInt(source,start+8);
|
refID = LittleEndian.getInt(source,start+8);
|
||||||
|
|
||||||
// Next up is a set of flags, but only bit 3 is used!
|
// Next up is a set of flags, but only bit 3 is used!
|
||||||
int flags = (int)LittleEndian.getInt(source,start+12);
|
int flags = LittleEndian.getInt(source,start+12);
|
||||||
if(flags == 4) {
|
if(flags == 4) {
|
||||||
hasShapesOtherThanPlaceholders = true;
|
hasShapesOtherThanPlaceholders = true;
|
||||||
} else {
|
} else {
|
||||||
@ -87,10 +85,10 @@ public final class SlidePersistAtom extends RecordAtom
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Now the number of Placeholder Texts
|
// Now the number of Placeholder Texts
|
||||||
numPlaceholderTexts = (int)LittleEndian.getInt(source,start+16);
|
numPlaceholderTexts = LittleEndian.getInt(source,start+16);
|
||||||
|
|
||||||
// Last useful one is the unique slide identifier
|
// Last useful one is the unique slide identifier
|
||||||
slideIdentifier = (int)LittleEndian.getInt(source,start+20);
|
slideIdentifier = LittleEndian.getInt(source,start+20);
|
||||||
|
|
||||||
// Finally you have typically 4 or 8 bytes of reserved fields,
|
// Finally you have typically 4 or 8 bytes of reserved fields,
|
||||||
// all zero running from 24 bytes in to the end
|
// all zero running from 24 bytes in to the end
|
||||||
|
@ -72,7 +72,7 @@ public final class TextHeaderAtom extends RecordAtom implements ParentAwareRecor
|
|||||||
System.arraycopy(source,start,_header,0,8);
|
System.arraycopy(source,start,_header,0,8);
|
||||||
|
|
||||||
// Grab the type
|
// Grab the type
|
||||||
textType = (int)LittleEndian.getInt(source,start+8);
|
textType = LittleEndian.getInt(source,start+8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,30 +82,30 @@ public final class UserEditAtom extends PositionDependentRecordAtom
|
|||||||
System.arraycopy(source,start,_header,0,8);
|
System.arraycopy(source,start,_header,0,8);
|
||||||
|
|
||||||
// Get the last viewed slide ID
|
// Get the last viewed slide ID
|
||||||
lastViewedSlideID = (int)LittleEndian.getInt(source,start+0+8);
|
lastViewedSlideID = LittleEndian.getInt(source,start+0+8);
|
||||||
|
|
||||||
// Get the PPT version
|
// Get the PPT version
|
||||||
pptVersion = (int)LittleEndian.getInt(source,start+4+8);
|
pptVersion = LittleEndian.getInt(source,start+4+8);
|
||||||
|
|
||||||
// Get the offset to the previous incremental save's UserEditAtom
|
// Get the offset to the previous incremental save's UserEditAtom
|
||||||
// This will be the byte offset on disk where the previous one
|
// This will be the byte offset on disk where the previous one
|
||||||
// starts, or 0 if this is the first one
|
// starts, or 0 if this is the first one
|
||||||
lastUserEditAtomOffset = (int)LittleEndian.getInt(source,start+8+8);
|
lastUserEditAtomOffset = LittleEndian.getInt(source,start+8+8);
|
||||||
|
|
||||||
// Get the offset to the persist pointers
|
// Get the offset to the persist pointers
|
||||||
// This will be the byte offset on disk where the preceding
|
// This will be the byte offset on disk where the preceding
|
||||||
// PersistPtrFullBlock or PersistPtrIncrementalBlock starts
|
// PersistPtrFullBlock or PersistPtrIncrementalBlock starts
|
||||||
persistPointersOffset = (int)LittleEndian.getInt(source,start+12+8);
|
persistPointersOffset = LittleEndian.getInt(source,start+12+8);
|
||||||
|
|
||||||
// Get the persist reference for the document persist object
|
// Get the persist reference for the document persist object
|
||||||
// Normally seems to be 1
|
// Normally seems to be 1
|
||||||
docPersistRef = (int)LittleEndian.getInt(source,start+16+8);
|
docPersistRef = LittleEndian.getInt(source,start+16+8);
|
||||||
|
|
||||||
// Maximum number of persist objects written
|
// Maximum number of persist objects written
|
||||||
maxPersistWritten = (int)LittleEndian.getInt(source,start+20+8);
|
maxPersistWritten = LittleEndian.getInt(source,start+20+8);
|
||||||
|
|
||||||
// Last view type
|
// Last view type
|
||||||
lastViewType = (short)LittleEndian.getShort(source,start+24+8);
|
lastViewType = LittleEndian.getShort(source,start+24+8);
|
||||||
|
|
||||||
// There might be a few more bytes, which are a reserved field
|
// There might be a few more bytes, which are a reserved field
|
||||||
reserved = new byte[len-26-8];
|
reserved = new byte[len-26-8];
|
||||||
|
@ -47,12 +47,8 @@ import org.apache.poi.poifs.storage.BlockWritable;
|
|||||||
*
|
*
|
||||||
* @author Travis Ferguson
|
* @author Travis Ferguson
|
||||||
*/
|
*/
|
||||||
public class POIFSChunkParser {
|
public final class POIFSChunkParser {
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
* @param fs
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
public POIFSChunkParser(POIFSFileSystem fs) throws IOException {
|
public POIFSChunkParser(POIFSFileSystem fs) throws IOException {
|
||||||
this.setFileSystem(fs);
|
this.setFileSystem(fs);
|
||||||
}
|
}
|
||||||
@ -61,7 +57,6 @@ public class POIFSChunkParser {
|
|||||||
/**
|
/**
|
||||||
* Set the POIFileSystem object that this object is using.
|
* Set the POIFileSystem object that this object is using.
|
||||||
* @param fs
|
* @param fs
|
||||||
* @throws IOException
|
|
||||||
*/
|
*/
|
||||||
public void setFileSystem(POIFSFileSystem fs) throws IOException {
|
public void setFileSystem(POIFSFileSystem fs) throws IOException {
|
||||||
this.fs = fs;
|
this.fs = fs;
|
||||||
@ -77,7 +72,6 @@ public class POIFSChunkParser {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reparse the FileSystem object, resetting all the chunks stored in this object
|
* Reparse the FileSystem object, resetting all the chunks stored in this object
|
||||||
* @throws IOException
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void reparseFileSystem() throws IOException {
|
public void reparseFileSystem() throws IOException {
|
||||||
@ -138,10 +132,10 @@ public class POIFSChunkParser {
|
|||||||
* @param entryName
|
* @param entryName
|
||||||
*/
|
*/
|
||||||
public Object getChunk(HashMap dirMap, String entryName) {
|
public Object getChunk(HashMap dirMap, String entryName) {
|
||||||
if(dirMap == null) return null;
|
if(dirMap == null) {
|
||||||
else {
|
return null;
|
||||||
return dirMap.get(entryName);
|
|
||||||
}
|
}
|
||||||
|
return dirMap.get(entryName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -199,7 +193,7 @@ public class POIFSChunkParser {
|
|||||||
String attachmentIdString = entry.replace(AttachmentChunks.namePrefix, "");
|
String attachmentIdString = entry.replace(AttachmentChunks.namePrefix, "");
|
||||||
try {
|
try {
|
||||||
int attachmentId = Integer.parseInt(attachmentIdString);
|
int attachmentId = Integer.parseInt(attachmentIdString);
|
||||||
attachmentList.add((HashMap)directoryMap.get(entry));
|
attachmentList.add(directoryMap.get(entry));
|
||||||
} catch (NumberFormatException nfe) {
|
} catch (NumberFormatException nfe) {
|
||||||
System.err.println("Invalid attachment id");
|
System.err.println("Invalid attachment id");
|
||||||
}
|
}
|
||||||
@ -263,11 +257,11 @@ public class POIFSChunkParser {
|
|||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*/
|
*/
|
||||||
private void processDocumentNode(DocumentNode obj, HashMap currentObj) throws IOException {
|
private void processDocumentNode(DocumentNode obj, HashMap currentObj) throws IOException {
|
||||||
String blockName = ((DocumentNode)obj).getName();
|
String blockName = obj.getName();
|
||||||
|
|
||||||
Iterator viewIt = null;
|
Iterator viewIt = null;
|
||||||
if( ((DocumentNode)obj).preferArray()) {
|
if( obj.preferArray()) {
|
||||||
Object[] arr = ((DocumentNode)obj).getViewableArray();
|
Object[] arr = obj.getViewableArray();
|
||||||
ArrayList viewList = new ArrayList(arr.length);
|
ArrayList viewList = new ArrayList(arr.length);
|
||||||
|
|
||||||
for(int i = 0; i < arr.length; i++) {
|
for(int i = 0; i < arr.length; i++) {
|
||||||
@ -275,7 +269,7 @@ public class POIFSChunkParser {
|
|||||||
}
|
}
|
||||||
viewIt = viewList.iterator();
|
viewIt = viewList.iterator();
|
||||||
} else {
|
} else {
|
||||||
viewIt = ((DocumentNode)obj).getViewableIterator();
|
viewIt = obj.getViewableIterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
while(viewIt.hasNext()) {
|
while(viewIt.hasNext()) {
|
||||||
|
@ -133,7 +133,7 @@ public final class ListData
|
|||||||
|
|
||||||
int resetListID()
|
int resetListID()
|
||||||
{
|
{
|
||||||
_lsid = (int)(Math.random() * (double)System.currentTimeMillis());
|
_lsid = (int)(Math.random() * System.currentTimeMillis());
|
||||||
return _lsid;
|
return _lsid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,21 +225,19 @@ public final class StyleSheet implements HDFType {
|
|||||||
{
|
{
|
||||||
|
|
||||||
parentPAP = _styleDescriptions[baseIndex].getPAP();
|
parentPAP = _styleDescriptions[baseIndex].getPAP();
|
||||||
if(parentPAP == null)
|
if(parentPAP == null) {
|
||||||
{
|
|
||||||
if(baseIndex == istd) {
|
if(baseIndex == istd) {
|
||||||
// Oh dear, style claims that it is its own parent
|
// Oh dear, style claims that it is its own parent
|
||||||
throw new IllegalStateException("Pap style " + istd + " claimed to have itself as its parent, which isn't allowed");
|
throw new IllegalStateException("Pap style " + istd + " claimed to have itself as its parent, which isn't allowed");
|
||||||
} else {
|
}
|
||||||
// Create the parent style
|
// Create the parent style
|
||||||
createPap(baseIndex);
|
createPap(baseIndex);
|
||||||
parentPAP = _styleDescriptions[baseIndex].getPAP();
|
parentPAP = _styleDescriptions[baseIndex].getPAP();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pap = (ParagraphProperties)ParagraphSprmUncompressor.uncompressPAP(parentPAP, papx, 2);
|
pap = ParagraphSprmUncompressor.uncompressPAP(parentPAP, papx, 2);
|
||||||
sd.setPAP(pap);
|
sd.setPAP(pap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -274,7 +272,7 @@ public final class StyleSheet implements HDFType {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chp = (CharacterProperties)CharacterSprmUncompressor.uncompressCHP(parentCHP, chpx, 0);
|
chp = CharacterSprmUncompressor.uncompressCHP(parentCHP, chpx, 0);
|
||||||
sd.setCHP(chp);
|
sd.setCHP(chp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -818,9 +818,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFBold(boolean value)
|
public void setFBold(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fBold.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fBold.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -830,7 +828,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFBold()
|
public boolean isFBold()
|
||||||
{
|
{
|
||||||
return fBold.isSet(field_2_format_flags);
|
return fBold.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -839,9 +836,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFItalic(boolean value)
|
public void setFItalic(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fItalic.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fItalic.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -851,7 +846,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFItalic()
|
public boolean isFItalic()
|
||||||
{
|
{
|
||||||
return fItalic.isSet(field_2_format_flags);
|
return fItalic.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -860,9 +854,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFRMarkDel(boolean value)
|
public void setFRMarkDel(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fRMarkDel.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fRMarkDel.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -872,7 +864,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFRMarkDel()
|
public boolean isFRMarkDel()
|
||||||
{
|
{
|
||||||
return fRMarkDel.isSet(field_2_format_flags);
|
return fRMarkDel.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -881,9 +872,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFOutline(boolean value)
|
public void setFOutline(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fOutline.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fOutline.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -893,7 +882,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFOutline()
|
public boolean isFOutline()
|
||||||
{
|
{
|
||||||
return fOutline.isSet(field_2_format_flags);
|
return fOutline.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -902,9 +890,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFFldVanish(boolean value)
|
public void setFFldVanish(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fFldVanish.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fFldVanish.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -914,7 +900,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFFldVanish()
|
public boolean isFFldVanish()
|
||||||
{
|
{
|
||||||
return fFldVanish.isSet(field_2_format_flags);
|
return fFldVanish.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -923,9 +908,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFSmallCaps(boolean value)
|
public void setFSmallCaps(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fSmallCaps.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fSmallCaps.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -935,7 +918,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFSmallCaps()
|
public boolean isFSmallCaps()
|
||||||
{
|
{
|
||||||
return fSmallCaps.isSet(field_2_format_flags);
|
return fSmallCaps.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -944,9 +926,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFCaps(boolean value)
|
public void setFCaps(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fCaps.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fCaps.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -956,7 +936,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFCaps()
|
public boolean isFCaps()
|
||||||
{
|
{
|
||||||
return fCaps.isSet(field_2_format_flags);
|
return fCaps.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -965,9 +944,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFVanish(boolean value)
|
public void setFVanish(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fVanish.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fVanish.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -977,7 +954,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFVanish()
|
public boolean isFVanish()
|
||||||
{
|
{
|
||||||
return fVanish.isSet(field_2_format_flags);
|
return fVanish.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -986,9 +962,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFRMark(boolean value)
|
public void setFRMark(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fRMark.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fRMark.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -998,7 +972,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFRMark()
|
public boolean isFRMark()
|
||||||
{
|
{
|
||||||
return fRMark.isSet(field_2_format_flags);
|
return fRMark.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1007,9 +980,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFSpec(boolean value)
|
public void setFSpec(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fSpec.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fSpec.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1019,7 +990,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFSpec()
|
public boolean isFSpec()
|
||||||
{
|
{
|
||||||
return fSpec.isSet(field_2_format_flags);
|
return fSpec.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1028,9 +998,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFStrike(boolean value)
|
public void setFStrike(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fStrike.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fStrike.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1040,7 +1008,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFStrike()
|
public boolean isFStrike()
|
||||||
{
|
{
|
||||||
return fStrike.isSet(field_2_format_flags);
|
return fStrike.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1049,9 +1016,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFObj(boolean value)
|
public void setFObj(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fObj.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fObj.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1061,7 +1026,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFObj()
|
public boolean isFObj()
|
||||||
{
|
{
|
||||||
return fObj.isSet(field_2_format_flags);
|
return fObj.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1070,9 +1034,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFShadow(boolean value)
|
public void setFShadow(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fShadow.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fShadow.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1082,7 +1044,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFShadow()
|
public boolean isFShadow()
|
||||||
{
|
{
|
||||||
return fShadow.isSet(field_2_format_flags);
|
return fShadow.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1091,9 +1052,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFLowerCase(boolean value)
|
public void setFLowerCase(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fLowerCase.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fLowerCase.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1103,7 +1062,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFLowerCase()
|
public boolean isFLowerCase()
|
||||||
{
|
{
|
||||||
return fLowerCase.isSet(field_2_format_flags);
|
return fLowerCase.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1112,9 +1070,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFData(boolean value)
|
public void setFData(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fData.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fData.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1124,7 +1080,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFData()
|
public boolean isFData()
|
||||||
{
|
{
|
||||||
return fData.isSet(field_2_format_flags);
|
return fData.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1133,9 +1088,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFOle2(boolean value)
|
public void setFOle2(boolean value)
|
||||||
{
|
{
|
||||||
field_2_format_flags = (int)fOle2.setBoolean(field_2_format_flags, value);
|
field_2_format_flags = fOle2.setBoolean(field_2_format_flags, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1145,7 +1098,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFOle2()
|
public boolean isFOle2()
|
||||||
{
|
{
|
||||||
return fOle2.isSet(field_2_format_flags);
|
return fOle2.isSet(field_2_format_flags);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1154,9 +1106,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFEmboss(boolean value)
|
public void setFEmboss(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fEmboss.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fEmboss.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1166,7 +1116,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFEmboss()
|
public boolean isFEmboss()
|
||||||
{
|
{
|
||||||
return fEmboss.isSet(field_3_format_flags1);
|
return fEmboss.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1175,9 +1124,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFImprint(boolean value)
|
public void setFImprint(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fImprint.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fImprint.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1187,7 +1134,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFImprint()
|
public boolean isFImprint()
|
||||||
{
|
{
|
||||||
return fImprint.isSet(field_3_format_flags1);
|
return fImprint.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1196,9 +1142,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFDStrike(boolean value)
|
public void setFDStrike(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fDStrike.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fDStrike.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1208,7 +1152,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFDStrike()
|
public boolean isFDStrike()
|
||||||
{
|
{
|
||||||
return fDStrike.isSet(field_3_format_flags1);
|
return fDStrike.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1217,9 +1160,7 @@ public abstract class CHPAbstractType
|
|||||||
*/
|
*/
|
||||||
public void setFUsePgsuSettings(boolean value)
|
public void setFUsePgsuSettings(boolean value)
|
||||||
{
|
{
|
||||||
field_3_format_flags1 = (int)fUsePgsuSettings.setBoolean(field_3_format_flags1, value);
|
field_3_format_flags1 = fUsePgsuSettings.setBoolean(field_3_format_flags1, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1229,7 +1170,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFUsePgsuSettings()
|
public boolean isFUsePgsuSettings()
|
||||||
{
|
{
|
||||||
return fUsePgsuSettings.isSet(field_3_format_flags1);
|
return fUsePgsuSettings.isSet(field_3_format_flags1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1239,8 +1179,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setIcoHighlight(byte value)
|
public void setIcoHighlight(byte value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)icoHighlight.setValue(field_33_Highlight, value);
|
field_33_Highlight = (short)icoHighlight.setValue(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1250,7 +1188,6 @@ public abstract class CHPAbstractType
|
|||||||
public byte getIcoHighlight()
|
public byte getIcoHighlight()
|
||||||
{
|
{
|
||||||
return ( byte )icoHighlight.getValue(field_33_Highlight);
|
return ( byte )icoHighlight.getValue(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1260,8 +1197,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFHighlight(boolean value)
|
public void setFHighlight(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fHighlight.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fHighlight.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1271,7 +1206,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFHighlight()
|
public boolean isFHighlight()
|
||||||
{
|
{
|
||||||
return fHighlight.isSet(field_33_Highlight);
|
return fHighlight.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1281,8 +1215,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setKcd(byte value)
|
public void setKcd(byte value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)kcd.setValue(field_33_Highlight, value);
|
field_33_Highlight = (short)kcd.setValue(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1292,7 +1224,6 @@ public abstract class CHPAbstractType
|
|||||||
public byte getKcd()
|
public byte getKcd()
|
||||||
{
|
{
|
||||||
return ( byte )kcd.getValue(field_33_Highlight);
|
return ( byte )kcd.getValue(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1302,8 +1233,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFNavHighlight(boolean value)
|
public void setFNavHighlight(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fNavHighlight.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fNavHighlight.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1313,7 +1242,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFNavHighlight()
|
public boolean isFNavHighlight()
|
||||||
{
|
{
|
||||||
return fNavHighlight.isSet(field_33_Highlight);
|
return fNavHighlight.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1323,8 +1251,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFChsDiff(boolean value)
|
public void setFChsDiff(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fChsDiff.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fChsDiff.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1334,7 +1260,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFChsDiff()
|
public boolean isFChsDiff()
|
||||||
{
|
{
|
||||||
return fChsDiff.isSet(field_33_Highlight);
|
return fChsDiff.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1344,8 +1269,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFMacChs(boolean value)
|
public void setFMacChs(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fMacChs.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fMacChs.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1355,7 +1278,6 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFMacChs()
|
public boolean isFMacChs()
|
||||||
{
|
{
|
||||||
return fMacChs.isSet(field_33_Highlight);
|
return fMacChs.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1365,8 +1287,6 @@ public abstract class CHPAbstractType
|
|||||||
public void setFFtcAsciSym(boolean value)
|
public void setFFtcAsciSym(boolean value)
|
||||||
{
|
{
|
||||||
field_33_Highlight = (short)fFtcAsciSym.setBoolean(field_33_Highlight, value);
|
field_33_Highlight = (short)fFtcAsciSym.setBoolean(field_33_Highlight, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1376,12 +1296,5 @@ public abstract class CHPAbstractType
|
|||||||
public boolean isFFtcAsciSym()
|
public boolean isFFtcAsciSym()
|
||||||
{
|
{
|
||||||
return fFtcAsciSym.isSet(field_33_Highlight);
|
return fFtcAsciSym.isSet(field_33_Highlight);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // END OF CLASS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -88,26 +88,24 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
field_12_chsTables = LittleEndian.getShort(data, 0x16 + offset);
|
field_12_chsTables = LittleEndian.getShort(data, 0x16 + offset);
|
||||||
field_13_fcMin = LittleEndian.getInt(data, 0x18 + offset);
|
field_13_fcMin = LittleEndian.getInt(data, 0x18 + offset);
|
||||||
field_14_fcMac = LittleEndian.getInt(data, 0x1c + offset);
|
field_14_fcMac = LittleEndian.getInt(data, 0x1c + offset);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void serialize(byte[] data, int offset)
|
public void serialize(byte[] data, int offset)
|
||||||
{
|
{
|
||||||
LittleEndian.putShort(data, 0x0 + offset, (short)field_1_wIdent);;
|
LittleEndian.putShort(data, 0x0 + offset, (short)field_1_wIdent);
|
||||||
LittleEndian.putShort(data, 0x2 + offset, (short)field_2_nFib);;
|
LittleEndian.putShort(data, 0x2 + offset, (short)field_2_nFib);
|
||||||
LittleEndian.putShort(data, 0x4 + offset, (short)field_3_nProduct);;
|
LittleEndian.putShort(data, 0x4 + offset, (short)field_3_nProduct);
|
||||||
LittleEndian.putShort(data, 0x6 + offset, (short)field_4_lid);;
|
LittleEndian.putShort(data, 0x6 + offset, (short)field_4_lid);
|
||||||
LittleEndian.putShort(data, 0x8 + offset, (short)field_5_pnNext);;
|
LittleEndian.putShort(data, 0x8 + offset, (short)field_5_pnNext);
|
||||||
LittleEndian.putShort(data, 0xa + offset, (short)field_6_options);;
|
LittleEndian.putShort(data, 0xa + offset, field_6_options);
|
||||||
LittleEndian.putShort(data, 0xc + offset, (short)field_7_nFibBack);;
|
LittleEndian.putShort(data, 0xc + offset, (short)field_7_nFibBack);
|
||||||
LittleEndian.putShort(data, 0xe + offset, (short)field_8_lKey);;
|
LittleEndian.putShort(data, 0xe + offset, (short)field_8_lKey);
|
||||||
LittleEndian.putShort(data, 0x10 + offset, (short)field_9_envr);;
|
LittleEndian.putShort(data, 0x10 + offset, (short)field_9_envr);
|
||||||
LittleEndian.putShort(data, 0x12 + offset, (short)field_10_history);;
|
LittleEndian.putShort(data, 0x12 + offset, field_10_history);
|
||||||
LittleEndian.putShort(data, 0x14 + offset, (short)field_11_chs);;
|
LittleEndian.putShort(data, 0x14 + offset, (short)field_11_chs);
|
||||||
LittleEndian.putShort(data, 0x16 + offset, (short)field_12_chsTables);;
|
LittleEndian.putShort(data, 0x16 + offset, (short)field_12_chsTables);
|
||||||
LittleEndian.putInt(data, 0x18 + offset, field_13_fcMin);;
|
LittleEndian.putInt(data, 0x18 + offset, field_13_fcMin);
|
||||||
LittleEndian.putInt(data, 0x1c + offset, field_14_fcMac);;
|
LittleEndian.putInt(data, 0x1c + offset, field_14_fcMac);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString()
|
public String toString()
|
||||||
@ -422,8 +420,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFDot(boolean value)
|
public void setFDot(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fDot.setBoolean(field_6_options, value);
|
field_6_options = (short)fDot.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -433,7 +429,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFDot()
|
public boolean isFDot()
|
||||||
{
|
{
|
||||||
return fDot.isSet(field_6_options);
|
return fDot.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -443,8 +438,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFGlsy(boolean value)
|
public void setFGlsy(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fGlsy.setBoolean(field_6_options, value);
|
field_6_options = (short)fGlsy.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -454,7 +447,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFGlsy()
|
public boolean isFGlsy()
|
||||||
{
|
{
|
||||||
return fGlsy.isSet(field_6_options);
|
return fGlsy.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -464,8 +456,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFComplex(boolean value)
|
public void setFComplex(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fComplex.setBoolean(field_6_options, value);
|
field_6_options = (short)fComplex.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -475,7 +465,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFComplex()
|
public boolean isFComplex()
|
||||||
{
|
{
|
||||||
return fComplex.isSet(field_6_options);
|
return fComplex.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -485,8 +474,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFHasPic(boolean value)
|
public void setFHasPic(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fHasPic.setBoolean(field_6_options, value);
|
field_6_options = (short)fHasPic.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -496,7 +483,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFHasPic()
|
public boolean isFHasPic()
|
||||||
{
|
{
|
||||||
return fHasPic.isSet(field_6_options);
|
return fHasPic.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -506,8 +492,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setCQuickSaves(byte value)
|
public void setCQuickSaves(byte value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)cQuickSaves.setValue(field_6_options, value);
|
field_6_options = (short)cQuickSaves.setValue(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -517,7 +501,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public byte getCQuickSaves()
|
public byte getCQuickSaves()
|
||||||
{
|
{
|
||||||
return ( byte )cQuickSaves.getValue(field_6_options);
|
return ( byte )cQuickSaves.getValue(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -527,8 +510,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFEncrypted(boolean value)
|
public void setFEncrypted(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fEncrypted.setBoolean(field_6_options, value);
|
field_6_options = (short)fEncrypted.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -538,7 +519,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFEncrypted()
|
public boolean isFEncrypted()
|
||||||
{
|
{
|
||||||
return fEncrypted.isSet(field_6_options);
|
return fEncrypted.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -548,8 +528,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFWhichTblStm(boolean value)
|
public void setFWhichTblStm(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fWhichTblStm.setBoolean(field_6_options, value);
|
field_6_options = (short)fWhichTblStm.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -559,7 +537,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFWhichTblStm()
|
public boolean isFWhichTblStm()
|
||||||
{
|
{
|
||||||
return fWhichTblStm.isSet(field_6_options);
|
return fWhichTblStm.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -569,8 +546,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFReadOnlyRecommended(boolean value)
|
public void setFReadOnlyRecommended(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fReadOnlyRecommended.setBoolean(field_6_options, value);
|
field_6_options = (short)fReadOnlyRecommended.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -580,7 +555,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFReadOnlyRecommended()
|
public boolean isFReadOnlyRecommended()
|
||||||
{
|
{
|
||||||
return fReadOnlyRecommended.isSet(field_6_options);
|
return fReadOnlyRecommended.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -590,8 +564,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFWriteReservation(boolean value)
|
public void setFWriteReservation(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fWriteReservation.setBoolean(field_6_options, value);
|
field_6_options = (short)fWriteReservation.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -601,7 +573,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFWriteReservation()
|
public boolean isFWriteReservation()
|
||||||
{
|
{
|
||||||
return fWriteReservation.isSet(field_6_options);
|
return fWriteReservation.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -611,8 +582,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFExtChar(boolean value)
|
public void setFExtChar(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fExtChar.setBoolean(field_6_options, value);
|
field_6_options = (short)fExtChar.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -622,7 +591,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFExtChar()
|
public boolean isFExtChar()
|
||||||
{
|
{
|
||||||
return fExtChar.isSet(field_6_options);
|
return fExtChar.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -632,8 +600,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFLoadOverride(boolean value)
|
public void setFLoadOverride(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fLoadOverride.setBoolean(field_6_options, value);
|
field_6_options = (short)fLoadOverride.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -643,7 +609,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFLoadOverride()
|
public boolean isFLoadOverride()
|
||||||
{
|
{
|
||||||
return fLoadOverride.isSet(field_6_options);
|
return fLoadOverride.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -653,8 +618,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFFarEast(boolean value)
|
public void setFFarEast(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fFarEast.setBoolean(field_6_options, value);
|
field_6_options = (short)fFarEast.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -664,7 +627,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFFarEast()
|
public boolean isFFarEast()
|
||||||
{
|
{
|
||||||
return fFarEast.isSet(field_6_options);
|
return fFarEast.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -674,8 +636,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFCrypto(boolean value)
|
public void setFCrypto(boolean value)
|
||||||
{
|
{
|
||||||
field_6_options = (short)fCrypto.setBoolean(field_6_options, value);
|
field_6_options = (short)fCrypto.setBoolean(field_6_options, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -685,7 +645,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFCrypto()
|
public boolean isFCrypto()
|
||||||
{
|
{
|
||||||
return fCrypto.isSet(field_6_options);
|
return fCrypto.isSet(field_6_options);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -695,8 +654,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFMac(boolean value)
|
public void setFMac(boolean value)
|
||||||
{
|
{
|
||||||
field_10_history = (short)fMac.setBoolean(field_10_history, value);
|
field_10_history = (short)fMac.setBoolean(field_10_history, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -706,7 +663,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFMac()
|
public boolean isFMac()
|
||||||
{
|
{
|
||||||
return fMac.isSet(field_10_history);
|
return fMac.isSet(field_10_history);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -716,8 +672,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFEmptySpecial(boolean value)
|
public void setFEmptySpecial(boolean value)
|
||||||
{
|
{
|
||||||
field_10_history = (short)fEmptySpecial.setBoolean(field_10_history, value);
|
field_10_history = (short)fEmptySpecial.setBoolean(field_10_history, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -727,7 +681,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFEmptySpecial()
|
public boolean isFEmptySpecial()
|
||||||
{
|
{
|
||||||
return fEmptySpecial.isSet(field_10_history);
|
return fEmptySpecial.isSet(field_10_history);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -737,8 +690,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFLoadOverridePage(boolean value)
|
public void setFLoadOverridePage(boolean value)
|
||||||
{
|
{
|
||||||
field_10_history = (short)fLoadOverridePage.setBoolean(field_10_history, value);
|
field_10_history = (short)fLoadOverridePage.setBoolean(field_10_history, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -748,7 +699,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFLoadOverridePage()
|
public boolean isFLoadOverridePage()
|
||||||
{
|
{
|
||||||
return fLoadOverridePage.isSet(field_10_history);
|
return fLoadOverridePage.isSet(field_10_history);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -758,8 +708,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFFutureSavedUndo(boolean value)
|
public void setFFutureSavedUndo(boolean value)
|
||||||
{
|
{
|
||||||
field_10_history = (short)fFutureSavedUndo.setBoolean(field_10_history, value);
|
field_10_history = (short)fFutureSavedUndo.setBoolean(field_10_history, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -769,7 +717,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFFutureSavedUndo()
|
public boolean isFFutureSavedUndo()
|
||||||
{
|
{
|
||||||
return fFutureSavedUndo.isSet(field_10_history);
|
return fFutureSavedUndo.isSet(field_10_history);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -779,8 +726,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFWord97Saved(boolean value)
|
public void setFWord97Saved(boolean value)
|
||||||
{
|
{
|
||||||
field_10_history = (short)fWord97Saved.setBoolean(field_10_history, value);
|
field_10_history = (short)fWord97Saved.setBoolean(field_10_history, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -790,7 +735,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public boolean isFWord97Saved()
|
public boolean isFWord97Saved()
|
||||||
{
|
{
|
||||||
return fWord97Saved.isSet(field_10_history);
|
return fWord97Saved.isSet(field_10_history);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -800,8 +744,6 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public void setFSpare0(byte value)
|
public void setFSpare0(byte value)
|
||||||
{
|
{
|
||||||
field_10_history = (short)fSpare0.setValue(field_10_history, value);
|
field_10_history = (short)fSpare0.setValue(field_10_history, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -811,12 +753,5 @@ public abstract class FIBAbstractType implements HDFType {
|
|||||||
public byte getFSpare0()
|
public byte getFSpare0()
|
||||||
{
|
{
|
||||||
return ( byte )fSpare0.getValue(field_10_history);
|
return ( byte )fSpare0.getValue(field_10_history);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // END OF CLASS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,13 +67,12 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
|
|
||||||
public void serialize(byte[] data, int offset)
|
public void serialize(byte[] data, int offset)
|
||||||
{
|
{
|
||||||
LittleEndian.putShort(data, 0x0 + offset, (short)field_1_rgf);;
|
LittleEndian.putShort(data, 0x0 + offset, field_1_rgf);
|
||||||
LittleEndian.putShort(data, 0x2 + offset, (short)field_2_unused);;
|
LittleEndian.putShort(data, 0x2 + offset, field_2_unused);
|
||||||
field_3_brcTop.serialize(data, 0x4 + offset);;
|
field_3_brcTop.serialize(data, 0x4 + offset);
|
||||||
field_4_brcLeft.serialize(data, 0x8 + offset);;
|
field_4_brcLeft.serialize(data, 0x8 + offset);
|
||||||
field_5_brcBottom.serialize(data, 0xc + offset);;
|
field_5_brcBottom.serialize(data, 0xc + offset);
|
||||||
field_6_brcRight.serialize(data, 0x10 + offset);;
|
field_6_brcRight.serialize(data, 0x10 + offset);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString()
|
public String toString()
|
||||||
@ -225,8 +224,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFFirstMerged(boolean value)
|
public void setFFirstMerged(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fFirstMerged.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fFirstMerged.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -236,7 +233,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFFirstMerged()
|
public boolean isFFirstMerged()
|
||||||
{
|
{
|
||||||
return fFirstMerged.isSet(field_1_rgf);
|
return fFirstMerged.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -246,8 +242,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFMerged(boolean value)
|
public void setFMerged(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fMerged.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fMerged.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -257,7 +251,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFMerged()
|
public boolean isFMerged()
|
||||||
{
|
{
|
||||||
return fMerged.isSet(field_1_rgf);
|
return fMerged.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -267,8 +260,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFVertical(boolean value)
|
public void setFVertical(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fVertical.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fVertical.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -278,7 +269,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFVertical()
|
public boolean isFVertical()
|
||||||
{
|
{
|
||||||
return fVertical.isSet(field_1_rgf);
|
return fVertical.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -288,8 +278,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFBackward(boolean value)
|
public void setFBackward(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fBackward.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fBackward.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -299,7 +287,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFBackward()
|
public boolean isFBackward()
|
||||||
{
|
{
|
||||||
return fBackward.isSet(field_1_rgf);
|
return fBackward.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -309,8 +296,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFRotateFont(boolean value)
|
public void setFRotateFont(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fRotateFont.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fRotateFont.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -320,7 +305,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFRotateFont()
|
public boolean isFRotateFont()
|
||||||
{
|
{
|
||||||
return fRotateFont.isSet(field_1_rgf);
|
return fRotateFont.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -330,8 +314,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFVertMerge(boolean value)
|
public void setFVertMerge(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fVertMerge.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fVertMerge.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -341,7 +323,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFVertMerge()
|
public boolean isFVertMerge()
|
||||||
{
|
{
|
||||||
return fVertMerge.isSet(field_1_rgf);
|
return fVertMerge.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -351,8 +332,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setFVertRestart(boolean value)
|
public void setFVertRestart(boolean value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)fVertRestart.setBoolean(field_1_rgf, value);
|
field_1_rgf = (short)fVertRestart.setBoolean(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -362,7 +341,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public boolean isFVertRestart()
|
public boolean isFVertRestart()
|
||||||
{
|
{
|
||||||
return fVertRestart.isSet(field_1_rgf);
|
return fVertRestart.isSet(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -372,8 +350,6 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public void setVertAlign(byte value)
|
public void setVertAlign(byte value)
|
||||||
{
|
{
|
||||||
field_1_rgf = (short)vertAlign.setValue(field_1_rgf, value);
|
field_1_rgf = (short)vertAlign.setValue(field_1_rgf, value);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -383,12 +359,5 @@ public abstract class TCAbstractType implements HDFType {
|
|||||||
public byte getVertAlign()
|
public byte getVertAlign()
|
||||||
{
|
{
|
||||||
return ( byte )vertAlign.getValue(field_1_rgf);
|
return ( byte )vertAlign.getValue(field_1_rgf);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // END OF CLASS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ public final class CharacterSprmUncompressor
|
|||||||
|
|
||||||
while (sprmIt.hasNext())
|
while (sprmIt.hasNext())
|
||||||
{
|
{
|
||||||
SprmOperation sprm = (SprmOperation)sprmIt.next();
|
SprmOperation sprm = sprmIt.next();
|
||||||
unCompressCHPOperation(parent, newProperties, sprm);
|
unCompressCHPOperation(parent, newProperties, sprm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,8 +108,8 @@ public final class CharacterSprmUncompressor
|
|||||||
break;
|
break;
|
||||||
case 0x9:
|
case 0x9:
|
||||||
newCHP.setFSpec (true);
|
newCHP.setFSpec (true);
|
||||||
newCHP.setFtcSym ((short) LittleEndian.getShort (sprm.getGrpprl(), sprm.getGrpprlOffset()));
|
newCHP.setFtcSym (LittleEndian.getShort (sprm.getGrpprl(), sprm.getGrpprlOffset()));
|
||||||
newCHP.setXchSym ((short) LittleEndian.getShort (sprm.getGrpprl(), sprm.getGrpprlOffset() + 2));
|
newCHP.setXchSym (LittleEndian.getShort (sprm.getGrpprl(), sprm.getGrpprlOffset() + 2));
|
||||||
break;
|
break;
|
||||||
case 0xa:
|
case 0xa:
|
||||||
newCHP.setFOle2 (getFlag (sprm.getOperand()));
|
newCHP.setFOle2 (getFlag (sprm.getOperand()));
|
||||||
@ -426,8 +426,8 @@ public final class CharacterSprmUncompressor
|
|||||||
// styleSheet, opSize);
|
// styleSheet, opSize);
|
||||||
break;
|
break;
|
||||||
case 0x4d:
|
case 0x4d:
|
||||||
float percentage = (float) sprm.getOperand() / 100.0f;
|
float percentage = sprm.getOperand() / 100.0f;
|
||||||
int add = (int) ((float) percentage * (float) newCHP.getHps ());
|
int add = (int) (percentage * newCHP.getHps ());
|
||||||
newCHP.setHps (newCHP.getHps () + add);
|
newCHP.setHps (newCHP.getHps () + add);
|
||||||
break;
|
break;
|
||||||
case 0x4e:
|
case 0x4e:
|
||||||
@ -462,7 +462,7 @@ public final class CharacterSprmUncompressor
|
|||||||
byte[] buf = sprm.getGrpprl();
|
byte[] buf = sprm.getGrpprl();
|
||||||
int offset = sprm.getGrpprlOffset();
|
int offset = sprm.getGrpprlOffset();
|
||||||
newCHP.setFPropMark (buf[offset]);
|
newCHP.setFPropMark (buf[offset]);
|
||||||
newCHP.setIbstPropRMark ((short) LittleEndian.getShort (buf, offset + 1));
|
newCHP.setIbstPropRMark (LittleEndian.getShort (buf, offset + 1));
|
||||||
newCHP.setDttmPropRMark (new DateAndTime(buf, offset +3));
|
newCHP.setDttmPropRMark (new DateAndTime(buf, offset +3));
|
||||||
break;
|
break;
|
||||||
case 0x58:
|
case 0x58:
|
||||||
@ -494,7 +494,7 @@ public final class CharacterSprmUncompressor
|
|||||||
buf = sprm.getGrpprl();
|
buf = sprm.getGrpprl();
|
||||||
offset = sprm.getGrpprlOffset();
|
offset = sprm.getGrpprlOffset();
|
||||||
newCHP.setFDispFldRMark (buf[offset]);
|
newCHP.setFDispFldRMark (buf[offset]);
|
||||||
newCHP.setIbstDispFldRMark ((short) LittleEndian.getShort (buf, offset + 1));
|
newCHP.setIbstDispFldRMark (LittleEndian.getShort (buf, offset + 1));
|
||||||
newCHP.setDttmDispFldRMark (new DateAndTime(buf, offset + 3));
|
newCHP.setDttmDispFldRMark (new DateAndTime(buf, offset + 3));
|
||||||
System.arraycopy (buf, offset + 7, xstDispFldRMark, 0, 32);
|
System.arraycopy (buf, offset + 7, xstDispFldRMark, 0, 32);
|
||||||
newCHP.setXstDispFldRMark (xstDispFldRMark);
|
newCHP.setXstDispFldRMark (xstDispFldRMark);
|
||||||
@ -553,14 +553,7 @@ public final class CharacterSprmUncompressor
|
|||||||
*/
|
*/
|
||||||
public static boolean getFlag (int x)
|
public static boolean getFlag (int x)
|
||||||
{
|
{
|
||||||
if (x != 0)
|
return x != 0;
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean getCHPFlag (byte x, boolean oldVal)
|
private static boolean getCHPFlag (byte x, boolean oldVal)
|
||||||
|
@ -54,7 +54,7 @@ public final class ParagraphSprmUncompressor
|
|||||||
|
|
||||||
while (sprmIt.hasNext())
|
while (sprmIt.hasNext())
|
||||||
{
|
{
|
||||||
SprmOperation sprm = (SprmOperation)sprmIt.next();
|
SprmOperation sprm = sprmIt.next();
|
||||||
|
|
||||||
// PAPXs can contain table sprms if the paragraph marks the end of a
|
// PAPXs can contain table sprms if the paragraph marks the end of a
|
||||||
// table row
|
// table row
|
||||||
@ -326,8 +326,8 @@ public final class ParagraphSprmUncompressor
|
|||||||
{
|
{
|
||||||
byte[] varParam = sprm.getGrpprl();
|
byte[] varParam = sprm.getGrpprl();
|
||||||
int offset = sprm.getGrpprlOffset();
|
int offset = sprm.getGrpprlOffset();
|
||||||
newPAP.setFPropRMark ((int) varParam[offset]);
|
newPAP.setFPropRMark (varParam[offset]);
|
||||||
newPAP.setIbstPropRMark ((int) LittleEndian.getShort (varParam, offset + 1));
|
newPAP.setIbstPropRMark (LittleEndian.getShort (varParam, offset + 1));
|
||||||
newPAP.setDttmPropRMark (new DateAndTime(varParam, offset + 3));
|
newPAP.setDttmPropRMark (new DateAndTime(varParam, offset + 3));
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -33,7 +33,7 @@ public final class SectionSprmUncompressor extends SprmUncompressor
|
|||||||
|
|
||||||
while (sprmIt.hasNext())
|
while (sprmIt.hasNext())
|
||||||
{
|
{
|
||||||
SprmOperation sprm = (SprmOperation)sprmIt.next();
|
SprmOperation sprm = sprmIt.next();
|
||||||
unCompressSEPOperation(newProperties, sprm);
|
unCompressSEPOperation(newProperties, sprm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ public final class TableSprmUncompressor
|
|||||||
|
|
||||||
while (sprmIt.hasNext())
|
while (sprmIt.hasNext())
|
||||||
{
|
{
|
||||||
SprmOperation sprm = (SprmOperation)sprmIt.next();
|
SprmOperation sprm = sprmIt.next();
|
||||||
|
|
||||||
//TAPXs are actually PAPXs so we have to make sure we are only trying to
|
//TAPXs are actually PAPXs so we have to make sure we are only trying to
|
||||||
//uncompress the right type of sprm.
|
//uncompress the right type of sprm.
|
||||||
|
@ -380,13 +380,11 @@ public final class CharacterProperties
|
|||||||
cp.field_23_dttmRMarkDel = (DateAndTime)field_23_dttmRMarkDel.clone();
|
cp.field_23_dttmRMarkDel = (DateAndTime)field_23_dttmRMarkDel.clone();
|
||||||
cp.field_36_dttmPropRMark = (DateAndTime)field_36_dttmPropRMark.clone();
|
cp.field_36_dttmPropRMark = (DateAndTime)field_36_dttmPropRMark.clone();
|
||||||
cp.field_40_dttmDispFldRMark = (DateAndTime)field_40_dttmDispFldRMark.clone();
|
cp.field_40_dttmDispFldRMark = (DateAndTime)field_40_dttmDispFldRMark.clone();
|
||||||
cp.field_41_xstDispFldRMark = (byte[])field_41_xstDispFldRMark.clone();
|
cp.field_41_xstDispFldRMark = field_41_xstDispFldRMark.clone();
|
||||||
cp.field_42_shd = (ShadingDescriptor)field_42_shd.clone();
|
cp.field_42_shd = (ShadingDescriptor)field_42_shd.clone();
|
||||||
|
|
||||||
cp._ico24 = _ico24;
|
cp._ico24 = _ico24;
|
||||||
|
|
||||||
return cp;
|
return cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -546,7 +546,7 @@ public final class CharacterRun
|
|||||||
cp._props.setDttmPropRMark((DateAndTime)_props.getDttmPropRMark().clone());
|
cp._props.setDttmPropRMark((DateAndTime)_props.getDttmPropRMark().clone());
|
||||||
cp._props.setDttmDispFldRMark((DateAndTime)_props.getDttmDispFldRMark().
|
cp._props.setDttmDispFldRMark((DateAndTime)_props.getDttmDispFldRMark().
|
||||||
clone());
|
clone());
|
||||||
cp._props.setXstDispFldRMark((byte[])_props.getXstDispFldRMark().clone());
|
cp._props.setXstDispFldRMark(_props.getXstDispFldRMark().clone());
|
||||||
cp._props.setShd((ShadingDescriptor)_props.getShd().clone());
|
cp._props.setShd((ShadingDescriptor)_props.getShd().clone());
|
||||||
|
|
||||||
return cp;
|
return cp;
|
||||||
|
@ -55,7 +55,7 @@ public final class HWPFList {
|
|||||||
*/
|
*/
|
||||||
public HWPFList(boolean numbered, StyleSheet styleSheet)
|
public HWPFList(boolean numbered, StyleSheet styleSheet)
|
||||||
{
|
{
|
||||||
_listData = new ListData((int)(Math.random() * (double)System.currentTimeMillis()), numbered);
|
_listData = new ListData((int)(Math.random() * System.currentTimeMillis()), numbered);
|
||||||
_override = new ListFormatOverride(_listData.getLsid());
|
_override = new ListFormatOverride(_listData.getLsid());
|
||||||
_styleSheet = styleSheet;
|
_styleSheet = styleSheet;
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
package org.apache.poi.hwpf.usermodel;
|
package org.apache.poi.hwpf.usermodel;
|
||||||
|
|
||||||
|
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
|
|
||||||
import org.apache.poi.hwpf.HWPFDocument;
|
import org.apache.poi.hwpf.HWPFDocument;
|
||||||
@ -46,8 +45,8 @@ import java.util.NoSuchElementException;
|
|||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the central class of the HWPF object model. All properties
|
* This class is the central class of the HWPF object model. All properties that
|
||||||
* that apply to a range of characters in a Word document extend this class.
|
* apply to a range of characters in a Word document extend this class.
|
||||||
*
|
*
|
||||||
* It is possible to insert text and/or properties at the beginning or end of a
|
* It is possible to insert text and/or properties at the beginning or end of a
|
||||||
* range.
|
* range.
|
||||||
@ -135,15 +134,17 @@ public class Range { // TODO -instantiable superclass
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to construct a Range from a document. This is generally used to
|
* Used to construct a Range from a document. This is generally used to
|
||||||
* create a Range that spans the whole document, or at least one
|
* create a Range that spans the whole document, or at least one whole part
|
||||||
* whole part of the document (eg main text, header, comment)
|
* of the document (eg main text, header, comment)
|
||||||
*
|
*
|
||||||
* @param start Starting character offset of the range.
|
* @param start
|
||||||
* @param end Ending character offset of the range.
|
* Starting character offset of the range.
|
||||||
* @param doc The HWPFDocument the range is based on.
|
* @param end
|
||||||
|
* Ending character offset of the range.
|
||||||
|
* @param doc
|
||||||
|
* The HWPFDocument the range is based on.
|
||||||
*/
|
*/
|
||||||
public Range(int start, int end, HWPFDocument doc)
|
public Range(int start, int end, HWPFDocument doc) {
|
||||||
{
|
|
||||||
_start = start;
|
_start = start;
|
||||||
_end = end;
|
_end = end;
|
||||||
_doc = doc;
|
_doc = doc;
|
||||||
@ -156,16 +157,17 @@ public class Range { // TODO -instantiable superclass
|
|||||||
sanityCheckStartEnd();
|
sanityCheckStartEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to create Ranges that are children of other Ranges.
|
* Used to create Ranges that are children of other Ranges.
|
||||||
*
|
*
|
||||||
* @param start Starting character offset of the range.
|
* @param start
|
||||||
* @param end Ending character offset of the range.
|
* Starting character offset of the range.
|
||||||
* @param parent The parent this range belongs to.
|
* @param end
|
||||||
|
* Ending character offset of the range.
|
||||||
|
* @param parent
|
||||||
|
* The parent this range belongs to.
|
||||||
*/
|
*/
|
||||||
protected Range(int start, int end, Range parent)
|
protected Range(int start, int end, Range parent) {
|
||||||
{
|
|
||||||
_start = start;
|
_start = start;
|
||||||
_end = end;
|
_end = end;
|
||||||
_doc = parent._doc;
|
_doc = parent._doc;
|
||||||
@ -182,13 +184,16 @@ public class Range { // TODO -instantiable superclass
|
|||||||
* Constructor used to build a Range from indexes in one of its internal
|
* Constructor used to build a Range from indexes in one of its internal
|
||||||
* lists.
|
* lists.
|
||||||
*
|
*
|
||||||
* @param startIdx The starting index in the list.
|
* @param startIdx
|
||||||
* @param endIdx The ending index in the list.
|
* The starting index in the list.
|
||||||
* @param idxType The list type.
|
* @param endIdx
|
||||||
* @param parent The parent Range this range belongs to.
|
* The ending index in the list.
|
||||||
|
* @param idxType
|
||||||
|
* The list type.
|
||||||
|
* @param parent
|
||||||
|
* The parent Range this range belongs to.
|
||||||
*/
|
*/
|
||||||
protected Range(int startIdx, int endIdx, int idxType, Range parent)
|
protected Range(int startIdx, int endIdx, int idxType, Range parent) {
|
||||||
{
|
|
||||||
_doc = parent._doc;
|
_doc = parent._doc;
|
||||||
_sections = parent._sections;
|
_sections = parent._sections;
|
||||||
_paragraphs = parent._paragraphs;
|
_paragraphs = parent._paragraphs;
|
||||||
@ -196,8 +201,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
_text = parent._text;
|
_text = parent._text;
|
||||||
_parent = new WeakReference(parent);
|
_parent = new WeakReference(parent);
|
||||||
|
|
||||||
switch (idxType)
|
switch (idxType) {
|
||||||
{
|
|
||||||
case TYPE_PARAGRAPH:
|
case TYPE_PARAGRAPH:
|
||||||
_parStart = parent._parStart + startIdx;
|
_parStart = parent._parStart + startIdx;
|
||||||
_parEnd = parent._parStart + endIdx;
|
_parEnd = parent._parStart + endIdx;
|
||||||
@ -232,16 +236,16 @@ public class Range { // TODO -instantiable superclass
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensures that the start and end were were given
|
* Ensures that the start and end were were given are actually valid, to
|
||||||
* are actually valid, to avoid issues later on
|
* avoid issues later on if they're not
|
||||||
* if they're not
|
|
||||||
*/
|
*/
|
||||||
private void sanityCheckStartEnd() {
|
private void sanityCheckStartEnd() {
|
||||||
if (_start < 0) {
|
if (_start < 0) {
|
||||||
throw new IllegalArgumentException("Range start must not be negative. Given " + _start);
|
throw new IllegalArgumentException("Range start must not be negative. Given " + _start);
|
||||||
}
|
}
|
||||||
if (_end < _start) {
|
if (_end < _start) {
|
||||||
throw new IllegalArgumentException("The end (" + _end + ") must not be before the start ("+_start+")");
|
throw new IllegalArgumentException("The end (" + _end
|
||||||
|
+ ") must not be before the start (" + _start + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,8 +258,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
|
|
||||||
initText();
|
initText();
|
||||||
|
|
||||||
for (int i = _textStart; i < _textEnd; i++)
|
for (int i = _textStart; i < _textEnd; i++) {
|
||||||
{
|
|
||||||
TextPiece piece = (TextPiece) _text.get(i);
|
TextPiece piece = (TextPiece) _text.get(i);
|
||||||
if (piece.isUnicode())
|
if (piece.isUnicode())
|
||||||
return true;
|
return true;
|
||||||
@ -269,14 +272,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
*
|
*
|
||||||
* @return The text for this range.
|
* @return The text for this range.
|
||||||
*/
|
*/
|
||||||
public String text()
|
public String text() {
|
||||||
{
|
|
||||||
initText();
|
initText();
|
||||||
|
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
|
|
||||||
for (int x = _textStart; x < _textEnd; x++)
|
for (int x = _textStart; x < _textEnd; x++) {
|
||||||
{
|
|
||||||
TextPiece piece = (TextPiece) _text.get(x);
|
TextPiece piece = (TextPiece) _text.get(x);
|
||||||
|
|
||||||
// Figure out where in this piece the text
|
// Figure out where in this piece the text
|
||||||
@ -298,11 +299,9 @@ public class Range { // TODO -instantiable superclass
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes any fields (eg macros, page markers etc)
|
* Removes any fields (eg macros, page markers etc) from the string.
|
||||||
* from the string.
|
* Normally used to make some text suitable for showing to humans, and the
|
||||||
* Normally used to make some text suitable for showing
|
* resultant text should not normally be saved back into the document!
|
||||||
* to humans, and the resultant text should not normally
|
|
||||||
* be saved back into the document!
|
|
||||||
*/
|
*/
|
||||||
public static String stripFields(String text) {
|
public static String stripFields(String text) {
|
||||||
// First up, fields can be nested...
|
// First up, fields can be nested...
|
||||||
@ -310,12 +309,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
// Or it can be 0x13 [contents] 0x14 [real text] 0x15
|
// Or it can be 0x13 [contents] 0x14 [real text] 0x15
|
||||||
|
|
||||||
// If there are no fields, all easy
|
// If there are no fields, all easy
|
||||||
if(text.indexOf('\u0013') == -1) return text;
|
if (text.indexOf('\u0013') == -1)
|
||||||
|
return text;
|
||||||
|
|
||||||
// Loop over until they're all gone
|
// Loop over until they're all gone
|
||||||
// That's when we're out of both 0x13s and 0x15s
|
// That's when we're out of both 0x13s and 0x15s
|
||||||
while( text.indexOf('\u0013') > -1 &&
|
while (text.indexOf('\u0013') > -1 && text.indexOf('\u0015') > -1) {
|
||||||
text.indexOf('\u0015') > -1) {
|
|
||||||
int first13 = text.indexOf('\u0013');
|
int first13 = text.indexOf('\u0013');
|
||||||
int next13 = text.indexOf('\u0013', first13 + 1);
|
int next13 = text.indexOf('\u0013', first13 + 1);
|
||||||
int first14 = text.indexOf('\u0014', first13 + 1);
|
int first14 = text.indexOf('\u0014', first13 + 1);
|
||||||
@ -328,8 +327,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
|
|
||||||
// If no more 13s and 14s, just zap
|
// If no more 13s and 14s, just zap
|
||||||
if (next13 == -1 && first14 == -1) {
|
if (next13 == -1 && first14 == -1) {
|
||||||
text = text.substring(0, first13) +
|
text = text.substring(0, first13) + text.substring(last15 + 1);
|
||||||
text.substring(last15+1);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -337,17 +335,15 @@ public class Range { // TODO -instantiable superclass
|
|||||||
// zap from the 13 to the 14, and remove
|
// zap from the 13 to the 14, and remove
|
||||||
// the 15
|
// the 15
|
||||||
if (first14 != -1 && (first14 < next13 || next13 == -1)) {
|
if (first14 != -1 && (first14 < next13 || next13 == -1)) {
|
||||||
text = text.substring(0, first13) +
|
text = text.substring(0, first13) + text.substring(first14 + 1, last15)
|
||||||
text.substring(first14+1, last15) +
|
+ text.substring(last15 + 1);
|
||||||
text.substring(last15+1);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Another 13 comes before the next 14.
|
// Another 13 comes before the next 14.
|
||||||
// This means there's nested stuff, so we
|
// This means there's nested stuff, so we
|
||||||
// can just zap the lot
|
// can just zap the lot
|
||||||
text = text.substring(0, first13) +
|
text = text.substring(0, first13) + text.substring(last15 + 1);
|
||||||
text.substring(last15+1);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,8 +356,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
*
|
*
|
||||||
* @return The number of sections in this range.
|
* @return The number of sections in this range.
|
||||||
*/
|
*/
|
||||||
public int numSections()
|
public int numSections() {
|
||||||
{
|
|
||||||
initSections();
|
initSections();
|
||||||
return _sectionEnd - _sectionStart;
|
return _sectionEnd - _sectionStart;
|
||||||
}
|
}
|
||||||
@ -373,8 +368,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
* @return The number of paragraphs in this range.
|
* @return The number of paragraphs in this range.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int numParagraphs()
|
public int numParagraphs() {
|
||||||
{
|
|
||||||
initParagraphs();
|
initParagraphs();
|
||||||
return _parEnd - _parStart;
|
return _parEnd - _parStart;
|
||||||
}
|
}
|
||||||
@ -384,8 +378,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
* @return The number of characterRuns in this range.
|
* @return The number of characterRuns in this range.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public int numCharacterRuns()
|
public int numCharacterRuns() {
|
||||||
{
|
|
||||||
initCharacterRuns();
|
initCharacterRuns();
|
||||||
return _charEnd - _charStart;
|
return _charEnd - _charStart;
|
||||||
}
|
}
|
||||||
@ -393,7 +386,8 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Inserts text into the front of this range.
|
* Inserts text into the front of this range.
|
||||||
*
|
*
|
||||||
* @param text The text to insert
|
* @param text
|
||||||
|
* The text to insert
|
||||||
* @return The character run that text was inserted into.
|
* @return The character run that text was inserted into.
|
||||||
*/
|
*/
|
||||||
public CharacterRun insertBefore(String text)
|
public CharacterRun insertBefore(String text)
|
||||||
@ -402,7 +396,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
initAll();
|
initAll();
|
||||||
|
|
||||||
TextPiece tp = (TextPiece) _text.get(_textStart);
|
TextPiece tp = (TextPiece) _text.get(_textStart);
|
||||||
StringBuffer sb = (StringBuffer)tp.getStringBuffer();
|
StringBuffer sb = tp.getStringBuffer();
|
||||||
|
|
||||||
// Since this is the first item in our list, it is safe to assume that
|
// Since this is the first item in our list, it is safe to assume that
|
||||||
// _start >= tp.getStart()
|
// _start >= tp.getStart()
|
||||||
@ -424,21 +418,20 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Inserts text onto the end of this range
|
* Inserts text onto the end of this range
|
||||||
*
|
*
|
||||||
* @param text The text to insert
|
* @param text
|
||||||
|
* The text to insert
|
||||||
* @return The character run the text was inserted into.
|
* @return The character run the text was inserted into.
|
||||||
*/
|
*/
|
||||||
public CharacterRun insertAfter(String text)
|
public CharacterRun insertAfter(String text) {
|
||||||
{
|
|
||||||
initAll();
|
initAll();
|
||||||
|
|
||||||
int listIndex = _textEnd - 1;
|
int listIndex = _textEnd - 1;
|
||||||
TextPiece tp = (TextPiece) _text.get(listIndex);
|
TextPiece tp = (TextPiece) _text.get(listIndex);
|
||||||
StringBuffer sb = (StringBuffer)tp.getStringBuffer();
|
StringBuffer sb = tp.getStringBuffer();
|
||||||
|
|
||||||
int insertIndex = _end - tp.getStart();
|
int insertIndex = _end - tp.getStart();
|
||||||
|
|
||||||
if (tp.getStringBuffer().charAt(_end - 1) == '\r' && text.charAt(0) != '\u0007')
|
if (tp.getStringBuffer().charAt(_end - 1) == '\r' && text.charAt(0) != '\u0007') {
|
||||||
{
|
|
||||||
insertIndex--;
|
insertIndex--;
|
||||||
}
|
}
|
||||||
sb.insert(insertIndex, text);
|
sb.insert(insertIndex, text);
|
||||||
@ -456,10 +449,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
* Inserts text into the front of this range and it gives that text the
|
* Inserts text into the front of this range and it gives that text the
|
||||||
* CharacterProperties specified in props.
|
* CharacterProperties specified in props.
|
||||||
*
|
*
|
||||||
* @param text The text to insert.
|
* @param text
|
||||||
* @param props The CharacterProperties to give the text.
|
* The text to insert.
|
||||||
* @return A new CharacterRun that has the given text and properties and is n
|
* @param props
|
||||||
* ow a part of the document.
|
* The CharacterProperties to give the text.
|
||||||
|
* @return A new CharacterRun that has the given text and properties and is
|
||||||
|
* n ow a part of the document.
|
||||||
*/
|
*/
|
||||||
public CharacterRun insertBefore(String text, CharacterProperties props)
|
public CharacterRun insertBefore(String text, CharacterProperties props)
|
||||||
// throws UnsupportedEncodingException
|
// throws UnsupportedEncodingException
|
||||||
@ -481,10 +476,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
* Inserts text onto the end of this range and gives that text the
|
* Inserts text onto the end of this range and gives that text the
|
||||||
* CharacterProperties specified in props.
|
* CharacterProperties specified in props.
|
||||||
*
|
*
|
||||||
* @param text The text to insert.
|
* @param text
|
||||||
* @param props The CharacterProperties to give the text.
|
* The text to insert.
|
||||||
* @return A new CharacterRun that has the given text and properties and is n
|
* @param props
|
||||||
* ow a part of the document.
|
* The CharacterProperties to give the text.
|
||||||
|
* @return A new CharacterRun that has the given text and properties and is
|
||||||
|
* n ow a part of the document.
|
||||||
*/
|
*/
|
||||||
public CharacterRun insertAfter(String text, CharacterProperties props)
|
public CharacterRun insertAfter(String text, CharacterProperties props)
|
||||||
// throws UnsupportedEncodingException
|
// throws UnsupportedEncodingException
|
||||||
@ -505,8 +502,10 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Inserts and empty paragraph into the front of this range.
|
* Inserts and empty paragraph into the front of this range.
|
||||||
*
|
*
|
||||||
* @param props The properties that the new paragraph will have.
|
* @param props
|
||||||
* @param styleIndex The index into the stylesheet for the new paragraph.
|
* The properties that the new paragraph will have.
|
||||||
|
* @param styleIndex
|
||||||
|
* The index into the stylesheet for the new paragraph.
|
||||||
* @return The newly inserted paragraph.
|
* @return The newly inserted paragraph.
|
||||||
*/
|
*/
|
||||||
public Paragraph insertBefore(ParagraphProperties props, int styleIndex)
|
public Paragraph insertBefore(ParagraphProperties props, int styleIndex)
|
||||||
@ -522,9 +521,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
*
|
*
|
||||||
* It is necessary for the text to end with the character '\r'
|
* It is necessary for the text to end with the character '\r'
|
||||||
*
|
*
|
||||||
* @param props The paragraph's properties.
|
* @param props
|
||||||
* @param styleIndex The index of the paragraph's style in the style sheet.
|
* The paragraph's properties.
|
||||||
* @param text The text to insert.
|
* @param styleIndex
|
||||||
|
* The index of the paragraph's style in the style sheet.
|
||||||
|
* @param text
|
||||||
|
* The text to insert.
|
||||||
* @return A newly inserted paragraph.
|
* @return A newly inserted paragraph.
|
||||||
*/
|
*/
|
||||||
protected Paragraph insertBefore(ParagraphProperties props, int styleIndex, String text)
|
protected Paragraph insertBefore(ParagraphProperties props, int styleIndex, String text)
|
||||||
@ -549,8 +551,10 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Inserts and empty paragraph into the end of this range.
|
* Inserts and empty paragraph into the end of this range.
|
||||||
*
|
*
|
||||||
* @param props The properties that the new paragraph will have.
|
* @param props
|
||||||
* @param styleIndex The index into the stylesheet for the new paragraph.
|
* The properties that the new paragraph will have.
|
||||||
|
* @param styleIndex
|
||||||
|
* The index into the stylesheet for the new paragraph.
|
||||||
* @return The newly inserted paragraph.
|
* @return The newly inserted paragraph.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -567,9 +571,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
*
|
*
|
||||||
* It is necessary for the text to end with the character '\r'
|
* It is necessary for the text to end with the character '\r'
|
||||||
*
|
*
|
||||||
* @param props The paragraph's properties.
|
* @param props
|
||||||
* @param styleIndex The index of the paragraph's style in the style sheet.
|
* The paragraph's properties.
|
||||||
* @param text The text to insert.
|
* @param styleIndex
|
||||||
|
* The index of the paragraph's style in the style sheet.
|
||||||
|
* @param text
|
||||||
|
* The text to insert.
|
||||||
* @return A newly inserted paragraph.
|
* @return A newly inserted paragraph.
|
||||||
*/
|
*/
|
||||||
protected Paragraph insertAfter(ParagraphProperties props, int styleIndex, String text)
|
protected Paragraph insertAfter(ParagraphProperties props, int styleIndex, String text)
|
||||||
@ -592,8 +599,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
return getParagraph(numParagraphs() - 1);
|
return getParagraph(numParagraphs() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void delete()
|
public void delete() {
|
||||||
{
|
|
||||||
|
|
||||||
initAll();
|
initAll();
|
||||||
|
|
||||||
@ -602,30 +608,30 @@ public class Range { // TODO -instantiable superclass
|
|||||||
int numParagraphs = _paragraphs.size();
|
int numParagraphs = _paragraphs.size();
|
||||||
int numTextPieces = _text.size();
|
int numTextPieces = _text.size();
|
||||||
|
|
||||||
for (int x = _charStart; x < numRuns; x++)
|
for (int x = _charStart; x < numRuns; x++) {
|
||||||
{
|
|
||||||
CHPX chpx = (CHPX) _characters.get(x);
|
CHPX chpx = (CHPX) _characters.get(x);
|
||||||
chpx.adjustForDelete(_start, _end - _start);
|
chpx.adjustForDelete(_start, _end - _start);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int x = _parStart; x < numParagraphs; x++)
|
for (int x = _parStart; x < numParagraphs; x++) {
|
||||||
{
|
|
||||||
PAPX papx = (PAPX) _paragraphs.get(x);
|
PAPX papx = (PAPX) _paragraphs.get(x);
|
||||||
//System.err.println("Paragraph " + x + " was " + papx.getStart() + " -> " + papx.getEnd());
|
// System.err.println("Paragraph " + x + " was " + papx.getStart() +
|
||||||
|
// " -> " + papx.getEnd());
|
||||||
papx.adjustForDelete(_start, _end - _start);
|
papx.adjustForDelete(_start, _end - _start);
|
||||||
//System.err.println("Paragraph " + x + " is now " + papx.getStart() + " -> " + papx.getEnd());
|
// System.err.println("Paragraph " + x + " is now " +
|
||||||
|
// papx.getStart() + " -> " + papx.getEnd());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int x = _sectionStart; x < numSections; x++)
|
for (int x = _sectionStart; x < numSections; x++) {
|
||||||
{
|
|
||||||
SEPX sepx = (SEPX) _sections.get(x);
|
SEPX sepx = (SEPX) _sections.get(x);
|
||||||
//System.err.println("Section " + x + " was " + sepx.getStart() + " -> " + sepx.getEnd());
|
// System.err.println("Section " + x + " was " + sepx.getStart() +
|
||||||
|
// " -> " + sepx.getEnd());
|
||||||
sepx.adjustForDelete(_start, _end - _start);
|
sepx.adjustForDelete(_start, _end - _start);
|
||||||
//System.err.println("Section " + x + " is now " + sepx.getStart() + " -> " + sepx.getEnd());
|
// System.err.println("Section " + x + " is now " + sepx.getStart()
|
||||||
|
// + " -> " + sepx.getEnd());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int x = _textStart; x < numTextPieces; x++)
|
for (int x = _textStart; x < numTextPieces; x++) {
|
||||||
{
|
|
||||||
TextPiece piece = (TextPiece) _text.get(x);
|
TextPiece piece = (TextPiece) _text.get(x);
|
||||||
piece.adjustForDelete(_start, _end - _start);
|
piece.adjustForDelete(_start, _end - _start);
|
||||||
}
|
}
|
||||||
@ -638,23 +644,22 @@ public class Range { // TODO -instantiable superclass
|
|||||||
* Inserts a simple table into the beginning of this range. The number of
|
* Inserts a simple table into the beginning of this range. The number of
|
||||||
* columns is determined by the TableProperties passed into this function.
|
* columns is determined by the TableProperties passed into this function.
|
||||||
*
|
*
|
||||||
* @param props The table properties for the table.
|
* @param props
|
||||||
* @param rows The number of rows.
|
* The table properties for the table.
|
||||||
|
* @param rows
|
||||||
|
* The number of rows.
|
||||||
* @return The empty Table that is now part of the document.
|
* @return The empty Table that is now part of the document.
|
||||||
*/
|
*/
|
||||||
public Table insertBefore(TableProperties props, int rows)
|
public Table insertBefore(TableProperties props, int rows) {
|
||||||
{
|
|
||||||
ParagraphProperties parProps = new ParagraphProperties();
|
ParagraphProperties parProps = new ParagraphProperties();
|
||||||
parProps.setFInTable((byte) 1);
|
parProps.setFInTable((byte) 1);
|
||||||
parProps.setTableLevel((byte) 1);
|
parProps.setTableLevel((byte) 1);
|
||||||
|
|
||||||
int columns = props.getItcMac();
|
int columns = props.getItcMac();
|
||||||
for (int x = 0; x < rows; x++)
|
for (int x = 0; x < rows; x++) {
|
||||||
{
|
|
||||||
Paragraph cell = this.insertBefore(parProps, StyleSheet.NIL_STYLE);
|
Paragraph cell = this.insertBefore(parProps, StyleSheet.NIL_STYLE);
|
||||||
cell.insertAfter(String.valueOf('\u0007'));
|
cell.insertAfter(String.valueOf('\u0007'));
|
||||||
for(int y = 1; y < columns; y++)
|
for (int y = 1; y < columns; y++) {
|
||||||
{
|
|
||||||
cell = cell.insertAfter(parProps, StyleSheet.NIL_STYLE);
|
cell = cell.insertAfter(parProps, StyleSheet.NIL_STYLE);
|
||||||
cell.insertAfter(String.valueOf('\u0007'));
|
cell.insertAfter(String.valueOf('\u0007'));
|
||||||
}
|
}
|
||||||
@ -667,18 +672,20 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Inserts a list into the beginning of this range.
|
* Inserts a list into the beginning of this range.
|
||||||
*
|
*
|
||||||
* @param props The properties of the list entry. All list entries are
|
* @param props
|
||||||
|
* The properties of the list entry. All list entries are
|
||||||
* paragraphs.
|
* paragraphs.
|
||||||
* @param listID The id of the list that contains the properties.
|
* @param listID
|
||||||
* @param level The indentation level of the list.
|
* The id of the list that contains the properties.
|
||||||
* @param styleIndex The base style's index in the stylesheet.
|
* @param level
|
||||||
|
* The indentation level of the list.
|
||||||
|
* @param styleIndex
|
||||||
|
* The base style's index in the stylesheet.
|
||||||
* @return The empty ListEntry that is now part of the document.
|
* @return The empty ListEntry that is now part of the document.
|
||||||
*/
|
*/
|
||||||
public ListEntry insertBefore(ParagraphProperties props, int listID, int level, int styleIndex)
|
public ListEntry insertBefore(ParagraphProperties props, int listID, int level, int styleIndex) {
|
||||||
{
|
|
||||||
ListTables lt = _doc.getListTables();
|
ListTables lt = _doc.getListTables();
|
||||||
if (lt.getLevel(listID, level) == null)
|
if (lt.getLevel(listID, level) == null) {
|
||||||
{
|
|
||||||
throw new NoSuchElementException("The specified list and level do not exist");
|
throw new NoSuchElementException("The specified list and level do not exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -692,18 +699,20 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Inserts a list into the beginning of this range.
|
* Inserts a list into the beginning of this range.
|
||||||
*
|
*
|
||||||
* @param props The properties of the list entry. All list entries are
|
* @param props
|
||||||
|
* The properties of the list entry. All list entries are
|
||||||
* paragraphs.
|
* paragraphs.
|
||||||
* @param listID The id of the list that contains the properties.
|
* @param listID
|
||||||
* @param level The indentation level of the list.
|
* The id of the list that contains the properties.
|
||||||
* @param styleIndex The base style's index in the stylesheet.
|
* @param level
|
||||||
|
* The indentation level of the list.
|
||||||
|
* @param styleIndex
|
||||||
|
* The base style's index in the stylesheet.
|
||||||
* @return The empty ListEntry that is now part of the document.
|
* @return The empty ListEntry that is now part of the document.
|
||||||
*/
|
*/
|
||||||
public ListEntry insertAfter(ParagraphProperties props, int listID, int level, int styleIndex)
|
public ListEntry insertAfter(ParagraphProperties props, int listID, int level, int styleIndex) {
|
||||||
{
|
|
||||||
ListTables lt = _doc.getListTables();
|
ListTables lt = _doc.getListTables();
|
||||||
if (lt.getLevel(listID, level) == null)
|
if (lt.getLevel(listID, level) == null) {
|
||||||
{
|
|
||||||
throw new NoSuchElementException("The specified list and level do not exist");
|
throw new NoSuchElementException("The specified list and level do not exist");
|
||||||
}
|
}
|
||||||
int ilfo = lt.getOverrideIndexFromListID(listID);
|
int ilfo = lt.getOverrideIndexFromListID(listID);
|
||||||
@ -716,20 +725,21 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Replace (one instance of) a piece of text with another...
|
* Replace (one instance of) a piece of text with another...
|
||||||
*
|
*
|
||||||
* @param pPlaceHolder The text to be replaced (e.g., "${organization}")
|
* @param pPlaceHolder
|
||||||
* @param pValue The replacement text (e.g., "Apache Software Foundation")
|
* The text to be replaced (e.g., "${organization}")
|
||||||
* @param pOffset The offset or index where the text to be replaced begins
|
* @param pValue
|
||||||
|
* The replacement text (e.g., "Apache Software Foundation")
|
||||||
|
* @param pOffset
|
||||||
|
* The offset or index where the text to be replaced begins
|
||||||
* (relative to/within this <code>Range</code>)
|
* (relative to/within this <code>Range</code>)
|
||||||
*/
|
*/
|
||||||
public void replaceText(String pPlaceHolder, String pValue, int pOffset)
|
public void replaceText(String pPlaceHolder, String pValue, int pOffset) {
|
||||||
{
|
|
||||||
int absPlaceHolderIndex = getStartOffset() + pOffset;
|
int absPlaceHolderIndex = getStartOffset() + pOffset;
|
||||||
Range subRange = new Range(
|
Range subRange = new Range(absPlaceHolderIndex, (absPlaceHolderIndex + pPlaceHolder
|
||||||
absPlaceHolderIndex,
|
.length()), getDocument());
|
||||||
(absPlaceHolderIndex + pPlaceHolder.length()), getDocument()
|
|
||||||
);
|
|
||||||
|
|
||||||
// this Range isn't a proper parent of the subRange() so we'll have to keep
|
// this Range isn't a proper parent of the subRange() so we'll have to
|
||||||
|
// keep
|
||||||
// track of an updated endOffset on our own
|
// track of an updated endOffset on our own
|
||||||
int previousEndOffset = subRange.getEndOffset();
|
int previousEndOffset = subRange.getEndOffset();
|
||||||
|
|
||||||
@ -739,11 +749,8 @@ public class Range { // TODO -instantiable superclass
|
|||||||
_end += (subRange.getEndOffset() - previousEndOffset);
|
_end += (subRange.getEndOffset() - previousEndOffset);
|
||||||
|
|
||||||
// re-create the sub-range so we can delete it
|
// re-create the sub-range so we can delete it
|
||||||
subRange = new Range(
|
subRange = new Range((absPlaceHolderIndex + pValue.length()), (absPlaceHolderIndex
|
||||||
(absPlaceHolderIndex + pValue.length()),
|
+ pPlaceHolder.length() + pValue.length()), getDocument());
|
||||||
(absPlaceHolderIndex + pPlaceHolder.length() + pValue.length()),
|
|
||||||
getDocument()
|
|
||||||
);
|
|
||||||
|
|
||||||
// deletes are automagically propagated
|
// deletes are automagically propagated
|
||||||
subRange.delete();
|
subRange.delete();
|
||||||
@ -752,11 +759,12 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Replace (all instances of) a piece of text with another...
|
* Replace (all instances of) a piece of text with another...
|
||||||
*
|
*
|
||||||
* @param pPlaceHolder The text to be replaced (e.g., "${organization}")
|
* @param pPlaceHolder
|
||||||
* @param pValue The replacement text (e.g., "Apache Software Foundation")
|
* The text to be replaced (e.g., "${organization}")
|
||||||
|
* @param pValue
|
||||||
|
* The replacement text (e.g., "Apache Software Foundation")
|
||||||
*/
|
*/
|
||||||
public void replaceText(String pPlaceHolder, String pValue)
|
public void replaceText(String pPlaceHolder, String pValue) {
|
||||||
{
|
|
||||||
boolean keepLooking = true;
|
boolean keepLooking = true;
|
||||||
while (keepLooking) {
|
while (keepLooking) {
|
||||||
|
|
||||||
@ -772,16 +780,16 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Gets the character run at index. The index is relative to this range.
|
* Gets the character run at index. The index is relative to this range.
|
||||||
*
|
*
|
||||||
* @param index The index of the character run to get.
|
* @param index
|
||||||
|
* The index of the character run to get.
|
||||||
* @return The character run at the specified index in this range.
|
* @return The character run at the specified index in this range.
|
||||||
*/
|
*/
|
||||||
public CharacterRun getCharacterRun(int index)
|
public CharacterRun getCharacterRun(int index) {
|
||||||
{
|
|
||||||
initCharacterRuns();
|
initCharacterRuns();
|
||||||
CHPX chpx = (CHPX) _characters.get(index + _charStart);
|
CHPX chpx = (CHPX) _characters.get(index + _charStart);
|
||||||
|
|
||||||
int[] point = findRange(_paragraphs, _parStart, Math.max(chpx.getStart(), _start),
|
int[] point = findRange(_paragraphs, _parStart, Math.max(chpx.getStart(), _start), chpx
|
||||||
chpx.getEnd());
|
.getEnd());
|
||||||
PAPX papx = (PAPX) _paragraphs.get(point[0]);
|
PAPX papx = (PAPX) _paragraphs.get(point[0]);
|
||||||
short istd = papx.getIstd();
|
short istd = papx.getIstd();
|
||||||
|
|
||||||
@ -793,11 +801,11 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Gets the section at index. The index is relative to this range.
|
* Gets the section at index. The index is relative to this range.
|
||||||
*
|
*
|
||||||
* @param index The index of the section to get.
|
* @param index
|
||||||
|
* The index of the section to get.
|
||||||
* @return The section at the specified index in this range.
|
* @return The section at the specified index in this range.
|
||||||
*/
|
*/
|
||||||
public Section getSection(int index)
|
public Section getSection(int index) {
|
||||||
{
|
|
||||||
initSections();
|
initSections();
|
||||||
SEPX sepx = (SEPX) _sections.get(index + _sectionStart);
|
SEPX sepx = (SEPX) _sections.get(index + _sectionStart);
|
||||||
Section sep = new Section(sepx, this);
|
Section sep = new Section(sepx, this);
|
||||||
@ -807,23 +815,20 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Gets the paragraph at index. The index is relative to this range.
|
* Gets the paragraph at index. The index is relative to this range.
|
||||||
*
|
*
|
||||||
* @param index The index of the paragraph to get.
|
* @param index
|
||||||
|
* The index of the paragraph to get.
|
||||||
* @return The paragraph at the specified index in this range.
|
* @return The paragraph at the specified index in this range.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Paragraph getParagraph(int index)
|
public Paragraph getParagraph(int index) {
|
||||||
{
|
|
||||||
initParagraphs();
|
initParagraphs();
|
||||||
PAPX papx = (PAPX) _paragraphs.get(index + _parStart);
|
PAPX papx = (PAPX) _paragraphs.get(index + _parStart);
|
||||||
|
|
||||||
ParagraphProperties props = papx.getParagraphProperties(_doc.getStyleSheet());
|
ParagraphProperties props = papx.getParagraphProperties(_doc.getStyleSheet());
|
||||||
Paragraph pap = null;
|
Paragraph pap = null;
|
||||||
if (props.getIlfo() > 0)
|
if (props.getIlfo() > 0) {
|
||||||
{
|
|
||||||
pap = new ListEntry(papx, this, _doc.getListTables());
|
pap = new ListEntry(papx, this, _doc.getListTables());
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
pap = new Paragraph(papx, this);
|
pap = new Paragraph(papx, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,28 +841,25 @@ public class Range { // TODO -instantiable superclass
|
|||||||
*
|
*
|
||||||
* @return A TYPE constant.
|
* @return A TYPE constant.
|
||||||
*/
|
*/
|
||||||
public int type()
|
public int type() {
|
||||||
{
|
|
||||||
return TYPE_UNDEFINED;
|
return TYPE_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the table that starts with paragraph. In a Word file, a table consists
|
* Gets the table that starts with paragraph. In a Word file, a table
|
||||||
* of a group of paragraphs with certain flags set.
|
* consists of a group of paragraphs with certain flags set.
|
||||||
*
|
*
|
||||||
* @param paragraph The paragraph that is the first paragraph in the table.
|
* @param paragraph
|
||||||
|
* The paragraph that is the first paragraph in the table.
|
||||||
* @return The table that starts with paragraph
|
* @return The table that starts with paragraph
|
||||||
*/
|
*/
|
||||||
public Table getTable(Paragraph paragraph)
|
public Table getTable(Paragraph paragraph) {
|
||||||
{
|
if (!paragraph.isInTable()) {
|
||||||
if (!paragraph.isInTable())
|
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("This paragraph doesn't belong to a table");
|
throw new IllegalArgumentException("This paragraph doesn't belong to a table");
|
||||||
}
|
}
|
||||||
|
|
||||||
Range r = (Range)paragraph;
|
Range r = paragraph;
|
||||||
if (r._parent.get() != this)
|
if (r._parent.get() != this) {
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("This paragraph is not a child of this range");
|
throw new IllegalArgumentException("This paragraph is not a child of this range");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -865,28 +867,25 @@ public class Range { // TODO -instantiable superclass
|
|||||||
int tableEnd = r._parEnd;
|
int tableEnd = r._parEnd;
|
||||||
|
|
||||||
if (r._parStart != 0 && getParagraph(r._parStart - 1).isInTable()
|
if (r._parStart != 0 && getParagraph(r._parStart - 1).isInTable()
|
||||||
&& getParagraph(r._parStart - 1)._sectionEnd >= r._sectionStart)
|
&& getParagraph(r._parStart - 1)._sectionEnd >= r._sectionStart) {
|
||||||
{
|
|
||||||
throw new IllegalArgumentException("This paragraph is not the first one in the table");
|
throw new IllegalArgumentException("This paragraph is not the first one in the table");
|
||||||
}
|
}
|
||||||
|
|
||||||
int limit = _paragraphs.size();
|
int limit = _paragraphs.size();
|
||||||
for (; tableEnd < limit; tableEnd++)
|
for (; tableEnd < limit; tableEnd++) {
|
||||||
{
|
if (!getParagraph(tableEnd).isInTable()) {
|
||||||
if (!getParagraph(tableEnd).isInTable())
|
|
||||||
{
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
initAll();
|
initAll();
|
||||||
if (tableEnd > _parEnd)
|
if (tableEnd > _parEnd) {
|
||||||
{
|
throw new ArrayIndexOutOfBoundsException(
|
||||||
throw new ArrayIndexOutOfBoundsException("The table's bounds fall outside of this Range");
|
"The table's bounds fall outside of this Range");
|
||||||
}
|
}
|
||||||
if (tableEnd < 0)
|
if (tableEnd < 0) {
|
||||||
{
|
throw new ArrayIndexOutOfBoundsException(
|
||||||
throw new ArrayIndexOutOfBoundsException("The table's end is negative, which isn't allowed!");
|
"The table's end is negative, which isn't allowed!");
|
||||||
}
|
}
|
||||||
return new Table(r._parStart, tableEnd, r._doc.getRange(), paragraph.getTableLevel());
|
return new Table(r._parStart, tableEnd, r._doc.getRange(), paragraph.getTableLevel());
|
||||||
}
|
}
|
||||||
@ -894,8 +893,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* loads all of the list indexes.
|
* loads all of the list indexes.
|
||||||
*/
|
*/
|
||||||
protected void initAll()
|
protected void initAll() {
|
||||||
{
|
|
||||||
initText();
|
initText();
|
||||||
initCharacterRuns();
|
initCharacterRuns();
|
||||||
initParagraphs();
|
initParagraphs();
|
||||||
@ -905,10 +903,8 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* inits the paragraph list indexes.
|
* inits the paragraph list indexes.
|
||||||
*/
|
*/
|
||||||
private void initParagraphs()
|
private void initParagraphs() {
|
||||||
{
|
if (!_parRangeFound) {
|
||||||
if (!_parRangeFound)
|
|
||||||
{
|
|
||||||
int[] point = findRange(_paragraphs, _parStart, _start, _end);
|
int[] point = findRange(_paragraphs, _parStart, _start, _end);
|
||||||
_parStart = point[0];
|
_parStart = point[0];
|
||||||
_parEnd = point[1];
|
_parEnd = point[1];
|
||||||
@ -919,10 +915,8 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* inits the character run list indexes.
|
* inits the character run list indexes.
|
||||||
*/
|
*/
|
||||||
private void initCharacterRuns()
|
private void initCharacterRuns() {
|
||||||
{
|
if (!_charRangeFound) {
|
||||||
if (!_charRangeFound)
|
|
||||||
{
|
|
||||||
int[] point = findRange(_characters, _charStart, _start, _end);
|
int[] point = findRange(_characters, _charStart, _start, _end);
|
||||||
_charStart = point[0];
|
_charStart = point[0];
|
||||||
_charEnd = point[1];
|
_charEnd = point[1];
|
||||||
@ -933,10 +927,8 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* inits the text piece list indexes.
|
* inits the text piece list indexes.
|
||||||
*/
|
*/
|
||||||
private void initText()
|
private void initText() {
|
||||||
{
|
if (!_textRangeFound) {
|
||||||
if (!_textRangeFound)
|
|
||||||
{
|
|
||||||
int[] point = findRange(_text, _textStart, _start, _end);
|
int[] point = findRange(_text, _textStart, _start, _end);
|
||||||
_textStart = point[0];
|
_textStart = point[0];
|
||||||
_textEnd = point[1];
|
_textEnd = point[1];
|
||||||
@ -947,10 +939,8 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* inits the section list indexes.
|
* inits the section list indexes.
|
||||||
*/
|
*/
|
||||||
private void initSections()
|
private void initSections() {
|
||||||
{
|
if (!_sectionRangeFound) {
|
||||||
if (!_sectionRangeFound)
|
|
||||||
{
|
|
||||||
int[] point = findRange(_sections, _sectionStart, _start, _end);
|
int[] point = findRange(_sections, _sectionStart, _start, _end);
|
||||||
_sectionStart = point[0];
|
_sectionStart = point[0];
|
||||||
_sectionEnd = point[1];
|
_sectionEnd = point[1];
|
||||||
@ -961,19 +951,21 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* Used to find the list indexes of a particular property.
|
* Used to find the list indexes of a particular property.
|
||||||
*
|
*
|
||||||
* @param rpl A list of property nodes.
|
* @param rpl
|
||||||
* @param min A hint on where to start looking.
|
* A list of property nodes.
|
||||||
* @param start The starting character offset.
|
* @param min
|
||||||
* @param end The ending character offset.
|
* A hint on where to start looking.
|
||||||
* @return An int array of length 2. The first int is the start index and the
|
* @param start
|
||||||
* second int is the end index.
|
* The starting character offset.
|
||||||
|
* @param end
|
||||||
|
* The ending character offset.
|
||||||
|
* @return An int array of length 2. The first int is the start index and
|
||||||
|
* the second int is the end index.
|
||||||
*/
|
*/
|
||||||
private int[] findRange(List rpl, int min, int start, int end)
|
private int[] findRange(List rpl, int min, int start, int end) {
|
||||||
{
|
|
||||||
int x = min;
|
int x = min;
|
||||||
PropertyNode node = (PropertyNode) rpl.get(x);
|
PropertyNode node = (PropertyNode) rpl.get(x);
|
||||||
while(node.getEnd() <= start && x < rpl.size()-1)
|
while (node.getEnd() <= start && x < rpl.size() - 1) {
|
||||||
{
|
|
||||||
x++;
|
x++;
|
||||||
node = (PropertyNode) rpl.get(x);
|
node = (PropertyNode) rpl.get(x);
|
||||||
}
|
}
|
||||||
@ -984,8 +976,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
|
|
||||||
int y = x;
|
int y = x;
|
||||||
node = (PropertyNode) rpl.get(y);
|
node = (PropertyNode) rpl.get(y);
|
||||||
while(node.getEnd() < end && y < rpl.size()-1)
|
while (node.getEnd() < end && y < rpl.size() - 1) {
|
||||||
{
|
|
||||||
y++;
|
y++;
|
||||||
node = (PropertyNode) rpl.get(y);
|
node = (PropertyNode) rpl.get(y);
|
||||||
}
|
}
|
||||||
@ -995,8 +986,7 @@ public class Range { // TODO -instantiable superclass
|
|||||||
/**
|
/**
|
||||||
* resets the list indexes.
|
* resets the list indexes.
|
||||||
*/
|
*/
|
||||||
private void reset()
|
private void reset() {
|
||||||
{
|
|
||||||
_textRangeFound = false;
|
_textRangeFound = false;
|
||||||
_charRangeFound = false;
|
_charRangeFound = false;
|
||||||
_parRangeFound = false;
|
_parRangeFound = false;
|
||||||
@ -1004,17 +994,21 @@ public class Range { // TODO -instantiable superclass
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adjust the value of the various FIB character count fields,
|
* Adjust the value of the various FIB character count fields, eg
|
||||||
* eg <code>FIB.CCPText</code> after an insert or a delete...
|
* <code>FIB.CCPText</code> after an insert or a delete...
|
||||||
*
|
*
|
||||||
* Works on all CCP fields from this range onwards
|
* Works on all CCP fields from this range onwards
|
||||||
*
|
*
|
||||||
* @param adjustment The (signed) value that should be added to the FIB CCP fields
|
* @param adjustment
|
||||||
|
* The (signed) value that should be added to the FIB CCP fields
|
||||||
*/
|
*/
|
||||||
protected void adjustFIB(int adjustment) {
|
protected void adjustFIB(int adjustment) {
|
||||||
// update the FIB.CCPText field (this should happen once per adjustment, so we don't want it in
|
// update the FIB.CCPText field (this should happen once per adjustment,
|
||||||
// adjustForInsert() or it would get updated multiple times if the range has a parent)
|
// so we don't want it in
|
||||||
// without this, OpenOffice.org (v. 2.2.x) does not see all the text in the document
|
// adjustForInsert() or it would get updated multiple times if the range
|
||||||
|
// has a parent)
|
||||||
|
// without this, OpenOffice.org (v. 2.2.x) does not see all the text in
|
||||||
|
// the document
|
||||||
|
|
||||||
CPSplitCalculator cpS = _doc.getCPSplitCalculator();
|
CPSplitCalculator cpS = _doc.getCPSplitCalculator();
|
||||||
FileInformationBlock fib = _doc.getFileInformationBlock();
|
FileInformationBlock fib = _doc.getFileInformationBlock();
|
||||||
@ -1046,21 +1040,21 @@ public class Range { // TODO -instantiable superclass
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* adjust this range after an insert happens.
|
* adjust this range after an insert happens.
|
||||||
* @param length the length to adjust for (expected to be a count of code-points, not necessarily chars)
|
*
|
||||||
|
* @param length
|
||||||
|
* the length to adjust for (expected to be a count of
|
||||||
|
* code-points, not necessarily chars)
|
||||||
*/
|
*/
|
||||||
private void adjustForInsert(int length)
|
private void adjustForInsert(int length) {
|
||||||
{
|
|
||||||
_end += length;
|
_end += length;
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
Range parent = (Range) _parent.get();
|
Range parent = (Range) _parent.get();
|
||||||
if (parent != null)
|
if (parent != null) {
|
||||||
{
|
|
||||||
parent.adjustForInsert(length);
|
parent.adjustForInsert(length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public int getStartOffset() {
|
public int getStartOffset() {
|
||||||
|
|
||||||
return _start;
|
return _start;
|
||||||
|
@ -65,7 +65,7 @@ public final class TableProperties
|
|||||||
tap.field_14_brcRight = (BorderCode)field_14_brcRight.clone();
|
tap.field_14_brcRight = (BorderCode)field_14_brcRight.clone();
|
||||||
tap.field_15_brcVertical = (BorderCode)field_15_brcVertical.clone();
|
tap.field_15_brcVertical = (BorderCode)field_15_brcVertical.clone();
|
||||||
tap.field_16_brcHorizontal = (BorderCode)field_16_brcHorizontal.clone();
|
tap.field_16_brcHorizontal = (BorderCode)field_16_brcHorizontal.clone();
|
||||||
tap.field_8_rgdxaCenter = (short[])field_8_rgdxaCenter.clone();
|
tap.field_8_rgdxaCenter = field_8_rgdxaCenter.clone();
|
||||||
tap.field_9_rgtc = new TableCellDescriptor[field_9_rgtc.length];
|
tap.field_9_rgtc = new TableCellDescriptor[field_9_rgtc.length];
|
||||||
for (int x = 0; x < field_9_rgtc.length; x++)
|
for (int x = 0; x < field_9_rgtc.length; x++)
|
||||||
{
|
{
|
||||||
|
@ -50,11 +50,10 @@ public class TestModelFactory extends TestCase {
|
|||||||
{
|
{
|
||||||
ModelFactory mf = new ModelFactory();
|
ModelFactory mf = new ModelFactory();
|
||||||
assertTrue("listeners member cannot be null", mf.listeners != null);
|
assertTrue("listeners member cannot be null", mf.listeners != null);
|
||||||
assertTrue("listeners member must be a List", mf.listeners instanceof List);
|
|
||||||
models = new ArrayList(3);
|
models = new ArrayList(3);
|
||||||
factory = new ModelFactory();
|
factory = new ModelFactory();
|
||||||
book = new HSSFWorkbook();
|
book = new HSSFWorkbook();
|
||||||
ByteArrayOutputStream stream = (ByteArrayOutputStream)setupRunFile(book);
|
ByteArrayOutputStream stream = setupRunFile(book);
|
||||||
POIFSFileSystem fs = new POIFSFileSystem(
|
POIFSFileSystem fs = new POIFSFileSystem(
|
||||||
new ByteArrayInputStream(stream.toByteArray())
|
new ByteArrayInputStream(stream.toByteArray())
|
||||||
);
|
);
|
||||||
|
@ -115,7 +115,6 @@ public final class TestRecordFactory extends TestCase {
|
|||||||
* constructs the expected array of records.<P>
|
* constructs the expected array of records.<P>
|
||||||
* SUCCESS: Record factory creates the expected records.<P>
|
* SUCCESS: Record factory creates the expected records.<P>
|
||||||
* FAILURE: The wrong records are created or contain the wrong values <P>
|
* FAILURE: The wrong records are created or contain the wrong values <P>
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public void testContinuedUnknownRecord() {
|
public void testContinuedUnknownRecord() {
|
||||||
byte[] data = {
|
byte[] data = {
|
||||||
@ -125,8 +124,7 @@ public final class TestRecordFactory extends TestCase {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ByteArrayInputStream bois = new ByteArrayInputStream(data);
|
ByteArrayInputStream bois = new ByteArrayInputStream(data);
|
||||||
Record[] records = (Record[])
|
Record[] records = RecordFactory.createRecords(bois).toArray(new Record[0]);
|
||||||
RecordFactory.createRecords(bois).toArray(new Record[0]);
|
|
||||||
assertEquals("Created record count", 3, records.length);
|
assertEquals("Created record count", 3, records.length);
|
||||||
assertEquals("1st record's type",
|
assertEquals("1st record's type",
|
||||||
UnknownRecord.class.getName(),
|
UnknownRecord.class.getName(),
|
||||||
|
Loading…
Reference in New Issue
Block a user