fixed [Bug 42677] - HSLF SlideShow write() issues on tables
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@550731 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ada61241db
commit
f6e06619e7
@ -160,11 +160,15 @@ public class TextPropCollection {
|
|||||||
StyleTextPropAtom.writeLittleEndian(reservedField,o);
|
StyleTextPropAtom.writeLittleEndian(reservedField,o);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The the mask field
|
// Then the mask field
|
||||||
int mask = 0;
|
int mask = 0;
|
||||||
for(int i=0; i<textPropList.size(); i++) {
|
for(int i=0; i<textPropList.size(); i++) {
|
||||||
TextProp textProp = (TextProp)textPropList.get(i);
|
TextProp textProp = (TextProp)textPropList.get(i);
|
||||||
mask += textProp.getWriteMask();
|
//sometimes header indicates that the bitmask is present but its value is 0
|
||||||
|
if (textProp instanceof BitMaskTextProp)
|
||||||
|
mask |= (textProp.getWriteMask() == 0 ? 1 : textProp.getWriteMask());
|
||||||
|
else
|
||||||
|
mask |= textProp.getWriteMask();
|
||||||
}
|
}
|
||||||
StyleTextPropAtom.writeLittleEndian(mask,o);
|
StyleTextPropAtom.writeLittleEndian(mask,o);
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ import org.apache.poi.hslf.model.textproperties.TextProp;
|
|||||||
import org.apache.poi.hslf.model.textproperties.TextPropCollection;
|
import org.apache.poi.hslf.model.textproperties.TextPropCollection;
|
||||||
import org.apache.poi.hslf.record.StyleTextPropAtom.*;
|
import org.apache.poi.hslf.record.StyleTextPropAtom.*;
|
||||||
import org.apache.poi.hslf.usermodel.SlideShow;
|
import org.apache.poi.hslf.usermodel.SlideShow;
|
||||||
|
import org.apache.poi.util.HexDump;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@ -734,4 +735,28 @@ public class TestStyleTextPropAtom extends TestCase {
|
|||||||
assertEquals(0, chprops.findByName("asian_or_complex").getValue());
|
assertEquals(0, chprops.findByName("asian_or_complex").getValue());
|
||||||
assertEquals(1, chprops.findByName("char_unknown_2").getValue());
|
assertEquals(1, chprops.findByName("char_unknown_2").getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check the test data for Bug 42677.
|
||||||
|
*/
|
||||||
|
public void test42677() throws Exception {
|
||||||
|
int length = 18;
|
||||||
|
byte[] data = {0x00, 0x00, (byte)0xA1, 0x0F, 0x28, 0x00, 0x00, 0x00,
|
||||||
|
0x13, 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , (byte)0xF1 , 0x20 , 0x00, 0x00 , 0x00 , 0x00 ,
|
||||||
|
0x22 , 0x20 , 0x00 , 0x00 , 0x64 , 0x00 , 0x00 , 0x00 , 0x00 , (byte)0xFF ,
|
||||||
|
0x00 , 0x00 , 0x13 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x63 , 0x00 ,
|
||||||
|
0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x0F , 0x00
|
||||||
|
};
|
||||||
|
StyleTextPropAtom stpa = new StyleTextPropAtom(data,0,data.length);
|
||||||
|
stpa.setParentTextSize(length);
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
stpa.writeOut(baos);
|
||||||
|
byte[] b = baos.toByteArray();
|
||||||
|
|
||||||
|
assertEquals(data.length, b.length);
|
||||||
|
for(int i=0; i<data.length; i++) {
|
||||||
|
assertEquals(data[i],b[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user